mirror of https://github.com/OpenIPC/firmware.git
639 lines
23 KiB
C
639 lines
23 KiB
C
|
|
/******************************************************************************
|
|
Copyright (C), 2016, Hisilicon Tech. Co., Ltd.
|
|
******************************************************************************
|
|
File Name : hi_comm_video.h
|
|
Version : Initial Draft
|
|
Author : Hisilicon multimedia software group
|
|
Created : 2016/07/15
|
|
Last Modified :
|
|
Description : The common defination
|
|
Function List :
|
|
******************************************************************************/
|
|
|
|
#ifndef __HI_COMM_VIDEO_H__
|
|
#define __HI_COMM_VIDEO_H__
|
|
|
|
#include "hi_type.h"
|
|
//#include "hi_defines.h"
|
|
#include "hi_common.h"
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#define SRC_LENS_COEF_SEG 2
|
|
#define DST_LENS_COEF_SEG 3
|
|
#define SRC_LENS_COEF_NUM 4
|
|
#define DST_LENS_COEF_NUM 4
|
|
#define DST_LENS_COEF_SEG_POINT (DST_LENS_COEF_SEG - 1)
|
|
|
|
#define ISP_BAYER_CHN (4)
|
|
|
|
|
|
typedef enum hiOPERATION_MODE_E
|
|
{
|
|
OPERATION_MODE_AUTO = 0,
|
|
OPERATION_MODE_MANUAL = 1,
|
|
OPERATION_MODE_BUTT
|
|
} OPERATION_MODE_E;
|
|
|
|
|
|
/*Angle of rotation*/
|
|
typedef enum hiROTATION_E
|
|
{
|
|
ROTATION_0 = 0,
|
|
ROTATION_90 = 1,
|
|
ROTATION_180 = 2,
|
|
ROTATION_270 = 3,
|
|
ROTATION_BUTT
|
|
} ROTATION_E;
|
|
|
|
typedef enum hiVB_SOURCE_E
|
|
{
|
|
VB_SOURCE_COMMON = 0,
|
|
VB_SOURCE_MODULE = 1,
|
|
VB_SOURCE_PRIVATE = 2,
|
|
VB_SOURCE_USER = 3,
|
|
VB_SOURCE_BUTT
|
|
} VB_SOURCE_E;
|
|
|
|
typedef enum hiDATA_RATE_E
|
|
{
|
|
DATA_RATE_X1 = 0, /* RW; output 1 pixel per clock */
|
|
DATA_RATE_X2 = 1, /* RW; output 2 pixel per clock */
|
|
|
|
DATA_RATE_BUTT
|
|
} DATA_RATE_E;
|
|
|
|
typedef struct hiBORDER_S
|
|
{
|
|
HI_U32 u32TopWidth;
|
|
HI_U32 u32BottomWidth;
|
|
HI_U32 u32LeftWidth;
|
|
HI_U32 u32RightWidth;
|
|
HI_U32 u32Color;
|
|
} BORDER_S;
|
|
|
|
|
|
typedef struct hiPOINT_S
|
|
{
|
|
HI_S32 s32X;
|
|
HI_S32 s32Y;
|
|
} POINT_S;
|
|
|
|
typedef struct hiSIZE_S
|
|
{
|
|
HI_U32 u32Width;
|
|
HI_U32 u32Height;
|
|
} SIZE_S;
|
|
|
|
typedef struct hiRECT_S
|
|
{
|
|
HI_S32 s32X;
|
|
HI_S32 s32Y;
|
|
HI_U32 u32Width;
|
|
HI_U32 u32Height;
|
|
} RECT_S;
|
|
|
|
typedef struct hiVIDEO_REGION_INFO_S
|
|
{
|
|
HI_U32 u32RegionNum; /* W; count of the region */
|
|
RECT_S ATTRIBUTE* pstRegion; /* W; region attribute */
|
|
} VIDEO_REGION_INFO_S;
|
|
|
|
|
|
typedef struct hiCROP_INFO_S
|
|
{
|
|
HI_BOOL bEnable;
|
|
RECT_S stRect;
|
|
} CROP_INFO_S;
|
|
|
|
typedef struct hiFRAME_RATE_CTRL_S
|
|
{
|
|
HI_S32 s32SrcFrameRate; /* RW; source frame rate */
|
|
HI_S32 s32DstFrameRate; /* RW; dest frame rate */
|
|
} FRAME_RATE_CTRL_S;
|
|
|
|
typedef enum hiASPECT_RATIO_E
|
|
{
|
|
ASPECT_RATIO_NONE = 0, /* full screen */
|
|
ASPECT_RATIO_AUTO = 1, /* ratio no change, 1:1*/
|
|
ASPECT_RATIO_MANUAL = 2, /* ratio manual set */
|
|
ASPECT_RATIO_BUTT
|
|
|
|
}ASPECT_RATIO_E;
|
|
|
|
typedef struct hiASPECT_RATIO_S
|
|
{
|
|
ASPECT_RATIO_E enMode; /* aspect ratio mode: none/auto/manual */
|
|
HI_U32 u32BgColor; /* background color, RGB 888 */
|
|
RECT_S stVideoRect; /* valid in ASPECT_RATIO_MANUAL mode */
|
|
|
|
} ASPECT_RATIO_S;
|
|
|
|
|
|
|
|
/* we ONLY define picture format used, all unused will be deleted!*/
|
|
typedef enum hiPIXEL_FORMAT_E
|
|
{
|
|
PIXEL_FORMAT_RGB_444 = 0,
|
|
PIXEL_FORMAT_RGB_555,
|
|
PIXEL_FORMAT_RGB_565,
|
|
PIXEL_FORMAT_RGB_888,
|
|
|
|
PIXEL_FORMAT_BGR_444,
|
|
PIXEL_FORMAT_BGR_555,
|
|
PIXEL_FORMAT_BGR_565,
|
|
PIXEL_FORMAT_BGR_888,
|
|
|
|
PIXEL_FORMAT_ARGB_1555,
|
|
PIXEL_FORMAT_ARGB_4444,
|
|
PIXEL_FORMAT_ARGB_8565,
|
|
PIXEL_FORMAT_ARGB_8888,
|
|
PIXEL_FORMAT_ARGB_2BPP,
|
|
|
|
PIXEL_FORMAT_ABGR_1555,
|
|
PIXEL_FORMAT_ABGR_4444,
|
|
PIXEL_FORMAT_ABGR_8565,
|
|
PIXEL_FORMAT_ABGR_8888,
|
|
|
|
PIXEL_FORMAT_RGB_BAYER_8BPP,
|
|
PIXEL_FORMAT_RGB_BAYER_10BPP,
|
|
PIXEL_FORMAT_RGB_BAYER_12BPP,
|
|
PIXEL_FORMAT_RGB_BAYER_14BPP,
|
|
PIXEL_FORMAT_RGB_BAYER_16BPP,
|
|
|
|
|
|
PIXEL_FORMAT_YVU_PLANAR_422,
|
|
PIXEL_FORMAT_YVU_PLANAR_420,
|
|
PIXEL_FORMAT_YVU_PLANAR_444,
|
|
|
|
PIXEL_FORMAT_YVU_SEMIPLANAR_422,
|
|
PIXEL_FORMAT_YVU_SEMIPLANAR_420,
|
|
PIXEL_FORMAT_YVU_SEMIPLANAR_444,
|
|
|
|
PIXEL_FORMAT_YUV_SEMIPLANAR_422,
|
|
PIXEL_FORMAT_YUV_SEMIPLANAR_420,
|
|
PIXEL_FORMAT_YUV_SEMIPLANAR_444,
|
|
|
|
PIXEL_FORMAT_YUYV_PACKAGE_422,
|
|
PIXEL_FORMAT_YVYU_PACKAGE_422,
|
|
PIXEL_FORMAT_UYVY_PACKAGE_422,
|
|
PIXEL_FORMAT_VYUY_PACKAGE_422,
|
|
PIXEL_FORMAT_YYUV_PACKAGE_422,
|
|
PIXEL_FORMAT_YYVU_PACKAGE_422,
|
|
PIXEL_FORMAT_UVYY_PACKAGE_422,
|
|
PIXEL_FORMAT_VUYY_PACKAGE_422,
|
|
PIXEL_FORMAT_VY1UY0_PACKAGE_422,
|
|
|
|
PIXEL_FORMAT_YUV_400,
|
|
PIXEL_FORMAT_UV_420,
|
|
|
|
|
|
/* SVP data format */
|
|
PIXEL_FORMAT_BGR_888_PLANAR,
|
|
PIXEL_FORMAT_HSV_888_PACKAGE,
|
|
PIXEL_FORMAT_HSV_888_PLANAR,
|
|
PIXEL_FORMAT_LAB_888_PACKAGE,
|
|
PIXEL_FORMAT_LAB_888_PLANAR,
|
|
PIXEL_FORMAT_S8C1,
|
|
PIXEL_FORMAT_S8C2_PACKAGE,
|
|
PIXEL_FORMAT_S8C2_PLANAR,
|
|
PIXEL_FORMAT_S8C3_PLANAR,
|
|
PIXEL_FORMAT_S16C1,
|
|
PIXEL_FORMAT_U8C1,
|
|
PIXEL_FORMAT_U16C1,
|
|
PIXEL_FORMAT_S32C1,
|
|
PIXEL_FORMAT_U32C1,
|
|
PIXEL_FORMAT_U64C1,
|
|
PIXEL_FORMAT_S64C1,
|
|
|
|
PIXEL_FORMAT_BUTT
|
|
} PIXEL_FORMAT_E;
|
|
|
|
|
|
typedef enum hiVIDEO_FIELD_E
|
|
{
|
|
VIDEO_FIELD_TOP = 0x1, /* even field */
|
|
VIDEO_FIELD_BOTTOM = 0x2, /* odd field */
|
|
VIDEO_FIELD_INTERLACED = 0x3, /* two interlaced fields */
|
|
VIDEO_FIELD_FRAME = 0x4, /* frame */
|
|
|
|
VIDEO_FIELD_BUTT
|
|
} VIDEO_FIELD_E;
|
|
|
|
typedef enum hiVIDEO_FORMAT_E
|
|
{
|
|
VIDEO_FORMAT_LINEAR = 0, /* nature video line */
|
|
VIDEO_FORMAT_TILE_64x16, /* tile cell: 64pixel x 16line */
|
|
VIDEO_FORMAT_TILE_16x8, /* tile cell: 16pixel x 8line */
|
|
VIDEO_FORMAT_LINEAR_DISCRETE, /* The data bits are aligned in bytes */
|
|
VIDEO_FORMAT_BUTT
|
|
} VIDEO_FORMAT_E;
|
|
|
|
|
|
|
|
typedef enum hiCOMPRESS_MODE_E
|
|
{
|
|
COMPRESS_MODE_NONE = 0, /* no compress */
|
|
COMPRESS_MODE_SEG, /* compress unit is 256x1 bytes as a segment.*/
|
|
COMPRESS_MODE_TILE, /* compress unit is a tile.*/
|
|
COMPRESS_MODE_LINE, /* compress unit is the whole line. raw for VI */
|
|
COMPRESS_MODE_FRAME, /* compress unit is the whole frame. YUV for VI(3DNR), RGB for TDE(write)/VO(read) */
|
|
|
|
COMPRESS_MODE_BUTT
|
|
} COMPRESS_MODE_E;
|
|
|
|
|
|
typedef enum hiVIDEO_DISPLAY_MODE_E
|
|
{
|
|
VIDEO_DISPLAY_MODE_PREVIEW = 0x0,
|
|
VIDEO_DISPLAY_MODE_PLAYBACK = 0x1,
|
|
|
|
VIDEO_DISPLAY_MODE_BUTT
|
|
} VIDEO_DISPLAY_MODE_E;
|
|
|
|
typedef struct hiLUMA_INFO_S
|
|
{
|
|
HI_U64 u64LumaPixSum; /* Luma sum of current frame */
|
|
HI_U32 u32LumaPixAverage; /* Luma average of current frame */
|
|
HI_U64 u64PTS; /* PTS of current frame */
|
|
} LUMA_INFO_S;
|
|
|
|
#define LDCI_STAT_WND_X 24
|
|
#define LDCI_STAT_WND_Y 16
|
|
|
|
#define DCF_DRSCRIPTION_LENGTH 32
|
|
#define DCF_CAPTURE_TIME_LENGTH 20
|
|
|
|
typedef struct hiISP_DCF_CONST_INFO_S
|
|
{
|
|
HI_U8 au8ImageDescription[DCF_DRSCRIPTION_LENGTH]; /*Describes image*/
|
|
HI_U8 au8Make[DCF_DRSCRIPTION_LENGTH]; /*Shows manufacturer of digital cameras*/
|
|
HI_U8 au8Model[DCF_DRSCRIPTION_LENGTH]; /*Shows model number of digital cameras*/
|
|
HI_U8 au8Software[DCF_DRSCRIPTION_LENGTH]; /*Shows firmware (internal software of digital cameras) version number*/
|
|
|
|
HI_U8 u8LightSource; /*Light source, actually this means white balance setting. '0' means unknown, '1' daylight, '2'
|
|
fluorescent, '3' tungsten, '10' flash, '17' standard light A, '18' standard light B, '19' standard light
|
|
C, '20' D55, '21' D65, '22' D75, '255' other*/
|
|
HI_U32 u32FocalLength; /*Focal length of lens used to take image. Unit is millimeter*/
|
|
HI_U8 u8SceneType; /*Indicates the type of scene. Value '0x01' means that the image was directly photographed.*/
|
|
HI_U8 u8CustomRendered; /*Indicates the use of special processing on image data, such as rendering geared to output.
|
|
0 = Normal process 1 = Custom process */
|
|
HI_U8 u8FocalLengthIn35mmFilm; /*Indicates the equivalent focal length assuming a 35mm film camera, in mm*/
|
|
HI_U8 u8SceneCaptureType; /*Indicates the type of scene that was shot. 0 = Standard,1 = Landscape,2 = Portrait,3 = Night scene. */
|
|
HI_U8 u8GainControl; /*Indicates the degree of overall image gain adjustment. 0 = None,1 = Low gain up,2 = High gain up,3 = Low gain down,4 = High gain down. */
|
|
HI_U8 u8Contrast; /*Indicates the direction of contrast processing applied by the camera when the image was shot.
|
|
0 = Normal,1 = Soft,2 = Hard */
|
|
HI_U8 u8Saturation; /*Indicates the direction of saturation processing applied by the camera when the image was shot.
|
|
0 = Normal,1 = Low saturation,2 = High saturation*/
|
|
HI_U8 u8Sharpness; /*Indicates the direction of sharpness processing applied by the camera when the image was shot.
|
|
0 = Normal,1 = Soft,2 = Hard .*/
|
|
HI_U8 u8MeteringMode; /*Exposure metering method. '0' means unknown, '1' average, '2' center weighted average, '3'
|
|
spot, '4' multi-spot, '5' multi-segment, '6' partial, '255' other*/
|
|
} ISP_DCF_CONST_INFO_S;
|
|
|
|
typedef struct hiISP_DCF_UPDATE_INFO_S
|
|
{
|
|
HI_U32 u32ISOSpeedRatings; /*CCD sensitivity equivalent to Ag-Hr film speedrate*/
|
|
HI_U32 u32ExposureTime; /*Exposure time (reciprocal of shutter speed).*/
|
|
HI_U32 u32ExposureBiasValue; /*Exposure bias (compensation) value of taking picture*/
|
|
HI_U8 u8ExposureProgram; /*Exposure program that the camera used when image was taken. '1' means manual control, '2'
|
|
program normal, '3' aperture priority, '4' shutter priority, '5' program creative (slow program),
|
|
'6' program action(high-speed program), '7' portrait mode, '8' landscape mode*/
|
|
HI_U32 u32FNumber; /*The actual F-number (F-stop) of lens when the image was taken*/
|
|
HI_U32 u32MaxApertureValue; /*Maximum aperture value of lens.*/
|
|
HI_U8 u8ExposureMode; /*Indicates the exposure mode set when the image was shot.
|
|
0 = Auto exposure,1 = Manual exposure, 2 = Auto bracket*/
|
|
HI_U8 u8WhiteBalance; /* Indicates the white balance mode set when the image was shot.
|
|
0 = Auto white balance ,1 = Manual white balance */
|
|
} ISP_DCF_UPDATE_INFO_S;
|
|
|
|
typedef struct hiISP_DCF_INFO_S
|
|
{
|
|
ISP_DCF_CONST_INFO_S stIspDCFConstInfo;
|
|
ISP_DCF_UPDATE_INFO_S stIspDCFUpdateInfo;
|
|
} ISP_DCF_INFO_S;
|
|
|
|
typedef struct hiJPEG_DCF_S
|
|
{
|
|
HI_U8 au8CaptureTime[DCF_CAPTURE_TIME_LENGTH]; /*The date and time when the picture data was generated*/
|
|
HI_BOOL bFlash; /*whether the picture is captured when a flash lamp is on*/
|
|
HI_U32 u32DigitalZoomRatio; /*Indicates the digital zoom ratio when the image was shot.
|
|
If the numerator of the recorded value is 0, this indicates that digital zoom was not used.*/
|
|
ISP_DCF_INFO_S stIspDCFInfo;
|
|
|
|
} JPEG_DCF_S;
|
|
|
|
|
|
typedef struct hiISP_FRAME_INFO_S
|
|
{
|
|
HI_U32 u32ISO; /* ISP internal ISO : Again*Dgain*ISPgain */
|
|
HI_U32 u32ExposureTime; /* Exposure time (reciprocal of shutter speed),unit is us */
|
|
HI_U32 u32IspDgain;
|
|
HI_U32 u32Again;
|
|
HI_U32 u32Dgain;
|
|
HI_U32 au32Ratio[3];
|
|
HI_U32 u32IspNrStrength;
|
|
HI_U32 u32FNumber; /* The actual F-number (F-stop) of lens when the image was taken */
|
|
HI_U32 u32SensorID; /* which sensor is used */
|
|
HI_U32 u32SensorMode;
|
|
HI_U32 u32HmaxTimes; /* Sensor HmaxTimes,unit is ns */
|
|
HI_U32 u32Vmax; /* Sensor Vmax,unit is line */
|
|
HI_U32 u32VcNum; /* when dump wdr frame, which is long or short exposure frame. */
|
|
} ISP_FRAME_INFO_S;
|
|
|
|
|
|
#define CFACOLORPLANE (3)
|
|
#define DNG_NP_SIZE (6)
|
|
|
|
|
|
typedef struct hiDNG_RATIONAL_S
|
|
{
|
|
HI_U32 u32Numerator;/*represents the numerator of a fraction,*/
|
|
HI_U32 u32Denominator;/* the denominator. */
|
|
} DNG_RATIONAL_S;
|
|
|
|
/*
|
|
Defines the structure of DNG image dynamic infomation
|
|
*/
|
|
typedef struct hiDNG_IMAGE_DYNAMIC_INFO_S
|
|
{
|
|
HI_U32 au32BlackLevel[ISP_BAYER_CHN]; /* RO;Range: [0x0, 0xFFFF]; black level*/
|
|
DNG_RATIONAL_S astAsShotNeutral[CFACOLORPLANE]; /* specifies the selected white balance at time of capture, encoded as the coordinates of a perfectly neutral color in linear reference space values.*/
|
|
HI_DOUBLE adNoiseProfile[DNG_NP_SIZE]; /* RO;describes the amount of noise in a raw image*/
|
|
} DNG_IMAGE_DYNAMIC_INFO_S;
|
|
|
|
|
|
typedef struct hiISP_HDR_INFO_S
|
|
{
|
|
HI_U32 u32ColorTemp;
|
|
HI_U16 au16CCM[9];
|
|
HI_U8 u8Saturation;
|
|
} ISP_HDR_INFO_S;
|
|
|
|
typedef struct hiISP_ATTACH_INFO_S
|
|
{
|
|
ISP_HDR_INFO_S stIspHdr;
|
|
HI_U32 u32ISO;
|
|
HI_U32 u32InitISO;
|
|
HI_U8 u8SnsWDRMode;
|
|
} ISP_ATTACH_INFO_S;
|
|
|
|
typedef enum hiFRAME_FLAG_E
|
|
{
|
|
FRAME_FLAG_SNAP_FLASH = 0x1 << 0,
|
|
FRAME_FLAG_SNAP_CUR = 0x1 << 1,
|
|
FRAME_FLAG_SNAP_REF = 0x1 << 2,
|
|
FRAME_FLAG_SNAP_END = 0x1 << 31,
|
|
FRAME_FLAG_BUTT
|
|
} FRAME_FLAG_E;
|
|
|
|
|
|
/* RGGB=4 */
|
|
#define ISP_WB_GAIN_NUM 4
|
|
/* 3*3=9 matrix */
|
|
#define ISP_CAP_CCM_NUM 9
|
|
typedef struct hiISP_CONFIG_INFO_S
|
|
{
|
|
HI_U32 u32ISO;
|
|
HI_U32 u32IspDgain;
|
|
HI_U32 u32ExposureTime;
|
|
HI_U32 au32WhiteBalanceGain[ISP_WB_GAIN_NUM];
|
|
HI_U32 u32ColorTemperature;
|
|
HI_U16 au16CapCCM[ISP_CAP_CCM_NUM];
|
|
} ISP_CONFIG_INFO_S;
|
|
|
|
typedef struct hiVIDEO_SUPPLEMENT_S
|
|
{
|
|
HI_U64 u64JpegDCFPhyAddr;
|
|
HI_U64 u64IspInfoPhyAddr;
|
|
HI_U64 u64LowDelayPhyAddr;
|
|
HI_U64 u64MotionDataPhyAddr;
|
|
HI_U64 u64FrameDNGPhyAddr;
|
|
|
|
HI_VOID* ATTRIBUTE pJpegDCFVirAddr; /* JPEG_DCF_S, used in JPEG DCF */
|
|
HI_VOID* ATTRIBUTE pIspInfoVirAddr; /* ISP_FRAME_INFO_S, used in ISP debug, when get raw and send raw */
|
|
HI_VOID* ATTRIBUTE pLowDelayVirAddr; /* used in low delay */
|
|
HI_VOID* ATTRIBUTE pMotionDataVirAddr; /* vpss 3dnr use: gme motion data, Filter motion data, gyro data.*/
|
|
HI_VOID* ATTRIBUTE pFrameDNGVirAddr;
|
|
} VIDEO_SUPPLEMENT_S;
|
|
|
|
typedef enum hiCOLOR_GAMUT_E
|
|
{
|
|
COLOR_GAMUT_BT601 = 0,
|
|
COLOR_GAMUT_BT709,
|
|
COLOR_GAMUT_BT2020, /* Only used for Hi3559AV100 */
|
|
COLOR_GAMUT_USER,
|
|
COLOR_GAMUT_BUTT
|
|
} COLOR_GAMUT_E;
|
|
|
|
typedef struct hiISP_COLORGAMMUT_INFO_S
|
|
{
|
|
COLOR_GAMUT_E enColorGamut;
|
|
} ISP_COLORGAMMUT_INFO_S;
|
|
|
|
typedef enum hiDYNAMIC_RANGE_E
|
|
{
|
|
DYNAMIC_RANGE_SDR8 = 0,
|
|
DYNAMIC_RANGE_SDR10,
|
|
DYNAMIC_RANGE_HDR10,
|
|
DYNAMIC_RANGE_HLG,
|
|
DYNAMIC_RANGE_SLF,
|
|
DYNAMIC_RANGE_XDR,
|
|
DYNAMIC_RANGE_BUTT
|
|
} DYNAMIC_RANGE_E;
|
|
|
|
|
|
typedef enum hiDATA_BITWIDTH_E
|
|
{
|
|
DATA_BITWIDTH_8 = 0,
|
|
DATA_BITWIDTH_10,
|
|
DATA_BITWIDTH_12,
|
|
DATA_BITWIDTH_14,
|
|
DATA_BITWIDTH_16,
|
|
DATA_BITWIDTH_BUTT
|
|
} DATA_BITWIDTH_E;
|
|
|
|
typedef struct hiVIDEO_FRAME_S
|
|
{
|
|
HI_U32 u32Width;
|
|
HI_U32 u32Height;
|
|
VIDEO_FIELD_E enField;
|
|
PIXEL_FORMAT_E enPixelFormat;
|
|
VIDEO_FORMAT_E enVideoFormat;
|
|
COMPRESS_MODE_E enCompressMode;
|
|
DYNAMIC_RANGE_E enDynamicRange;
|
|
COLOR_GAMUT_E enColorGamut;
|
|
HI_U32 u32HeaderStride[3];
|
|
HI_U32 u32Stride[3];
|
|
HI_U32 u32ExtStride[3];
|
|
|
|
HI_U64 u64HeaderPhyAddr[3];
|
|
HI_U64 u64HeaderVirAddr[3];
|
|
HI_U64 u64PhyAddr[3];
|
|
HI_U64 u64VirAddr[3];
|
|
HI_U64 u64ExtPhyAddr[3];
|
|
HI_U64 u64ExtVirAddr[3];
|
|
|
|
HI_S16 s16OffsetTop; /* top offset of show area */
|
|
HI_S16 s16OffsetBottom; /* bottom offset of show area */
|
|
HI_S16 s16OffsetLeft; /* left offset of show area */
|
|
HI_S16 s16OffsetRight; /* right offset of show area */
|
|
|
|
HI_U32 u32MaxLuminance;
|
|
HI_U32 u32MinLuminance;
|
|
|
|
HI_U32 u32TimeRef;
|
|
HI_U64 u64PTS;
|
|
|
|
HI_U64 u64PrivateData;
|
|
HI_U32 u32FrameFlag; /* FRAME_FLAG_E, can be OR operation. */
|
|
VIDEO_SUPPLEMENT_S stSupplement;
|
|
} VIDEO_FRAME_S;
|
|
|
|
typedef struct hiVIDEO_FRAME_INFO_S
|
|
{
|
|
VIDEO_FRAME_S stVFrame;
|
|
HI_U32 u32PoolId;
|
|
MOD_ID_E enModId;
|
|
} VIDEO_FRAME_INFO_S;
|
|
|
|
|
|
|
|
typedef struct hiVB_CAL_CONFIG_S
|
|
{
|
|
HI_U32 u32VBSize;
|
|
|
|
HI_U32 u32HeadStride;
|
|
HI_U32 u32HeadSize;
|
|
HI_U32 u32HeadYSize;
|
|
|
|
HI_U32 u32MainStride;
|
|
HI_U32 u32MainSize;
|
|
HI_U32 u32MainYSize;
|
|
|
|
HI_U32 u32ExtStride;
|
|
HI_U32 u32ExtYSize;
|
|
}VB_CAL_CONFIG_S;
|
|
|
|
|
|
typedef struct hiBITMAP_S
|
|
{
|
|
PIXEL_FORMAT_E enPixelFormat; /* Bitmap's pixel format */
|
|
HI_U32 u32Width; /* Bitmap's width */
|
|
HI_U32 u32Height; /* Bitmap's height */
|
|
HI_VOID* ATTRIBUTE pData; /* Address of Bitmap's data */
|
|
} BITMAP_S;
|
|
|
|
typedef struct hiLDC_ATTR_S
|
|
{
|
|
HI_BOOL bAspect; /* RW;Range: [0, 1];Whether aspect ration is keep */
|
|
HI_S32 s32XRatio; /* RW; Range: [0, 100]; field angle ration of horizontal,valid when bAspect=0.*/
|
|
HI_S32 s32YRatio; /* RW; Range: [0, 100]; field angle ration of vertical,valid when bAspect=0.*/
|
|
HI_S32 s32XYRatio; /* RW; Range: [0, 100]; field angle ration of all,valid when bAspect=1.*/
|
|
HI_S32 s32CenterXOffset; /* RW; Range: [-511, 511]; horizontal offset of the image distortion center relative to image center.*/
|
|
HI_S32 s32CenterYOffset; /* RW; Range: [-511, 511]; vertical offset of the image distortion center relative to image center.*/
|
|
HI_S32 s32DistortionRatio; /* RW; Range: [-300, 500]; LDC Distortion ratio.When spread on,s32DistortionRatio range should be [0, 500]*/
|
|
} LDC_ATTR_S;
|
|
|
|
|
|
typedef struct hiLDCV2_ATTR_S
|
|
{
|
|
HI_S32 s32FocalLenX; /* RW; focal length in horizontal direction, with 2 decimal numbers */
|
|
HI_S32 s32FocalLenY; /* RW; focal length in vertical direction, with 2 decimal numbers */
|
|
HI_S32 s32CoorShiftX; /* RW; coordinate of image center, with 2 decimal numbers */
|
|
HI_S32 s32CoorShiftY; /* RW; Y coordinate of image center, with 2 decimal numbers */
|
|
HI_S32 as32SrcCaliRatio[SRC_LENS_COEF_SEG][SRC_LENS_COEF_NUM]; /* RW; lens distortion coefficients of the source image, with 5 decimal numbers */
|
|
HI_S32 s32SrcJunPt; /* RW; Junction Point of the two segments */
|
|
HI_S32 as32DstCaliRatio[DST_LENS_COEF_SEG][DST_LENS_COEF_NUM]; /* RW; lens distortion coefficients, with 5 decimal numbers */
|
|
HI_S32 as32DstJunPt[DST_LENS_COEF_SEG_POINT]; /* RW; Junction Point of the three segments */
|
|
HI_S32 s32MaxDu; /* RW; max undistorted distance before 3rd polynomial drop, with 16bits decimal */
|
|
} LDCV2_ATTR_S;
|
|
|
|
typedef enum hiLDC_VIEW_TYPE_E
|
|
{
|
|
LDC_VIEW_TYPE_ALL = 0, /* View scale all but x and y independtly, this will keep both x and y axis ,but corner maybe lost*/
|
|
LDC_VIEW_TYPE_CROP = 1, /* Not use view scale, this will lost some side and corner */
|
|
|
|
LDC_VIEW_TYPE_BUTT,
|
|
} LDC_VIEW_TYPE_E;
|
|
|
|
typedef struct hiLDCV3_ATTR_S
|
|
{
|
|
LDC_VIEW_TYPE_E enViewType; /* RW; Range: [0, 1], 0: all mode, 1: crop mode.*/
|
|
HI_S32 s32CenterXOffset; /* RW; Range: ABS(s32CenterXOffset)->[0, min(128, width*0.08)], horizontal offset of the image distortion center relative to image center.*/
|
|
HI_S32 s32CenterYOffset; /* RW; Range: ABS(s32CenterXOffset)->[0, min(128, height*0.08)], vertical offset of the image distortion center relative to image center.*/
|
|
HI_S32 s32DistortionRatio; /* RW; Range: [-300, 300], LDC Distortion ratio.*/
|
|
HI_S32 s32MinRatio; /* RW; Range: [-300, 300], to remove the black region around when performing pinchusion distortion correction with crop mode.*/
|
|
} LDCV3_ATTR_S;
|
|
|
|
typedef enum hiROTATION_VIEW_TYPE_E
|
|
{
|
|
ROTATION_VIEW_TYPE_ALL = 0, /* View all source Image,no lose*/
|
|
ROTATION_VIEW_TYPE_TYPICAL = 1, /* View from rotation Image with source size,same lose*/
|
|
ROTATION_VIEW_TYPE_INSIDE = 2, /* View with no black section,all in dest Image*/
|
|
ROTATION_VIEW_TYPE_BUTT,
|
|
} ROTATION_VIEW_TYPE_E;
|
|
|
|
typedef struct hiROTATION_EX_S
|
|
{
|
|
ROTATION_VIEW_TYPE_E enViewType; /*RW;Range: [0, 2];Rotation mode*/
|
|
HI_U32 u32Angle; /*RW;Range: [0,360];Rotation Angle:[0,360]*/
|
|
HI_S32 s32CenterXOffset; /*RW;Range: [-511, 511];Horizontal offset of the image distortion center relative to image center.*/
|
|
HI_S32 s32CenterYOffset; /*RW;Range: [-511, 511];Vertical offset of the image distortion center relative to image center.*/
|
|
SIZE_S stDestSize; /*RW;Dest size of any angle rotation*/
|
|
} ROTATION_EX_S;
|
|
|
|
|
|
typedef enum hiWDR_MODE_E
|
|
{
|
|
WDR_MODE_NONE = 0,
|
|
WDR_MODE_BUILT_IN,
|
|
WDR_MODE_QUDRA,
|
|
|
|
WDR_MODE_2To1_LINE,
|
|
WDR_MODE_2To1_FRAME,
|
|
WDR_MODE_2To1_FRAME_FULL_RATE,
|
|
|
|
WDR_MODE_3To1_LINE,
|
|
WDR_MODE_3To1_FRAME,
|
|
WDR_MODE_3To1_FRAME_FULL_RATE,
|
|
|
|
WDR_MODE_4To1_LINE,
|
|
WDR_MODE_4To1_FRAME,
|
|
WDR_MODE_4To1_FRAME_FULL_RATE,
|
|
|
|
WDR_MODE_BUTT,
|
|
} WDR_MODE_E;
|
|
|
|
typedef enum hiFRAME_INTERRUPT_TYPE_E
|
|
{
|
|
FRAME_INTERRUPT_START,
|
|
FRAME_INTERRUPT_EARLY,
|
|
FRAME_INTERRUPT_EARLY_END,
|
|
FRAME_INTERRUPT_EARLY_ONE_BUF,
|
|
FRAME_INTERRUPT_EARLY_END_ONE_BUF,
|
|
FRAME_INTERRUPT_BUTT,
|
|
} FRAME_INTERRUPT_TYPE_E;
|
|
|
|
typedef struct hiFRAME_INTERRUPT_ATTR_S
|
|
{
|
|
FRAME_INTERRUPT_TYPE_E enIntType;
|
|
HI_U32 u32EarlyLine;
|
|
} FRAME_INTERRUPT_ATTR_S;
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
#endif /* __cplusplus */
|
|
|
|
#endif /* _HI_COMM_VIDEO_H_ */
|
|
|