📄 vd.h
字号:
#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 + -