📄 dvdpe_d.h
字号:
//
// FILE
// dvdpe_d.h
//
// DESCRIPTION
// DVD navigation related data structure
//
// *NOTE* all structure in big-endian format
//
#ifndef __DVDPE_D_H
#define __DVDPE_D_H
//
// PCI
// {
// PCI_GI 60 PCI general information
// NSML_AGLI 36 Angle Information for non-seamless
// HLI 694 Highlight Information (..)
// RECI 189 Recording Information (ISRC)
// }
//
// PCI_GI 60
// {
// NV_PCK_LBN 4 LBN of Naviation pack
// VOBU_CAT 2 Category of VOBU
// <reserved> 2
// VOBU_UOP_CTL 4 User Operation control of VOBU
// VOBU_S_PTM 4 Start PTM of VOBU
// VOBU_E_PTM 4 End PTM of VOBU
// VOBU_SE_E_PTM 4 End PTM of sequence end in VOBU (??)
// C_ELTM 4 Cell Elasped Time
// <reserved> 32
// }
typedef struct {
UINT32 NV_PCK_LBN; // 4
UINT16 VOBU_CAT; // 2
UINT16 reserved_0[1]; // 2
UINT32 VOBU_UOP_CTL; // 4
UINT32 VOBU_S_PTM; // 4
UINT32 VOBU_E_PTM; // 4
UINT32 VOBU_SE_E_PTM; // 4
UINT32 C_ELTM; // 4
UINT32 reserved_1[8]; // 32
} t_pci_gi; // 60
// NSML_AGLI 36
// {
// NSML_AGL_C_DSTA 36
// }
typedef struct {
UINT32 NSML_AGL_C_DSTA[9];
} t_nsml_agli;
// BTN_POSI 6
// {
// POSI 6
// }
typedef struct {
UINT8 POSI[6];
} t_btn_posi;
// ADJBTN_POSI 4
// {
// UP 1
// DOWN 1
// LEFT 1
// RIGHT 1
// }
typedef struct {
UINT8 DIR[4]; //up,down,left,right
} t_ajbtn_posi;
// NAV_CMD
// {
// CMD 8
// }
typedef struct {
UINT8 CMD[8];
} t_nav_cmd; // 8
// BTN_COLI
// {
// SL_COLI 4 color during selected
// AC_COLI 4 color during action
// }
typedef struct {
UINT32 SL_COLI;
UINT32 AC_COLI;
} t_btn_coli;
// BTNI 18
// {
// BTN_POSI 6
// AJBTN_POSI 4
// NAV_CMD 8
// }
typedef struct {
t_btn_posi BTN_POSI __attribute__((packed));
t_ajbtn_posi AJBTN_POSI __attribute__((packed));
t_nav_cmd BTN_CMD __attribute__((packed));
} t_btni; // 18
// HLI 694
// {
// HLI_GI 22
// BTN_COLI 3*8
// BTNI 36*18
// }
typedef struct {
// hl_gi
UINT16 HLI_SS __attribute__((packed));
UINT32 HLI_S_PTM __attribute__((packed));
UINT32 HLI_E_PTM __attribute__((packed));
UINT32 BTN_SL_E_PTM __attribute__((packed));
UINT16 BTN_MD __attribute__((packed));
UINT8 BTM_OFN __attribute__((packed));
UINT8 BTN_Ns __attribute__((packed));
UINT8 NSL_BTN_Ns __attribute__((packed));
UINT8 reserved __attribute__((packed));
UINT8 FOSL_BTNN __attribute__((packed));
UINT8 FOAC_BTNN __attribute__((packed));
t_btn_coli BTN_COLI[3] __attribute__((packed));
t_btni BTNI[36] __attribute__((packed));
} t_hli;
typedef struct {
t_pci_gi PCI_GI; // __attribute__((packed)); // 60
t_nsml_agli NSML_AGLI __attribute__((packed)); // 36
t_hli HLI __attribute__((packed));
} t_pci_no_reci;
#define t_pci t_pci_no_reci
//
// DSI
//
//
// DSI
// {
// DSI_GI 32
// SML_PBI 148
// VOBU_SRI 168
// SYNCI 144
// <reserved> 471
// }
//
// DSI_GI 32
// {
// NV_PCK_SCR 4
// NV_PCK_LBN 4
// VOBU_EA 4
// VOBU_1STREF_EA 4
// VOBU_2NDREF_EA 4
// VOBU_3RDREF_EA 4
// VOBU_VOB_IDN 2
// <reserved> 1
// VOBU_C_IDN 1
// C_ELTM 4
// }
typedef struct {
UINT32 NV_PCK_SCR ; // 4
UINT32 NV_PCK_LBN ; // 4
UINT32 VOBU_EA ; // 4
UINT32 VOBU_1STREF_EA ; // 4
UINT32 VOBU_2NDREF_EA ; // 4
UINT32 VOBU_3RDREF_EA ; // 4
UINT16 VOBU_VOB_IDN ; // 2
UINT8 reserved ; // 1
UINT8 VOBU_C_IDN ; // 1
UINT32 C_ELTM ; // 4
} t_dsi_gi; // 32
typedef struct {
UINT32 VOB_A_STP_PTM1;
UINT32 VOB_A_STP_PTM2;
} t_vob_a_stp_ptm; // 8
typedef struct {
UINT32 VOB_A_GAP_LEN1;
UINT32 VOB_A_GAP_LEN2;
} t_vob_a_gap_len; // 8
#define VOBU_SML_CAT_PREU (1<<15)
#define VOBU_SML_CAT_ILVU (1<<14)
#define VOBU_SML_CAT_UnitStart (1<<13)
#define VOBU_SML_CAT_UnitEnd (1<<12)
// SML_PBI 148
// {
// VOBU_SML_CAT 2
// ILVU_EA 4
// NXT_ILVU_SA 4
// NXT_ILVU_SZ 2
// VOB_V_S_PTM 4
// VOB_V_E_PTM 4
// VOB_A_STP_PTM[8] 64
// VOB_A_GAP_PTM[8] 64
// }
typedef struct {
UINT16 VOBU_SML_CAT __attribute__((packed)); // 2
UINT32 ILVU_EA __attribute__((packed)); // 4
UINT32 NXT_ILVU_SA __attribute__((packed)); // 4
UINT16 NXT_ILVU_SZ __attribute__((packed)); // 2
UINT32 VOB_V_S_PTM __attribute__((packed)); // 4
UINT32 VOB_V_E_PTM __attribute__((packed)); // 4
t_vob_a_stp_ptm VOB_A_STP_PTM[8] __attribute__((packed)); // 64
t_vob_a_gap_len VOB_A_GAP_LEN[8] __attribute__((packed)); // 64
} t_sml_pbi; // 148
// SML_AGL_CN_DSTA
// {
// AGL_C
// AGL_C_ILVU
// }
typedef struct {
UINT32 AGL_C __attribute__((packed));
UINT16 AGL_C_ILVU __attribute__((packed));
} t_sml_agl_cn_dsta; // 6
// SML_AGLI
// {
// SML_AGL_CN_DSTA[9]
// }
typedef struct {
t_sml_agl_cn_dsta SML_AGL_C_DSTA[9] __attribute__((packed));
} t_sml_agli; // 54
//
// VOBU_SRI index table
// VI4-145
//
enum {
FWDI_VIDEO = 0, // 0
FWDI_240, // 1
FWDI_120, // 2
FWDI_60, // 3
FWDI_20, // 4
FWDI_15, // 5
FWDI_14, // 6
FWDI_13, // 7
FWDI_12, // 8
FWDI_11, // 9
FWDI_10, // 10
FWDI_9, // 11
FWDI_8, // 12
FWDI_7, // 13
FWDI_6, // 14
FWDI_5, // 15
FWDI_4, // 16
FWDI_3, // 17
FWDI_2, // 18
FWDI_1, // 19
FWDI_NEXT, // 20
BWDI_PREV, // 21
BWDI_1, // 22
BWDI_2, // 23
BWDI_3, // 24
BWDI_4, // 25
BWDI_5, // 26
BWDI_6, // 27
BWDI_7, // 28
BWDI_8, // 29
BWDI_9, // 30
BWDI_10, // 31
BWDI_11, // 32
BWDI_12, // 33
BWDI_13, // 34
BWDI_14, // 35
BWDI_15, // 36
BWDI_20, // 37
BWDI_60, // 38
BWDI_120, // 39
BWDI_240, // 40
BWDI_VIDEO, // 41
};
// VOBU_SRI
// {
// SA[42] 168
// }
typedef struct
{
UINT32 SA[42]; // total 42 (*4=168b) search address
} t_vobu_sri;
// SYNCI 144
// {
// A_SYNCA 16
// SP_SYNCA 128
// }
typedef struct {
UINT16 A_SYNCA[8];
UINT32 SP_SYNCA[32];
} t_synci;
// DSI
// {
// DSI_GI 32
// SML_PBI 148
// SML_AGLI 54
// VOBU_SRI 168
// }
typedef struct {
t_dsi_gi DSI_GI; // 32 (4*8)
t_sml_pbi SML_PBI; // 148 (4*37)
t_sml_agli SML_AGLI __attribute__((packed)); // 54 (4*13.5)
t_vobu_sri VOBU_SRI __attribute__((packed)); // 168 (4*42)
t_synci SYNCI __attribute__((packed)); // 16 + 128
// UINT16 unused __attribute__((packed));
} t_dsi; // 402
#endif/*__DVDPE_D_H*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -