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

📄 dvd_common.h

📁 SAMSUNG 5009的源代码
💻 H
字号:
/****************************************************************************
 File name 		:	Dvd_common.h
 Start date		:	2004.4.24	
 By				:	Inseo Han       
 Contact		:	ishan@samsung.com 					
 Description	:	This file contains common strucutes, enum types and defines 
 					used in DVD navigator. And this also contains the prototypes of the
 					functions for getting the state of the DVD navigator.
*****************************************************************************/
#ifndef _DVD_COMMON_H_
#define _DVD_COMMON_H_


#ifdef __cplusplus
extern "C" {
#endif

/********************************************
 * 
 *		DVD-Video/Audio Register Number
 *
 ********************************************/
#define DVD_GPRM_NUM			16
#define DVD_SPRM_NUM			25

/********************************************
 * 
 *		DVD Domain
 *
 ********************************************/
typedef enum {
	DVD_DOM_STOP = 0x0,
	/* For DVD-Video */
	DVD_DOM_FP = 0x01,
	DVD_DOM_VTSM = 0x02,
	DVD_DOM_VMGM = 0x04,
	DVD_DOM_TT = 0x08,
	/* For DVD-Audio */
	DVD_DOM_AMGM = 0x10,
	DVD_DOM_TT_GR = 0x20
} Domain_t;

typedef enum {
	DVD_REPEAT_NONE,		/* There's no repeat set */
	DVD_REPEAT_A,			/* Only Repeat A set */
	DVD_REPEAT_B,			/* Repeat A-B set */
	DVD_REPEAT_PG,			/* Repeat chapter */
	DVD_REPEAT_TT,			/* Repeat title */
	DVD_REPEAT_DISC			/* Repeat disc */
} DvdRepeatState_t;

typedef enum {
	DVD_CP_ERROR,		/* Copy Protection Error (CSS, CPPM) */
	DVD_DUMP_ERROR,
	DVD_REGION_ERROR,
	DVD_CANNOT_PLAY,
	DVD_SERVO_ERROR,
	DVD_PAL_DISC_PROHIBITED,	/* PAL disc playback is not allowed */	
	DVD_UNKNOWN_ERROR
} DvdAbnormalReason_t;

typedef enum {
	DVD_STILL_OFF_BY_TIMER,
	DVD_STILL_OFF_BY_UOP_STILL_OFF,
	DVD_STILL_OFF_BY_UOP_BTN
} DvdStillOffReason_t;

typedef enum {
	DVD_VOBU_STILL,
	DVD_CELL_STILL,
	DVD_PGC_STILL
} DvdStillState_t;

typedef enum {
	DVD_UR_SUCCESS,
	DVD_UR_UNKNOWN,
	DVD_UR_PROHIBIT,
	DVD_UR_OUT_OF_RANGE,
	DVD_UR_INVALID_STATE,
	DVD_UR_INVALID_TTN,
	DVD_UR_INVALID_PTTN,
	DVD_UR_INVALID_TIME,
	DVD_UR_NO_GOUP_PGCN,
	DVD_UR_NO_PREV_PG,
	DVD_UR_NO_NEXT_PG,
	DVD_UR_TRANSIENT_PG,
	DVD_UR_FS_IN_STILL,
	DVD_UR_BS_IN_STILL,	
	DVD_UR_NO_MENU,
	DVD_UR_NO_RESUME_INFO,
	DVD_UR_INVALID_BTN_CMD,
	DVD_UR_INVALID_BTN_NUM,
	DVD_UR_TRANSIENT_AUDIO,
	DVD_UR_SAME_AUDIO_NUM,
	DVD_UR_INVALID_ANGLE_NUM,
	/* Too short RepeatAB interval */
	DVD_UR_TOO_SHORT_REP_AB_INT,
	/* Repeat A is not set */
	DVD_UR_NO_REP_A_SET,
	DVD_UR_BM_EXIST,
	DVD_UR_NO_BM_EXIST,
	DVD_UR_NO_PROGRAM_EXIST
}DvdUopResult_t;



typedef	struct {
	UCHAR	total_num;	/* total number of audio stream in the VMGM, VTSM, VTS */
	UCHAR	cur_id;		/* cur_id among total_num */

#ifdef _DVD_NUM_AVAIL_STREAM
	UCHAR	avail_num;	/* available(selectable) number of the current PGC */
	UCHAR	cur_count;	/* count of the current stream among the available numbers (from 0)*/
#endif	

	UCHAR	c_mode;		/* audio coding mode */
	UCHAR	num_ch;		/* number of audio channel */
	UCHAR	sp_code_1st;	/* specific code 1st byte */
	UCHAR	sp_code_2nd;	/* specific code 2nd byte */
	UCHAR	sp_code_ext;	/* specific code extension */
	UCHAR	app_info;		/* application information */
	UCHAR	fs;				/* sampling rate (0:48kHz, 1:96kHz) */
} DvdvAudioInfo_t;

/* Sub title attribute */
typedef	struct {
	UCHAR	total_num;	/* total number of subpicture stream in the VMGM, VTSM, VTS */
	UCHAR	cur_id;		/* cur_id among total_num */
	
#ifdef _DVD_NUM_AVAIL_STREAM
	UCHAR	avail_num;	/* available(selectable) number of the current PGC */
	UCHAR	cur_count;	/* count of the current stream among the available numbers (from 0)*/
#endif
	ONOFF	onoff;
	UCHAR	c_mode;		/* subpicture coding mode */
	UCHAR	sp_code_1st;	/* specific code 1st byte */
	UCHAR	sp_code_2nd;	/* specific code 2nd byte */
	UCHAR	sp_code_ext;	/* specific code extension */
} DvdvSubtitleInfo_t;

/* Angle information */
typedef struct {
	UCHAR	total_num;
	UCHAR	cur_num;
} DvdvAngleInfo_t;

typedef enum {
	DVD_BTN_NONE,
	DVD_BTN_NORMAL,
	DVD_BTN_HIDDEN
}	DvdBtnState_t;


/* Enum types for DVD playback mode */
typedef enum {
	DVD_PB_NORMAL,
	DVD_PB_RANDOM,
	DVD_PB_PROGRAM
} DvdPlayMode_t;


/**********************************************************
 * 
 *		Basic types for DVD-Video data 
 *
 *********************************************************/
#if _APP_CAP_OSD_PROG_SELECT_3_DIGIT  // Qian liping 050813
typedef	BYTE2	Ttn_t;		/* 1~999 */
typedef BYTE2	Vtsn_t;		/* 1~999 */
#else
typedef	BYTE1	Ttn_t;		/* 1~99 */
typedef BYTE1	Vtsn_t;		/* 1~99 */
#endif/*_SUPPORT_PROG_SELECT_NUMBER_3*/

typedef BYTE1	VtsTtn_t;	/* 1~99 */
typedef BYTE2	Pgcn_t;		/* 1~32767 */
typedef BYTE1	Pgn_t;		/* 1~99 */
typedef BYTE2	Pttn_t;		/* 1~99 (one sequential) 
								or 1~999 (random/shuffle) */
typedef BYTE1	Cn_t;		/* 1~255 */


/**********************************************************
 * 
 *		Basic types for DVD-Audio data 
 *
 *********************************************************/
typedef BYTE1	AttGrn_t;	/* 1~9 */
typedef BYTE1	Tkn_t;	/* 1~99 */
typedef BYTE1	Attn_t;		/* 1~99 */
typedef BYTE1	Atsn_t;		/* 1~99 */
typedef BYTE1	Asvun_t;	/* 1~99 */
typedef BYTE1	Asvn_t;		/* 1~99 */
typedef BYTE1	Dlistn_t;	/* 1~99 */



/**********************************************************
 * 
 *		Structure for DVD power-off resume
 *
 *		Change order to get minimal size (yanglu, 060302)
 *********************************************************/
typedef struct {
	BYTE4		nv_pck_addr;	/* from the first byte of VOBS */
	BYTE1		hl_btnn;
	Cn_t			cn;
	Pgcn_t		pgcn;
	Pgcn_t		first_pgcn;
	Ttn_t		ttn;
	BYTE1		angle_num;
	BYTE1		audio_stream_id;
	BYTE1		subtitle_stream_id;
	BYTE1		reserved;				/* dummy for padding */		
	BYTE2		nav_timer;
	Pgcn_t		nav_timer_pgcn;	
	BYTE2		gprm[DVD_GPRM_NUM];	
	BYTE2		gprm_mode;	/* GPRM mode (16bit)*/
} DvdPowerOffResumeInfo_t;


/**********************************************************
 * 
 *		DVD playback time structure
 *
 *********************************************************/

typedef struct {
	UINT	hour;
	UINT	min;
	UINT	sec;
	UINT	frame;
} PlaybackTime_t;



void DvdVideoPrepare( ULONG argc, void *argv );
void DvdVideoStart( ULONG argc, void *argv );
void DvdVideoEnd( ULONG argc, void *argv );
BYTE2 DvdExt_GetDvdvAudioCodingMode(VOID);
BYTE4 DvdExt_GetDvdvAudioAppMode(void);
BOOL DvdExt_GetDvdvAudioAttribute( DvdvAudioInfo_t *ast );
BOOL DvdExt_GetDvdvSubtitleAttribute( DvdvSubtitleInfo_t *spst );
BOOL DvdExt_GetDvdvAngleAttribute( DvdvAngleInfo_t *angle );
#ifdef _DVD_BOOKMARK
BOOL DvdExt_GetDvdvBookmarkAttribute( BookmarkInfo_t *ptr_bm,UCHAR nBm );   // lm 060401
#endif
Domain_t DvdExt_GetDvdDomain(void);
Domain_t DvdExt_GetDvdResumeStopDomain(void);
void DvdExt_GetDvdVideoInfo(DvdVideoInfo_t *ptr_video_info);
BOOL DvdExt_GetDvdTtInfo(Ttn_t ttn, Pttn_t *ptr_total_pttn);
UCHAR DvdExt_GetPrevSelectedMenuId(void);
BOOL DvdExt_IsZoomAllowed( void );
BOOL DvdExt_IsEzViewAllowed( void );
BOOL DvdExt_IsEzViewMode(void);
BOOL DvdExt_IsDvdvAngleBlock(void);
RepeatSub_et DvdExt_GetDvdvRepeatState(void);
RepeatSub_et DvdExt_GetDvdvRepeatABState(void);
void DvdExt_SetDvdvRepeatNone(void);
void DvdExt_GetDvdvEzViewState(EzViewState_t *ez_state);
BOOL DvdExt_GetDvdvCurrentPlayingPosition(DvdPowerOffResumeInfo_t *resume_info);
BOOL DvdExt_IsDvdFullStopMode(void);
DvdBtnState_t DvdExt_GetDvdButtonSelectionState(void);
BOOL DvdExt_IsDvdButtonNumberSelectable( USHORT *low, USHORT *high );
BOOL DvdExt_IsDvdRepeatAllowed( void );
BOOL DvdExt_IsPausePossible(void);
void DvdExt_ResetDvdvPtl(void);
void DvdExt_GetDvdvPbTime( BYTE1 *hour, BYTE1 *min, BYTE1 *sec );
#ifdef _DVD_REMAIN_PB_TIME
void DvdExt_GetDvdvAllPbTimeInfo(PlaybackTime_t *pCur_pb_time, PlaybackTime_t *pTotal_pb_time,
								PlaybackTime_t *pCh_start_pb_time, PlaybackTime_t *pCh_end_pb_time);
VOID DvdExt_GetDvdvTitleTime(BYTE1 *cur_hr, BYTE1 *cur_min, BYTE1 *cur_sec );
VOID DvdExt_GetDvdvTitleCurrentTimeTotalTime(UINT *cur_time , UINT *total_time );
VOID DvdExt_GetDvdvChapterCurrentTimeTotalTime(UINT *cur_time , UINT *total_time );//BY QQ 060118
VOID DvdExt_GetDvdvChapterTime(BYTE1 *cur_hr, BYTE1 *cur_min, BYTE1 *cur_sec );
#endif
UCHAR/*DvdPlayMode_t*/ DvdExt_GetDvdvPlayMode( void );
void DvdExt_SetDvdAudioLangChanged(void);
void DvdExt_SetDvdSubtitleLangChanged(void);
BOOL DvdExt_GetDvdRegionCodeMatched(void);
#ifdef _DVD_HANDLE_QUICK_PREV_NEXT
BOOL DvdExt_IsSkipAllowed( BOOL IsNext );
BYTE2 DvdExt_GetDvdPgcCurrentPgLoopCount(void);
BYTE1 DvdExt_GetDvdPgcTotalPgLoopCount(void);
BOOL DvdExt_IsCurrentPgcSequentialMode(void);
#endif
#ifdef _ENABLE_DVDV_DIGEST
BOOL DvdExt_IsCurrentDigestMode(VOID);//clina 060731
#endif

#if 1	//_APP_CAP_GLB_CHECK_LOAD_APP
/* <<< @: 5008CHN-XXX.Lu Shuai 050719 : For set svcd audio channel*/
BYTE4 GetDvdvAudioAppMode(void);
BYTE2 GetDvdvAudioCodingMode(VOID);	/* Change the return mode(yanglu, 060220) */
/* >>> @: 5008CHN-XXX.Lu Shuai 050719 */
BOOL GetDvdvAudioAttribute( DvdvAudioInfo_t *ast );
BOOL GetDvdvSubtitleAttribute( DvdvSubtitleInfo_t *spst );
BOOL GetDvdvAngleAttribute( DvdvAngleInfo_t *angle );
BOOL GetDvdvBookmarkAttribute( BookmarkInfo_t *ptr_bm,UCHAR nBm );   // lm 060401
Domain_t GetDvdDomain(void);
Domain_t GetDvdResumeStopDomain(void);
void GetDvdVideoInfo(DvdVideoInfo_t *ptr_video_info);
BOOL GetDvdTtInfo(Ttn_t ttn, Pttn_t *ptr_total_pttn);
UCHAR GetPrevSelectedMenuId(void);
BOOL IsSkipAllowed( void );
BOOL IsZoomAllowed( void );
BOOL IsEzViewAllowed( void );
BOOL Is3DAllowed( void );
BOOL IsEzViewMode(void);
BOOL IsDvdvAngleBlock(void);
RepeatSub_et GetDvdvRepeatState(void);
RepeatSub_et GetDvdvRepeatABState(void);
void SetDvdvRepeatNone(void);
void GetDvdvEzViewState(EzViewState_t *ez_state);
BOOL GetDvdvCurrentPlayingPosition(DvdPowerOffResumeInfo_t *resume_info);
BOOL IsDvdFullStopMode(void);
DvdBtnState_t GetDvdButtonSelectionState(void);
BOOL IsDvdButtonNumberSelectable( USHORT *low, USHORT *high );
BOOL IsDvdRepeatAllowed( void );
BOOL IsPausePossible(void);
void ResetDvdvPtl(void);
void GetDvdvPbTime( BYTE1 *hour, BYTE1 *min, BYTE1 *sec );

#ifdef _DVD_REMAIN_PB_TIME
void GetDvdvAllPbTimeInfo(PlaybackTime_t *pCur_pb_time, PlaybackTime_t *pTotal_pb_time,
								PlaybackTime_t *pCh_start_pb_time, PlaybackTime_t *pCh_end_pb_time);
#endif

UCHAR/*DvdPlayMode_t*/ GetDvdvPlayMode( void );  //wjin 060710
void SetDvdAudioLangChanged(void);
void SetDvdSubtitleLangChanged(void);
BOOL GetDvdRegionCodeMatched(VOID);


#else
/* <<< @: 5008CHN-XXX.Lu Shuai 050719 : For set svcd audio channel*/
#define GetDvdvAudioAppMode DvdExt_GetDvdvAudioAppMode
#define GetDvdvAudioCodingMode DvdExt_GetDvdvAudioCodingMode	
/* >>> @: 5008CHN-XXX.Lu Shuai 050719 */
#define GetDvdvAudioAttribute DvdExt_GetDvdvAudioAttribute
#define GetDvdvSubtitleAttribute DvdExt_GetDvdvSubtitleAttribute
#define GetDvdvAngleAttribute DvdExt_GetDvdvAngleAttribute
#ifdef _DVD_BOOKMARK
#define GetDvdvBookmarkAttribute DvdExt_GetDvdvBookmarkAttribute
#endif
#define GetDvdDomain DvdExt_GetDvdDomain
#define GetDvdResumeStopDomain	DvdExt_GetDvdResumeStopDomain
#define GetDvdVideoInfo DvdExt_GetDvdVideoInfo
#define GetDvdTtInfo DvdExt_GetDvdTtInfo
#define GetPrevSelectedMenuId DvdExt_GetPrevSelectedMenuId
#define IsZoomAllowed DvdExt_IsZoomAllowed
#define IsEzViewAllowed DvdExt_IsEzViewAllowed
#define IsEzViewMode DvdExt_IsEzViewMode
#define IsDvdvAngleBlock DvdExt_IsDvdvAngleBlock
#define GetDvdvRepeatState DvdExt_GetDvdvRepeatState
#define GetDvdvRepeatABState DvdExt_GetDvdvRepeatABState
#define SetDvdvRepeatNone DvdExt_SetDvdvRepeatNone
#define GetDvdvEzViewState DvdExt_GetDvdvEzViewState
#define GetDvdvCurrentPlayingPosition DvdExt_GetDvdvCurrentPlayingPosition
#define IsDvdFullStopMode DvdExt_IsDvdFullStopMode
#define GetDvdButtonSelectionState DvdExt_GetDvdButtonSelectionState
#define IsDvdButtonNumberSelectable DvdExt_IsDvdButtonNumberSelectable
#define IsDvdRepeatAllowed DvdExt_IsDvdRepeatAllowed
#define IsPausePossible DvdExt_IsPausePossible
#define ResetDvdvPtl DvdExt_ResetDvdvPtl
#define GetDvdvPbTime DvdExt_GetDvdvPbTime

#ifdef _DVD_REMAIN_PB_TIME//By QQ 060118
#define GetDvdvAllPbTimeInfo DvdExt_GetDvdvAllPbTimeInfo
#define GetDvdvTitleTime DvdExt_GetDvdvPbTime
#define GetDvdvTitleCurrentTimeTotalTime DvdExt_GetDvdvTitleCurrentTimeTotalTime
#define GetDvdvChapterCurrentTimeTotalTime DvdExt_GetDvdvChapterCurrentTimeTotalTime
#define GetDvdvChapterTime DvdExt_GetDvdvChapterTime
#endif

#define GetDvdvPlayMode DvdExt_GetDvdvPlayMode
#define SetDvdAudioLangChanged DvdExt_SetDvdAudioLangChanged
#define SetDvdSubtitleLangChanged DvdExt_SetDvdSubtitleLangChanged
#define GetDvdRegionCodeMatched	DvdExt_GetDvdRegionCodeMatched

#ifdef _DVD_HANDLE_QUICK_PREV_NEXT
#define IsSkipAllowed DvdExt_IsSkipAllowed
#define GetDvdPgcCurrentPgLoopCount DvdExt_GetDvdPgcCurrentPgLoopCount
#define GetDvdPgcTotalPgLoopCount DvdExt_GetDvdPgcTotalPgLoopCount
#define IsCurrentPgcSequentialMode DvdExt_IsCurrentPgcSequentialMode
#endif

#endif
/****************************************************
 * 
 *		Maximum program number
 *
 ****************************************************/
#define DVD_MAX_PROGRAM		(_APP_VALUE_MAX_PROGRAM_NUM)

typedef struct {
	Ttn_t ttn[DVD_MAX_PROGRAM];
	Pttn_t pttn[DVD_MAX_PROGRAM];
	BYTE2	cur_index;	/* should be 0~(DVD_MAX_PROGRAM-1) */
	BYTE2	num_program;	/* number of program */
	
} DvdProgram_t;

extern DvdProgram_t gDvd_program;
/* <<< @: 5008CHN-XXX. Lu Shuai 050719: Audio stream coding mode.*/
typedef enum {				
	C_MODE_AC3 = 0,
	C_MODE_MPEG12_NOEXT = 2,
	C_MODE_MPEG2_EXT = 3,
	C_MODE_LPCM = 4,
	C_MODE_DTS = 6,
	C_MODE_SDDS = 7		
} Dvdv_Coding_Mode_et;
/* >>> @: 5008CHN-XXX. Lu Shuai 050719*/
//BY QQ 051121
#define GetDvdStopDomainValidInNumber() ( IsDvdFullStopMode() ||\
					(GetDvdResumeStopDomain() == DVD_DOM_VMGM ||GetDvdResumeStopDomain() == DVD_DOM_VTSM))

#ifdef __cplusplus
}
#endif

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -