⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvdv_nv_data.h

📁 SAMSUNG 5009的源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************
* 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 + -