firmware/br-ext-chip-xiongmai/package/xiongmai-osdrv2/files/include/isp/xm_comm_video.h

318 lines
7.6 KiB
C

/******************************************************************************
Copyright (C), 2015-2020, XM. Co., Ltd.
******************************************************************************
File Name : xm_common_video.h
Version : Initial Draft
Author : XM Isp software group
Created : 2015/6/27
Description : The common data type defination
Function List :
History :
1.Date : 2015/6/27
Author : Lycai
Modification : creat
******************************************************************************/
#ifndef __XM_COMM_VIDEO_H__
#define __XM_COMM_VIDEO_H__
#include "xm_type.h"
#include "xm_common.h"
typedef enum xm_PIC_SIZE_E
{
PIC_QCIF = 0,
PIC_CIF,
PIC_2CIF,
PIC_HD1,
PIC_D1,
PIC_960H,
PIC_QVGA, /* 320 * 240 */
PIC_VGA, /* 640 * 480 */
PIC_XGA, /* 1024 * 768 */
PIC_SXGA, /* 1400 * 1050 */
PIC_UXGA, /* 1600 * 1200 */
PIC_QXGA, /* 2048 * 1536 */
PIC_WVGA, /* 854 * 480 */
PIC_WSXGA, /* 1680 * 1050 */
PIC_WUXGA, /* 1920 * 1200 */
PIC_WQXGA, /* 2560 * 1600 */
PIC_HD720, /* 1280 * 720 */
PIC_HD1080, /* 1920 * 1080 */
PIC_BUTT
}PIC_SIZE_E;
typedef enum xm_VIDEO_NORM_E
{
VIDEO_ENCODING_MODE_PAL=0,
VIDEO_ENCODING_MODE_NTSC,
VIDEO_ENCODING_MODE_AUTO,
VIDEO_ENCODING_MODE_BUTT
} VIDEO_NORM_E;
typedef enum xm_VIDEO_CONTROL_MODE_E
{
VIDEO_CONTROL_MODE_SLAVER=0,
VIDEO_CONTROL_MODE_MASTER,
VIDEO_CONTROL_MODE_BUTT
}VIDEO_CONTROL_MODE_E;
/* we ONLY define picture format used, all unused will be deleted!*/
typedef enum xm_PIXEL_FORMAT_E
{
PIXEL_FORMAT_RGB_1BPP = 0,
PIXEL_FORMAT_RGB_2BPP,
PIXEL_FORMAT_RGB_4BPP,
PIXEL_FORMAT_RGB_8BPP,
PIXEL_FORMAT_RGB_444,
PIXEL_FORMAT_RGB_4444,
PIXEL_FORMAT_RGB_555,
PIXEL_FORMAT_RGB_565,
PIXEL_FORMAT_RGB_1555,
/* 9 reserved */
PIXEL_FORMAT_RGB_888,
PIXEL_FORMAT_RGB_8888,
PIXEL_FORMAT_RGB_PLANAR_888,
PIXEL_FORMAT_RGB_BAYER,
PIXEL_FORMAT_YUV_A422,
PIXEL_FORMAT_YUV_A444,
PIXEL_FORMAT_YUV_PLANAR_422,
PIXEL_FORMAT_YUV_PLANAR_420,
PIXEL_FORMAT_YUV_PLANAR_444,
PIXEL_FORMAT_YUV_SEMIPLANAR_422,
PIXEL_FORMAT_YUV_SEMIPLANAR_420,
PIXEL_FORMAT_YUV_SEMIPLANAR_444,
PIXEL_FORMAT_UYVY_PACKAGE_422,
PIXEL_FORMAT_YUYV_PACKAGE_422,
PIXEL_FORMAT_VYUY_PACKAGE_422,
PIXEL_FORMAT_YCbCr_PLANAR,
PIXEL_FORMAT_RGB_422,
PIXEL_FORMAT_RGB_420,
PIXEL_FORMAT_BUTT
} PIXEL_FORMAT_E;
typedef struct xm_VIDEO_VBI_INFO_S
{
XM_U32 au32Data[VIU_MAX_VBI_LEN];
XM_U32 u32Len;
}VIDEO_VBI_INFO_S;
typedef enum xm_VIDEO_FIELD_E
{
VIDEO_FIELD_TOP = 0x01, /* even field */
VIDEO_FIELD_BOTTOM = 0x02, /* odd field */
VIDEO_FIELD_INTERLACED = 0x03, /* two interlaced fields */
VIDEO_FIELD_FRAME = 0x04, /* frame */
VIDEO_FIELD_BUTT
} VIDEO_FIELD_E;
typedef struct xm_VIDEO_FRAME_S
{
XM_U32 u32Width;
XM_U32 u32Height;
VIDEO_FIELD_E u32Field;
PIXEL_FORMAT_E enPixelFormat;
XM_U32 u32PhyAddr[3];
XM_VOID *pVirAddr[3];
XM_U32 u32Stride[3];
/*********************************************************
u32Stride:
--- u32Stride[0]: YSize
--- u32Stride[2]: ErrSize(bit0~bit15: SizeH bit16~bit31:SizeV)
*********************************************************/
XM_U16 u16OffsetTop; /* top offset of show area */
XM_U16 u16OffsetBottom; /* bottom offset of show area */
XM_U16 u16OffsetLeft; /* left offset of show area */
XM_U16 u16OffsetRight; /* right offset of show area */
XM_U64 u64pts;
XM_U32 u32TimeRef;
XM_U32 u32PrivateData;
//VIDEO_VBI_INFO_S astVbiInfo[VIU_MAX_VBI_NUM];
}VIDEO_FRAME_S;
typedef struct xm_VIDEO_FRAME_INFO_S
{
VIDEO_FRAME_S stVFrame;
XM_U32 u32PoolId;
} VIDEO_FRAME_INFO_S;
typedef struct xmBITMAP_S
{
XM_U32 u32Handle;
XM_U32 u32Width;
XM_U32 u32Height;
XM_U32 u32Format;
XM_VOID *pData;
} BITMAP_S;
typedef struct XM_VPP_CFG_S
{
XM_BOOL bVppEn;
XM_BOOL bIeEn;
XM_BOOL bDnEn;
XM_BOOL bSpEn;
XM_BOOL bIencEn;
XM_S32 s32IeSth; /* IE Strength [0,10] */
XM_S32 s32SpSth; /* SP Strength [-4,5] */
XM_S32 s32DnSfCosSth; /* coarse DN sf Strength [0,3] */
XM_S32 s32DnSfIncSth; /* Inching of DN sf Strength [0,255] */
XM_S32 s32DnTfSth; /* DN tf Strength [0,4] */
} VPP_CFG_S;
typedef struct xm_SCALE_CFG_S
{
XM_BOOL bScaleEn;
XM_S32 s32DstWidth; /* the dest width after scale */
XM_S32 s32DstHeight; /* the dest height after scale */
} SCALE_CFG_S;
/* Ie */
typedef struct XM_VPP_IE_EX_S
{
XM_U32 u32RefRange;//
XM_U32 u32IeStrength;//
XM_U32 u32Black;
XM_U32 u32White;
} VPP_IE_EX_S;
/*dn*/
typedef struct
{
XM_U16 saMask[2];
XM_U16 weight[2];
} tVppCalcWnd;
typedef struct
{
XM_U8 wWndX, hWndX;
XM_U8 wWndY, hWndY;
XM_U8 wWndC, hWndC;
XM_U8 wWndD, hWndD; //
XM_U16 sfyMask[2];
XM_U8 sfyRange[2]; //
XM_U8 sfyStrength; //
XM_U8 sfyLimitedFlag; //
XM_U8 MADpExDirectSub : 1;
XM_U8 MADpExMask : 4;
XM_U8 _reserved_ : 3;
XM_U8 sfcStrength;
XM_U8 sfyMADpThresh, sfyMADpRate;/**/
XM_U16 sfyMSEiThresh[8];
XM_U8 rsfyThresh, rsfyRate, rsfyStrength, tfyStrength;
XM_U8 rsfcThresh, rsfcRate, rsfcStrength, tfcStrength;/**/
XM_U8 tfyMADpThresh, tfyMADpRate;
XM_U8 tfySNRpThresh, tfySNRpRate;
XM_U16 tfyMSEiThresh[8];
XM_U16 tfyMSEpThresh[8];
XM_U8 tfyMaxStrength;//
XM_U8 tfcMaxStrength;/**/
XM_U8 tfcMADpThresh, tfcMADpRate;
XM_U16 tfcMSEiThresh[8];
XM_U16 diyMSEiThresh[8];
XM_U8 tfyLimit;
XM_U8 noiseMADpThresh;
XM_U16 noiseMSDpThresh;
XM_U8 log2hStepMADp, log2hStepMSEi;
XM_U8 histMinMADp, histMaxMADp;
XM_U16 histMinMSEi, histMaxMSEi;
/*---------------------------------------------*/
tVppCalcWnd yWnd[2];
tVppCalcWnd cWnd[2];
} tVppDnCfg;
typedef tVppDnCfg VPP_DN_EX_S;
/* Sp */
typedef struct
{
XM_U8 strength;//
XM_U8 limit;//
XM_U8 black;
XM_U8 white;
} tVppSharpenCfg;
typedef tVppSharpenCfg VPP_SP_EX_S;
typedef struct xm_VPP_CFG_EX_S
{
VPP_IE_EX_S stIE_Ex;
VPP_DN_EX_S stDN_Ex;
VPP_SP_EX_S stSP_Ex;
} VPP_CFG_EX_S;
/* VI Mix-Capture info. */
typedef struct xm_VI_MIXCAP_STAT_S
{
XM_BOOL bMixCapMode; /* In mix-capture mode or not. */
XM_BOOL bHasDownScale; /* VI Frame is downscaled or not. */
} VI_MIXCAP_STAT_S;
/* VI output frame info. */
typedef struct xm_VI_FRAME_INFO_S
{
VI_MIXCAP_STAT_S stMixCapState; /* VI Mix-Capture info. */
VIDEO_FRAME_INFO_S stViFrmInfo; /* Video frame info. */
XM_BOOL bFlashed; /* Flashed Video frame or not. */
}VI_FRAME_INFO_S;
typedef enum xm_LDC_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, /* Not use view scale, this will lost some side and corner */
LDC_VIEW_TYPE_BUTT,
} LDC_VIEW_TYPE_E;
typedef struct xm_LDC_ATTR_S
{
LDC_VIEW_TYPE_E enViewType;
XM_S32 s32CenterXOffset; /* Horizontal offset of the image distortion center relative to image center. [-28,28]. */
XM_S32 s32CenterYOffset; /* Vertical offset of the image distortion center relative to image center. [-14,14]. */
XM_S32 s32Ratio; /* Distortion ratio. [0, 511]. */
} LDC_ATTR_S;
#endif /* _XM_COMM_VIDEO_H_ */