390 lines
13 KiB
C
390 lines
13 KiB
C
/**
|
|
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 <umsd.h>
|
|
#else
|
|
#include <wTypes.h>
|
|
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
|