/** Msdc-Nvt Vendor Callback for PC This system for PC control device(DSC) via MSDC. User can register callbacks to respond PC command. @file MsdcNvtCallback.h @ingroup mMsdcNvt Copyright Novatek Microelectronics Corp. 2012. All rights reserved. */ #ifndef _MSDCNVTCALLBACK_H #define _MSDCNVTCALLBACK_H #ifndef _WIN32 #include #else #include typedef unsigned char UINT8, *PUINT8; #endif /** Basic Data Structure Msdc-Nvt basic data structure for bi-direction transmission */ typedef struct _MSDCEXT_PARENT { UINT32 biSize; ///< Structure Size UINT32 bHandled; ///< Indicate Device Handle this function UINT32 bOK; ///< Indicate Function Action is OK or Not UINT8 Reversed[4]; ///< Reversed Value for Structure DWORD Alignment } tMSDCEXT_PARENT; /** BOOL Msdc-Nvt BOOL data for bi-direction transmission */ typedef struct _MSDCEXT_BOOL { tMSDCEXT_PARENT tParent; UINT32 bValue; ///< a BOOL value } tMSDCEXT_BOOL; /** UINT32 Msdc-Nvt BOOL data for bi-direction transmission */ typedef struct _MSDCEXT_UINT32 { tMSDCEXT_PARENT tParent; UINT32 uiValue;///< a UINT32 value } tMSDCEXT_UINT32; /** INT32 Msdc-Nvt BOOL data for bi-direction transmission */ typedef struct _MSDCEXT_INT32 { tMSDCEXT_PARENT tParent; INT32 iValue; ///< a INT32 value } tMSDCEXT_INT32; //------------------------------------------------------------------------------ // Photo Data Types for MsdcNvt_AddCallback_Bi //------------------------------------------------------------------------------ /** Display Setting MsdcNvtCb_GetDisplaySettings used structure */ typedef struct _MSDCEXT_DISPLAY_SETTING { ///< PC <- DSC tMSDCEXT_PARENT Parent; UINT32 AddrY[3]; ///< IDE 3 Buffers of Y UINT32 AddrU[3]; ///< IDE 3 Buffers of U UINT32 AddrV[3]; ///< IDE 3 Buffers of V UINT32 PitchY; ///< IDE 3 Buffers of LineOffset Y UINT32 PitchUV; ///< IDE 3 Buffers of LineOffset UV UINT32 Width; ///< IDE 3 Buffers of Width UINT32 HeightY; ///< IDE Height of Y UINT32 HeightUV; ///< IDE Height of UV } tMSDCEXT_DISPLAY_SETTING; /** Display Setting 2 MsdcNvtCb_GetDisplaySettings2 used structure */ typedef struct _MSDCEXT_DISPLAY_SETTING2 { ///< PC <- DSC tMSDCEXT_PARENT Parent; UINT32 nValidFrm; ///< Valid Frame Number UINT32 AddrY[10]; ///< Display Buffers of Y UINT32 AddrU[10]; ///< Display Buffers of U UINT32 AddrV[10]; ///< Display Buffers of V UINT32 PitchY; ///< Display Buffers of LineOffset Y UINT32 PitchUV; ///< Display Buffers of LineOffset UV UINT32 Width; ///< Display Buffers of Width UINT32 HeightY; ///< IDE Height of Y UINT32 HeightUV; ///< IDE Height of UV } tMSDCEXT_DISPLAY_SETTING2; /** Display Current MsdcNvtCb_GetDisplayCurrentBufSel used structure */ typedef struct _MSDCEXT_DISPLYA_CURRENT { ///< PC <- DSC tMSDCEXT_PARENT Parent; UINT32 OPTBUF; ///< Current IDE Buffer Index UINT32 BUFNUM; ///< Total IDE Buffers } tMSDCEXT_DISPLYA_CURRENT; /** Capture Jpeg Information MsdcNvtCb_CaptureJpgWidthGetInfo used structure */ typedef struct _MSDCEXT_INFO_CAPTURE_JPG { ///< PC <- DSC tMSDCEXT_PARENT Parent; UINT32 JpgAddr; ///< Jpeg Data Address UINT32 JpgFileSize;///< Jpg File Size } tMSDCEXT_INFO_CAPTURE_JPG; /** Capture Raw Information MsdcNvtCb_CaptureRawWidthGetInfo used structure */ typedef struct _MSDCEXT_INFO_CAPTURE_RAW { ///< PC <- DSC tMSDCEXT_PARENT Parent; UINT32 RawAddr; ///< Memory Address of Raw Data UINT32 RawFileSize;///< Raw Data Size UINT32 RawWidth; ///< Raw Width UINT32 RawHeight; ///< Raw Height UINT32 RawNbit; ///< Raw 8bits or 12bits } tMSDCEXT_INFO_CAPTURE_RAW; //------------------------------------------------------------------------------ // Display Utility Implementation Data Types for MsdcNvt_AddCallback_Bi //------------------------------------------------------------------------------ /** Display Format */ typedef enum _MSDCEXT_DISP_FORMAT { MSDCEXT_DISP_FORMAT_4_BIT = 0, ///< Color format 4 bit MSDCEXT_DISP_FORMAT_2_BIT, ///< Color format 2 bit MSDCEXT_DISP_FORMAT_1_BIT, ///< Color format 1 bit MSDCEXT_DISP_FORMAT_8_BIT, ///< Color format 8 bit MSDCEXT_DISP_FORMAT_YCBCR444, ///< Color format YCBCR444 MSDCEXT_DISP_FORMAT_YCBCR422, ///< Color format YCBCR422 MSDCEXT_DISP_FORMAT_YCBCR420, ///< Color format YCBCR420 MSDCEXT_DISP_FORMAT_ARGB4565, ///< Color format ARGB4565 MSDCEXT_DISP_FORMAT_ARGB8565, ///< Color format ARGB8565 MSDCEXT_DISP_FORMAT_YCBCR422_UVPACK, ///< Color format YCBCR422 with UV packing MSDCEXT_DISP_FORMAT_YCBCR420_UVPACK, ///< Color format YCBCR420 with UV packing MSDCEXT_DISP_FORMAT_YCBCR444_UVPACK, ///< Color format YCBCR444 with UV packing MSDCEXT_DISP_FORMAT_UNKNOWN = -1 ///< Unknown Format } eMSDCEXT_DISP_FORMAT; /** Display Engine */ typedef enum _MSDCEXT_DISP_ENG { MSDCEXT_DISP_ENG_VDO_0 = 0, ///< Video 0 Engine MSDCEXT_DISP_ENG_VDO_1, ///< Video 1 Engine MSDCEXT_DISP_ENG_OSD_0, ///< OSD 0 Engine MSDCEXT_DISP_ENG_OSD_1 ///< OSD 1 Engine } eMSDCEXT_DISP_ENG; /** Video Engine Information */ typedef struct _MSDCEXT_DISP_VDO_INFO { BOOL bEnable; UINT32 Format; ///< cast to eMSDCEXT_DISP_FORMAT UINT32 AddrY[3]; ///< AddrY[0] is RGB565 when format is ARGB565 UINT32 AddrU[3]; ///< AddrU[0] is Alpha Plane when format is ARGB565 UINT32 AddrV[3]; ///< V address UINT32 Width; ///< width UINT32 Height; ///< height UINT32 PitchY; ///< Y Lineoffset UINT32 PitchUV; ///< UV Lineoffset } tMSDCEXT_DISP_VDO_INFO; /** OSD Engine Information */ typedef struct _MSDCEXT_DISP_OSD_INFO { BOOL bEnable; ///< enable / disable UINT32 Format; ///< cast to eMSDCEXT_DISP_FORMAT UINT32 AddrBuf; ///< main buffer UINT32 AddrAlpha; ///< ARGB565's Alpha UINT32 Width; ///< width UINT32 Height; ///< height UINT32 PitchBuf; ///< main buffer lineoffset UINT32 PitchAlpha; ///< alpah buffer lineoffset } tMSDCEXT_DISP_OSD_INFO; /** IDE Engine configure */ typedef struct _MSDCEXT_DISP_CFG { tMSDCEXT_PARENT tParent; ///< basic data //[Device Set] tMSDCEXT_DISP_VDO_INFO tInfoVdo[2]; ///< 2 videoes information tMSDCEXT_DISP_OSD_INFO tInfoOsd[2]; ///< 2 OSDs information } tMSDCEXT_DISP_CFG; /** Video Current Buffer Index */ typedef struct _MSDCEXT_DISP_VDO_CURR_BUFF_IDX { tMSDCEXT_PARENT tParent; ///< basic data //[Device Set] UINT32 iSel[2]; ///< 0:Video1, 1:Video2 } tMSDCEXT_DISP_VDO_CURR_BUFF_IDX; /** Enable / Disable a engine */ typedef struct _MSDCEXT_DISP_ENG_ONOFF { tMSDCEXT_PARENT tParent; ///< basic data //[Host Set] UINT32 eEngine; ///< cast to eMSDCEXT_DISP_ENG BOOL bEnable; } tMSDCEXT_DISP_ENG_ONOFF; /** OSD Palette */ typedef struct _MSDCEXT_DISP_OSD_PALETTE { tMSDCEXT_PARENT tParent; ///< basic data //[Host Set or Device Set] UINT32 iSel; ///< 0 or 1 for Palette Select UINT32 nEntrys; ///< Total effective enterys UINT32 Palette[256]; ///< if is 16 color only use first 16 entrys } tMSDCEXT_DISP_OSD_PALETTE; /** Gamma Table */ typedef struct _MSDCEXT_DISP_GAMMA_TBL { tMSDCEXT_PARENT tParent; ///< basic data //[Host Set or Device Set] UINT8 GammaTbl[256]; ///< Gamma Table, Max size is 256 Level for any chip } tMSDCEXT_DISP_GAMMA_TBL; /** Color Matrix Coefficients */ typedef struct _MSDCEXT_DISP_ICST_COEF_INFO { tMSDCEXT_PARENT tParent; ///< basic data //[Device Set] UINT32 NumBitsInteger; ///< Numbers of Maxrix Coefficient Integer Bits UINT32 NumBitsFraction;///< Numbers of Maxrix Coefficient Fraction Bits INT32 PreMatrix[9]; ///< CoefTrans = PreMatrix*GainMatrix*PostMatrix INT32 PostMatrix[9]; ///< CoefTrans = PreMatrix*GainMatrix*PostMatrix } tMSDCEXT_DISP_ICST_COEF_INFO; /** Color Matrix Enable/Disable */ typedef struct _MSDCEXT_DISP_ICST_COEF { tMSDCEXT_PARENT tParent; ///< basic data //[Host Set] UINT32 CoefTrans[9]; ///< 3x3 Transform Matrix } tMSDCEXT_DISP_ICST_COEF; /** Saturation Information */ typedef struct _MSDCEXT_DISP_SATURATION_INFO { tMSDCEXT_PARENT tParent; ///< basic data //[Device Set] INT32 ValMax; ///< maximum value INT32 ValMin; ///< minimum value INT32 ValDefault; ///< default value } tMSDCEXT_DISP_SATURATION_INFO; /** Contrast Information */ typedef struct _MSDCEXT_DISP_CONTRAST_INFO { tMSDCEXT_PARENT tParent; ///< basic data //[Device Set] INT32 ValMax; ///< maximum value INT32 ValMin; ///< minimum value INT32 ValDefault; ///< default value } tMSDCEXT_DISP_CONTRAST_INFO; /** Brightness Information */ typedef struct _MSDCEXT_DISP_BRIGHTNESS_INFO { tMSDCEXT_PARENT tParent; ///< basic data //[Device Set] INT32 ValMax; ///< maximum value INT32 ValMin; ///< minimum value INT32 ValDefault; ///< default value } tMSDCEXT_DISP_BRIGHTNESS_INFO; //------------------------------------------------------------------------------ // Filesys Utility Implementation Data Types for MsdcNvt_AddCallback_Bi //------------------------------------------------------------------------------ /** Working Buffer */ typedef struct _MSDCEXT_FILE_WORKING_MEM { tMSDCEXT_PARENT tParent; ///< basic data //[Device Set] UINT32 Address; ///< address of working buffer begin UINT32 Size; ///< size of working buffer } tMSDCEXT_FILE_WORKING_MEM; /** File Information */ typedef struct _MSDCEXT_FILE_INFO { tMSDCEXT_PARENT tParent; //[Host Set(Copy PC To Device) or Device Set(Copy Device To PC)] char FilePath[256]; ///< File Name / Path UINT32 FileSize; ///< File Total Size UINT32 TransmitOffset;///< File Transmit Offset UINT32 TransmitSize; ///< File Transmit Size UINT32 WorkingMem; ///< Device Wroking Buffer } tMSDCEXT_FILE_INFO; //------------------------------------------------------------------------------ // Universal Adjustment Implementation Data Types for MsdcNvt_AddCallback_Bi //------------------------------------------------------------------------------ /** Adjustment Description */ typedef struct _MSDCEXT_ADJ_ITEM_DESC { UINT32 bIsSign; ///< signed or unsigned type UINT32 MaxValue; ///< maximum value UINT32 MinValue; ///< minimum value CHAR Tag[64]; ///< a tag of string } tMSDCEXT_ADJ_ITEM_DESC; /** Adjustment Basic tMSDCEXT_ADJ_ITEM_DESC* with following data */ typedef struct _MSDCEXT_ADJ_ALL_DESC { tMSDCEXT_PARENT tParent; ///< basic data } tMSDCEXT_ADJ_ALL_DESC; /** Adjustment Data void* pVars; with following data */ typedef struct _MSDCEXT_ADJ_DATA { tMSDCEXT_PARENT tParent; ///< basic data } tMSDCEXT_ADJ_DATA; //------------------------------------------------------------------------------ // Standard Update Firmware //------------------------------------------------------------------------------ /** PC Get Nand Block Information */ typedef struct _MSDCEXT_UPDFW_GET_BLOCK_INFO { tMSDCEXT_PARENT tParent; ///< basic data UINT32 uiBytesPerBlock; ///< Each Block Size } tMSDCEXT_UPDFW_GET_BLOCK_INFO; typedef struct _MSDCEXT_UPDFW_GET_WORK_MEM { tMSDCEXT_PARENT tParent; ///< basic data UINT32 uiAddr; ///< working memory address UINT32 uiSize; ///< working memory size } tMSDCEXT_UPDFW_GET_WORK_MEM; typedef tMSDCEXT_UPDFW_GET_WORK_MEM tMSDCEXT_UPDFWALLINONE_STEP1; /** PC Send Nand Block Data */ typedef struct _MSDCEXT_UPDFW_SET_BLOCK_INFO { tMSDCEXT_PARENT tParent; ///< basic data UINT32 uiKey; ///< a key value to indicate valid command ('N','O','V','A') UINT32 iBlock; ///< Block Index of this Packet UINT32 IsLastBlock; ///< Indicate Last Block for Reset System UINT32 EffectDataSize; ///< Current Effective Data Size } tMSDCEXT_UPDFW_SET_BLOCK_INFO; typedef tMSDCEXT_UPDFW_SET_BLOCK_INFO tMSDCEXT_UPDFWALLINONE_STEP2; #endif