#ifndef COD5BOARDLIB_EX_H #define COD5BOARDLIB_EX_H #include "Cmn5BoardLibEx.h" #pragma pack( push, COD5BOARDLIB_EX_H ) #pragma pack(8) extern "C" const IID IID_ICod5 ; //IID for Cod5 // {5E11F454-7FDC-47ae-BF78-EE83BF8F733C} DEFINE_GUID( IID_ICod5, 0x5e11f454, 0x7fdc, 0x47ae, 0xbf, 0x78, 0xee, 0x83, 0xbf, 0x8f, 0x73, 0x3c ); typedef struct _COD5_BOARD_INFO{ ULONG uBoardID; ULONG uModelID; ULONG uSlotNumber; ULONG uMaxVP; ULONG uMaxChannel; ULONG uMaxDO; ULONG uMaxDI; ULONG uCodecType; ULONG uVideoCodecType; ULONG uAudioCodecType; const CMN5_RESOLUTION_INFO* pResInfo; //132*sizeof(ULONG) ULONG uHWRevision; //add 2005, 8,2 ULONG reserved[CMN5_MAX_RESERVED_BOARD_INFO - 12]; } COD5_BOARD_INFO; //Frame Type for COD5_DATA_INFO //enum FrameType { #define COD5_FT_MP4V_I_PIC 0x01 #define COD5_FT_MP4V_P_PIC 0x02 #define COD5_FT_MP4V_B_PIC 0x03 #define COD5_FT_MD_1 0x04 #define COD5_FT_MP2_PES_STREAM 0x05 #define COD5_FT_PCM_AUDIO 0x06 #define COD5_FT_H263_I_PIC 0x07 #define COD5_FT_H263_P_PIC 0x08 #define COD5_FT_G723_AUDIO 0x09 #define COD5_FT_ADPCM_AUDIO 0x0A #define COD5_FT_MP1_AUDIO 0x0B #define COD5_FT_MP2_AUDIO 0x0C #define COD5_FT_MP3_AUDIO 0x0D #define COD5_FT_AAC_AUDIO 0x0E #define COD5_FT_MPEG_ES_HDR 0x0F #define COD5_FT_GSM610_AUDIO 0x10 #define COD5_FT_MP2V_I_PIC 0x11 #define COD5_FT_MP2V_P_PIC 0x12 #define COD5_FT_MP2V_B_PIC 0x13 //}; typedef struct _COD5_DATA_INFO{ ULONG uDataType; ULONG uStructSize; ULONG uErrCode; ULONG uBoardNum; // Board ID[0..3] ULONG uChannelNum; // Channel ID of the Board ULONG uHasNextData; UCHAR *pDataBuffer; // image address LARGE_INTEGER TimeTag; // KeQuerySystemTime(). DTS (Decoding Time Stamp) ULONG uBufferIdx; // internal use! do not touch! //-- Cod5 extended ULONG uDataSize; ULONG uFrameType; } COD5_DATA_INFO; typedef struct _COD5_DATA_INFO_EX { _CMN5_DATA_INFO_DATA_EX_CMM_BODY; union { ULONG reserved[32]; struct { ULONG uDataSize; ULONG uFrameType; LARGE_INTEGER PTS; // PTS (Presentation Time Stamp) }; }; } COD5_DATA_INFO_EX; //enum BitrateMode { #define COD5_BM_CBR 1 // Both : uAvg #define COD5_BM_VBRR 2 // Kama : uAvg, uMax #define COD5_BM_VBRQ 3 // Mizar : uQuant #define COD5_BM_VBRH 4 // Mizar : uMin, uMax #define COD5_BM_VBRIPQ 5 // Guiana : Quat, Quant //}; // video codec type //enum VideoCodecType { #define COD5_VCT_NONE 0x00 #define COD5_VCT_MP2_PS 0x21 #define COD5_VCT_MP2_ES 0x22 #define COD5_VCT_MP4_ES 0x41 #define COD5_VCT_H263_ES 0x61 #define COD5_VCT_DCP4_ES 0x81 //}; // audio codec type //enum AudioCodecType { #define COD5_ACT_NONE 0x00 #define COD5_ACT_PCM 0x01 #define COD5_ACT_ADPCM 0x02 #define COD5_ACT_MP1 0x11 #define COD5_ACT_MP2 0x12 #define COD5_ACT_MP3 0x13 #define COD5_ACT_AAC 0x21 #define COD5_ACT_G723 0x31 //}; enum AudioCodecSamplFreq { COD5_ACSF_8K = 8000, COD5_ACSF_16K = 16000, COD5_ACSF_24K = 24000, COD5_ACSF_32K = 32000, COD5_ACSF_44_1K = 44100, COD5_ACSF_48K = 48000, }; enum CodecStreamType { COD5_CST_VIDEO = 0x00000001, COD5_CST_AUDIO = 0x00000002, COD5_CST_MD = 0x00000004, }; enum CodecPropertyCmd { COD5_CPC_VIDEO_FORMAT = 0x01000001, COD5_CPC_VIDEO_IMAGE_SIZE = 0x01000004, COD5_CPC_SKIP_FRAME = 0x01010001, COD5_CPC_BITRATE = 0x01010002, COD5_CPC_GOP_SIZE = 0x01010004, COD5_CPC_AUDIO_ATTR = 0x01020001, COD5_CPC_STREAM_TYPE = 0x01030001, COD5_CPC_CODEC_TYPE = 0x01030004, }; enum CodecAdjustCmd { COD5_CAC_BRIGHTNESS = 0x01000001, COD5_CAC_CONTRAST = 0x01000002, COD5_CAC_SATURATION_U = 0x01000004, COD5_CAC_SATURATION_V = 0x01000008, COD5_CAC_HUE = 0x01000010, // MP2000/3000 Reserved Commands ///////////////////////////////////////////// // COD5_CAC_SKIP_FRAME = 0x01000011, // COD5_CAC_BITRATE = 0x01000012, // COD5_CAC_VIDEO_IMAGE_SIZE = 0x01000013, // COD5_CAC_AUDIO_ATTR = 0x01000014, COD5_CAC_AUDIO_GAIN = 0x01020002, COD5_CAC_VM_SEL_CHANNEL = 0x01030001, }; extern "C" { ////////////////////////////////////////////////////////////////////////////////// // APIs BOOL CMN5_API Cod5GetLastErrorCode(CMN5_ERROR_CODE_ITEM *pEcode); BOOL CMN5_API Cod5QueryInfo(ULONG uQueryInfoCmd, ULONG uIn, void *pOut); BOOL CMN5_API Cod5GetSystemInfo(CMN5_SYSTEM_INFO *pInfo); BOOL CMN5_API Cod5GetBoardInfo(ULONG uBdID,const CMN5_BOARD_INFO_DESC *pDesc, COD5_BOARD_INFO *pInfo); BOOL CMN5_API Cod5Activate(ULONG uBdID,const UCHAR ActivationCode[CMN5_ACTIVATION_CODE_SIZE]); BOOL CMN5_API Cod5Setup(void); BOOL CMN5_API Cod5Endup(void); BOOL CMN5_API Cod5Run(void); BOOL CMN5_API Cod5Stop(void); BOOL CMN5_API Cod5ChannelEnable(ULONG uBdID, ULONG uCh, BOOL bEnable); BOOL CMN5_API Cod5SetCaptureMethod(ULONG uFuncType, ULONG uMethod); BOOL CMN5_API Cod5SetCallback(ULONG uFuncType, CMN5_CALLBACK_ONE_PARAM fStart, CMN5_CALLBACK_TWO_PARAM fCall, CMN5_CALLBACK_ONE_PARAM fStop, void *pContext); BOOL CMN5_API Cod5QueryData(void *pData, DWORD uTimeOut); BOOL CMN5_API Cod5ReleaseData(const void *pData); BOOL CMN5_API Cod5SetEventHandle(ULONG uType, HANDLE hHandle); BOOL CMN5_API Cod5GetEventHandle(ULONG uType, HANDLE *pHandle); BOOL CMN5_API Cod5GetEventData(ULONG uType, void *pData); BOOL CMN5_API Cod5SetEventData(ULONG uType, void *pData); BOOL CMN5_API Cod5SetImageSize(ULONG uBdID, ULONG uCh, ULONG uImageSize); BOOL CMN5_API Cod5GetImageSize(ULONG uBdID, ULONG uCh, ULONG *puImageSize); BOOL CMN5_API Cod5SetVideoFormat(ULONG uBdID, ULONG uFormat); BOOL CMN5_API Cod5GetVideoFormat(ULONG uBdID, ULONG *puFormat); BOOL CMN5_API Cod5SetCodecProperty(ULONG uBdID, ULONG uCh, ULONG uCodecPropertyCmd, ULONG uParam0, ULONG uParam1, ULONG uParam2, ULONG uParam3); BOOL CMN5_API Cod5GetCodecProperty(ULONG uBdID, ULONG uCh, ULONG uCodecPropertyCmd, ULONG *puParam0, ULONG *puParam1, ULONG *puParam2, ULONG *puParam3); BOOL CMN5_API Cod5SetCodecAdjust(ULONG uBdID, ULONG uCh, ULONG uCodecAdjustCmd, ULONG uParam0, ULONG uParam1, ULONG uParam2, ULONG uParam3); BOOL CMN5_API Cod5GetCodecAdjust(ULONG uBdID, ULONG uCh, ULONG uCodecAdjustCmd, ULONG *puParam0, ULONG *puParam1, ULONG *puParam2, ULONG *puParam3); BOOL CMN5_API Cod5SetMultiCodecProperties(ULONG uNumCmd, CMN5_MULTI_COMMAND *pCmds); BOOL CMN5_API Cod5GetMultiCodecProperties(ULONG uNumCmd, CMN5_MULTI_COMMAND *pCmds); BOOL CMN5_API Cod5SetMultiCodecAdjusts(ULONG uNumCmd, CMN5_MULTI_COMMAND *pCmds); BOOL CMN5_API Cod5GetMultiCodecAdjusts(ULONG uNumCmd, CMN5_MULTI_COMMAND *pCmds); BOOL CMN5_API Cod5GetVideoStatus(ULONG uBdID, ULONG uMaxCh, ULONG *pbwData); BOOL CMN5_API Cod5SetDO(ULONG uBdID, ULONG uMaxDO,const ULONG *pbwData); BOOL CMN5_API Cod5GetDO(ULONG uBdID, ULONG uMaxDO, ULONG *pbwData); BOOL CMN5_API Cod5GetDI(ULONG uBdID, ULONG uMaxDI, ULONG *pbwData); BOOL CMN5_API Cod5SetExtVideoOut(ULONG uBdID, ULONG uCh); BOOL CMN5_API Cod5GetExtVideoOut(ULONG uBdID, ULONG *puCh); BOOL CMN5_API Cod5SetWatchdog(ULONG uBdID, ULONG uWatchdogCmd, ULONG uParam1, ULONG uParam2); BOOL CMN5_API Cod5I2CTransfer(ULONG uBdID, ULONG uVPID, ULONG uDevID, ULONG uI2CCmd, ULONG uAddr, UCHAR *pData); BOOL CMN5_API Cod5WriteUserEEPROM(ULONG uBdID, ULONG uVPID,const UCHAR *pData); BOOL CMN5_API Cod5ReadUserEEPROM(ULONG uBdID, ULONG uVPID, UCHAR *pData); // *********************************************************************** // Vendoer Specific IO API // *********************************************************************** BOOL CMN5_API Cod5SetSpecialIOMode(ULONG uBdID, ULONG uData); BOOL CMN5_API Cod5GetSpecialIOMode(ULONG uBdID, ULONG *puData); BOOL CMN5_API Cod5WriteSpecialIOData(ULONG uBdID, ULONG uData); BOOL CMN5_API Cod5ReadSpecialIOData(ULONG uBdID, ULONG *puData); } // extern "C" // Interface definition for ICod5 interface ICod5 : IUnknown { STDMETHOD_(BOOL, Cod5GetLastErrorCode)(CMN5_ERROR_CODE_ITEM *pEcode) PURE; STDMETHOD_(BOOL, Cod5QueryInfo)(ULONG uQueryInfoCmd, ULONG uIn, void *pOut) PURE; STDMETHOD_(BOOL, Cod5GetSystemInfo)(CMN5_SYSTEM_INFO *pInfo) PURE; STDMETHOD_(BOOL, Cod5GetBoardInfo)(ULONG uBdID,const CMN5_BOARD_INFO_DESC *pDesc, COD5_BOARD_INFO *pInfo) PURE; STDMETHOD_(BOOL, Cod5Activate)(ULONG uBdID,const UCHAR ActivationCode[CMN5_ACTIVATION_CODE_SIZE]) PURE; STDMETHOD_(BOOL, Cod5Setup)(void) PURE; STDMETHOD_(BOOL, Cod5Endup)(void) PURE; STDMETHOD_(BOOL, Cod5Run)(void) PURE; STDMETHOD_(BOOL, Cod5Stop)(void) PURE; STDMETHOD_(BOOL, Cod5ChannelEnable)(ULONG uBdID, ULONG uCh, BOOL bEnable) PURE; STDMETHOD_(BOOL, Cod5SetCaptureMethod)(ULONG uFuncType, ULONG uMethod) PURE; STDMETHOD_(BOOL, Cod5SetCallback)(ULONG uFuncType, CMN5_CALLBACK_ONE_PARAM fStart, CMN5_CALLBACK_TWO_PARAM fCall, CMN5_CALLBACK_ONE_PARAM fStop, void *pContext) PURE; STDMETHOD_(BOOL, Cod5QueryData)(void *pData, DWORD uTimeOut) PURE; STDMETHOD_(BOOL, Cod5ReleaseData)(const void *pData) PURE; STDMETHOD_(BOOL, Cod5SetEventHandle)(ULONG uType, HANDLE hHandle) PURE; STDMETHOD_(BOOL, Cod5GetEventHandle)(ULONG uType, HANDLE *pHandle) PURE; STDMETHOD_(BOOL, Cod5GetEventData)(ULONG uType, void *pData) PURE; STDMETHOD_(BOOL, Cod5SetEventData)(ULONG uType, void *pData) PURE; STDMETHOD_(BOOL, Cod5SetImageSize)(ULONG uBdID, ULONG uCh, ULONG uImageSize) PURE; STDMETHOD_(BOOL, Cod5GetImageSize)(ULONG uBdID, ULONG uCh, ULONG *puImageSize) PURE; STDMETHOD_(BOOL, Cod5SetVideoFormat)(ULONG uBdID, ULONG uFormat) PURE; STDMETHOD_(BOOL, Cod5GetVideoFormat)(ULONG uBdID, ULONG *puFormat) PURE; STDMETHOD_(BOOL, Cod5SetCodecProperty)(ULONG uBdID, ULONG uCh, ULONG uCodecPropertyCmd, ULONG uParam0, ULONG uParam1, ULONG uParam2, ULONG uParam3) PURE; STDMETHOD_(BOOL, Cod5GetCodecProperty)(ULONG uBdID, ULONG uCh, ULONG uCodecPropertyCmd, ULONG *puParam0, ULONG *puParam1, ULONG *puParam2, ULONG *puParam3) PURE; STDMETHOD_(BOOL, Cod5SetCodecAdjust)(ULONG uBdID, ULONG uCh, ULONG uCodecAdjustCmd, ULONG uParam0, ULONG uParam1, ULONG uParam2, ULONG uParam3) PURE; STDMETHOD_(BOOL, Cod5GetCodecAdjust)(ULONG uBdID, ULONG uCh, ULONG uCodecAdjustCmd, ULONG *puParam0, ULONG *puParam1, ULONG *puParam2, ULONG *puParam3) PURE; STDMETHOD_(BOOL, Cod5SetMultiCodecProperties)(ULONG uNumCmd, CMN5_MULTI_COMMAND *pCmds) PURE; STDMETHOD_(BOOL, Cod5GetMultiCodecProperties)(ULONG uNumCmd, CMN5_MULTI_COMMAND *pCmds) PURE; STDMETHOD_(BOOL, Cod5SetMultiCodecAdjusts)(ULONG uNumCmd, CMN5_MULTI_COMMAND *pCmds) PURE; STDMETHOD_(BOOL, Cod5GetMultiCodecAdjusts)(ULONG uNumCmd, CMN5_MULTI_COMMAND *pCmds) PURE; STDMETHOD_(BOOL, Cod5GetVideoStatus)(ULONG uBdID, ULONG uMaxCh, ULONG *pbwData) PURE; STDMETHOD_(BOOL, Cod5SetDO)(ULONG uBdID, ULONG uMaxDO,const ULONG *pbwData) PURE; STDMETHOD_(BOOL, Cod5GetDO)(ULONG uBdID, ULONG uMaxDO, ULONG *pbwData) PURE; STDMETHOD_(BOOL, Cod5GetDI)(ULONG uBdID, ULONG uMaxDI, ULONG *pbwData) PURE; STDMETHOD_(BOOL, Cod5SetExtVideoOut)(ULONG uBdID, ULONG uCh) PURE; STDMETHOD_(BOOL, Cod5GetExtVideoOut)(ULONG uBdID, ULONG *puCh) PURE; STDMETHOD_(BOOL, Cod5SetWatchdog)(ULONG uBdID, ULONG uWatchdogCmd, ULONG uParam0, ULONG uParam1) PURE; STDMETHOD_(BOOL, Cod5I2CTransfer)(ULONG uBdID, ULONG uVPID, ULONG uDevID, ULONG uI2CCmd, ULONG uAddr, UCHAR *pData) PURE; STDMETHOD_(BOOL, Cod5WriteUserEEPROM)(ULONG uBdID, ULONG uVPID,const UCHAR *pData) PURE; STDMETHOD_(BOOL, Cod5ReadUserEEPROM)(ULONG uBdID, ULONG uVPID, UCHAR *pData) PURE; // *********************************************************************** // Vendoer Specific IO API // *********************************************************************** STDMETHOD_(BOOL, Cod5SetSpecialIOMode)(ULONG uBdID, ULONG uData) PURE; STDMETHOD_(BOOL, Cod5GetSpecialIOMode)(ULONG uBdID, ULONG *puData) PURE; STDMETHOD_(BOOL, Cod5WriteSpecialIOData)(ULONG uBdID, ULONG uData) PURE; STDMETHOD_(BOOL, Cod5ReadSpecialIOData)(ULONG uBdID, ULONG *puData) PURE; }; #pragma pack( pop, COD5BOARDLIB_EX_H ) #endif