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

📄 dvd_prv_types.h

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