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

📄 psd.h

📁 三星ic 9980的源代码. 718版.
💻 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 + -