blob: 5c533a973bb555d412462ed43d0c9bf393a4ca34 [file] [log] [blame]
/*******************************************************************************
* Copyright by ZTE Corporation.
*
* File Name:
* File Mark:
* Description:
* Others:
* Version: V1.0
* Author: wuhui
* Date: 2016-9-6
* History 1:
* Date:
* Version:
* Author:
* Modification:
* History 2:
********************************************************************************/
#ifndef _DRVS_CAM_H
#define _DRVS_CAM_H
/****************************************************************************
* Include files
****************************************************************************/
#include "drvs_general.h"
/****************************************************************************
* Macros
****************************************************************************/
//#define ZDRV_DEV_CAMERA "camera" /* device name of camera */
typedef UINT32 PhyAddr;
typedef UINT8 * T_HalCam_Buff_Addr;
/****************************************************************************
* Types
****************************************************************************/
typedef enum
{
HAL_CAM_BUF_FREE= 0, /* Buffer isn't full filled */
HAL_CAM_BUF_READY= 1,
HAL_CAM_BUF_BUSY= 2,
MAX_HAL_CAM_BUF_FLAG =3
}T_HalCam_EBufFlag;
#if defined(_USE_RAW_BUFFER)
typedef struct
{
T_HalCam_Buff_Addr bufaddr;
T_HalCam_EBufFlag bufflag;
} T_HalSensor_Buff;
#endif
/* sensors */
typedef enum
{
SENSOR_MAIN, /* main sensor */
SENSOR_SUB, /* sub sensor */
MAX_SENSOR_ID
} T_ZDrv_SensorId;
typedef enum
{
//SENSOR_OV9656,
//SENSOR_OV7670,
//SENSOR_MT9D113,
//SENSOR_MT9V113,
//SENSOR_HI704,
#if defined(_USE_TYPE_GC6133)
SENSOR_GC6133,
#endif
#if defined(_USE_TYPE_BF3A01CS)
SENSOR_BF3A01CS,
#endif
MAX_SENSOR_DEV_TYPE
} T_ZDrv_Sensor_DevType;
/* sensor info */
typedef struct
{
T_ZDrv_Sensor_DevType tDevType; /* the sensor now using*/
T_ZDrv_SensorId tActivedSensor; /* the sensor now using*/
UINT16 uiWidth; /* max pixel width of the actived sensor */
UINT16 uiHeight; /* max pixel height of the actived sensor */
UINT16 pixelBytes;
BOOL fucSetZoom; /*whether to support set_zoom function */
BOOL fucSetImgSize; /*whether to support set_img_Size function */
BOOL fucSetEffect; /*whether to support set_effect function */
BOOL fucSetMirrorFlip; /*whether to support set MirrorFlip function */
BOOL fucSetBrightness; /*whether to support set Brightness function */
BOOL fucSetContrast; /*whether to support SetContrast function */
BOOL fucSetSaturation; /*whether to support SetSaturation function */
BOOL fucSetWhiteBalance; /*whether to support SetWhiteBalance function */
BOOL fucSetLightMode; /*whether to support SetLightMode function */
BOOL fucSetNightMode; /*whether to support SetNightMode function */
BOOL fucSetFrameRate; /*whether to support SetFrameRate function */
//BOOL funcSetExposureCompensation; /*whether to support ExposureCompensation function */
BOOL funcSetAntiFlicker;
} T_ZDrv_SensorInfo;
/* camera frame rate*/
typedef enum
{
Fps714 = 0,
Fps75 ,
Fps143 ,
Fps15 ,
Fps25 ,
Fps30 ,
MAX_FPS_SIZE
} T_ZDrv_CamFps;
/* output size */
typedef enum
{
OUTPUT_IMG_SXGA =0,
OUTPUT_IMG_VGA,
OUTPUT_IMG_QVGA,
OUTPUT_IMG_QQVGA,
OUTPUT_IMG_CIF ,
OUTPUT_IMG_QCIF,
OUTPUT_IMG_QQCIF ,
OUTPUT_IMG_USVGA,
MAX_OUTPUT_IMG_SIZE
} T_ZDrv_CamOutputSize;
/* night mode */
typedef enum
{
NIGHT_MODE_0, /* level 0*/
NIGHT_MODE_1, /* level 1 */
NIGHT_MODE_2, /* level 2 */
MAX_NIGHT_MODE
} T_ZDrv_CamNightMode;
/* zomm level */
typedef enum
{
ZOOM_LEVEL_0, /* level 0 */
ZOOM_LEVEL_1, /* level 1 */
ZOOM_LEVEL_2, /* level 2 */
ZOOM_LEVEL_3, /* level 3 */
ZOOM_LEVEL_4, /* level 4 */
MAX_ZOOM_LEVEL
} T_ZDrv_CamZoom;
/* brightness level */
typedef enum
{
BRI_LEVEL_0 = 0, /* level 0 (darkest) */
BRI_LEVEL_1, /* level 1 */
BRI_LEVEL_2, /* level 2 */
BRI_LEVEL_3, /* level 3 */
BRI_LEVEL_4, /* level 4 */
BRI_LEVEL_5, /* level 5 */
BRI_LEVEL_6, /* level 6 */
MAX_BRI_LEVEL
} T_ZDrv_CamBrightness;
/* contrast level*/
typedef enum
{
CON_LEVEL_0 = 0, /* level 0 (thinnest) */
CON_LEVEL_1, /* level 1 */
CON_LEVEL_2, /* level 2 */
CON_LEVEL_3, /* level 3 */
CON_LEVEL_4, /* level 4 */
CON_LEVEL_5, /* level 5 */
CON_LEVEL_6, /* level 6 (sharpest) */
MAX_CON_LEVEL
} T_ZDrv_CamContrast;
/* saturation level */
typedef enum
{
SAT_LEVEL_0,
SAT_LEVEL_1,
SAT_LEVEL_2,
SAT_LEVEL_3,
SAT_LEVEL_4,
MAX_SAT_LEVEL
} T_ZDrv_CamSaturation;
/* camera effect */
typedef enum
{
EFF_NORMAL = 0,
EFF_ANTIQUE,
EFF_BLUISH,
EFF_GREENISH,
EFF_REDISH,
EFF_YELLOW,
EFF_NEGATIVE,
EFF_BLACK_AND_WHITE,
EFF_BW_NEGATIVE,
EFF_SEPIA_GREEN,
MAX_EFF_TYPE
} T_ZDrv_CamEffect;
/* camera whiteblance */
typedef enum
{
WB_AUTO = 0,
WB_INSCANDSENCE,
WB_FLUORESCENT,//CWF
// WB_FLUORECWF, //cool white FLUORESCENT
WB_TUNGSTEN,
WB_SUNNY,
WB_CLOUDY,
MAX_WB_MODE
} T_ZDrv_CamWhiteBalance;
/* camera light mode */
typedef enum
{
LIGTH_AUTO, /* auto */
LIGTH_SUNNY, /* sunny */
LIGTH_CLOUDY, /* cloudy */
LIGTH_OFFICE, /* office */
LIGTH_HOME, /* home */
LIGTH_NIGHT, /* night */
MAX_LIGTH_MODE
} T_ZDrv_CamLightMode;
/* exposure compesation level */
typedef enum
{
EV_NEG_4_3 = 0, /* EV -2 */
EV_NEG_3_3, /* EV -1.5 */
EV_NEG_2_3, /* EV -1 */
EV_NEG_1_3, /* EV -0.5 */
EV_ZERO, /* EV 0 */
EV_POS_1_3, /* EV +0.5 */
EV_POS_2_3, /* EV +1 */
EV_POS_3_3, /* EV +1.5 */
EV_POS_4_3, /* EV +2 */
MAX_EV_LEVEL
} T_ZDrv_CamExpCom;
typedef enum
{
HAL_CAM_WORD_MODE_YUV,
HAL_CAM_WORD_MODE_RGB,
MAX_HAL_CAM_WORD_MODE
}T_HalCam_EWorkMode;
typedef struct
{
PhyAddr *Y;
PhyAddr *Cb;
PhyAddr *Cr;
}T_ZDrv_YuvBuf;
/* Image data buffer */
typedef union
{
T_ZDrv_YuvBuf YuvBuf;
PhyAddr *streamDataBuf;
PhyAddr*ARGBdataBuf;
} T_ZDrv_ImageDataBuf;
/* Pixel format. */
typedef enum
{
PIXEL_YCbCr400,
PIXEL_YCbCr420,
PIXEL_YUYV,
// PIXEL_YCbCr422 = PIXEL_YUYV,
// PIXEL_YCbCr422H = PIXEL_YUYV,
// PIXEL_YCbCr422V = PIXEL_YUYV,
PIXEL_YCbCr444,
PIXEL_RGB_PLANAR,
PIXEL_RGB555,
PIXEL_RGB565,
PIXEL_RGB666,
PIXEL_RGB888,
PIXEL_ARGB888,
MAX_PIXEL_FORMAT
} T_ZDrv_PixelFmt;
/* camera data info */
typedef struct
{
T_ZDrv_ImageDataBuf dataBuf; /* image data buffer */
UINT32 Width; /* image width */
UINT32 Height; /* image height */
T_ZDrv_PixelFmt pixeFmt; /* pixel format */
} T_ZDrv_CamDataInfo;
typedef struct
{
UINT32 ySize;
UINT32 uSize;
UINT32 vSize;
} T_ZDrv_YuvBufSize;
/* Image buffer size */
typedef union
{
T_ZDrv_YuvBufSize YuvBufSize;
UINT32 streamBufSize;
UINT32 ARGBBufSize;
} T_ZDrv_ImageBufSzie;
/* mirror type */
typedef enum
{
MIR_NONE,
MIR_V,
MIR_H,
MIR_V_H,
MAX_MIR_TYPE
} T_ZDrv_MirrorType;
typedef enum
{
FLICKER_50HZ,
FLICKER_60HZ,
MAX_FLICKER_TYPE
} T_ZDrv_AntiFlicker;
/****************************************************************************
* Constants
****************************************************************************/
/****************************************************************************
* Global Variables
****************************************************************************/
/****************************************************************************
* Function Prototypes
****************************************************************************/
#endif/*_FILENAME_H*/