📄 psd.h
字号:
/******************************************************************************
* File name : Psd.h
* Start date : 10. 25. 2002
* By : Chongkun Lee
* Contact : bach1004@samsung.com
* Description: Header file of Program Stream Demux Low Level Functions
* $Log:$
* Rev0.0
******************************************************************************
*/
#ifndef _PSD_H_
#define _PSD_H_
#ifdef __cplusplus
extern "C" {
#endif
/******************************************************************************
* INCLUDES
******************************************************************************/
#include "Basic_typedefs.h"
#include "S5h_capability.h"
#include "PSD_reg.h"
#if USE_PSD_HISR
/* Resource restriction */
#define S5H_PSD_HISR_SIZE 2048
#define S5H_PSD_QUEUE_SIZE 10
extern SysHisr_t gHisr_PSD;
extern SysHisr_t gHisr_PSD_SequenceEnd;
#endif
/******************************************************************************
* Data Structure For PSD API
******************************************************************************/
typedef struct {
UINT left;
UINT top;
} PSD_Q_des_t;
/******************************************************************************
* interrupt bit position
******************************************************************************/
#if 0//Lumin20050822==>optimized
#define PSD_BUF0_FULL (1<<0)
#define PSD_BUF1_FULL (1<<1)
#define PSD_BUF2_FULL (1<<2)
#define PSD_BUF3_FULL (1<<3)
#define PSD_BUF4_FULL (1<<4)
#define PSD_BUF5_FULL (1<<5)
#define PSD_BUF6_FULL (1<<6)
#define PSD_BUF7_FULL (1<<7)
#define PSD_PTS_DTS_0 (1<<8)
#define PSD_PTS_DTS_1 (1<<9)
#define PSD_PTS_DTS_2 (1<<10)
#define PSD_PTS_DTS_3 (1<<11)
#define PSD_PTS_DTS_4 (1<<12)
#define PSD_PTS_DTS_5 (1<<13)
#define PSD_PTS_DTS_6 (1<<14)
#define PSD_PTS_DTS_7 (1<<15)
#define PSD_SECT_FINISH (1<<16)
#define PSD_SYS_HEADER (1<<17)
#define PSD_IN_BUF_EMPTY (1<<24)
#define PSD_ILLEGAL_ID (1<<25)
#define PSD_ERR_EDC (1<<26)
#define PSD_STREAM_INVAL (1<<27)
#define PSD_SEQUENCE_END (1<<28)
#define PSD_MAX_IRQ 29 /* Simply Number of IRQs, Not IRQ*/
#else
#define PSD_BUF0_FULL (1<<0)
#define PSD_BUF1_FULL (1<<1)
#define PSD_PTS_DTS_0 (1<<8)
#define PSD_IN_BUF_EMPTY (1<<24)
#define PSD_SEQUENCE_END (1<<28)
#define PSD_MAX_IRQ 29 /* Simply Number of IRQs, Not IRQ*/
#endif
/******************************************************************************
* PSD CONFIG0 define values
******************************************************************************/
#define PSD_CONF_CDDA_AUDIO_2352 0x10 /* 0010 0000 */
#define PSD_CONF_CD_RAW_2352 0x20 /* 0010 0000 */
#define PSD_CONF_CD_RAW_2352_XA 0x22 /* 0010 0010 */
#define PSD_CONF_CD_MODE0 0x30 /* 0011 0000 */
#define PSD_CONF_CD_MODE1 0x34 /* 0011 0100 */
#define PSD_CONF_CD_MODE2 0x38 /* 0011 1000 */
#define PSD_CONF_CD_XA_FORM1 0x3A /* 0011 1010 */
#define PSD_CONF_CD_XA_FORM2 0x3B /* 0011 1011 */
#define PSD_CONF_SEAMLESS 0x40 /* 0100 0000 */
#define PSD_CONF_EDC_ON (0<<8)
#define PSD_CONF_EDC_OFF (1<<8)
#define PSD_CONF_EDC_ONLY (1<<9)
#define PSD_CONF_SECT_FIN_CONT (0<<10)
#define PSD_CONF_SECT_FIN_STOP (1<<10)
#define PSD_CONF_BYPASS (1<<11)
#define PSD_CONF_HQVCD (1<<12)
#define PSD_CONF_ILL_ID_CONT (0<<13)
#define PSD_CONF_ILL_ID_STOP (1<<13)
/******************************************************************************
* PSD IRQ bit position
******************************************************************************/
#define PSD_IRQ_BUF0_FULL 0x1
#define PSD_IRQ_BUF1_FULL 0x2
#define PSD_IRQ_BUF2_FULL 0x4
#define PSD_IRQ_BUF3_FULL 0x8
#define PSD_IRQ_BUF4_FULL 0x10
#define PSD_IRQ_BUF5_FULL 0x20
#define PSD_IRQ_BUF6_FULL 0x40
#define PSD_IRQ_BUF7_FULL 0x80
#define PSD_IRQ_PTS_DTS0 0x100
#define PSD_IRQ_PTS_DTS1 0x200
#define PSD_IRQ_PTS_DTS2 0x400
#define PSD_IRQ_PTS_DTS3 0x800
#define PSD_IRQ_PTS_DTS4 0x1000
#define PSD_IRQ_PTS_DTS5 0x2000
#define PSD_IRQ_PTS_DTS6 0x4000
#define PSD_IRQ_PTS_DTS7 0x8000
#define PSD_IRQ_SECT_FIN 0x10000
#define PSD_IRQ_NEW_SYS_HEAD 0x20000
#define PSD_IRQ_EXT_IRQ 0x40000
#define PSD_IRQ_TBUF_EMPTY 0x1000000
#define PSD_IRQ_ILLEGAL_ID 0x2000000
#define PSD_IRQ_ERR_EDC 0x4000000
#define PSD_IRQ_STREAM_INVLD 0x8000000
#define PSD_IRQ_ON 0x80000000
#define PSD_IRQ_SEQ_END 0x10000000
/******************************************************************************
* PSD Filter mode value
******************************************************************************/
#define PSD_MODE_MPEG 0x12 /* 00010010 MPEG A/V */
#define PSD_MODE_AUDIO 0x1B /* 00011011 Not MPEG Audio */
#define PSD_MODE_SUBPIC 0x33 /* 00110011 DVD Sub-picture */
#define PSD_MODE_OGT 0x53 /* 01010011 SVCD OGT */
#define PSD_MODE_NAV 0x27 /* 00100111 DVD Navigation Stream */
/******************************************************************************
* PSD Filter Ena value
******************************************************************************/
#define PSD_FILT0_ENA 0x1
#define PSD_FILT1_ENA 0x2
#define PSD_FILT2_ENA 0x4
#define PSD_FILT3_ENA 0x8
#define PSD_FILT4_ENA 0x10
#define PSD_FILT5_ENA 0x20
#define PSD_FILT6_ENA 0x40
#define PSD_FILT7_ENA 0x80
#define PSD_TBUF_ENA 0x100
/******************************************************************************
* PSD buffer flag control bit position
******************************************************************************/
#define PSD_INB_FG 0x1
#define PSD_OUTB_FG0 0x02
#define PSD_OUTB_FG1 0x04
#define PSD_OUTB_FG2 0x08
#define PSD_TBUF_LAST_DATA 0x100
#define PSD_TRANS_DONE 0x200
#define PSD_STATUS_READY 0x1000000
/******************************************************************************
* Global Defines for High Level API
******************************************************************************/
#define PSD_NOT_STARTED 1
#define PSD_STARTED 2
#define SEQUENCE_END_CODE 0x000001B7
#define PICTURE_START_CODE 0x00000100
#define __PSD_GetCurStrid() (IO_RData32_EX((unsigned char *)&rPSD_STATUS0_H)&0xFFFF)
typedef enum {
PSD_CD_AUDIO_2352, /* CDDA Sector Data */
PSD_CD_RAW_2352, /* CD Sector Data, not XA */
PSD_CD_RAW_2352_XA, /* CD Sector Data, XA */
PSD_CD_MODE0, /* CD-ROM Mode0 User Data only */
PSD_CD_MODE1, /* CD-ROM Mode1 User Data only */
PSD_CD_MODE2, /* CD-ROM Mode2 User Data only */
PSD_CD_XA_FORM1, /* CD-ROM Form1 User Data only */
PSD_CD_XA_FORM2, /* CD-ROM Form2 User Data only */
PSD_SEAMLESS /* Not Sector Format */
} PSD_SectorType_t;
typedef enum {
PSD_VCD_MODE, /* VCD mode */
PSD_SVCD_MODE, /* SVCD mode */
PSD_MP3_MODE, /* MP3 mode (only edc check is performed) */
PSD_CDDA_MODE, /* CDDA mode (nothing is implemented) */
PSD_TEST_MODE, /* only for test */
PSD_BYPASS_MODE, /* by-pass mode(all data is copied to output buffer #0) */
PSD_IDLE_MODE /* mode is not selected */
} PSD_StreamFormat_t;
typedef enum {
PSD_SUCCESS, /* Operation Success */
PSD_FAIL, /* Operation Fail */
PSD_INVALID_ARGUMENT, /* Invalid Argument */
PSD_NOT_SUPPORT, /* Can not Support */
PSD_QUEUE_OVERFLOW, /* pts queue overflow */
PSD_QUEUE_UNDERFLOW /* pts queue underflow */
} PSD_Return_t;
typedef enum {
PSD_VSTREAM_NORMAL,
PSD_VSTREAM_LOW_STILL,
PSD_VSTREAM_HIGH_STILL
} PSD_VideoStream_t;
typedef struct {
UINT pts_low; /* pts low 32 bit */
UINT pts_high; /* pts high 1 bit */
} PSD_Pts_t;
/******************************************************************************
* PSD Global API Functions
******************************************************************************/
/* Global Macro */
extern void PSD_BufferEnable ( UINT32 value );
// extern void PSD_BufferDisable ( UINT32 value );
#define PSD_Read_Start() PSD_BufferEnable(8) /* track buffer enable */
// #define PSD_Read_Stop() PSD_BufferDisable(8) /* track buffer disable */
#define PSD_IrqClear(X) WRITE32( (UINT8 *)&rPSD_IRQ_H, X )
#define PSD_ClockOn() IO_WData32_EX((UINT8 *)&rPSD_CLC_H, 0, 0x1)
#define PSD_ClockOff() IO_WData32_EX((UINT8 *)&rPSD_CLC_H, 0, 0)
#define PSD_RESET() IO_WData32_EX((UINT8 *)&rPSD_RESET_H, 0, 0x1)
#define PSD_PndAllClear() IO_WData32_EX(( unsigned char *)&rPSD_IRQ_H, (unsigned int)0xFFFF, ( unsigned int )0xFFFF)
#define PSD_SetVideoStreamType(X) WRITE32_EX((UINT8 *)&rPSD_FILT_CFG0_H,(0xFFFF00E0|X))
/* register set Macro Functions */
// extern void PSD_InputBufReadPtrSet( UINT32 value );
// extern void PSD_InputBufSizeSet( UINT32 value );
// extern void PSD_IrqClear( UINT32 value );
// extern void PSD_ClockOn(void);
// extern void PSD_ClockOff(void);
// extern void PSD_RESET(void);
// extern void PSD_SectFinIrqEnable(void);
// extern void PSD_SectFinIrqDisable(void);
void Init_PSD( void );
void DeInit_PSD( void );
void PSD_Stop(void);
void PSD_Restart(void);
void PSD_Resume ( void );
// VOID PSD_ResetBufferStatus ( VOID );
VOID PSD_ResetAudioBufferState ( VOID );
void PSD_HISR(void);
void RunVCD_PSD(void);
#if CDDA_NEW_PLAY_SCHEME
void RunCDDA_PSD ( void );
#endif
void RunMP3_PSD(void);
void PSD_stop_parse_Video(void);
void PSD_resume_parse_Video(void);
void PSD_HISR(void);
#if USE_SEQUENCE_END_INT
void PSD_HISR_END(void);
#endif /* USE_SEQUENCE_END_INT */
PSD_Return_t PSD_SetSectorFormat ( PSD_SectorType_t sect_type );
void PSD_SetDumpMode( BOOL value );
void PSD_SetDumpFlag( BOOL value );
BOOL PSD_GetDumpMode( void );
BOOL PSD_GetDumpFlag( void );
void PSD_SetReadContinueFlag(BOOL type);
BOOL PSD_GetReadContinueFlag( void );
void PSD_ClearLastFlag( void );
// BOOL PSD_SetVideoStreamType( PSD_VideoStream_t id );
/* Local API */
// BOOL PSD_Running ( void );
// void PSD_Reset ( void );
/* Low Level API Utility */
// BOOL PSD_Running ( void );
void PSD_OutPtrSet0(ULONG start, ULONG size);
void PSD_OutPtrSet1(ULONG start, ULONG size);
// void PSD_OutPtrSet2(ULONG start, ULONG size);
// void PSD_OutPtrSet3(ULONG start, ULONG size);
/* PSD interrupt service routine */
void ISR_Interrupt_PSD ( INT );
/* Interrupt Service Routines */
void PSD_IrqBuf0Full ( void );
void PSD_IrqBuf1Full ( void );
void PSD_IrqSectFinish ( void );
void PSD_IrqTrackBufEmpty ( void );
void PSD_IrqSequenceEnd(void);
void PSD_IrqReserved ( void );
// void PSD_IrqBuf2Full ( void );
// void PSD_IrqBuf3Full ( void );
// void PSD_IrqBuf4Full ( void );
// void PSD_IrqBuf5Full ( void );
// void PSD_IrqBuf6Full ( void );
// void PSD_IrqBuf7Full ( void );
// void PSD_IrqPtsDts0 ( void );
// void PSD_IrqPtsDts1 ( void );
// void PSD_IrqPtsDts2 ( void );
// void PSD_IrqPtsDts3 ( void );
// void PSD_IrqPtsDts4 ( void );
// void PSD_IrqPtsDts5 ( void );
// void PSD_IrqPtsDts6 ( void );
// void PSD_IrqPtsDts7 ( void );
// void PSD_IrqNewSysHeader ( void );
// void PSD_IrqExt ( void );
// void PSD_IrqIllegalId ( void );
// void PSD_IrqErrEdc ( void );
// void PSD_IrqStreamInvalid ( void );
#ifdef __cpluscplus
}
#endif
#endif /* _PSD_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -