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

📄 vd.h

📁 三星ic 9980的源代码. 718版.
💻 H
📖 第 1 页 / 共 2 页
字号:
	#if B_PIC_COMPRESS_TRUNC
		#define VD_B_PIC_COMP 				0x0200
	#elif B_PIC_COMPRESS_ROUNDUP
		#define VD_B_PIC_COMP 				0x0600
	#elif B_PIC_COMPRESS_EFR
		#define VD_B_PIC_COMP 				0x0A00
	#else 
		Error!!!
	#endif
#endif

// #define VD_SET_SEQEND_STOP()		rVD_CTRL_L |= 0x80
// #define VD_CLEAR_SEQEND_STOP()		rVD_CTRL &= 0xFFFFFF7F


/* Interrupt control functions */
#define VD_IRQ_CLEAR(x)			WRITE32((UINT8 *)&rVD_IRQC_H, x)//Lumin20050927
#define VD_SET_CMD(x)			WRITE32((UINT8 *)&rVD_CMD_H, x )
#define VD_ALL_INT_ENABLE()	 	IO_WData32_EX((UINT8 *)&rVD_IRQM_H, 0x07f1, 0xffff)
/* Frame control Functions */
#define Y0_PTRTo_CHANGE(x)		WRITE32((UINT8 *)&rY_PTR0TO_H, x )
#define Y0_PTRTe_CHANGE(x) 		WRITE32((UINT8 *)&rY_PTR0TE_H, x )
#define Y1_PTRTo_CHANGE(x) 		WRITE32((UINT8 *)&rY_PTR1TO_H, x )
#define Y1_PTRTe_CHANGE(x) 		WRITE32((UINT8 *)&rY_PTR1TE_H, x )
#define Y2_PTRTo_CHANGE(x) 		WRITE32((UINT8 *)&rY_PTR2TO_H, x )
#define Y2_PTRTe_CHANGE(x) 		WRITE32((UINT8 *)&rY_PTR2TE_H, x )
#define VD_IN_BUF_PTR(x) 		WRITE32((UINT8 *)&rVBV_RD_PTR_H, x )
#define VD_IN_BUF_STOP(x)		WRITE32((UINT8 *)&rVBV_TR_SIZE_H, x )

#define VD_SET_CMD_S(x)				WRITE32_EX((UINT8 *)&rVD_CMD_H, x)
#define VD_ALL_INT_ENABLE_S()	 	IO_WData32_EX((UINT8 *)&rVD_IRQM_H, 0x07f1, 0xffff)
/* Frame control Functions */
#define Y0_PTRTo_CHANGE_S(x)		WRITE32_EX((UINT8 *)&rY_PTR0TO_H, x )
#define Y0_PTRTe_CHANGE_S(x) 		WRITE32_EX((UINT8 *)&rY_PTR0TE_H, x )
#define Y1_PTRTo_CHANGE_S(x) 		WRITE32_EX((UINT8 *)&rY_PTR1TO_H, x )
#define Y1_PTRTe_CHANGE_S(x) 		WRITE32_EX((UINT8 *)&rY_PTR1TE_H, x )
#define Y2_PTRTo_CHANGE_S(x) 		WRITE32_EX((UINT8 *)&rY_PTR2TO_H, x )
#define Y2_PTRTe_CHANGE_S(x) 		WRITE32_EX((UINT8 *)&rY_PTR2TE_H, x )
#define VD_IN_BUF_PTR_S(x) 			WRITE32_EX((UINT8 *)&rVBV_RD_PTR_H, x )
#define VD_IN_BUF_STOP_S(x)		WRITE32_EX((UINT8 *)&rVBV_TR_SIZE_H, x)

#if 0
#define VD_F_TOGGLE()			{ \
									unsigned long temp1,temp2; \
									temp1 = IO_RData32_EX ( ( unsigned char * )&rVD_CTRL_H); \
									temp1 = ( temp1 ^ (unsigned long)0x02 ); \
									WRITE32 ((unsigned char *)&rVD_CTRL_H, temp1); \
								}

#define VD_INT_DISABLE(x)		{ \
									unsigned long temp1, temp = x; \
									temp1 = IO_RData32_EX ( (unsigned char *)&rVD_IRQM_H ); \
									temp1 &= ~((unsigned long)0x01 <<temp); \
    									WRITE32((unsigned char *)&rVD_IRQM_H, temp1 ); \
								}
#endif
VOID VD_INT_DISABLE ( unsigned long x );
VOID VD_F_TOGGLE ( VOID );

#define CMD_RDY_FUNC(x)		cmd_ready_func##x
#define VDMAXIRQ 		27

/* for RTOS */
/*interrupt event bit position */
#define VD_EVENT_CMD_READY		0x01
#define VD_EVENT_LAST_BLK_READY		0x08
#define VD_EVENT_PARSE_STREAM		0x10
#define VD_EVENT_UD_READY		0x40
#define VD_EVENT_SET_ERROR		0x80
#define VD_EVENT_COR_OVERFL		0x100
#define VD_EVENT_VLDB_RDY		0x200
#define VD_EVENT_WRG_CMD		0x400
#define VD_EVENT_EXE_DECODING		0x800
#define VD_EVENT_UNDER_FLOW		0x1000

#define VD_EVENT_SEQ_FND  		0x10000000
#define VD_EVENT_SEQ_EX_FND  		0x04000000
#define VD_EVENT_SEQ_DIS_EXT  		0x02000000
#define VD_EVENT_SEQ_UD_FND  		0x80000000
#define VD_EVENT_SEQ_END_FND  		0x01000000
#define VD_EVENT_GOP_HD_FND  		0x00100000
#define VD_EVENT_GOP_UD_FND  		0x40000000
#define VD_EVENT_PIC_FND  		0x08000000
#define VD_EVENT_PIC_UD_FND  		0x20000000
#define VD_EVENT_PIC_COD_EXT  		0x00800000
#define VD_EVENT_PIC_DIS_EXT 		0x00400000
#define VD_EVENT_COP_EXT_FND  		0x00200000

/* for RTOS */


/* interrupt bit position */
#define PSPA_DTS_FOUND		0
#define PSPA_PTS_FOUND		1
#define VD_SET_ERROR		2
#define IRQ_LAST_BLK_RDY	3
#define VD_FND_GOP		4
#define VD_FND_COP_EX		5
#define VD_FND_PIC_DIS		6
#define VD_FND_PIC_COD		7
#define VD_FND_SEQ_END		8
#define VD_FND_SEQ_DIS		9
#define VD_FND_SEQ_EX		10
#define VD_FND_PIC		11
#define VD_FND_SEQ		12
#define VD_FND_UD_PIC		13
#define VD_FND_UD_GOP		14
#define VD_FND_UD_SEQ		15
#define VD_COR_OVERFL		16
#define VD_CMD_READY		20
#define VD_MI_DATA_REQ		21
#define VD_WRG_CMD		22
#define VD_LAST_UD_RDY		23
#define VD_Q_TBL_FOUND		24
#define VD_UD_EXCEEDS		25
#define VD_VLDB_RDY		26

/* error code definition */
#define ERR_WRONG_PIC_SIZE 	0x21
#define ERR_WRONG_PIC_SIZE1	0x32
#define ERR_WRONG_CHR_FORM	0x31
#define ERR_START_CODE_COR 	0x17
#define ERR_WRONG_HD_ORDER	0x18



#if USE_VD_HISR
// #define 		S5H_VD_HISR_SIZE			240
#define 			S5H_VD_HISR_SIZE			2048
#endif
#define 			VD_NOT_STARTED			1
#define 			VD_STARTED					2
#define			VD_CORR_OVFL_THRESHOLD	0xA0//100//80	//0x80	/* 0x100*/

/* output buffer pointer change functions */
/* input buffer pointer change functions */

#define UD_WR_PTR(x)		rUSER_DATA_WR_PTR = x
#define UD_END_PTR(x)		rUSER_DATA_END_PTR = x
#define UD_WR_ENABLE()		rVD_CTRL &= 0xffffffbf
#define UD_WR_DISABLE()		rVD_CTRL |= 0x00000040

#define VD_F_CLEAR()			rVD_CTRL &= ~0x02

/* functions for VD */
VOID Init_VD ( VOID );
VOID DeInit_VD ( VOID );
VOID RunVCD_VD ( VOID );
void  RunGameCD_VD(void);
VOID VD_InitInt ( VOID );
VOID VD_Isr (SINT tmp);
VOID VD_Reset ( VOID );
VOID VD_WRG_CMDProc ( VOID );
VOID VD_Data_REQProc ( VOID );
VOID VD_CMD_ReadyProc ( VOID );
VOID VD_Set_ErrorProc ( VOID );
VOID CallBack_FrameWriteBufferAvail ( VOID );
VOID CallBack_VBVReadBufferAvail ( VOID );
VOID VD_Resume ( VOID );
VOID VD_Stop ( VOID );
VOID VD_ResetBufferState ( VOID );
VOID VD_PipelineInit (VOID);
VOID VD_FlushBuff(VOID);

/* Interrupt service routine */
extern VOID IRQ_cmd_ready ( VOID );
#if 0	/* KBA #2010@2005# : Code size reduce */
extern VOID IRQ_last_blk_ready ( VOID );
extern VOID IRQ_papa_dts_found ( VOID );
extern VOID IRQ_papa_pts_found ( VOID );
#endif
extern VOID IRQ_vd_set_error ( VOID );
#if 0	/* KBA #2010@2005# : Code size reduce */
extern VOID IRQ_vd_fnd_gop ( VOID );
extern VOID IRQ_vd_fnd_cop_ex ( VOID );
extern VOID IRQ_vd_fnd_pic_dis ( VOID );
extern VOID IRQ_vd_fnd_pic_cod ( VOID );
extern VOID IRQ_vd_fnd_seq_end ( VOID );
extern VOID IRQ_vd_fnd_seq_dis ( VOID );
extern VOID IRQ_vd_fnd_seq_ex ( VOID );
extern VOID IRQ_vd_fnd_pic ( VOID );
extern VOID IRQ_vd_fnd_seq ( VOID );
extern VOID IRQ_vd_fnd_ud_pic ( VOID );
extern VOID IRQ_vd_fnd_ud_gop ( VOID );
extern VOID IRQ_vd_fnd_ud_seq ( VOID );
#endif
extern VOID IRQ_cor_overfl ( VOID );
extern VOID IRQ_mi_data_req ( VOID );
extern VOID IRQ_wrg_cmd ( VOID );
#if 0	/* KBA #2010@2005# : Code size reduce */
extern VOID IRQ_last_ud_rdy ( VOID );
extern VOID IRQ_q_tbl_found ( VOID );
extern VOID IRQ_ud_exceeds ( VOID );
extern VOID IRQ_vldb_rdy ( VOID );
#endif
extern VOID IRQ_VD_Dummy ( void );
#endif	/* __VD_H__ */

⌨️ 快捷键说明

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