📄 qhwlib.h
字号:
#define VIDEO_PLAY_SYNC_FASTER 0x0012#define VDIRECTCMD_PLAY 0x8002// osd commands#define OSD_NOCMD 0xFFFF#define OSD_OFF 0x0000#define OSD_ON 0x0001#define OSD_FLUSH 0x0002#define OSD_FLUSH_STATUS 0x0003// specific structures for HwLib interfaces// common EM84xx symbols definitions#define DEFINE_ENTRY(Symbol) SymbolEntry Symbol;#include "symbols.h" #define CommonSymbols\ MiscSymbolTable\ CommonVideoSymbolTable\ CommonAudioSymbolTable\ CommonSubpictureSymbolTable\ CloseCaptionSymbolTable\ DisplaySymbolTable\ PCIVideoSymbolTable\ PCIAudioSymbolTable\ PCISubpictureSymbolTable\ OSDSymbolTable\ VcxoSymbolTable\ DVBCloseCaptionSymbolsTable\ VideoFrameDisplaySymbolsTable\typedef struct tagCommonSymbolTable{ CommonSymbols} CommonSymbolTable;typedef struct tagQ3SymbolTable{ CommonSymbols} Q3SymbolTable;// old + new symbolstypedef struct tagQ4SymbolTable{ CommonSymbols Q4Mpeg4SymbolsTable Q4AudioNewSymbolsTable Q4ReverseGOPSymbolsTable VideoCaptureSymbolTable} Q4SymbolTable;// Jasper - same as Q4 except VideoIntypedef struct tagJSymbolTable{ CommonSymbols Q4Mpeg4SymbolsTable Q4AudioNewSymbolsTable Q4ReverseGOPSymbolsTable VideoCaptureSymbolTable JOSDSymbolsTable} JSymbolTable;// should be removed from user's defines// EM847x rev A and B has and internal audio DAC (JDA1) and 2 sets of audio output.// First audio output can be either JDA1(PWM) or I2S.// The names of the pins are CH1P/SCIN,CH1N/SCOUT,CH2P/SDOUT,CH2N/SFOUT.// Second audio output is I2S only. The names of the pins are// DABCK, DADAT, DALRCK. The Ckin is the same as the for the first output.// The second audio "output" can be programmed as Audio Input too (pin SDIN).// An extra DAMCK pin can be used as SCkIn or output-driven by Jda1Ck.// JDA1 SCkin can be internal JDA1CK, SCIN or DAMCK.// JDA1 input clock (the one to be generate JDA1 SCkin) can be GCK or DAMCK.typedef enum{// EM847x A,B EM847xC & EM848x I2S_SCkinSCIN_Jda1CkinGCK_ScinIN_DamckIN = 0, // Ok I2S_SCkinSCIN_ScinIN_DamckIN I2SInv_SCkinSCIN_Jda1CkinGCK_ScinIN_DamckIN, // Ok I2SInv_SCkinSCIN_ScinIN_DamckIN I2S_SCkinDAMCK_Jda1CkinGCK_ScinOUT_DamckIN, // Ok I2S_SCkinDAMCK_ScinOUT_DamckIN I2S_SCkinJDA1CK_Jda1CkinGCK_ScinOUT_DamckOUT, // Ok I2S_SCkinInternDivMclk_ScinOUT_DamckOUT I2S_SCkinJDA1CK_Jda1CkinDAMCK_ScinOUT_DamckIN, // Ok I2S_SCkinInternDivDAMCK_ScinOUT_DamckIN JDA1_SCkinJDA1CK_Jda1CkinGCK_ScinOUT_DamckOUT, // Ok unsupported JDA1_SCkinDAMCK_Jda1CkinGCK_ScinOUT_DamckIN, // Ok unsupported JDA1_SCkinJDA1CK_Jda1CkinDAMCK_ScinOUT_DamckIN // Ok unsupported} EM847xAudioInOutConfigEnum;// For the new EM847x-revC and EM848x the internal audio DAC Jda1 was removed,// meaning that the serial audio outputs are only I2S.// An internal AudioPLL has been added to generate the SCIN (256*fs).// The internal PLL can use the internal memory Mclk or external DAMCK pin.// We have less combinations - let's try to map them to the old ones#define I2SInv_SCkinSCIN_ScinIN_DamckIN I2SInv_SCkinSCIN_Jda1CkinGCK_ScinIN_DamckIN#define I2S_SCkinSCIN_ScinIN_DamckIN I2S_SCkinSCIN_Jda1CkinGCK_ScinIN_DamckIN#define I2S_SCkinDAMCK_ScinOUT_DamckIN I2S_SCkinDAMCK_Jda1CkinGCK_ScinOUT_DamckIN#define I2S_SCkinInternDivMclk_ScinOUT_DamckOUT I2S_SCkinJDA1CK_Jda1CkinGCK_ScinOUT_DamckOUT#define I2S_SCkinInternDivDAMCK_ScinOUT_DamckIN I2S_SCkinJDA1CK_Jda1CkinDAMCK_ScinOUT_DamckIN/*1. For revA, B----------------------I2S_SCkinSCIN_Jda1CkinGCK_ScinIN_DamckIN, // 000 SONY_HAC, SONY_HVC, NEC, VE2000, CLARION, GALAXY2000, NE2000, QUAD00, SYMPHONY2_QunliI2S_SCkinDAMCK_Jda1CkinGCK_ScinOUT_DamckIN, // 001 PVR_DIGITAL_MD5hi_useEncodingClockI2S_SCkinJDA1CK_Jda1CkinGCK_ScinOUT_DamckOUT, // 010 PVR_DIGITAL_MD5hi_normalPlayback, SYMPHONY_MD5hi, XCARD_MD5hi, MELODYI2S_SCkinJDA1CK_Jda1CkinDAMCK_ScinOUT_DamckIN, // 011 BROADCAST, PVR_DIGITAL_MD5hi_useVCXO_or_useExtClock, JASMINE2JDA1_SCkinJDA1CK_Jda1CkinGCK_ScinOUT_DamckOUT, // 100, 110 ANALOG_PVR, PVR_DIGITAL_MD5hi_normalPlayback, QUAD7x SYMPHONY_MD5lo, XCARD_MD5loJDA1_SCkinDAMCK_Jda1CkinGCK_ScinOUT_DamckIN, // 101 PVR_DIGITAL_MD5lo_useEncodingClockJDA1_SCkinJDA1CK_Jda1CkinDAMCK_ScinOUT_DamckIN, // 111 PVR_DIGITAL_MD5lo_useVCXO_or_useExtClock 2. For rev.C------------------I2S_SCkinDAMCK_ScinOUT_DamckIN, // 01 SYMPHONY2_MD2hi_extVCXOI2S_SCkinInternDivMclk_ScinOUT_DamckOUT, // 10 SYMPHONY2_MD2lo SONY_WEGA*/// registry related definitions - they can be removed from user's definestypedef struct tagREGISTRY_TABLE{ DWORD TvOut; DWORD DoHwReset; DWORD DisableSpdifOutputInReset; DWORD ActiveVideoWidthNtsc; DWORD ActiveVideoWidthPal; DWORD BroadcastedVideo; DWORD ForcedProgressiveSourceOff; DWORD ForcedProgressiveAlways; DWORD NtscPalFrameDrop; DWORD VGAForcedInterlaced; DWORD AudioOutput; DWORD VolumeRight; DWORD VolumeLeft; DWORD DoAudioLater; DWORD DacType; // for STPC to select Pcm1716 or 1720 DWORD AudioDacBitsPerSample; // 16 or 24 - to choose I2S 16 or 24 bit DWORD Brightness; DWORD Contrast; DWORD Saturation; DWORD TvBrightness; DWORD TvContrast; DWORD TvSaturation; MPEG_DISPLAY_RESOLUTION DisplayResolution; DWORD PreviousHFreq; DWORD TotalPixelsPerLine; HDTV_MODE HdtvMode; DWORD AcpiEnable; DWORD InvertField; DWORD Vmi_16bits; DWORD Ccir_656; DWORD SyncEnable; DWORD Vip20; DWORD ZoomEnable; DWORD WindowTvEnable; DWORD WindowHdtvEnable; DWORD OsdVideoIndependent; DWORD OverlayFlags; // not used for new registry DWORD DecoderIsSlave; DWORD MaximumDvclk;}REGISTRY_TABLE;#define InitPropSet(pIface, pPropSetLst, PropSet, MaxItems, PropList, SetFunct, GetFunct )\{\ PPROPERTY_SET_ITEM pPrpSet = pPropSetLst;\ DWORD i;\ pPrpSet += PropSet;\ pPrpSet->pHwIface = pIface;\ pPrpSet->SetId = PropSet;\ pPrpSet->nItems = MaxItems;\ pPrpSet->Item = PropList;\ for(i=0;i<pPrpSet->nItems;i++)\ {\ pPrpSet->Item[i].Id = i;\ pPrpSet->Item[i].Flags = 0;\ pPrpSet->Item[i].fnSet = (PFUNCT)SetFunct;\ pPrpSet->Item[i].fnGet = (PFUNCT)GetFunct;\ }\}\#define CHECK_SIZE(name) \ if(pdwSizeOut) \ *pdwSizeOut = sizeof(name ## _type);\ if(dwSizeIn != sizeof(name ## _type)) \ return E_INVALID_PROPERTY_BUFFER;#define SLEEP_PERIOD 10000 // microseconds#define CHECK_SLEEP_CONDITION(cond, NTimes, SleepPeriod)\{\ int i;\ for ( i=0; i<NTimes; i++ )\ {\ if ( cond )\ break;\ OSTimeDelay(SleepPeriod);\ }\}\// Asynchronous commandtypedef QRESULT (*CONTEXT_FN)(void*, DWORD Param1, DWORD Param2);typedef struct{ CONTEXT_FN ContextFunct; void* pHwIface; DWORD Param1; DWORD Param2;}HWLIB_PENDING_STACK, *PHWLIB_PENDING_STACK;// defines to be used with IDecoder_RiscChannelReset// bit mask for reseting Risc channels for RISC_resets_0#define Reset_PCI_slave_read 0x0001 // chr0#define Reset_PCI_slave_write 0x0002 // chw0#define Reset_PCI_master_write 0x0004 // chw3, chw4#define Reset_RiscMisc_read 0x0008 // chr1#define Reset_RiscMisc_write 0x0010 // chw1#define Reset_Huffman_decoder 0x0020 // chr1, huffman#define Reset_Motion_compensation 0x0040 // chw2, chr3#define Reset_InverseQuantizer 0x0080// bit mask for reseting Risc channels for RISC_resets_1#define Reset_Video_read 0x0100 // chr4,chr5,chr6,chr7,chr8,chr11,display#define Reset_Audio 0x0200 // chr9,chr10,chw5,PCM,Ac3_Mpeg#define Reset_TvEncoder 0x0400#define Reset_LBC_internal 0x0800 // internal LBC block#define Reset_LBC_external 0x1000 // "rst12" is only connected to H_RESETB pin#define Reset_VideoInput 0x2000typedef enum{ VideoStoppedAfterReset = 1, VideoPlaying, VideoPaused, VideoBlackFrame, VideoStopped}QVideoState;// properties related definitions - they can be removed from user's definestypedef QRESULT (*PFUNCT) (void* pInterface, DWORD RegSet, DWORD RegId, DWORD Flags, void* pData, DWORD dwSizeIn, DWORD* pdwSizeOut);typedef struct{ DWORD Id; DWORD Flags; PFUNCT fnGet; PFUNCT fnSet;}PROPERTY_ITEM, *PPROPERTY_ITEM;typedef struct{ DWORD SetId; DWORD nItems; PPROPERTY_ITEM Item; void* pHwIface;}PROPERTY_SET_ITEM, *PPROPERTY_SET_ITEM;typedef PROPERTY_ITEM REGISTRY_ITEM, *PREGISTRY_ITEM;typedef PROPERTY_SET_ITEM REGISTRY_SET_ITEM, *PREGISTRY_SET_ITEM;#ifdef __cplusplus}#endif #endif // __QHWLIB_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -