📄 dvd_common.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 + -