📄 dvdv_nv_data.h
字号:
/****************************************************************************
* File name
* Dvdv_nv_data.h
*
* Start date
* 2002.1.7
*
* By
* Chongkun Lee
*
* Contact
* bach1004@samsung.co.kr
*
* Description
* This file contains the structures for DVD-Video navigation data
*
* HISTORY
*
* NAME DATE REMARKS
*
*
*
*****************************************************************************/
#ifndef _DVDV_NV_DATA_H_
#define _DVDV_NV_DATA_H_
#undef ATTRIBUTE_PACKED
#undef PRAGMA_PACK_BEGIN
#undef PRAGMA_PACK_END
#ifdef _WIN32
#define ATTRIBUTE_PACKED
#elif defined(_LINUX)
#define ATTRIBUTE_PACKED __attribute__ ((packed))
#endif
/*******************************************
* Common(used in both VMGI & VTSI.
********************************************
*/
/*******************************************
* Playback Time Information
********************************************
*/
typedef struct _Pb_Tm_t {
BYTE4 HourTens : 4;//'0'~'9'
BYTE4 HourUnit : 4;//'0'~'9'
BYTE4 MinuteTens : 4;//'0'~'5'
BYTE4 MinuteUnit : 4;//'0'~'9'
BYTE4 SecondTens : 4;//'0'~'5'
BYTE4 SecondUnit : 4;//'0'~'9'
BYTE4 TcFlag : 2;//00b:reserved, 01b:25frames/s, 10b:reserved, 11b:30frames/s non-stop frame.
BYTE4 VideoFrameTens : 2;//'0'~'2'
BYTE4 VideoFrameUnit : 4;//'0'~'9'
} Pb_Tm_t;
/*******************************************
* Navigation Command.
********************************************
*/
typedef struct {
BYTE1 bytes[8];
} DvdNavCmd_t;
/*******************************************
* Video Attribute Information....
********************************************
*/
#ifdef _DVD_DIRECT_COPY
typedef BYTE2 V_Atr_t;
#else
typedef struct _V_Atr_t {
BYTE4 VideoCompressionMode : 2;//00b:MPEG-1, 01b:MPEG-2
BYTE4 TVSystem : 2;//00b:525/60(NTSC), 01b:625/50(PAL)
BYTE4 AspectRatio : 2;//00b:4:3, 11b:16:9
BYTE4 DisplayMode : 2;//00b:Both Pan-Scan and Letterbox, 01b:Pan-Scan, 10b:Letterbox, 11b:reserved.
BYTE4 Line21_Switch_1 : 1;//0b:user_data() for line 21 data for Field1 is not recorded, 1b:recorded.
BYTE4 Line21_Switch_2 : 1;//0b:user_data() for line 21 data for Field2 is not recorded, 1b:recorded.
BYTE4 SourcePictureResolution : 3;//000b:720X480/576, 001b:704X480/576, 010b:352X480/576, 011b:352X240/288.
BYTE4 SourcePictureLetterboxed: 1;//0b:Not Letterboxed, 1b:Letterboxed.
BYTE4 FilmCameraMode: 1; /* (525/60) : 0x0, (625/50) : 0x0 for camera mode, 0x1 for filem mode */
} V_Atr_t;
#endif
/*******************************************
* Audio Attribute Information....
********************************************
*/
#ifdef _DVD_DIRECT_COPY
typedef struct _Ast_Atr_t {
BYTE2 AudioCodingMode : 3;//000b:Dolby AC-3, 010b:MPEG without extension bitstream, 011b:MPEG-2 with extension stream, 100b:Linear PCM, Others:reserved.
BYTE2 MultichannelExt : 1;
BYTE2 AudioType : 2;
BYTE2 AudioAppMode : 2;
BYTE2 Quantization : 2;
// if AudioCodingMode == 000b, 11b.
// if AudioCodingMode == 010b or 011b, 00b:Dynamic range control data not exist, 01b:exist, Other:reserved.
// if AudioCodingMode == 100b, 00b:16bits, 01b:20bits, 10b:24bits, 11b:reserved.
BYTE2 Fs : 2;//00b:48kHz, 01b:96kHz.
BYTE2 reserved1 : 1;
BYTE2 NumberOfChannels : 3;//# of channel = NumberOfChannels + 1;
BYTE2 SpecificCode;
BYTE1 reserved2;
BYTE1 SpecificCodeExt;
BYTE1 reserved3;
BYTE1 ApplicationInf;
} Ast_Atr_t;
#else
typedef struct _Ast_Atr_t {
BYTE4 AudioCodingMode : 3;//000b:Dolby AC-3, 010b:MPEG without extension bitstream, 011b:MPEG-2 with extension stream, 100b:Linear PCM, Others:reserved.
BYTE4 MultichannelExt : 1;
BYTE4 AudioType : 2;
BYTE4 AudioAppMode : 2;
BYTE4 Quantization : 2;
// if AudioCodingMode == 000b, 11b.
// if AudioCodingMode == 010b or 011b, 00b:Dynamic range control data not exist, 01b:exist, Other:reserved.
// if AudioCodingMode == 100b, 00b:16bits, 01b:20bits, 10b:24bits, 11b:reserved.
BYTE4 Fs : 2;//00b:48kHz, 01b:96kHz.
BYTE4 NumberOfChannels : 3;//# of channel = NumberOfChannels + 1;
BYTE2 SpecificCode;
BYTE1 SpecificCodeExt;
BYTE1 ApplicationInf;
} Ast_Atr_t;
#endif
/* <<< @: 5008CHN-XXX.Lu Shuai 050719: Added this to support dvdv audio application type */
#define DVD_AD_APP_NOT_SPECIFIED 0x0
#define DVD_AD_APP_KARAOKE 0x1
#define DVD_AD_APP_SURROUND 0x2
#define DVD_AD_APP_RESERVED 0x3
/* >>> @: 5008CHN-XXX.Lu Shuai 050719*/
/*******************************************
* Sub-picture Attribute Information....
********************************************
*/
typedef struct _Spst_Atr_t {
BYTE1 SubPictureCodingMode;
BYTE1 SubPictureType;
BYTE2 SpecificCode;
BYTE1 SpecificCodeExt;
} Spst_Atr_t;
/*******************************************
* User Operation
********************************************
*/
typedef struct {
BYTE4 zero : 7; // 25-31
BYTE4 video_pres_mode_change : 1; // 24
BYTE4 karaoke_audio_pres_mode_change : 1; // 23
BYTE4 angle_change : 1; // 22
BYTE4 subpic_stream_change : 1; // 21
BYTE4 audio_stream_change : 1; // 20
BYTE4 pause_on : 1; // 19
BYTE4 still_off : 1; // 18
BYTE4 button_select_or_activate : 1; // 17
BYTE4 resume : 1; // 16
BYTE4 chapter_menu_call : 1; // 15
BYTE4 angle_menu_call : 1; // 14
BYTE4 audio_menu_call : 1; // 13
BYTE4 subpic_menu_call : 1; // 12
BYTE4 root_menu_call : 1; // 11
BYTE4 title_menu_call : 1; // 10
BYTE4 backward_scan : 1; // 9
BYTE4 forward_scan : 1; // 8
BYTE4 next_pg_search : 1; // 7
BYTE4 prev_or_top_pg_search : 1; // 6
BYTE4 time_or_chapter_search : 1; // 5
BYTE4 go_up : 1; // 4
BYTE4 stop : 1; // 3
BYTE4 title_play : 1; // 2
BYTE4 chapter_search_or_play : 1; // 1
BYTE4 title_or_time_play : 1; // 0
} User_Op_t;
/*******************************************
* Pgci_t 包访 structure.
********************************************
*/
/*******************************************
* PGC Command Table.
********************************************
*/
typedef struct {
BYTE2 Pre_Cmd_Ns;//number of PRE_CMDs. '0'~'128'.
BYTE2 Post_Cmd_Ns;//number of POST_CMDs. '0'~'128'.
BYTE2 C_Cmd_Ns;//number of C_CMDs. '0'~'128'.
BYTE2 Pgc_Cmdt_Ea;//end address of Pgc_Cmdt_t with RBN from 1st byte of this Pgc_Cmdt_t.
DvdNavCmd_t *Pre_Cmd;
DvdNavCmd_t *Post_Cmd;
DvdNavCmd_t *C_Cmd;
} Pgc_Cmdt_t;
/*******************************************
* PGC Command Table.
********************************************
*/
typedef BYTE1 Pgc_Pgmap_t;
/*******************************************
* Cell Playback Information Table.
********************************************
*/
typedef struct {
BYTE4 CellBlockMode : 2;//00b:Not a Cell in the block, 01b:The 1st Cell in the block, 10b:Cell in the block, 11b:The last Cell in the block.
BYTE4 CellBlockType : 2;//00b:Not a part of the block, 01b:Angle Block, Others:reserved.
BYTE4 SeamlessPlaybackFlag : 1;//0b:A Cell shall not be presented seamlessly, 1b:A Cell shall be presented seamlessly.
BYTE4 InterleavedAllocationFlag : 1;//0b:Exist in the Contiguous Block, 1b:Exist in the Interleaved Block.
BYTE4 StcDiscontinuityFlag : 1;//0b:STC reset is not necessary, 1b:necessary.
BYTE4 SeamlessAngleChangeFlag : 1;//0b:Only Non-seamless Angle Change function shall be used. 1b:Only Seamless used...
//BYTE4 Reserved : 1;
BYTE4 CellPlaybackMode : 1;//0b:Continuously presented in the Cell, 1b:Stills in every VOBU which exists in the Cell. Still time is infinite.
BYTE4 AccessRestrictionFlag : 1;//0b:Presentation permitted, 1b:presentation prohibitted.
BYTE4 CellType : 5;
//when application type is Karaoke
//00000b:not specified, 00001b:Title Picture, 00010b:Introduction.
//00011b:Song(except for climax) 00100b:Song(climax1), 00101b:Song(climax2).
//00110b:Song(male vocal) 00111b:Song(Female vocal), 01000b:Song(male and female vocal).
//01001b:Interlude(instrumental) 01010b:Interlude for fade in, 01011b:Interlude for fade out.
//01100b:Ending 1 01101b:Ending 2. Others:reserved.
BYTE1 CellStillTime;//0:no Still, 1~254:Still time value(X1sec), 255:infinite Still.
BYTE1 CellCommandNumber;//Cell Command number to be executed at the completion of Cell presentation in C_CMD number in Pgc_Cmdt_t.
Pb_Tm_t C_Pbtm;//Cell Playback Time.
BYTE4 C_Fvobu_Sa;//start address of 1st VOBU in this Cell with RLBN from 1st LB of VOBS in which this Cell is recorded.
BYTE4 C_Filvu_Ea;//end address of 1st ILVU in this Cell with RLBN from 1st LB of VOBS...
BYTE4 C_Lvobu_Sa;//start address of last VOBU in this Cell with RLBN from 1st LB of VOBS...
BYTE4 C_Lvobu_Ea;//end address of last VOBU in this Cell with RLBN from 1st LB of VOBS...
} C_Pbi_t;
/*******************************************
* Cell Position Information Table.
********************************************
*/
typedef struct {
BYTE2 C_Vob_Idn;//VOB ID number of the VOB in which this Cell is included.
//BYTE1 Reserved;
BYTE1 C_Idn;//Cell ID number of the Cell.
} C_Posit_t;
/*******************************************
* Program Chain Information
********************************************
*/
typedef struct {
#ifdef _DVD_DIRECT_COPY
BYTE1 reserved1[2];
#endif
BYTE1 NumberOfProgram;
BYTE1 NumberOfCell;
Pb_Tm_t Pgc_Pb_Tm;//PGC Playback Time.
BYTE4 Pgc_Uop_Ctl;//PGC User Operation Control.
BYTE2 Pgc_Ast_Ctl[8];//PGC Audio stream Control Table.
BYTE4 Pgc_Spst_Ctl[32];//PGC Sub-picture stream Control Table.
BYTE2 Next_Pgcn;
BYTE2 Prev_Pgcn;
BYTE2 GoUp_Pgcn;
BYTE1 PG_Playback_Mode;
BYTE1 Still_Time_Value;
BYTE4 Pgc_Sp_Plt[16];//PGC Sub-picture Palette.
BYTE2 Pgc_Cmdt_Sa;//start address of Pgc_Cmdt_t with RBN from 1st byte of this Pgci_t.
BYTE2 Pgc_Pgmap_Sa;//start address of Pgc_Pgmap_t with RBN from 1st byte of this Pgci_t.
BYTE2 C_Pbit_Sa;//start address of C_PBIT with RBN from 1st byte of this Pgci_t.
BYTE2 C_Posit_Sa;//start address of C_Posit_t with RBN from 1st byte of this Pgci_t.
Pgc_Cmdt_t Pgc_Cmdt;
} Pgci_t;
/*******************************************
* Program Chain Information Search Pointer
********************************************
*/
typedef struct {
#if 1
BYTE1 Entry_Type;
BYTE1 Id;
BYTE1 BlockMode;
BYTE1 BlockType;
#else
BYTE1 Entry_Type : 1;
BYTE1 Id : 7;
BYTE1 BlockMode : 2;
BYTE1 BlockType : 2;
BYTE1 Reserved : 4;
#endif
BYTE2 Ptl_Id_Fld;
BYTE4 Pgci_Sa;
// Pgci_t *Pgci;
} Pgci_Srp_t;
/*******************************************
* Program Chain Information Table
********************************************
*/
typedef struct {
BYTE2 Pgci_Srp_Ns;
// BYTE2 Reserved;
BYTE4 Pgcit_Ea;
// Pgci_Srp_t *Pgci_Srp;
} Pgcit_t;
/*******************************************
* Pgci_t Language Unit.
********************************************
*/
typedef struct {
BYTE2 Menu_Lcd;
// BYTE1 Reserved;
BYTE1 Exist;
BYTE4 Menu_Lu_Sa;
// Pgcit_t *Pgcit;
} Language_Unit_t;
/*******************************************
* Menu Pgci_t Language Unit Table.
********************************************
*/
typedef struct {
BYTE2 Lu_Ns;
// BYTE2 Reserved;
BYTE4 Lu_Ea;
// Language_Unit_t *Language_Unit;
} Pgci_Ut_t;
/*******************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -