📄 navdata.h
字号:
#ifndef __NAVDATA_H
#define __NAVDATA_H
#include "types.h"
#include "udf_167.h"
#include "global.h"
#include "fs96602.h"
#include "fsGUI1.h"
#include "psd.h"
typedef struct {
UINT8 dY, dCb, dCr;
} DSV_Palette;
typedef struct {
UINT8 h, m, s, f;
// tc_flag;
} PlayBack_Time;
typedef struct {
UINT32 dC_CAT;
//UINT32 dC_PBTM;
PlayBack_Time dC_PBTM;
UINT32 dC_FVOBU_SA, dC_LVOBU_SA;
UINT16 dC_LVOBU_SA2EA;// dC_LVOBU_EA = dC_LVOBU_SA+dC_LVOBU_SA2EA
// UINT32 dC_FILVU_EA;
// UINT16 dC_VOB_IDN;
// UINT8 dC_IDN;
} DSV_Cell;
typedef struct {
UINT32 dATS_PG_CNT;
//UINT8 bATS_PG_EN_CN;
//UINT32 dATS_PG_PA_TM;
UINT32 dATS_PG_PB_TM;
} ATS_PGI;
typedef struct {
//UINT8 bATS_C_IXN;
//UINT8 bATS_C_TY;
UINT32 dATS_C_SA;
UINT32 dATS_C_EA;
} ATS_C_PBI;
typedef struct {
UINT8 bASVUN;
UINT8 bASV_DMD;
UINT16 sATS_ASV_PBI_SA;
UINT16 sATS_ASV_PBI_EA;
} ATS_PG_ASV_PBI_SRP;
typedef struct {
UINT8 bDlist[10];
} DLIST;
typedef struct {
ATS_PGI pg[100];
ATS_C_PBI cell[256];
UINT8 asv[4096];
} ATS_PG_CELL;
typedef struct {
UINT8 b[8];
} t_NCMD;
typedef struct {
UINT16 PTL_ID_FLD;
} t_PTL_ID_FLD;
typedef struct {
//UINT16 PTL_LVL;
t_PTL_ID_FLD VTS[100];//PTL_ID_FLD_VMG + PTL_ID_FLD_VTS
} t_PTL_MAI;
typedef struct
{
//UINT8 reserv;
UINT8 ATT_CAT;
UINT16 ATT_PG_Ns;
//UINT8 ATT_AGL_Ns;
UINT32 ATT_PB_TM;
UINT8 ATSN;
//UINT32 ATS_SA;
}t_ATT_SRP_PB;
typedef struct {
UINT8 TT_PB_TY;
UINT16 PTT_Ns;
UINT16 TT_PTL_ID_FLD;
UINT8 VTSN;
//UINT32 MAX_TM_MAP;
} t_TT_SRP_PB;
typedef union
{
t_TT_SRP_PB vtt;
#ifdef DVD_AUDIO
t_ATT_SRP_PB att;
#endif
} t_AV_SRP_PB;
#define dTT_SRP_Ns_MAX 100
//#ifdef DVD_AUDIO //terry,2003/8/3 06:08PM,tmp. mark it!!
#define dAST_ATRT_MAX 128
#define dVTS_MU_AST_ATRT_MAX 288
//#else
//#define dAST_ATRT_MAX 64
//#define dVTS_MU_AST_ATRT_MAX 192
//#endif
typedef struct
{
// RSM saved info
UINT8 dRSM_Domain;
UINT8 dRSM_Cell;
UINT32 dRSM_End_Addr;
UINT32 dRSM_NV_PCK;
UINT8 dRSM_PGN;
UINT8 dRSM_LoopCount;
UINT8 dRSM_PGPlayed[13]; // for shuffle mode
UINT16 dRSM_TTN;
UINT16 dRSM_VTS_TTN;
UINT16 dRSM_TT_PGCN;
UINT16 dRSM_PTTN;
UINT16 dRSM_HL_BTNN;
UINT16 dRSM_PTL_LVL;
UINT16 dRSM_AGLN;
UINT16 dRSM_SPSTN;
UINT16 dRSM_ASTN;
} t_RSM_INFO;
#include "ncmd.h"
#define NAV_DATA_ACCESS (0)
#define BITSTREAM_ACCESS (1)
#define SLIDE_SHOW_MD (0x00)
#define BROWSER_MD (0x01)
//terry,2004/12/22 06:54PM
#define SEL_AUDIO_MD (0x01<<0)
#define SEL_SUBTITLE_MD (0x01<<1)
#define USER_HL_MODE (0x01<<2)
#define SEL_SUBTITLE_OK (0x01<<3)
#define SEL_SP_VTSM (0x01<<4)
#define SEL_SP_MENU_OK (0x01<<5)
#define SUP_GET_ID_0x7F (0x007f) //include on/off flag (0x40)
#define SUP_GET_ID_0x3F (0x003f) //only id
#define SUP_OFF_DEF (0xffbf)
#define SUP_ON_DEF (0x0040)
#define SIM_USE
/*
* All of the global variables used by Navigator are placed here.
*/
typedef struct
{
UINT8 dAv_AST_Ns;//display use
UINT8 dAv_SPST_Ns;//display use
UINT8 dAudio_coding_md;//display use,PE use ,declare in user use
UINT8 dNs_Audio_ch;//display use
// Navigator Parameters
UINT16 GPRM_mode; // 1: counter, 0: reg
#ifdef DVD_AUDIO
UINT16 SPRM[26]; //AU9-3
UINT16 GPRM[17]; // GPRM[16] as a temp reg for internal usage
#else
UINT16 SPRM[23];
UINT16 GPRM[17]; // GPRM[16] as a temp reg for internal usage
#endif
UINT16 audio_language;
UINT16 subtitle_language;
// Navigator State
UINT8 CurrState;
UINT8 CurrDomain;
// current PGC info
// logic sector number(=LBA), start address
UINT32 CurrPGC_LSN;
UINT32 CurrPGC_SA; //axel , match DVD-Part III 2004/7/14
// VMGM
UINT8 VMG_CAT_RM;//region code
UINT32 dVMGM_VOBS_SA;//VMGM VOB Set start address
UINT32 dTT_SRPT_SA;
UINT32 dVMGM_PGCI_UT_SA;
UINT8 dTT_SRP_Ns;
UINT32 dPTL_MAIT_SA;
t_PTL_MAI dPTL_MAI;
// VTS info
UINT32 dVTSM_VOBS_SA;//VTSM VOB Set start address
UINT32 dVTSTT_VOBS_SA;//VTS VOB Set start address
UINT32 dVTS_PTT_SRPT_SA;
UINT32 dVTS_TMAPT_SA,d_PGCN_TM_SA;
UINT8 TMU;
UINT16 MAP_EN_Ns;
UINT32 dVTS_PGCIT_SA;//VTS PGCI table start address
UINT32 dVTSM_PGCI_UT_SA;//VTSM PGCI language unit table
UINT32 dVTSM_TTN;//TTN of first VTSM
//VTS A/V/S Info
UINT8 dSPST_id;
#ifdef DVD_AUDIO
UINT8 dAST_ATRT[dAST_ATRT_MAX]; // 8ch - 16byte, AU7-3
UINT8 dVTS_MU_AST_ATRT[dVTS_MU_AST_ATRT_MAX];// 16dm - 18byte ,AU7-13
#else
UINT8 dAST_ATRT[dAST_ATRT_MAX]; // 8ch - 8byte
UINT8 dVTS_MU_AST_ATRT[dVTS_MU_AST_ATRT_MAX];// 8ch - 24byte ,VI4-54
#endif
UINT8 dSPST_ATRT[192]; // 32ch - 6byte
UINT8 dPGC_AST_CTLT[16]; // 8ch - 2 byte ,VI4-87
UINT8 dPGC_SPST_CTLT[128]; // 32ch - 4byte ,VI4-89
// TT info
t_AV_SRP_PB dTT_SRP[dTT_SRP_Ns_MAX];//use 1-99
union
{
UINT8 dTT_PB_TY;//it must access real time,so mark
UINT8 dATT_CAT;
}tt_info;
UINT8 dVTSN;
UINT32 dVTS_SA;
// PGC
UINT8 dPGC_PG_Ns, dPGC_C_Ns;
//PlayBack_Time PGC_PB_TM;
UINT32 dPGC_UOP_CTL;
UINT16 dPrevPGC, dNextPGC, dGoUpPGC;
UINT8 dPGC_PB_MODE, dPGC_STILL;
UINT8 dPRE_CMD_Ns, dPOST_CMD_Ns, dC_CMD_Ns;
t_NCMD dPGC_CMD[129]; // use 1-128
UINT8 dEN_CN[100]; // use 1-99
union
{
DSV_Cell DSVC[256]; // use 1-255
#ifdef DVD_AUDIO
ATS_PG_CELL ats;
#endif
}pc_info;
DSV_Palette DSVPLT[16]; // use 0-15
// Navigation Command Process
//t_NCMD CurrNCMD_Code;
UINT8 CurrNCMD_PC; // Program Counter
// PGC Playback
UINT8 CurrPGN;
UINT8 CurrCell;
UINT8 CurrLoopCount;
UINT8 PGPlayed[13]; // for shuffle mode
UINT8 DirectPlay; // = 1, no precommand
UINT32 ReadRLBN; // relative LB number for read
PlayBack_Time Current_Cell_TM;
t_RSM_INFO rsm_info[BOOK_MAX_ITEM+1];
// PE info
UINT8 new_cell;
// Pointer for current PCI and HLI
PlayBack_Time C_ELTM;
// for PE interface
UINT16 dV_ATR;
UINT8 dAST_Ns;
UINT8 dSPST_Ns;
UINT8 dAu_stream_id;
// for VOBU interface
//PlayBack_Time
UINT8 dAGL_Ns;
UINT8 ChkVideo;
UINT8 dDisc_flag;
//for DVD_RTN_MENU_RESUME
#ifdef DVD_RTN_MENU_RESUME
UINT8 dMenuPgc_flag; //a flag: 1:execute CALL SS and play a MENU PGC; 0: not, heqiang, 2004-3-5 22:36
#endif
#ifdef NEW_SEL_SUBTITLE_WAY
UINT8 user_selected;
UINT32 dVTSM_VOBS_SA_old;
// UINT16 record_subp_ttn;
#endif
UINT8 Old_CN;//terry,2004/2/11 12:06PM
#ifdef DVD_AUDIO
UINT32 dASVS_SA;
UINT16 HGR_INF; // Hidden Group Information
UINT16 dATS_ASV_PBIT_SA;
//UINT32 dASVOBS_SA;
UINT8 dASVUN;
UINT32 dASVU_SA;
UINT32 dASVU_LEN;
UINT32 asv_loaded_len;
UINT8 disp_timing_md; //terry,2004/2/21 06:39PM
UINT8 dASVN;
UINT16 dASV_SA;
UINT32 dASV_LEN;
UINT8 dASV_Ns;
UINT16 dABS_ASVN;
UINT8 CurrDLIST;
UINT32 Disp_Timing;
UINT32 att_tm;
UINT8 old_gpn;
UINT8 old_trkn;
UINT16 get_next_asv_tm;
INT16 asv_buf_offset;//terry,2004/2/27 04:40PM
UINT8 hid_gp_chk_pwd;//nono 2004-3-2 20:14
UINT16 asv_loaded_addr;//terry,2004/2/19 03:30PM
UINT16 asv_file_sa_addr;//terry,2004/3/18 07:00PM
UINT8 old_asvn;
#endif
} DataSaved;
//==================================================================================== TOC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -