📄 dvd_prv_types.h
字号:
/* To prevent from abnormal pb time increasing (20050715, ishan) */
BYTE4 prev_pci_vobu_s_ptm ;
BYTE4 prev_add_frame;
#ifdef _DVD_REMAIN_PB_TIME
/* For remain time display (20050507, ishan) */
PlaybackTime_t ptt_start_pb_time;
PlaybackTime_t ptt_end_pb_time;
PlaybackTime_t total_pb_time;
#endif
DvdvAspect_t source_aspect_ratio; /* 0x0: 4:3, 0x3: 16:9 */
DvdRepeat_t repeat_info; /* for repeat functionality */
//////////////////////////////////////////////////
/* info used when resuming */
BYTE4 goto_nv_pck_addr; /* from the first byte of VOBS */ /* from the first byte of AOBS */
#ifdef _DVD_FAST_RESUME
BYTE4 goto_ilvu_ea; /* from the first byte of VOBS */
#endif
BYTE1 goto_angle_num;
///////////////////////////////////////////////////
#ifdef _DVD_EZ_VIEW
DvdEzView_t init_ez_view_mode; /* initial ez view mode (Samsung specific) */
DvdEzView_t ez_view_mode; /* Samsung specifit */
#endif
#ifdef _DVD_BOOKMARK
DvdBookmarkInfo_t bookmark_info[MAX_BOOKMARK_NUM]; /* Samsung specific */
#endif
#ifdef _ENABLE_DVDV_DIGEST
Dvdv_digest_t dvdv_digest;/*Digest structure . Jiang Shanbin*/
#endif
BYTE4 prev_nv_pck_lba; /* for emergency routine */
BYTE4 pgc_retry_count;
BYTE1 use_backup[13]; /* for using backup IFO */
BYTE4 update_start_lba; /* NV_PACK START LBA to update play info */
BYTE4 update_end_lba; /* NV_PACK END LBA to update play info */
BYTE4 read_try_count; /* accumulated retry count */
BYTE4 pgn_end_lba; /* End LBA of the currently playing PG */
Pgn_t pgn_repeat; /* PGN to repeat */
#ifdef _DVD_HANDLE_NAV_FAULT
BYTE4 tt_start_lba; /* From the first LBA of VOBS */
#endif
#ifdef _DVD_MENU_RETURN
#ifndef _DVD_RETURN_TO_ROOT_MENU
#ifndef _DVD_RETURN_TO_TITLE_MENU
DvdMenuReturnInfo_t menu_return_info;
#endif
#endif
#endif
/********************************************
* For DVD-Video Only
********************************************/
DvdMenuId_t menu_id;
DvdTmpPtl_t tmp_ptl_info;
BYTE1 ptl_in_eeprom;
#ifdef _ENABLE_DVD_AUDIO
/********************************************
* For DVD-Audio Only
********************************************/
DvdaGroupInfo_t att_gr_info;
Tkn_t tkn_read;
Tkn_t tkn_play;
Dlistn_t dlistn;
BYTE4 dlist_pts;
#endif
/********************************************
* For Playing VOB
********************************************/
/* Common information shared by
Playing and Reading information */
Vtsn_t vtsn;
/* Playing information only */
Pttn_t pttn_play;
BYTE2 pg_loop_count_play;
BYTE1 shuffle_history_play[NUM_HISTORY_ARRAY];
C_Pbi_t c_pbi_play;
BYTE4 nv_pack_lba_play;
/* Reading information only */
Pttn_t pttn_read;
#ifdef _DVD_HANDLE_REPEAT_CH_AS_PTT_UNIT
/* start PGN and end PGN of the current playing PTT.
This is used for Repeat chapter which consists of multiple PGs (20050611,ishan) */
Pgn_t pttn_play_start_pgn;
Pgn_t pttn_play_end_pgn;
#endif
BYTE2 pg_loop_count_read;
BYTE1 shuffle_history_read[NUM_HISTORY_ARRAY];
C_Pbi_t c_pbi_read;
BYTE4 start_lba_read;
BYTE4 end_lba_read;
/* The start and end LBA of the currently reading unit (20060413,ishan) */
/* (Fix the bug) NF100, TT=12 (Seamless angle block), Set angle 3 and start to play.
-> Press Next skip and change the angle to angle 1 immediately
-> Then the emergency happens */
BYTE4 start_lba_play;
BYTE4 end_lba_play;
/* Replaced by gState.start_lba_play (20060413,ishan) */
#if 0
/* current start LBA of the currently reading unit */
/* (Fix the bug) DSI does not have the valid addr info in some recorded title.
(20051125,ishan) */
BYTE4 cur_start_lba_read;
#endif
BYTE4 vobu_e_ptm;
/* Decoding stream number */
BYTE1 subpic_stream_id;
BYTE1 audio_stream_id;
/* for executing navigation command */
BYTE2 gprm_mode; /* GPRM mode (16bit)*/
/* Still Time Value */
BYTE1 still_time; /* 0-254 sec, 255 : infinite */
/* Current the attributes */
V_Atr_t cur_v_atr;
Ast_Atr_t cur_ast_atr;
#ifdef _ENABLE_DVD_AUDIO
/********************************************
* For playing AOB
********************************************/
/* Common information shared by
Playing and Reading information */
Atsn_t atsn;
BYTE1 asvun_load; /* currently loaded ASVUN */
BYTE1 asv_loop_count; /* for shuffle of ASV */
/* Playing information only */
AtsPgi_t ats_pgi_play;
AtsAsvPbiSrp_t ats_asv_pbi_srp_play;
/* Reading information only */
AtsPgi_t ats_pgi_read;
AtsAsvPbiSrp_t ats_asv_pbi_srp_read;
/* previous AOTT play info for checking ASVU range */
Pgcn_t prev_play_ats_pgcn;
Pgn_t prev_play_ats_pgn;
/*Attribute */
AottAudioAtr_t aott_ast_atr;
#endif
} DvdState_t;
/*******************************************************************
*
* Accessing Module for GPRMs and SPRMs
*
* To get or set SPRM, don't use global variable directly.
* Instead use these access modules.
*******************************************************************/
/**********************************************
* For DVD-Video
**********************************************/
#ifdef _ENABLE_DVD_AUDIO
/*
added by CKLee. 2005.09.27
*/
#define IS_DVD_AUDIO_MODE() (gIsDvdAudio)
#define SET_DVD_AUDIO_MODE() (gIsDvdAudio = 1)
#define SET_DVD_VIDEO_MODE() (gIsDvdAudio = 0)
#define RESET_DVD_NAVI_MODE() (gIsDvdAudio = 0)
#endif
#ifdef _DVD_NO_MACRO_FUNC
#define GET_GPRM(num) (gState.registers.gprm[(num)])
VOID SET_GPRM(BYTE4 num, BYTE2 val);
#define GET_GPRM_MODE(num) ((gState.gprm_mode>>(num)) & 0x01 )
VOID SET_GPRM_MODE(BYTE4 num, BYTE4 mode);
#define GET_SPRM(num) (gState.registers.sprm[(num)])
#define SET_SPRM(num, val) (gState.registers.sprm[(num)] = (val))
#define GET_M_LCD() (gState.registers.sprm[0])
#define SET_M_LCD(lcd) (gState.registers.sprm[0] = (lcd) )
#define GET_ASTN() (gState.registers.sprm[1] & 0x0f)
VOID SET_ASTN(BYTE1 astn);
/* Get the whole 2 bytes of SPRM[2] */
#define GET_SPSTN_AND_DISP() (gState.registers.sprm[2] & 0x7f)
VOID SET_SPSTN_AND_DISP(BYTE2 data);
/* Get or Set the subpicture stream number only */
#define GET_SPSTN() (gState.registers.sprm[2] & 0x3f)
VOID SET_SPSTN(BYTE4 spstn);
/* Get or Set the display flag of the subpicture only */
#define GET_SPST_DISP() ((gState.registers.sprm[2]>>6) & 0x01)
VOID SET_SPST_DISP(BYTE4 flag);
#define GET_AGLN() (gState.registers.sprm[3] & 0x0f)
VOID SET_AGLN(BYTE2 agln);
#define GET_TTN() ((BYTE1)gState.registers.sprm[4]) /* 1~99*/
VOID SET_TTN(BYTE2 ttn);
#define GET_VTS_TTN() ((BYTE1)gState.registers.sprm[5]) /* 1~99 */
VOID SET_VTS_TTN(BYTE2 vts_ttn);
#define GET_TT_PGCN() (gState.registers.sprm[6])
VOID SET_TT_PGCN(BYTE2 pgcn);
#define GET_PTTN() (gState.registers.sprm[7])
VOID SET_PTTN(BYTE2 pttn);
#define GET_HL_BTNN() ((BYTE1) ((gState.registers.sprm[8]>>10) & 0x3f) ) /* 1~36 */
VOID SET_HL_BTNN(BYTE2 btnn);
#define GET_NV_TMR() (gState.registers.sprm[9])
#define SET_NV_TMR(nv_tmr) (gState.registers.sprm[9] = (nv_tmr))
#define GET_PGCN_FOR_NV_TMR() (gState.registers.sprm[10])
#define SET_PGCN_FOR_NV_TMR(pgcn) (gState.registers.sprm[10] = ((pgcn)&0x7fff))
#define GET_P_AMXMD() (gState.registers.sprm[11])
#define SET_P_AMXMD(mode) (gState.registers.sprm[11] = (mode))
#define GET_CTY_CD() (gState.registers.sprm[12])
#define SET_CTY_CD(code) (gState.registers.sprm[12] = (code))
#define GET_PTL_LVL() (gState.registers.sprm[13] & 0x0f)
VOID SET_PTL_LVL(BYTE2 level);
#define GET_VIDEO_CFG() (gState.registers.sprm[14])
#define SET_VIDEO_CFG(cfg) (gState.registers.sprm[14] = (cfg))
#define GET_DISP_ASPECT() ((gState.registers.sprm[14]>>10) & 0x03)
#define SET_DISP_ASPECT(ratio) (gState.registers.sprm[14] = \
((gState.registers.sprm[14]&0x0300) | (BYTE2)(((ratio)&0x03)<<10)) )
#define GET_DISP_MODE() ((gState.registers.sprm[14]>>8) & 0x03)
#define SET_DISP_MODE(mode) (gState.registers.sprm[14] = \
((gState.registers.sprm[14]&0x0c00) | (BYTE2)(((mode)&0x03)<<8)))
#define GET_AUDIO_CFG() (gState.registers.sprm[15])
#define SET_AUDIO_CFG(cfg) (gState.registers.sprm[15] = (cfg))
#define GET_AST_LCD() (gState.registers.sprm[16])
#define SET_AST_LCD(lcd) (gState.registers.sprm[16] = (lcd))
#define GET_AST_LCD_EXT() (gState.registers.sprm[17])
#define SET_AST_LCD_EXT(ext) (gState.registers.sprm[17] = (ext))
#define GET_SPST_LCD() (gState.registers.sprm[18])
#define SET_SPST_LCD(lcd) (gState.registers.sprm[18] = (lcd))
#define GET_SPST_LCD_EXT() (gState.registers.sprm[19])
#define SET_SPST_LCD_EXT(ext) (gState.registers.sprm[19] = (ext))
#define GET_P_RCD() (gState.registers.sprm[20] & 0x00ff)
#define SET_P_RCD(rcd) (gState.registers.sprm[20] = ((rcd)&0x00ff))
#else
#define GET_GPRM(num) (gState.registers.gprm[(num)])
#define SET_GPRM(num, val) (gState.registers.gprm[(num)] = (val))
#define GET_GPRM_MODE(num) ((gState.gprm_mode>>(num)) & 0x01 )
#define SET_GPRM_MODE(num, mode) \
((mode == GPRM_MODE_COUNTER) ? (gState.gprm_mode |= (1<<(num))) : (gState.gprm_mode &= ~(1<<(num))) )
#define GET_SPRM(num) (gState.registers.sprm[(num)])
#define SET_SPRM(num, val) (gState.registers.sprm[(num)] = (val))
#define GET_M_LCD() (gState.registers.sprm[0])
#define SET_M_LCD(lcd) (gState.registers.sprm[0] = (lcd) )
#define GET_ASTN() (gState.registers.sprm[1] & 0x0f)
#define SET_ASTN(astn) (gState.registers.sprm[1] = (((astn) & 0x0f)>7 && ((astn) & 0x0f)!=0x0f)? (gState.registers.sprm[1]& 0x0f) : ((astn) & 0x0f))
/* Get the whole 2 bytes of SPRM[2] */
#define GET_SPSTN_AND_DISP() (gState.registers.sprm[2] & 0x7f)
#define SET_SPSTN_AND_DISP(data) (gState.registers.sprm[2] = \
(((data)&0x3f)>31 && ((data)&0x3f)!=63 && ((data)&0x3f)!=62 )? (gState.registers.sprm[2]&0x7f) : ((data)&0x7f))
/* Get or Set the subpicture stream number only */
#define GET_SPSTN() (gState.registers.sprm[2] & 0x3f)
#define SET_SPSTN(spstn) (gState.registers.sprm[2] = \
(((spstn)&0x3f)>31 && ((spstn)&0x3f)!=63 && ((spstn)&0x3f)!=62 )? \
(gState.registers.sprm[2]&0x7f) : ((gState.registers.sprm[2]&0x40) | ((spstn) & 0x3f)))
/* Get or Set the display flag of the subpicture only */
#define GET_SPST_DISP() ((gState.registers.sprm[2]>>6) & 0x01)
#define SET_SPST_DISP(flag) (gState.registers.sprm[2] = \
((gState.registers.sprm[2]&0x3f) | (BYTE2)(((flag)&0x01)<<6)) )
#define GET_AGLN() (gState.registers.sprm[3] & 0x0f)
#define SET_AGLN(agln) (gState.registers.sprm[3] = (((agln)&0x0f)>0 && ((agln)&0x0f)<10)? ((agln)&0x0f) : (gState.registers.sprm[3]&0x0f))
#define GET_TTN() ((BYTE1)gState.registers.sprm[4]) /* 1~99*/
#define SET_TTN(ttn) (gState.registers.sprm[4] = (((ttn)&0x7f)>0 && ((ttn)&0x7f)<100)? (ttn) : gState.registers.sprm[4])
#define GET_VTS_TTN() ((BYTE1)gState.registers.sprm[5]) /* 1~99 */
#define SET_VTS_TTN(vts_ttn) (gState.registers.sprm[5] = (((vts_ttn)&0x7f)>0 && ((vts_ttn)&0x7f)<100)? (vts_ttn) : gState.registers.sprm[5])
#define GET_TT_PGCN() (gState.registers.sprm[6])
#define SET_TT_PGCN(pgcn) (gState.registers.sprm[6] = (((pgcn)&0x7fff)==0)? gState.registers.sprm[6] : (pgcn))
#define GET_PTTN() (gState.registers.sprm[7])
#define SET_PTTN(pttn) (gState.registers.sprm[7] = (((pttn)&0x3ff)>0 && ((pttn)&0x3ff)<100)? \
(pttn) : gState.registers.sprm[7])
#define GET_HL_BTNN() ((BYTE1) ((gState.registers.sprm[8]>>10) & 0x3f) ) /* 1~36 */
#define SET_HL_BTNN(btnn) (gState.registers.sprm[8] = (((btnn)&0x3f)>0 && ((btnn)&0x3f)<37)? \
(BYTE2)(((btnn)&0x3f)<<10) : gState.registers.sprm[8])
#define GET_NV_TMR() (gState.registers.sprm[9])
#define SET_NV_TMR(nv_tmr) (gState.registers.sprm[9] = (nv_tmr))
#define GET_PGCN_FOR_NV_TMR() (gState.registers.sprm[10])
#define SET_PGCN_FOR_NV_TMR(pgcn) (gState.registers.sprm[10] = ((pgcn)&0x7fff))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -