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

📄 cquasar.h

📁 这是一个SIGMA方案的PMP播放器的UCLINUX程序,可播放DVD,VCD,CD MP3...有很好的参考价值.
💻 H
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************  CQuasar.h : Implementation of Quasar interface*  REALmagic Quasar Hardware Library*  Created by Aurelia Popa-Radu*  Copyright Sigma Designs Inc*  Sigma Designs Proprietary and confidential*  Created on 8/27/99*  Description:*****************************************************************************/#ifndef __CQUASAR_H__#define __CQUASAR_H__#include "cobject.h"#include "ci2c.h"	// for I2Cparamsvoid CQuasar__InitVtable(IDecoder* pIDecoder);extern DWORD TMaxSDRAM[18];#define Q3CTRL1_VIDEO_VALID_ENABLE		BIT15#define Q3CTRL1_PIXEL_DATA_ENABLE		BIT12#define Q3CTRL1_VVLDHS_ENABLE			BIT11#define Q3CTRL1_8BITS					BIT10#define Q3CTRL1_HORZ_DOWN_FILT_ENABLE	BIT7#define Q3CTRL1_VIDEO_ENABLE			BIT1#define Q3CTRL1_FILTER_MASK				(BIT7 | BIT6 | BIT5 | BIT4| BIT3 | BIT2)#define Q3CTRL2_TOP_FIELD_OFFSET	BIT15#define Q3CTRL2_BOTTOM_FIELD_OFFSET	BIT14#define Q3CTRL2_NOINTERLACED		0x0000#define Q3CTRL2_CCIR_656			BIT13#define Q3CTRL2_CCIR_601			0x0000#define Q3CTRL2_VIDEO_CLIP_ENABLE	BIT12#define Q3CTRL2_PIXCLK_POLARITY		BIT9#define Q3CTRL2_Q3MASTER			BIT2#define Q3CTRL3_HS_ON_VACTIVE		0x0400#define Q3CTRL3_TVSYNCS_ENABLE		0x0200#define Q3CTRL3_VS_ENABLE			0x0080#define Q3CTRL3_HS_ENABLE			0x0040#define QSR_INVERT_FIELD			0x8000#define QSR_INTERLACED				0x4000#define QSR_NOINTERLACED			0x0000//////////////////////////////////////////////////////////////////////////////// CQuasar Implementation#define DM_SIZE 0x0800	#define Q3_ASctrl0_I2SAlign1		0x0001#define Q3_ASctrl0_I2SAlign30		0x001E#define Q3_ASctrl0_I2SAlign31		0x001F#define Q3_ASctrl0_MSbitfirst		0x0020#define Q3_ASctrl0_CkoutInverted	0x0040#define Q3_ASctrl0_FrameInverted	0x0080#define Q3_ASctrl0_DataInverted		0x0100#define Q3_ASctrl0_384divider		0x0200#define Q3_ASctrl0_I2SMask			0x0C00#define Q3_ASctrl0_I2SActive		0x0C00#define Q3_ASctrl0_I2SActiveData0	0x0800#define Q3_ASctrl0_I2SDisabled		0x0000#define Q3_ASctrl0_SpdifMask		0x3000#define Q3_ASctrl0_SpdifActive		0x3000#define Q3_ASctrl0_SpdifActiveData0	0x1000#define Q3_ASctrl0_SpdifDisabled	0x0000#define Q3_ASctrl1_BypassJ1Core		0x0001#define Q3_ASctrl1_24bit			0x0000#define Q3_ASctrl1_20bit			0x0002#define Q3_ASctrl1_18bit			0x0004#define Q3_ASctrl1_16bit			0x0006#define Q3_ASctrl1_Irclkin			0x0008#define Q3_ASctrl1_GainEnable		0x0010#define Q3_ASpdifStat1_rate			0x0F000000#define Q3_ASpdifStat1_32k			0x03000000#define Q3_ASpdifStat1_44k			0x00000000#define Q3_ASpdifStat1_48k			0x02000000// Following were found in ek41171.pdf page 13#define Q3_ASpdifStat1_88k			0x08000000#define Q3_ASpdifStat1_96k			0x0A000000#define Q3_ASpdifStat1_176k			0x0C000000#define Q3_ASpdifStat1_192k			0x0E000000#define Q3_ASpdifStat0_digital		0x00000002#define Q3_ASpdifStat0_DVD   		0x00001900#define Q3_APcmConfig0_Pcm			0x0000#define Q3_APcmConfig0_Dts			0x2800#define Q3_APcmConfig0_NoDownSample	0x0000#define Q3_APcmConfig0_DownSample2	0x0200#define Q3_APcmConfig0_DownSample4	0x0400#define Q3_APcmConfig0_1chan		0x0000#define Q3_APcmConfig0_2chan		0x0010#define Q3_APcmConfig0_3chan		0x0020#define Q3_APcmConfig0_4chan		0x0030#define Q3_APcmConfig0_5chan		0x0040#define Q3_APcmConfig0_6chan		0x0050#define Q3_APcmConfig0_7chan		0x0060#define Q3_APcmConfig0_8chan		0x0070#define Q3_APcmConfig0_48kHz		0x0000#define Q3_APcmConfig0_96kHz		0x0004#define Q3_APcmConfig0_192kHz		0x0008#define Q3_APcmConfig0_16bits		0x0000#define Q3_APcmConfig0_20bits		0x0001#define Q3_APcmConfig0_24bits		0x0002#define Q3_AUDIO_DECODE			0#define Q3_AUDIO_NODECODE		4#define Q3_MPEG					0#define Q3_AC3					1#define Q3_PCM					2// real pain because of J1 core// 0000XXYY_000000ZZ - for Ac3// 00000000_000000YY - for Mpeg#define Q3_COMPR_DEFAULT		0x8000	// program Q3_COMPR_LINEOUT for Ac3 and Q3_COMPR_OFF for Mpeg// XX in J1 spec - use Q3_COMPR_LINEOUT for Ac3, else Q3_COMPR_OFF#define Q3_COMPR_MASK			0x0C00#define Q3_COMPR_OFF			0x0000#define Q3_COMPR_ON				0x0400//0x0004#define Q3_COMPR_LINEOUT		0x0800//0x0008#define Q3_COMPR_RF				0x0C00//0x000C// YY in J1 spec - The 2 bits affecting the mode are on 0x0300 for Ac3 and on 0x0003 for mpeg !// next defines for AC3 - take care in code to swap them for Mpeg#define Q3_AUDIOMODE_MASK		0x0300#define Q3_STEREO				0x0000#define Q3_MONO1				0x0100#define Q3_MONO2				0x0200#define Q3_MONOMIX				0x0300// ZZ in J1 spec - The 2 bits affecting the speakers are on 0x0003 for Ac3, else not used// next defines for AC3 - take care in code to swap them for Mpeg#define Q3_SPEAKER_MASK			0x0003#define Q3_SPEAKER_SURROUND		0x0000#define Q3_SPEAKER_1			0x0001#define Q3_SPEAKER_2			0x0002typedef	struct tagCAPTURE{	BYTE* Y;	BYTE* Ypack;	BYTE* UV;	BYTE* UVpack;	DWORD LumaStart, ChromaStart;	DWORD LumaStart1, ChromaStart1;	DWORD DispWidth, DispHeight, Pitch, Packed, Hmax, Frame;	BOOL SplitBuffer;}CAPTURE, *PCAPTURE;/* !!ASSUMES that an ISetI2CPIOVtbl is right after the pointer which points to the CProxyFilter (m_This)*/#define GET_CQUASAR_FROM_ISETI2CPIO(address)\        (*((CQuasar**)((DWORD)(address->lpVtbl) - 4)))#define CQuasar_MEMBER\	IDecoderVtbl VTable;\	DWORD m_ulMemAddress;	/* linear address of Quasar PCI */\	DWORD QuasarVersion;	/* Quasar chip Version: 1, 2, 3*/\	void* pContext;\	BYTE *pUCode;\	DWORD UCodeSize;\	void* pQ;\	DWORD SymbolTableSize;\	DWORD Pio07DirReg;	/* address of Quasar PIO0..7 direction register */\	DWORD Pio07DataReg;	/* address of Quasar PIO0..7 data register */\	DWORD Pio8fDirReg;	/* address of Quasar PIO8..f direction register */\	DWORD Pio8fDataReg;	/* address of Quasar PIO8..f data register */\	WORD PIO_I2C_Data;	/* what PIO is connected to I2C_data */\	WORD PIO_I2C_Clk;	/* what PIO is connected to I2C_clock */\	DWORD Dram_ConfigReg;\	DWORD RISC_TimDivReg;\	DWORD RISC_Clock;\	I2CPARAMS m_I2Cparams;\	void* m_this;			/* points to itself */\	ISetI2CpIOVtbl m_ISetI2CpIOVtbl;\	ISetI2CpIO m_ISetI2CpIO;\	DATA_FIFO Fifo[4];\	PACKETS_FIFO PacketsFifo[5];\	PTS_FIFO PtsFifo[3];\	DWORD LumaStart;\	DWORD ChromaStart;\	DWORD BlackFrameWidth;\	DWORD BlackFrameHeight;\	DWORD BlackFramePitch;\	DWORD VolumeRight;\	DWORD VolumeLeft;\	DWORD AudioMode;\	WORD wAc3RepeatCounter;\	WORD wAc3HiLoDynamicRange;\	DWORD AudioFormat;\	DWORD AudioOutput;\	DWORD AudioOutputEnable;\	DWORD AudioNumChannels;\	DWORD AudioNumBitsPerSample;\	DWORD CurrentAudioRate;\	DWORD AudioDacBitsPerSample;\	DWORD SerialCtrl0Config;\	DWORD SerialCtrl1Config;\	BYTE RemainedByte;		/* Used for Wave format-mp3 to swap bytes */\	BOOL IsOneByteRemained;	/* Used for Wave format-mp3 to swap bytes */\	BYTE CCTopFieldId;		/* Close Caption */\	BYTE* CCBuf;\	LONG CCSize;\	LONG CCToSend;\	BOOL CCIndex;\	BYTE CCBuffer[2][128];\	LONG CCBufferSize[2];\	DWORD CurrentIrqMask;\	LONG Brightness;\	LONG Contrast;\	LONG Saturation;\	DWORD ForcedProgressive;\	REGISTRY_TABLE* pRegistry;\	DWORD InvertField;\	edecCSSChlg2_type edecCSSChlg2_value; \	PROPERTY_ITEM DecoderPropertyList[edecMax];\	evCaptureFormat_type CaptureFormat;\	HWLIB_PENDING_STACK* pPendingStack;\	DWORD FixedVopTimeIncrVal;	/**/\	DWORD FixedTimeIncrResVal;	/**/\	DWORD ChannelStatus;\	DWORD AudioSampleRateSupport_96kHz;\	BOOL Initialized;\	DWORD LastError;\	DWORD Dram_PllReg;\	DWORD DramSize;\	DWORD DramFreq;\	BYTE HorizontalFilter;\	BYTE VerticalFilter;\	char Horizontal4tapLumaCoef[32];\	char Horizontal4tapChromaCoef[32];\	char Vertical2tapLumaCoef[32];\	char Vertical2tapChromaCoef[32];\	char Vertical4tapLumaCoef[32];\	char Vertical4tapChromaCoef[32];\typedef struct tagCQuasarMember{	COBJECT_MEMBER	CQuasar_MEMBER} CQuasarMember;typedef struct tagCQuasar{	struct tagIDecoderVtbl *lpVtbl;	COBJECT_MEMBER	CQuasar_MEMBER} CQuasar;///////////////////////////////////////////////////////////////////////////////// public interfacevoid CQuasar__New ( CQuasar** ppCQuasar, TCHAR *pName, BOOL bAllocate, DWORD dwInstance);void CQuasar__Delete(IDecoder* pIDecoder, BOOL bDeleteObject);void CQuasar__Init(IDecoder* pIDecoder, void* pHwLibConf, DWORD* pQuasarVersion);void CQuasar__SetRegistry(IDecoder* pIDecoder, REGISTRY_TABLE* pRegistry);QRESULT CQuasar__WriteNReg(IDecoder* pIDecoder, DWORD StartAddr, DWORD* pData, DWORD n);QRESULT CQuasar__ReadNReg(IDecoder* pIDecoder, DWORD StartAddr, DWORD* pData, DWORD n);void CQuasar__WriteReg(IDecoder* pIDecoder, DWORD RegAddr, DWORD Data);DWORD CQuasar__ReadReg(IDecoder* pIDecoder, DWORD RegAddr);#define CQuasar__ReadDM(this, RegAddr)			CQuasar__ReadReg(this, 0x1000 + RegAddr)#define CQuasar__WriteDM(this, RegAddr, Data)	CQuasar__WriteReg(this, 0x1000 + RegAddr, Data)QRESULT CQuasar__SetPIODir(IDecoder* pIDecoder, DWORD PIONumber, DWORD Dir);QRESULT CQuasar__WritePIO (IDecoder* pIDecoder, DWORD PIONumber, DWORD Data);QRESULT CQuasar__ReadPIO(IDecoder* pIDecoder, DWORD PIONumber, DWORD* pData);BOOL CQuasar__WriteDramSlave(IDecoder* pIDecoder, IN DWORD addr, IN DWORD* pData, IN DWORD nbytes );BOOL CQuasar__FillDramSlave(IDecoder* pIDecoder, IN DWORD addr,IN DWORD nbytes, DWORD value);BOOL CQuasar__WriteDramMaster(IDecoder* pIDecoder, IN DWORD addr, IN DWORD PhysAddr, IN DWORD nbytes, IN DWORD reverse);QRESULT CQuasar__WriteSCR(IDecoder* pIDecoder, MPEG_SCR SCR);MPEG_SCR CQuasar__ReadSCR(IDecoder* pIDecoder);DWORD CQuasar__ReadHwPts45k(IDecoder* pIDecoder);void CQuasar__SetSpeed(IDecoder* pIDecoder, DWORD Speed);void CQuasar__SetFrameEvent(IDecoder* pIDecoder, DWORD nFrame);DWORD CQuasar__GetFrameEvent(IDecoder* pIDecoder);DWORD CQuasar__GetFrameCounter (IDecoder* pIDecoder);void CQuasar__SetBrightness(IDecoder* pIDecoder, LONG Brightness);DWORD CQuasar__GetBrightness(IDecoder* pIDecoder);void CQuasar__SetContrast(IDecoder* pIDecoder, LONG Contrast);DWORD CQuasar__GetContrast(IDecoder* pIDecoder);void CQuasar__SetSaturation(IDecoder* pIDecoder, LONG Saturation);DWORD CQuasar__GetSaturation(IDecoder* pIDecoder);

⌨️ 快捷键说明

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