| /******************************************************************************* |
| * Copyright (C) Marvell International Ltd. and its affiliates |
| * |
| * Marvell GPL License Option |
| * |
| * If you received this File from Marvell, you may opt to use, redistribute and/or |
| * modify this File in accordance with the terms and conditions of the General |
| * Public License Version 2, June 1991 (the "GPL License"), a copy of which is |
| * available along with the File in the license.txt file or by writing to the Free |
| * Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or |
| * on the worldwide web at http://www.gnu.org/licenses/gpl.txt. |
| * |
| * THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY |
| * DISCLAIMED. The GPL License provides additional details about this warranty |
| * disclaimer. |
| ********************************************************************************/ |
| |
| |
| |
| #ifndef _THINVPP_API_H_ |
| #define _THINVPP_API_H_ |
| |
| #include "thinvpp_api_types.h" |
| |
| // error code definitions |
| #define MV_THINVPP_OK 1 |
| #define MV_THINVPP_ENODEV -1 |
| #define MV_THINVPP_EBADPARAM -2 |
| #define MV_THINVPP_EBADCALL -3 |
| #define MV_THINVPP_EUNSUPPORT -4 |
| #define MV_THINVPP_EIOFAIL -5 |
| #define MV_THINVPP_EUNCONFIG -6 |
| #define MV_THINVPP_ECMDQFULL -7 |
| #define MV_THINVPP_EFRAMEQFULL -8 |
| #define MV_THINVPP_EBCMBUFFULL -9 |
| #define MV_THINVPP_ENOMEM -10 |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* definition of display mode */ |
| typedef enum { |
| DISP_NON_DEFINED = -1, /* non-defined */ |
| DISP_STILL_PIC = 0, /* display still picture mode */ |
| DISP_FRAME = 1, /* display frame mode */ |
| DISP_PATGEN = 2, /* display pattern generated by patgen, only valid for main */ |
| }ENUM_DISP_MODE; |
| |
| /* definition of de-interlacer working mode */ |
| typedef enum { |
| DEINT_2D = 0, /* 2D mode, only valid for interlaced input */ |
| DEINT_3D = 1, /* 3D mode, only valid for interlaced input */ |
| }ENUM_DEINT_MODE; |
| |
| /* definition of VNR working mode */ |
| typedef enum { |
| VNR_NO = 0, /* disable VNR */ |
| VNR_2D = 1, /* 2D mode */ |
| VNR_3D = 2, /* 3D mode */ |
| }ENUM_VNR_MODE; |
| |
| /* definition of VNR parameter profile */ |
| typedef enum { |
| VNR_PARAM_INVALID = -1, |
| VNR_SD_LOW = 0, /* VNR SD low profiel parameters */ |
| VNR_SD_MED = 1, /* VNR SD medium profile parameters */ |
| VNR_SD_HIGH = 2, /* VNR SD high profile parameters */ |
| VNR_SD_QDEO = 3, /* VNR SD Qdeo parameters */ |
| VNR_SD_INTERNET_HIGH = 4, /* VNR SD high bit rate internet video content parameters */ |
| VNR_SD_INTERNET_LOW = 5, /* VNR SD low bit rate internet video content parameters */ |
| VNR_SD_INTERNET_VERY_LOW = 6, /* VNR SD very low bit rate internet video content parameters */ |
| VNR_HD_LOW = 7, /* VNR HD low profiel parameters */ |
| VNR_HD_MED = 8, /* VNR HD medium profile parameters */ |
| VNR_HD_HIGH = 9, /* VNR HD high profile parameters */ |
| VNR_HD_QDEO = 10, /* VNR HD Qdeo parameters */ |
| VNR_HD_INTERNET_HIGH = 11, /* VNR HD high bit rate internet video content parameters */ |
| VNR_HD_INTERNET_LOW = 12, /* VNR HD low bit rate internet video content parameters */ |
| VNR_HD_INTERNET_VERY_LOW = 13, /* VNR HD very low bit rate internet video content parameters */ |
| MAX_NUM_VNR_PARAMS |
| }ENUM_VNR_PARAMS; |
| |
| /* defination of CAR parameter cmd */ |
| typedef enum { |
| CAR_CMD_INVALID = -1, |
| VPP_CMD_CAR_SET_MODE =0, |
| VPP_CMD_CAR_SET_MNR_PARAM , |
| VPP_CMD_CAR_SET_BNR_PARAM, |
| VPP_CMD_CAR_SET_CROP_AND_REGION_PARAM, |
| VPP_CMD_CAR_SET_UBD_PARAM, |
| VPP_CMD_CAR_SET_FGG_GAIN, |
| VPP_CMD_CAR_SET_CHROMA_FILTERING_MODE, |
| VPP_CMD_CAR_SET_FGG_PARAMS, |
| VPP_CMD_CAR_SET_BNR_SOFT_FILTER_FLATNESS_LOWER_THRESHOLD, |
| VPP_CMD_CAR_SET_MNR_MAJOR_EXP_THRESHOLD, |
| MAX_NUM_CAR_CMD |
| |
| }VPP_CMD_EXT_CAR; |
| /* defination of NR parameter cmd */ |
| typedef enum { |
| NR_CMD_INVALID = -1, |
| VPP_CMD_NR_SET_CTRL =0, |
| VPP_CMD_NR_SET_PARAM , |
| MAX_NUM_NR_CMD |
| |
| }VPP_CMD_EXT_NR; |
| |
| /* defination of DEINT parameter cmd */ |
| typedef enum { |
| DEINT_CMD_INVALID = -1, |
| VPP_CMD_DEINT_SET_USERCAD=0, |
| VPP_CMD_DEINT_SET_EXCLCTRL, |
| VPP_CMD_DEINT_SET_LPFCTRL, |
| VPP_CMD_DEINT_SET_FILM_CADCTRL, |
| VPP_CMD_DEINT_SET_PRESET_MODE, |
| VPP_CMD_DEINT_SET_FORCED_2D, |
| VPP_CMD_DEINT_SET_HARD_SOFT_FILM_MODE, |
| MAX_NUM_DEINT_CMD |
| |
| }VPP_CMD_EXT_DEINT; |
| |
| /* defination of SHIFT3D parameter cmd */ |
| typedef enum { |
| SHIFT3D_CMD_INVALID = -1, |
| VPP_CMD_SHIFT3D_SET_CTRL=0, |
| VPP_CMD_SHIFT3D_SET_PARAM, |
| MAX_NUM_SHIFT3D_CMD |
| |
| }VPP_CMD_EXT_SHIFT3D; |
| |
| /* defination of NEST parameter cmd */ |
| typedef enum { |
| NEST_CMD_INVALID = -1, |
| VPP_CMD_NEST_SET_CROP=0, |
| VPP_CMD_NEST_SET_MAP_CTRL, |
| VPP_CMD_NEST_SET_FD_CTRL, |
| VPP_CMD_NEST_SET_THRESHOLDS, |
| VPP_CMD_NEST_SET_FD_THRESHOLDS, |
| MAX_NUM_NEST_CMD |
| |
| }VPP_CMD_EXT_NEST; |
| |
| /* defination of EE parameter cmd */ |
| typedef enum { |
| EE_CMD_INVALID = -1, |
| VPP_CMD_EE_SET_DET_CTRL=0, |
| VPP_CMD_EE_SET_DET_CTRL_PARAM, |
| VPP_CMD_EE_SET_CTRL, |
| MAX_NUM_EE_CMD |
| |
| }VPP_CMD_EXT_EE; |
| |
| typedef enum { |
| SCL_CMD_INVALID = -1, |
| VPP_CMD_SCL_SET_CTRL=0, |
| VPP_CMD_SCL_SET_NLPARAM, |
| VPP_CMD_SCL_LOAD_CUST_COEFFS, |
| VPP_CMD_SCL_RELOAD_DEF_COEFFS, |
| MAX_NUM_SCL_CMD |
| |
| }VPP_CMD_EXT_SCL; |
| |
| typedef enum { |
| ACE_CMD_INVALID = -1, |
| VPP_CMD_ACE_SET_ENABLE=0, |
| VPP_CMD_ACE_SET_MODE, |
| VPP_CMD_ACE_SET_PARAM, |
| VPP_CMD_ACE_SET_CLR_LEVEL, |
| VPP_CMD_ACE_SET_WFACTOR_1, |
| VPP_CMD_ACE_SET_WFACTOR_2, |
| VPP_CMD_ACE_SET_WFACTOR_3, |
| VPP_CMD_ACE_SET_THRSLD_0, |
| VPP_CMD_ACE_SET_THRSLD_1, |
| VPP_CMD_ACE_SET_THRSLD_2, |
| VPP_CMD_ACE_SET_THRSLD_3, |
| VPP_CMD_ACE_SET_THRSLD_4, |
| VPP_CMD_ACE_SET_THRSLD_5, |
| VPP_CMD_ACE_SET_OUTPUT_0, |
| VPP_CMD_ACE_SET_OUTPUT_5, |
| VPP_CMD_ACE_SET_GUARDBAND_2, |
| VPP_CMD_ACE_SET_GUARDBAND_3, |
| VPP_CMD_ACE_SET_MAX_SLOPE_1, |
| VPP_CMD_ACE_SET_MAX_SLOPE_2, |
| VPP_CMD_ACE_SET_MAX_SLOPE_3, |
| MAX_NUM_ACE_CMD |
| |
| }VPP_CMD_EXT_ACE; |
| |
| /* definition of video component data format in frame buffer */ |
| typedef enum { |
| SRCFMT_YUV422 = 0, /* only valid for video plane */ |
| SRCFMT_ARGB32 = 0, /* only valid for gfx/PG planes */ |
| SRCFMT_ARGB24 = 1, /* only valid for gfx planes */ |
| SRCFMT_ARGB4444 = 2, /* only valid for gfx planes */ |
| SRCFMT_RGB565 = 3, /* only valid for gfx planes */ |
| SRCFMT_ARGB1555 = 4, /* only valid for gfx planes */ |
| SRCFMT_LUT8 = 5, /* only valid for gfx planes */ |
| SRCFMT_AYUV32 = 6, /* only valid for PG planes */ |
| }ENUM_SRC_FMT; |
| |
| /* definition of video component data order in frame buffer */ |
| typedef enum { |
| ORDER_ARGB = 0, /* only valid for gfx planes */ |
| ORDER_ABGR = 1, /* only valid for gfx planes */ |
| ORDER_RGBA = 2, /* only valid for gfx planes */ |
| ORDER_BGRA = 3, /* only valid for gfx planes */ |
| ORDER_AVYU = 0, /* only valid for PG plane */ |
| ORDER_AUYV = 1, /* only valid for PG plane */ |
| ORDER_VYUA = 2, /* only valid for PG plane */ |
| ORDER_UYVA = 3, /* only valid for PG plane */ |
| ORDER_UYVY = 0, /* only valid for video planes */ |
| ORDER_VYUY = 1, /* only valid for video planes */ |
| ORDER_YUYV = 2, /* only valid for video planes */ |
| ORDER_YVYU = 3, /* only valid for video planes */ |
| }ENUM_SRC_ORDER; |
| |
| /* definition of CPCB output video format */ |
| typedef enum { |
| OUTPUT_PROGRESSIVE = 0, |
| OUTPUT_INTERLACED = 1, |
| OUTPUT_AUTO_SELECT = 2, |
| }ENUM_OUTPUT_MODE; |
| |
| /* definition of all the output color supported by VPP*/ |
| typedef enum { |
| OUTPUT_COLOR_FMT_INVALID = -1, |
| FIRST_OUTPUT_COLOR_FMT = 0, |
| OUTPUT_COLOR_FMT_RGB888 = 0, |
| OUTPUT_COLOR_FMT_YCBCR444 = 1, |
| OUTPUT_COLOR_FMT_YCBCR422 = 2, |
| MAX_NUM_OUTPUT_COLOR_FMTS |
| } ENUM_OUTPUT_COLOR_FMT; |
| |
| /* definition of all the bit depths (output) supported by VPP*/ |
| typedef enum { |
| OUTPUT_BIT_DEPTH_INVALID = -1, |
| FIRST_OUTPUT_BIT_DEPTH = 0, |
| OUTPUT_BIT_DEPTH_12BIT = 0, |
| OUTPUT_BIT_DEPTH_10BIT = 1, |
| OUTPUT_BIT_DEPTH_8BIT = 2, |
| MAX_NUM_OUTPUT_BIT_DEPTHS |
| } ENUM_OUTPUT_BIT_DEPTH; |
| |
| /* definition of aspect ratio */ |
| typedef enum { |
| ASPECT_RATIO_INVALID = -1, |
| FIRST_ASPECT_RATIO = 0, |
| ASPECT_RATIO_NONE = 0, |
| ASPECT_RATIO_4BY3 = 1, |
| ASPECT_RATIO_16BY9 = 2, |
| MAX_ASPECT_RATIO |
| } ENUM_ASPECT_RATIO; |
| |
| /* definition of scan information */ |
| typedef enum { |
| SCAN_DATA_INVALID = -1, |
| FIRST_SCAN_DATA = 0, |
| SCAN_DATA_NONE = 0, |
| OVER_SCAN_DATA = 1, |
| UNDER_SCAN_DATA = 2, |
| MAX_SCAN_DATA |
| } ENUM_SCAN_DATA; |
| |
| /* definition of VPP TG timing formats */ |
| typedef enum { |
| RES_INVALID = -1, |
| FIRST_RES = 0, |
| RES_NTSC_M = 0, |
| RES_NTSC_J = 1, |
| RES_PAL_M = 2, |
| RES_PAL_BGH = 3, |
| RES_525I60 = 4, |
| RES_525I5994 = 5, |
| RES_625I50 = 6, |
| RES_525P60 = 7, |
| RES_525P5994 = 8, |
| RES_625P50 = 9, |
| RES_720P30 = 10, |
| RES_720P2997 = 11, |
| RES_720P25 = 12, |
| RES_720P60 = 13, |
| RES_720P5994 = 14, |
| RES_720P50 = 15, |
| RES_1080I60 = 16, |
| RES_1080I5994 = 17, |
| RES_1080I50 = 18, |
| RES_1080P30 = 19, |
| RES_1080P2997 = 20, |
| RES_1080P25 = 21, |
| RES_1080P24 = 22, |
| RES_1080P2398 = 23, |
| RES_1080P60 = 24, |
| RES_1080P5994 = 25, |
| RES_1080P50 = 26, |
| RES_VGA_480P60 = 27, |
| RES_VGA_480P5994 = 28, |
| FIRST_RES_3D = 29, |
| RES_720P50_3D = 29, |
| RES_720P60_3D = 30, |
| RES_720P5994_3D = 31, |
| RES_1080P24_3D = 32, |
| RES_1080P2398_3D = 33, |
| RES_1080P30_3D = 34, |
| RES_1080P2997_3D = 35, |
| RES_1080P25_3D = 36, |
| MAX_NUM_RES_3D = 36, |
| RES_LVDS_1920X540P60_3D = 37, |
| RES_LVDS_1920X540P30_3D = 38, |
| RES_LVDS_1920X540P24_3D = 39, |
| RES_RESET, |
| MAX_NUM_RESS |
| }ENUM_CPCB_TG_RES; |
| |
| /* definition of VPP status */ |
| typedef enum { |
| STATUS_INACTIVE = 0, /* for plane and channel */ |
| STATUS_INACTIVE_PENDING = 1, /* for plane and channel */ |
| STATUS_ACTIVE = 2, /* for plane and channel */ |
| STATUS_ACTIVE_PENDING = 3, /* for plane and channel */ |
| STATUS_DISP = 4, /* for channel only */ |
| STATUS_DISP_LOGO = 5, /* for plane only */ |
| STATUS_DISP_VIDEO = 6, /* for plane only */ |
| STATUS_DISP_PATGEN = 7, /* for main plane */ |
| STATUS_STOP = 8, /* STOP */ |
| }ENUM_PLANE_STATUS; |
| |
| /* definition of VPP input planes */ |
| typedef enum { |
| PLANE_INVALID = -1, |
| FIRST_PLANE = 0, |
| PLANE_MAIN = 0, |
| PLANE_PIP = 1, |
| PLANE_GFX0 = 2, |
| PLANE_GFX1 = 3, |
| PLANE_GFX2 = 4, |
| PLANE_PG = 5, |
| PLANE_BG = 6, |
| PLANE_AUX = 7, |
| MAX_NUM_PLANES |
| }ENUM_PLANE_ID; |
| |
| /* definition of VPP channels, namely pipelines */ |
| typedef enum { |
| CHAN_INVALID = -1, |
| FIRST_CHAN = 0, |
| CHAN_MAIN = 0, |
| CHAN_PIP = 1, |
| CHAN_GFX0 = 2, |
| CHAN_GFX1 = 3, |
| CHAN_GFX2 = 4, |
| CHAN_PG = 5, |
| CHAN_BG = 6, |
| CHAN_AUX = 7, |
| MAX_NUM_CHANS |
| }ENUM_CHAN_ID; |
| |
| /* definition of VPP CPCB plane(for Berlin) */ |
| typedef enum { |
| CPCB_PLANE_INVALID = -1, |
| FIRST_CPCB_PLANE = 0, |
| CPCB1_PLANE_1 = 0, // CPCB 1st plane |
| CPCB1_PLANE_2 = 1, // CPCB 2nd plane |
| CPCB1_PLANE_3 = 2, // CPCB 3rd plane |
| CPCB1_PLANE_4 = 3, // CPCB 4th plane |
| CPCB1_PLANE_5 = 4, // CPCB 5th plane |
| CPCB1_PLANE_6 = 5, // CPCB 6th plane |
| CPCB1_PLANE_7 = 6, // CPCB 7th plane |
| MAX_NUM_CPCB_PLANES |
| }ENUM_CPCB_PLANE; |
| |
| /* definition of VPP CPCB plane z-order(for Berlin) */ |
| typedef enum { |
| CPCB_ZORDER_INVALID = -1, |
| FIRST_CPCB_ZORDER = 0, |
| CPCB_ZORDER_1 = 0, // CPCB z-order 1 (bottom) |
| CPCB_ZORDER_2 = 1, // CPCB z-order 2 |
| CPCB_ZORDER_3 = 2, // CPCB z-order 3 |
| CPCB_ZORDER_4 = 3, // CPCB z-order 4 |
| CPCB_ZORDER_5 = 4, // CPCB z-order 5 |
| CPCB_ZORDER_6 = 5, // CPCB z-order 6 |
| CPCB_ZORDER_7 = 6, // CPCB z-order 7 (top) |
| MAX_NUM_CPCB_ZORDERS |
| }ENUM_CPCB_ZORDER; |
| |
| /* definition of VPP digital video outputs(for Galois) */ |
| typedef enum { |
| DV_INVALID = -1, |
| FIRST_DV = 0, |
| DV_1 = 0, // DV-1 port for Galois |
| DV_2 = 1, // DV-2 port for Galois |
| MAX_NUM_DVS |
| }ENUM_DV_ID; |
| |
| /* definition of VPP CPCB video outputs(for Berlin) */ |
| typedef enum { |
| CPCB_INVALID = -1, |
| FIRST_CPCB = 0, |
| CPCB_1 = 0, // CPCB-0 for Berlin |
| CPCB_2 = 1, // CPCB-1 for Berlin |
| CPCB_3 = 2, // CPCB-2 for Berlin |
| MAX_NUM_CPCBS |
| }ENUM_CPCB_ID; |
| |
| /* definition of VPP video outputs */ |
| typedef enum { |
| VOUT_INVALID = -1, |
| FIRST_VOUT = 0, |
| VOUT_HDMI = 0, |
| VOUT_HD = 1, |
| VOUT_SD = 2, |
| VOUT_TTL24 = 3, |
| VOUT_TTL30 = 4, |
| VOUT_LVDS = 5, |
| MAX_NUM_VOUTS |
| }ENUM_VOUT_ID; |
| |
| /* definition of VDAC and DVIO */ |
| typedef enum { |
| PORT_INVALID = -1, |
| FIRST_PORT = 0, |
| PORT_COMPONENT = 0, |
| PORT_CVBS = 1, |
| PORT_SVIDEO = 2, |
| PORT_DVIO = 3, |
| PORT_HDMI = 4, |
| MAX_NUM_PORTS |
| }ENUM_VDAC_ID; |
| |
| /* definition of GFX0/PG plane input mode */ |
| typedef enum { |
| GFX_INPUT_MODE_INVALID = -1, |
| GFX_INPUT_MODE_NORMAL = 0, |
| GFX_INPUT_MODE_MATTE = 1, /* pre-multiplied ARGB/AYUV */ |
| }ENUM_GFX_INPUT_MODE; |
| |
| /* definition of alpha polarity */ |
| typedef enum { |
| ALPHA_POL_NORMAL = 0, |
| ALPHA_POL_INVERSE = 1, |
| }ENUM_ALPHA_POL; |
| |
| /* definition of all the horizontal and vertical scaling coefficient modes */ |
| typedef enum { |
| SCALAR_COEFF_INVALID = -1, |
| FIRST_SCALAR_COEFF = 0, |
| SCALAR_COEFF_HORZ_EXP_SOFT = 0, |
| SCALAR_COEFF_HORZ_EXP_MILD = 1, |
| SCALAR_COEFF_HORZ_EXP_MEDIUM = 2, |
| SCALAR_COEFF_HORZ_EXP_HIGH = 3, |
| SCALAR_COEFF_HORZ_EXP_SHARP = 4, |
| SCALAR_COEFF_HORZ_EXP_GRAPHICS = 5, |
| SCALAR_COEFF_HORZ_EXP_BYPASS = 6, |
| SCALAR_COEFF_HORZ_RED_1_1 = 7, |
| SCALAR_COEFF_HORZ_RED_1_25 = 8, |
| SCALAR_COEFF_HORZ_RED_1_5 = 9, |
| SCALAR_COEFF_HORZ_RED_1_8 = 10, |
| SCALAR_COEFF_HORZ_RED_2 = 11, |
| SCALAR_COEFF_HORZ_RED_2_3 = 12, |
| SCALAR_COEFF_HORZ_RED_2_7 = 13, |
| SCALAR_COEFF_HORZ_RED_3 = 14, |
| SCALAR_COEFF_HORZ_RED_4 = 15, |
| SCALAR_COEFF_HORZ_RED_5 = 16, |
| SCALAR_COEFF_HORZ_RED_8 = 17, |
| SCALAR_COEFF_VERT_EXP_SOFT = 18, |
| SCALAR_COEFF_VERT_EXP_MILD = 19, |
| SCALAR_COEFF_VERT_EXP_MEDIUM = 20, |
| SCALAR_COEFF_VERT_EXP_HIGH = 21, |
| SCALAR_COEFF_VERT_EXP_SHARP = 22, |
| SCALAR_COEFF_VERT_EXP_GRAPHICS = 23, |
| SCALAR_COEFF_VERT_EXP_GRAPHICS_3TAP = 24, |
| SCALAR_COEFF_VERT_EXP_BYPASS = 25, |
| SCALAR_COEFF_VERT_EXP_GRAPHICS_BYPASS = 26, |
| SCALAR_COEFF_VERT_RED_1_1 = 27, |
| SCALAR_COEFF_VERT_RED_1_25 = 28, |
| SCALAR_COEFF_VERT_RED_GRAPHICS_1_25 = 29, |
| SCALAR_COEFF_VERT_RED_1_5 = 30, |
| SCALAR_COEFF_VERT_RED_1_5_5TAP = 31, |
| SCALAR_COEFF_VERT_RED_1_5_3TAP = 32, |
| SCALAR_COEFF_VERT_RED_1_875 = 33, |
| SCALAR_COEFF_VERT_RED_2 = 34, |
| SCALAR_COEFF_VERT_RED_GRAPHICS_2 = 35, |
| SCALAR_COEFF_VERT_RED_2_25 = 36, |
| SCALAR_COEFF_VERT_RED_2_5 = 37, |
| SCALAR_COEFF_VERT_RED_3 = 38, |
| SCALAR_COEFF_VERT_RED_3_75 = 39, |
| SCALAR_COEFF_VERT_RED_4 = 40, |
| SCALAR_COEFF_VERT_RED_4_5 = 41, |
| SCALAR_COEFF_VERT_RED_5 = 42, |
| SCALAR_COEFF_VERT_RED_6_75 = 43, |
| SCALAR_COEFF_VERT_RED_8 = 44, |
| MAX_NUM_PREDEFINED_COEFFS = 45, |
| SCALAR_COEFF_AUTO = 45, |
| MAX_NUM_SCALAR_COEFF_MODES |
| } ENUM_SCALAR_COEFF_MODE; |
| |
| /* definition of all the sensio horizontal scaling coefficient modes */ |
| typedef enum { |
| SENSIO_SCALAR_COEFF_INVALID = -1, |
| SENSIO_SCALAR_COEFF_HORZ_RED_1_5 = 0, |
| SENSIO_SCALAR_COEFF_HORZ_RED_2 = 1, |
| MAX_NUM_PREDEFINED_SENSIO_COEFFS = 2, |
| } ENUM_SENSIO_SCALAR_COEFF_MODE; |
| |
| /* definition of EE parameter profile */ |
| typedef enum { |
| EE_PARAM_INVALID = -1, |
| EE_TH_LOW = 0, /* EE low threshold profile parameters */ |
| EE_TH_MEDIUM = 1, /* EE medium threshold profile parameters */ |
| EE_TH_HIGH = 2, /* EE low high profile parameters */ |
| EE_INTERNET_LOW_BR_SD = 3, /* EE parameter profile for internet low quality SD content */ |
| EE_INTERNET_HIGH_BR_SD = 4, /* EE parameter profile for internet high quality SD content */ |
| EE_INTERNET_HD = 5, /* EE parameter profile for internet HD content */ |
| MAX_NUM_EE_PARAMS |
| }ENUM_EE_PARAMS; |
| |
| /*definition of picture control*/ |
| typedef enum{ |
| FIRST_PICTURE_CTRL = 0, |
| PICTURE_CTRL_BRIGHTNESS = 0, |
| PICTURE_CTRL_CONTRAST, |
| PICTURE_CTRL_HUE, |
| PICTURE_CTRL_SATURATION, |
| PICTURE_CTRL_COLORTEMPERATURE, |
| MAX_PICTURE_CTRL |
| }ENUM_PICTURE_CTRL; |
| |
| /*definition of ACE mode*/ |
| typedef enum { |
| FIRST_ACE = 0, |
| ACE_OFF = 0, |
| ACE_MANUAL, |
| ACE_LOW, |
| ACE_MEDIUM, |
| ACE_HIGH, |
| MAX_ACE |
| }ENUM_ACE_MODE; |
| |
| /*definition of BR level*/ |
| typedef enum { |
| FIRST_BR = 0, |
| BR_LEVEL0 = 0, |
| BR_LEVEL1, |
| BR_LEVEL2, |
| BR_LEVEL3, |
| BR_LEVEL4, |
| BR_LEVEL5, |
| BR_LEVEL6, |
| BR_LEVEL7, |
| BR_LEVEL8, |
| BR_LEVEL9, |
| BR_LEVEL10, |
| BR_LEVEL11, |
| BR_LEVEL12, |
| BR_LEVEL13, |
| BR_LEVEL14, |
| MAX_BR |
| }ENUM_BR_LEVEL; |
| |
| typedef enum{ |
| FIRST_COLOR = 0, |
| COLOR_RED = 0, |
| COLOR_GREEN, |
| COLOR_BLUE, |
| COLOR_CYAN, |
| COLOR_YELLOW, |
| COLOR_MAGENTA, |
| COLOR_ALL, |
| MAX_COLOR |
| }ENUM_COLOR_MODE; |
| |
| /*definition of ICR mode*/ |
| typedef enum{ |
| FIRST_ICR_MODE = 0, |
| ICR_MODE_OFF = 0, |
| ICR_MODE_SKY, |
| ICR_MODE_GRASS, |
| ICR_MODE_SKYGRASS, |
| ICR_MODE_VIVID, |
| MAX_ICR_MODE |
| }ENUM_ICR_MODE; |
| |
| /*definition of FTDC mode*/ |
| typedef enum { |
| FIRST_FTDC = 0, |
| FTDC_MODE1 = 0, |
| FTDC_MODE2, |
| FTDC_MODE3, |
| FTDC_MODE4, |
| FTDC_OFF, |
| MAX_FTDC |
| }ENUM_FTDC_MODE; |
| |
| /*definition of Gamma mode*/ |
| typedef enum { |
| FIRST_GM_MODE = 0, |
| GM_1_8 = 0, |
| GM_2_5, |
| GM_SCURVE_LIGHT, |
| GM_SCURVE_DARK, |
| GM_OFF, |
| MAX_GM_MODE |
| }ENUM_GAMMA_MODE; |
| |
| /*pattern generation mode*/ |
| typedef enum { |
| PATGEN_SOLID = 0, |
| PATGEN_INCREMENT = 1, |
| PATGEN_INVERSE = 2, |
| PATGEN_RANDOM = 3, |
| } ENUM_PATGEN_MODE; |
| |
| /*pattern generation type*/ |
| typedef enum { |
| PATGEN_PROG = 0, |
| PATGEN_INT = 1, |
| } ENUM_PATGEN_TYPE; |
| |
| /*pattern generation cadence*/ |
| typedef enum { |
| PATGEN_NORMAL = 0, |
| PATGEN_3_2_CAD = 1, |
| PATGEN_2_2_CAD = 2, |
| } ENUM_PATGEN_CADENCE; |
| |
| /*Macrovision control*/ |
| typedef enum { |
| VPP_MV_INVALID = -1, |
| VPP_MV_OFF = 0, |
| VPP_MV_AGC, |
| VPP_MV_AGC_2LINE, |
| VPP_MV_AGC_4LINE, |
| VPP_MAX_MV_MODE |
| } ENUM_VPP_MV_MODE; |
| |
| /*WSS aspect ratio mode*/ |
| typedef enum { |
| FIRST_WSS_AR_MODE = 0, |
| WSS_AR_4_3_FULL_FORMAT = 0, |
| WSS_AR_14_9_LETTERBOX_CENTER, |
| WSS_AR_14_9_LETTERBOX_TOP, |
| WSS_AR_16_9_LETTERBOX_CENTER, |
| WSS_AR_16_9_LETTERBOX_TOP, |
| WSS_AR_16_9_ABOVE_LETTERBOX_CENTER, |
| WSS_AR_14_9_FULL_FORMAT_CENTER, |
| WSS_AR_16_9_FULL_FORMAT, |
| MAX_WSS_AR_MODE |
| } ENUM_WSS_AR_MODE; |
| |
| /*WSS source mode*/ |
| typedef enum { |
| FIRST_WSS_SOURCE_MODE = 0, |
| WSS_SOURCE_MODE_CAMERA = 0, |
| WSS_SOURCE_MODE_FILM, |
| MAX_WSS_SOURCE_MODE |
| } ENUM_WSS_SOURCE_MODE; |
| |
| /*WSS subtitle existence in teletext*/ |
| typedef enum { |
| FIRST_WSS_SUBTITLE_IN_TT_MODE = 0, |
| WSS_NO_SUBTITLE_IN_TT = 0, |
| WSS_SUBTITLE_IN_TT , |
| MAX_WSS_SUBTITLE_IN_TT_MODE |
| } ENUM_WSS_SUBTITLE_IN_TT_MODE; |
| |
| /*WSS subtitle mode*/ |
| typedef enum { |
| FIRST_WSS_SUBTITLE_MODE = 0, |
| WSS_NO_OPEN_SUBTITLE = 0, |
| WSS_SUBTITLE_INSIDE_ACTIVE, |
| WSS_SUBTITLE_OUTSIDE_ACTIVE, |
| MAX_WSS_SUBTITLE_MODE |
| } ENUM_WSS_SUBTITLE_MODE; |
| |
| /*WSS surround sound mode*/ |
| typedef enum { |
| FIRST_WSS_SURROUND_SOUND_MODE = 0, |
| WSS_NO_SURROUND_SOUND = 0, |
| WSS_SURROUND_SOUND_MODE, |
| MAX_WSS_SURROUND_SOUND_MODE |
| } ENUM_WSS_SURROUND_SOUND_MODE; |
| |
| /*WSS copyright mode*/ |
| typedef enum { |
| FIRST_WSS_COPYRIGHT_MODE = 0, |
| WSS_NO_COPYRIGHT_ASSERTED = 0, |
| WSS_COPYRIGHT_ASSERTED, |
| MAX_WSS_COPYRIGHT_MODE |
| } ENUM_WSS_COPYRIGHT_MODE; |
| |
| /*WSS generation mode*/ |
| typedef enum { |
| FIRST_WSS_GENERATION_MODE = 0, |
| WSS_COPYING_NOT_RESTRICTED = 0, |
| WSS_COPYING_RESTRICTED, |
| MAX_WSS_GENERATION_MODE |
| } ENUM_WSS_GENERATION_MODE; |
| |
| /*CGMS aspect ratio mode*/ |
| typedef enum { |
| FIRST_CGMS_AR_MODE = 0, |
| CGMS_AR_NOT_INDICATED = 0, |
| CGMS_AR_4_3_NORMAL = 0, |
| CGMS_AR_16_9_NORMAL, |
| CGMS_AR_4_3_LETTERBOX, |
| MAX_CGMS_AR_MODE |
| } ENUM_CGMS_AR_MODE; |
| |
| /*CGMS copy control infomation transfer mode*/ |
| typedef enum { |
| FIRST_CGMS_COPY_CTRL_INFO_TRANS_MODE = 0, |
| CGMS_COPY_CTRL_INFO_TRANS = 0, |
| CGMS_COPY_CTRL_INFO_NOT_TRANS, |
| MAX_CGMS_COPY_CTRL_INFO_TRANS_MODE |
| } ENUM_CGMS_COPY_CTRL_INFO_TRANS_MODE; |
| |
| /*CGMS copy control infomation mode*/ |
| typedef enum { |
| FIRST_CGMS_COPY_CTRL_INFO_MODE = 0, |
| CGMS_COPY_CTRL_INFO_PERMITTED = 0, |
| CGMS_COPY_CTRL_INFO_NOT_USED, |
| CGMS_COPY_CTRL_INFO_ONE_GENERATION, |
| CGMS_COPY_CTRL_INFO_NOT_PERMITTED, |
| MAX_CGMS_COPY_CTRL_INFO_MODE |
| } ENUM_CGMS_COPY_CTRL_INFO_MODE; |
| |
| /*CGMS APS mode*/ |
| typedef enum { |
| FIRST_CGMS_APS_MODE = 0, |
| CGMS_APS_PSP_OFF = 0, |
| CGMS_APS_PSP_ON_SPLIT_BURST_OFF, |
| CGMS_APS_PSP_ON_SPLIT_BURST_2_LINE, |
| CGMS_APS_PSP_ON_SPLIT_BURST_4_LINE, |
| MAX_CGMS_APS_MODE |
| } ENUM_CGMS_APS_MODE; |
| |
| /*CGMS source mode*/ |
| typedef enum { |
| FIRST_CGMS_SOURCE_MODE = 0, |
| CGMS_SOURCE_NOT_ANALOG = 0, |
| CGMS_SOURCE_ANALOG, |
| MAX_CGMS_SOURCE_MODE |
| } ENUM_CGMS_SOURCE_MODE; |
| |
| /*TT control mode*/ |
| typedef enum { |
| FIRST_TT_CTRL_MODE = 0, |
| TT_CTRL_ENABLE = 0, |
| TT_CTRL_UPDATE, |
| TT_CTRL_DISABLE, |
| MAX_TT_CTRL_MODE |
| } ENUM_TT_CTRL_MODE; |
| |
| /* SS offset mode */ |
| typedef enum { |
| FIRST_SS_OFFSET_MODE = 0, |
| SS_OFFSET_NONE = 0, |
| SS_OFFSET_VIDEO, |
| SS_OFFSET_DEFAULT, |
| MAX_SS_OFFSET_MODE |
| } ENUM_SS_OFFSET_MODE; |
| |
| typedef struct PTS_T { /* 33-bit PTS */ |
| unsigned int hi_word; /* bit-32 */ |
| unsigned int lo_word; /* bit-31 ~ bit-0 */ |
| } PTS; |
| |
| typedef struct VPP_WIN_T { |
| int x; /* x-coordination of a vpp window top-left corner in pixel, index starting from 0 */ |
| int y; /* y-coordination of a vpp window top-left corner in pixle, index starting from 0 */ |
| int width; /* width of a vpp window in pixel */ |
| int height; /* height of a vpp window in pixel */ |
| } VPP_WIN; |
| |
| typedef struct VPP_WIN_ATTR_T { |
| int bgcolor; /* background color of a vpp window */ |
| int alpha; /* global alpha of a vpp window */ |
| } VPP_WIN_ATTR; |
| |
| typedef struct VPP_BG_COLOR_T { |
| int ColorFmt; /*MV_PE_VPP_COLOR_FMT*/ |
| unsigned int Color; |
| } VPP_BG_COLOR; |
| |
| typedef struct VPP_ZORDER_CTRL_T { |
| int main; |
| int pip; |
| int gfx0; |
| int gfx1; |
| int gfx2; |
| int pg; |
| int bg; |
| int aux; |
| } VPP_ZORDER_CTRL; |
| |
| typedef struct VPP_PATGEN_DATA_T { |
| int hmode; |
| int vmode; |
| int hPith; |
| int vPith; |
| int hColPith; // 0x00BBGGRR |
| int vColPith; // 0x00BBGGRR |
| int ColSeed1; // 0x00BBGGRR |
| int ColSeed2; // 0x00BBGGRR |
| } VPP_PATGEN_DATA; |
| |
| typedef struct VPP_PATGEN_TYPE_T { |
| int type; |
| int cadence; |
| int rff; |
| } VPP_PATGEN_TYPE; |
| |
| typedef struct VPP_FGG_CTRL_T |
| { |
| unsigned char MainEnable; |
| unsigned char PipEnable; |
| unsigned char AdaptiveMode; |
| }VPP_FGG_CTRL; |
| |
| typedef struct VPP_FGG_PARAMS_T |
| { |
| unsigned int FggGain; |
| unsigned int FggTemp; |
| unsigned int FggLth; |
| unsigned int FggHth; |
| }VPP_FGG_PARAMS; |
| |
| typedef struct VPP_WSS_DATA_T { |
| char ARMode; |
| char SourceMode; |
| char SubinTT; |
| char SubMode; |
| char SoundMode; |
| char Copyright; |
| char Generation; |
| }VPP_WSS_DATA; |
| |
| typedef struct VPP_CGMS_DATA_T { |
| char ARMode; |
| char CopyInfoTrans; |
| char CopyInfoMode; |
| char APSMode; |
| char SourceMode; |
| }VPP_CGMS_DATA; |
| |
| typedef struct VPP_DMA_INFO_T { |
| unsigned int DmaAddr; |
| unsigned int DmaLen; |
| unsigned int cpcbID; |
| }VPP_DMA_INFO; |
| |
| /* CAR Data Structure */ |
| /* |
| * * CAR control register1. |
| * */ |
| typedef enum tagVPP_FE_CAR_MODE |
| { |
| VPP_FE_CAR_BYPASS = 0, |
| VPP_FE_CAR_ENABLE_MQ, |
| VPP_FE_CAR_ENABLE_BNR, |
| VPP_FE_CAR_ENABLE_MQ_AND_BNR |
| |
| }VPP_FE_CAR_MODE; |
| |
| typedef enum tagVPP_FE_CAR_MQBLMODE |
| { |
| VPP_FE_CAR_MQBL_BLOCKNOISE =0, |
| VPP_FE_CAR_MQBL_MOSQUITONOISE, |
| VPP_FE_CAR_MQBL_AVG_BLOCK_MOSQUITO, |
| VPP_FE_CAR_MQBL_ADAPTIVE_BLOCK_MOSQUITO |
| }VPP_FE_CAR_MQBLMODE; |
| |
| typedef enum tagVPP_FE_CAR_CMODEFILTER |
| { |
| VPP_FE_CAR_CMODEFILTER_BYPASS = 0, |
| VPP_FE_CAR_CMODEFILTER_WEFILTER, |
| VPP_FE_CAR_CMODEFILTER_STRFILTER =4, |
| VPP_FE_CAR_CMODEFILTER_MAXFILTER |
| }VPP_FE_CAR_CMODEFILTER; |
| |
| typedef struct tagVPP_FE_CAR_CTRL1_REG_BITS |
| { |
| VPP_FE_CAR_MODE CarMode; |
| int EnableProScan; |
| int EnableDeepLine; |
| int EnableOnScreenIndc; |
| int FieldPolarity; |
| |
| }VPP_FE_CAR_CTRL1_REG_BITS,*PVPP_FE_CAR_CTRL1_REG_BITS; |
| |
| /* CAR control register2. |
| * */ |
| typedef struct tagVPP_FE_CAR_CTRL2_REG_BITS |
| { |
| unsigned char MqBlMode; |
| unsigned char ChromaFilteringMode; |
| unsigned char DCTBasedBlockDetetcion; |
| unsigned char EnableDemoMode; |
| |
| }VPP_FE_CAR_CTRL2_REG_BITS,*PVPP_FE_CAR_CTRL2_REG_BITS; |
| |
| |
| /* Mosquito noise reducer mode register 1 |
| * */ |
| typedef struct tagVPP_FE_CAR_MQ_MODE1_REG_BITS |
| { |
| int EnableMosquitoNoiseReduction; |
| unsigned char DisableLowResMode; |
| unsigned char FilerSize; |
| unsigned char RingingDetetorEnable; |
| unsigned char SelectRingingDetectorAlgo; |
| |
| }VPP_FE_CAR_MQ_MODE1_REG_BITS,*PVPP_FE_CAR_MQ_MODE1_REG_BITS; |
| |
| /* Mosquito noise reducer mode register 2 |
| * */ |
| typedef struct tagVPP_FE_CAR_MQ_MODE2_REG_BITS |
| { |
| unsigned char EnableMajorEdgeExpansion; |
| unsigned char EnableMinorEdgeExpansion; |
| unsigned char EnableFlatConditionUsage; |
| |
| }VPP_FE_CAR_MQ_MODE2_REG_BITS,*PVPP_FE_CAR_MQ_MODE2_REG_BITS; |
| |
| /* Major and Minor Horizontal expansions. |
| * */ |
| typedef struct tagVPP_FE_CAR_MQ_HEXP_REG_BITS |
| { |
| unsigned char MajorHExp; |
| unsigned char MinorHExp; |
| |
| }VPP_FE_CAR_MQ_HEXP_REG_BITS,*PVPP_FE_CAR_MQ_HEXP_REG_BITS; |
| |
| /* Major and Minor Vertical expansions. |
| * */ |
| typedef struct tagVPP_FE_CAR_MQ_VEXP_REG_BITS |
| { |
| unsigned char MajorVExp; |
| unsigned char MinorVExp; |
| |
| }VPP_FE_CAR_MQ_VEXP_REG_BITS,*PVPP_FE_CAR_MQ_VEXP_REG_BITS; |
| |
| /* Flat expansion control register |
| * */ |
| typedef struct tagVPP_FE_CAR_MQ_FLAT_EXPANSION_CTRL |
| { |
| unsigned char HorExp; |
| unsigned char VerExp; |
| unsigned char KernelSelection; |
| |
| }VPP_FE_CAR_MQ_FLAT_EXPANSION_CTRL,*PVPP_FE_CAR_MQ_FLAT_EXPANSION_CTRL; |
| |
| |
| typedef struct tagVPP_FE_CAR_CONTROL_REGS |
| { |
| VPP_FE_CAR_CTRL1_REG_BITS Ctrl1Reg; |
| VPP_FE_CAR_CTRL2_REG_BITS Ctrl2Reg; |
| }VPP_FE_CAR_CONTROL_REGS,*PVPP_FE_CAR_CONTROL_REGS; |
| |
| |
| typedef struct tagVPP_FE_CAR_MQ_REGS |
| { |
| VPP_FE_CAR_MQ_MODE1_REG_BITS MqMode1Reg; |
| VPP_FE_CAR_MQ_MODE2_REG_BITS MqMode2Reg; |
| VPP_FE_CAR_MQ_HEXP_REG_BITS MqHorzExpReg; |
| VPP_FE_CAR_MQ_VEXP_REG_BITS MqVerExpReg; |
| unsigned char MqEdgeAdapFilterThr; |
| unsigned char MqBlendFactor; |
| unsigned char MqMajorExpEdgeStrengthThr; |
| unsigned char MqMinorExpEdgeStrengthThr; |
| VPP_FE_CAR_MQ_FLAT_EXPANSION_CTRL MqFlatExpCtrl; |
| unsigned char MqLowerThrForFlatness; |
| unsigned char MqHigherThrForFlatness; |
| unsigned char MqRingingDetectionThr1; |
| unsigned char MqRingingDetectionThr2; |
| unsigned char MqRingingDetectionThr3; |
| unsigned char MqRingingDetectionThr4; |
| |
| }VPP_FE_CAR_MQ_REGS,*PVPP_FE_CAR_MQ_REGS; |
| |
| |
| /* Flat expansion control register |
| * */ |
| typedef struct tagVPP_FE_CAR_BL_PHASE_CTRL |
| { |
| unsigned char VerticalBlockPhase; |
| unsigned char HorizontalBlockPhase; |
| unsigned char BlockPhaseEnable; |
| |
| }VPP_FE_CAR_BL_PHASE_CTRL,*PVPP_FE_CAR_BL_PHASE_CTRL; |
| |
| typedef enum tagVPP_FE_CAR_BL_GRID_FILT_CTRL |
| { |
| VPP_FE_CAR_BL_GRID_FILT_HORIZ_BLK_DET = 0, |
| VPP_FE_CAR_BL_GRID_FILT_VERT_BLK_DET, |
| VPP_FE_CAR_BL_GRID_FILT_HORIZ_OR_VERT_BLK_DET, |
| VPP_FE_CAR_BL_GRID_FILT_HORIZ_AND_VERT_BLK_DET |
| |
| }VPP_FE_CAR_BL_GRID_FILT_CTRL; |
| |
| |
| /* Block Noise Reducer mode |
| * */ |
| typedef struct tagVPP_FE_CAR_BL_NR_MODE |
| { |
| unsigned char VBlockNoiseReducer; |
| unsigned char HBlockNoiseReducer; |
| VPP_FE_CAR_BL_GRID_FILT_CTRL GridFilteringCtrl; |
| unsigned char EnableGridExp; |
| unsigned char BlSel; |
| unsigned char FilterSize; |
| |
| }VPP_FE_CAR_BL_NR_MODE,*PVPP_FE_CAR_BL_NR_MODE; |
| |
| |
| /* Block Noise Reducer control for both Hor and Vert |
| * */ |
| typedef enum tagVPP_FE_CAR_FILTER_OPT |
| { |
| VPP_FE_CAR_FILTER_OPT_GBL_FILTER =0, |
| VPP_FE_CAR_FILTER_OPT_GRID_FILTER, |
| VPP_FE_CAR_FILTER_OPT_GRID_FILTER_BLK, |
| VPP_FE_CAR_FILTER_OPT_NO_FILTERING |
| |
| }VPP_FE_CAR_FILTER_OPT; |
| |
| typedef struct tagVPP_FE_CAR_HV_BLOCKS_BL_NR_MODE |
| { |
| VPP_FE_CAR_FILTER_OPT FilteringOption0; |
| VPP_FE_CAR_FILTER_OPT FilteringOption1; |
| VPP_FE_CAR_FILTER_OPT FilteringOption2; |
| VPP_FE_CAR_FILTER_OPT FilteringOption3; |
| |
| }VPP_FE_CAR_HV_BLOCKS_BL_NR_MODE,*PVPP_FE_CAR_HV_BLOCKS_BL_NR_MODE; |
| |
| |
| /* Block Noise Reducer Filter Control Reg1 |
| * */ |
| typedef struct tagVPP_FE_CAR_BL_FILTER_CTRL1 |
| { |
| unsigned char HFilterMode; |
| unsigned char VFilterMode; |
| unsigned char HFilterSize; |
| unsigned char VFilterSize; |
| |
| }VPP_FE_CAR_BL_FILTER_CTRL1,*PVPP_FE_CAR_BL_FILTER_CTRL1; |
| |
| |
| /* Block Noise Reducer Filter Control Reg2 |
| * */ |
| typedef struct tagVPP_FE_CAR_BL_FILTER_CTRL2 |
| { |
| unsigned char Select1DHFilter; |
| unsigned char Select1DVFilter; |
| unsigned char VFilterNumTaps; |
| |
| }VPP_FE_CAR_BL_FILTER_CTRL2,*PVPP_FE_CAR_BL_FILTER_CTRL2; |
| |
| |
| /* Enable robust block detetcion for both had and soft mode |
| * */ |
| typedef struct tagVPP_FE_CAR_BL_DET_CTRL |
| { |
| unsigned char SoftRobustDetection; |
| unsigned char HardRobustDetection; |
| unsigned char EnableIndepSelForHGrid; |
| unsigned char EnableIndepSelForVGrid; |
| } VPP_FE_CAR_BL_DET_CTRL,*PVPP_FE_CAR_BL_DET_CTRL; |
| |
| |
| /* Vertical block detector flatness conditions (Soft/HArd) |
| * */ |
| typedef struct tagVPP_FE_CAR_BL_SHDET1_REG_BITS |
| { |
| unsigned char FlatTh; |
| unsigned char LowerBound; |
| |
| }VPP_FE_CAR_BL_SHDET1_REG_BITS,*PVPP_FE_CAR_BL_SHDET1_REG_BITS; |
| |
| |
| |
| /* Vertical/Horizontal block noise detection control (soft/Hard) |
| * */ |
| typedef struct tagVPP_FE_CAR_BL_SHDET_HV_REG_BITS |
| { |
| unsigned char left1; |
| unsigned char right1; |
| unsigned char left2; |
| unsigned char right2; |
| |
| }VPP_FE_CAR_BL_SHDET_HV_REG_BITS,*PVPP_FE_CAR_BL_SHDET_HV_REG_BITS; |
| |
| |
| typedef struct tagVPP_FE_CAR_BL_REGS |
| { |
| VPP_FE_CAR_BL_PHASE_CTRL BlPhaseControl; |
| VPP_FE_CAR_BL_NR_MODE BlNrMode; |
| VPP_FE_CAR_HV_BLOCKS_BL_NR_MODE BlNrHBlkMode; |
| VPP_FE_CAR_HV_BLOCKS_BL_NR_MODE BlNrVBlkMode; |
| unsigned char BlNumofHyst; |
| unsigned char BlEdgeAdpThr; |
| VPP_FE_CAR_BL_FILTER_CTRL1 BlNrReducerFilterCtrl1; |
| unsigned char BlNrEdgeAdaptHFilter; |
| unsigned char BlNrEdgeAdaptVFilter; |
| VPP_FE_CAR_BL_FILTER_CTRL2 BlNrReducerFilterCtrl2; |
| |
| }VPP_FE_CAR_BL_REGS,*PVPP_FE_CAR_BL_REGS; |
| |
| /* Vertical/Horizontal block noise detection criteria(soft) |
| * */ |
| typedef struct tagVPP_FE_CAR_BL_SDET_CRITERIA_REG_BITS |
| { |
| unsigned char VAdjPixelFlatnesCond; |
| unsigned char VMaxMinFlatnessCond; |
| unsigned char VBoundaryFlatnessCond; |
| unsigned char VAvgPixelFlatnessCond; |
| unsigned char HAdjPixelFlatnesCond; |
| unsigned char HMaxMinFlatnessCond; |
| unsigned char HBoundaryFlatnessCond; |
| unsigned char HAvgPixelFlatnessCond; |
| |
| }VPP_FE_CAR_BL_SDET_CRITERIA_REG_BITS,*PVPP_FE_CAR_BL_SDET_CRITERIA_REG_BITS; |
| |
| |
| typedef struct tagVPP_FE_CAR_BL_SOFT_FILTER_REGS |
| { |
| VPP_FE_CAR_BL_DET_CTRL BlDetectionCtrl; |
| VPP_FE_CAR_BL_SHDET1_REG_BITS BlSoftFlatnessCtrl; |
| unsigned char BlSoftUpperBoundFlatnessCtrl; |
| VPP_FE_CAR_BL_SHDET_HV_REG_BITS BlSoftVertBlockNoiseDetectCtrl; |
| VPP_FE_CAR_BL_SHDET_HV_REG_BITS BlSoftHorzBlockNoiseDetectCtrl; |
| VPP_FE_CAR_BL_SDET_CRITERIA_REG_BITS BlSoftNoiseDetectionCriteria; |
| }VPP_FE_CAR_BL_SOFT_FILTER_REGS,*PVPP_FE_CAR_BL_SOFT_FILTER_REGS; |
| |
| |
| typedef struct tagVPP_FE_CAR_BL_HARD_FILTER_REGS |
| { |
| VPP_FE_CAR_BL_DET_CTRL BlDetectionCtrl; |
| VPP_FE_CAR_BL_SHDET1_REG_BITS BlHardFlatnessCtrl; |
| unsigned char BlHardUpperBoundFlatnessCtrl; |
| VPP_FE_CAR_BL_SHDET_HV_REG_BITS BlHardVertBlockNoiseDetectCtrl; |
| VPP_FE_CAR_BL_SHDET_HV_REG_BITS BlHardHorzBlockNoiseDetectCtrl; |
| VPP_FE_CAR_BL_SDET_CRITERIA_REG_BITS BlHardNoiseDetectionCriteria; |
| |
| }VPP_FE_CAR_BL_HARD_FILTER_REGS,*PVPP_FE_CAR_BL_HARD_FILTER_REGS; |
| |
| typedef struct tagVPP_FE_CAR_BL_THR_FOR_HVREGION_AND_CROP |
| { |
| unsigned short BlHDetectThr0; |
| unsigned short BlHDetectThr1; |
| unsigned short BlHDetectThr2; |
| unsigned short BlVDetectThr0; |
| unsigned short BlVDetectThr1; |
| unsigned short BlVDetectThr2; |
| unsigned char BlCropFromTop; |
| unsigned char BlCropFromBottom; |
| unsigned char BlCropFromLeft; |
| unsigned char BlCropFromRight; |
| |
| }VPP_FE_CAR_BL_THR_FOR_HVREGION_AND_CROP,*PVPP_FE_CAR_BL_THR_FOR_HVREGION_AND_CROP; |
| |
| |
| /* Universal Block detection control for scaled material block detector |
| * */ |
| typedef struct tagVPP_FE_CAR_UBL_CTRL |
| { |
| unsigned char NumDetections; |
| unsigned char FlatnessCheck; |
| |
| }VPP_FE_CAR_UBL_CTRL,*PVPP_FE_CAR_UBL_CTRL; |
| |
| typedef struct tagVPP_FE_CAR_UBL_CTRL_AND_THRESHOLD |
| { |
| unsigned char UBlCropFromTop; |
| unsigned char UBlCropFromBottom; |
| unsigned char UBlLowerThrforBlockMap1; |
| unsigned char UBlHigherThrforBlockMap1; |
| unsigned char UBlLowerThrforBlockMap2; |
| unsigned char UBlHigherThrforBlockMap2; |
| VPP_FE_CAR_UBL_CTRL UBlCtrl1; |
| VPP_FE_CAR_UBL_CTRL UBlCtrl2; |
| unsigned short UBlThrforFinalVal; |
| unsigned char UBlThrforGradMapCleanup; |
| unsigned char UBlThrforHyst; |
| |
| }VPP_FE_CAR_UBL_CTRL_AND_THRESHOLD,*PVPP_FE_CAR_UBL_CTRL_AND_THRESHOLD; |
| |
| typedef struct tagVPP_FE_CAR_DEFAULTS |
| { |
| int IsInpHD; |
| int IsInpProgressive; |
| }VPP_FE_CAR_DEFAULTS, *PVPP_FE_CAR_DEFAULTS; |
| |
| typedef struct tagVPP_FE_CAR_FGG_CTRL_AND_GAIN |
| { |
| unsigned char CarFggEnabled; |
| unsigned char CarFggExtGainSelect; |
| unsigned char CarFggAdapFggGain; |
| unsigned char CarFggGain; |
| unsigned char CarFggTempVariation; |
| unsigned char CarFggLowerThres; |
| unsigned char CarFggHigherThres; |
| }VPP_FE_CAR_FGG_CTRL_AND_GAIN,*PVPP_FE_CAR_FGG_CTRL_AND_GAIN; |
| |
| typedef struct tagVPP_FE_CAR_NE_REGS |
| { |
| unsigned char CarNeHyst; |
| unsigned short CarNeHThreshold; |
| unsigned short CarNeVThreshold; |
| }VPP_FE_CAR_NE_REGS,*PVPP_FE_CAR_NE_REGS; |
| |
| |
| typedef struct tagVPP_FE_CAR_NE_CTRLREGS |
| { |
| unsigned char CarNeSigmaInpThr; |
| unsigned char CarNeEnableSigmaMOde; |
| }VPP_FE_CAR_NE_CTRLREGS,*PVPP_FE_CAR_NE_CTRLREGS; |
| |
| typedef union tagVPP_FE_CAR_REG |
| { |
| VPP_FE_CAR_CONTROL_REGS CarCTRLReg; |
| VPP_FE_CAR_MQ_REGS CarMQCtrlReg; |
| VPP_FE_CAR_BL_REGS CarBLCtrlReg; |
| VPP_FE_CAR_BL_THR_FOR_HVREGION_AND_CROP CarBLThrCtrlReg; |
| VPP_FE_CAR_UBL_CTRL_AND_THRESHOLD CarUBLCtrlReg; |
| unsigned char CarFGGGainReg; |
| }VPP_FE_CAR_REG, *PVPP_FE_CAR_REG; |
| |
| |
| |
| /* NR DS and ENUM */ |
| // NR Modes (part of VPP_VDO_NR_CTRL structure) |
| typedef enum tagVPP_VDO_NR_MODE |
| { |
| VPP_VDO_NR_MODE_DISABLE = 0, |
| VPP_VDO_NR_MODE_SPATIAL, |
| VPP_VDO_NR_MODE_TEMPORAL, |
| VPP_VDO_NR_MODE_SPATIO_TEMPORAL, |
| VPP_VDO_NR_MODE_MAX |
| }VPP_VDO_NR_MODE; |
| |
| // Position of flesh tone blender (part of VPP_VDO_NR_CTRL structure) |
| typedef enum tagVPP_VDO_NR_FTB_POS |
| { |
| VPP_VDO_NR_FTB_AFTER_ST_BLENDER = 0, |
| VPP_VDO_NR_FTB_BEFORE_ST_BLENDER, |
| VPP_VDO_NR_FTB_POS_MAX |
| }VPP_VDO_NR_FTB_POS; |
| |
| // Chroma channel motion selection modes |
| // (part of VPP_VDO_NR_CTRL structure) |
| typedef enum tagVPP_VDO_NR_CHROMA_CHN_MOTION_SEL |
| { |
| VPP_VDO_NR_CHROMA_CHN_CMOTION = 0, |
| VPP_VDO_NR_CHROMA_CHN_YMOTION, |
| VPP_VDO_NR_CHROMA_CHN_MAXYC_MOTION, |
| VPP_VDO_NR_CHROMA_CHN_MAX_MOTION_SEL |
| }VPP_VDO_NR_CHROMA_CHN_MOTION_SEL; |
| |
| // Window size for spatial filter (part of VPP_VDO_NR_PARAMS struct) |
| typedef enum tagVPP_VDO_NR_SNR_MODE |
| { |
| // 5/3 window in interlaced mode |
| VPP_VDO_NR_SNR_5_BY_3_WIN_INT_MODE = 0, |
| // 5/3 window in progressive mode |
| VPP_VDO_NR_SNR_5_BY_3_WIN_PROG_MODE, |
| // 9/3 window in progressive mode |
| VPP_VDO_NR_SNR_9_BY_3_WIN_PROG_MODE, |
| VPP_VDO_NR_SNR_MODE_MAX |
| }VPP_VDO_NR_SNR_MODE; |
| |
| // Noise source to control VNR parameters |
| // (part of VPP_VDO_NR_NE_CTRL structure) |
| typedef enum tagVPP_VDO_NR_NOISE_SRC_MODE |
| { |
| VPP_VDO_NR_NOISE_SRC_MODE_REGISTER = 0, |
| VPP_VDO_NR_NOISE_SRC_MODE_INTERNAL_EST, |
| VPP_VDO_NR_NOISE_SRC_MODE_INPUT_PORT, |
| VPP_VDO_NR_NOISE_SRC_MODE_MAX |
| }VPP_VDO_NR_NOISE_SRC_MODE; |
| |
| // Noise Estimate Mode (part of VPP_VDO_NR_NE_CTRL structure) |
| typedef enum tagVPP_VDO_NR_NOISE_EST_MODE |
| { |
| VPP_VDO_NR_NOISE_EST_MODE_SPATIAL = 0, |
| VPP_VDO_NR_NOISE_EST_MODE_TEMPO, |
| VPP_VDO_NR_NOISE_EST_MODE_MIN_OF_SPATIAL_TEMPO, |
| VPP_VDO_NR_NOISE_EST_MODE_AVG_OF_SPATIAL_TEMPO, |
| VPP_VDO_NR_NOISE_EST_MODE_MAX |
| }VPP_VDO_NR_NOISE_EST_MODE; |
| |
| // Chroma Scaling Factor (part of VPP_VDO_NR_NE_PARAMS struct) |
| typedef enum tagVPP_VDO_NR_CHROMA_SCALE_FACTOR |
| { |
| VPP_VDO_NR_CHROMA_SCALE_SAME_AS_LUMA = 0, |
| VPP_VDO_NR_CHROMA_SCALE_DOWN_LUMA_BY_2, |
| VPP_VDO_NR_CHROMA_SCALE_DOWN_LUMA_BY_4, |
| VPP_VDO_NR_CHROMA_SCALE_DOWN_LUMA_BY_8, |
| VPP_VDO_NR_CHROMA_SCALE_MAX |
| }VPP_NR_CHROMA_SCALE_FACTOR; |
| |
| // Final Output Selection Modes (part of VPP_VDO_NR_DBG_CTRL struct) |
| typedef enum tagVPP_VDO_NR_OUT_SEL |
| { |
| VPP_VDO_NR_OUTPUT_FINAL_VNR = 0, |
| VPP_VDO_NR_OUTPUT_FTD_MAP, |
| VPP_VDO_NR_OUTPUT_NOISE_MAP, |
| VPP_VDO_NR_OUTPUT_LUMA, |
| VPP_VDO_NR_OUTPUT_MAX |
| }VPP_VDO_NR_OUT_SEL; |
| |
| // Motion Map Display Mode (part of VPP_VDO_NR_DBG_CTRL struct) |
| typedef enum tagVPP_VDO_NR_MOTION_MAP_DISP_MODE |
| { |
| VPP_VDO_NR_MOTION_MAP_DISP_LUMA = 0, |
| VPP_VDO_NR_MOTION_MAP_DISP_CHROMA, |
| VPP_VDO_NR_MOTION_MAP_DISP_FIN_OP_VNR, |
| VPP_VDO_NR_MOTION_MAP_DISP_MODE_MAX = 4 |
| }VPP_VDO_NR_MOTION_MAP_DISP_MODE, *PVPP_VDO_NR_MOTION_MAP_DISP_MODE; |
| |
| /* Structures */ |
| // NR Capability Fields |
| typedef struct tagAVC_NR_CAPS |
| { |
| unsigned char NumUnits; |
| unsigned int Flags; |
| } AVC_NR_CAPS, *PAVC_NR_CAPS; |
| |
| // Fields for control of block motion sub-module |
| // (part of VPP_VDO_NR_CTRL structure) |
| typedef struct tagVPP_VDO_NR_TNR_FINE_CTRL |
| { |
| int EnblNudge; |
| int EnblAsd; |
| int EnblBlk; |
| int EnblBlkMotion; |
| int EnblBlkBeta; |
| int EnblBlkFilm; |
| }VPP_VDO_NR_TNR_FINE_CTRL, *PVPP_VDO_NR_TNR_FINE_CTRL; |
| |
| // NR Control Fields |
| typedef struct tagVPP_VDO_NR_CTRL |
| { |
| VPP_VDO_NR_MODE VnrMode; |
| int YthAdaptive; |
| int CthAdaptive; |
| int YBetaAdaptive; |
| int CBetaAdaptive; |
| VPP_VDO_NR_FTB_POS FtbPos; |
| int ProscanInput; |
| |
| int EnblYSnr; |
| int EnblCSnr; |
| int EnblYTnr; |
| int EnblCTnr; |
| int EnblLumaFtd; |
| int EnblChromaFtd; |
| |
| VPP_VDO_NR_TNR_FINE_CTRL YTnrFineCtrl; |
| VPP_VDO_NR_TNR_FINE_CTRL CTnrFineCtrl; |
| VPP_VDO_NR_CHROMA_CHN_MOTION_SEL ChromaChnMotSel; |
| }VPP_VDO_NR_CTRL, *PVPP_VDO_NR_CTRL; |
| |
| // NR Parameters - Threshold settings for various sub-modules |
| typedef struct tagVPP_VDO_NR_PARAMS |
| { |
| // Block Motion Module settings (for TNR) |
| unsigned short YBlkTh; |
| unsigned short CBlkTh; |
| unsigned char BlkXSize; |
| unsigned char BlkYSize; |
| |
| // Motion Thresholds |
| unsigned char YMotBaseTh; |
| unsigned char YMotStepTh; |
| unsigned char CMotBaseTh; |
| unsigned char CMotStepTh; |
| |
| // SNR settings |
| VPP_VDO_NR_SNR_MODE YSnrMode; |
| unsigned char YSnrLowTh; |
| unsigned char YSnrHighTh; |
| unsigned char CSnrLowTh; |
| unsigned char CSnrHighTh; |
| |
| // Beta values for TNR |
| unsigned char YBeta; |
| unsigned char CBeta; |
| unsigned char BlkBeta; |
| }VPP_VDO_NR_PARAMS, *PVPP_VDO_NR_PARAMS; |
| |
| // Noise Estimation Control fields |
| typedef struct tagVPP_VDO_NR_NE_CTRL |
| { |
| int EnblFldFrmFltr; |
| VPP_VDO_NR_NOISE_SRC_MODE NoiSrcMode; |
| VPP_VDO_NR_NOISE_EST_MODE NoiEstMode; |
| }VPP_VDO_NR_NE_CTRL, *PVPP_VDO_NR_NE_CTRL; |
| |
| // Noise Estimation Parameters |
| typedef struct tagVPP_VDO_NR_NE_PARAMS |
| { |
| // Window Parameters (4 bits each) |
| unsigned char HWindow; |
| unsigned char HOffset; |
| unsigned char VWindow; |
| unsigned char VOffset; |
| // Gaussian Noise Standard Deviation |
| unsigned char StdDev; |
| unsigned char NoiNumScale; //4 bits |
| unsigned char NoiNumOffset; //4 bits |
| unsigned char NoiSat; //4 bits |
| VPP_NR_CHROMA_SCALE_FACTOR NoiChromaScale; |
| }VPP_VDO_NR_NE_PARAMS, *PVPP_VDO_NR_NE_PARAMS; |
| |
| // Noise Estimation Status |
| typedef struct tagVPP_VDO_NR_NE_STATUS |
| { |
| unsigned char NoiseEstimateSpatial; |
| unsigned char NoiseEstimateTemporal; |
| }VPP_VDO_NR_NE_STATUS, *PVPP_VDO_NR_NE_STATUS; |
| |
| // Debug Control Fields |
| typedef struct tagVPP_VDO_NR_DBG_CTRL |
| { |
| VPP_VDO_NR_OUT_SEL OutSel; |
| VPP_VDO_NR_MOTION_MAP_DISP_MODE MotionMapDispMode; |
| int Enbl8_0Rnding; |
| }VPP_VDO_NR_DBG_CTRL, *PVPP_VDO_NR_DBG_CTRL; |
| |
| typedef union tagVPP_VDO_NR_REG |
| { |
| VPP_VDO_NR_CTRL NRCtrl; |
| VPP_VDO_NR_PARAMS NRParam; |
| }VPP_VDO_NR_REG, *PVPP_VDO_NR_REG; |
| |
| /*DEINT DS */ |
| |
| typedef enum tagVPP_DEINTUSER_CAD_MODE |
| { |
| VPP_DEINTUSER_CAD_MODE_1 = 0, |
| VPP_DEINTUSER_CAD_MODE_2 |
| |
| }VPP_DEINTUSER_CAD_MODE; |
| |
| typedef enum tagVPP_DEINTEXCL_PARAM_MODE |
| { |
| VPP_DEINTEXCL_PARAM_MODE_NONE = 0, |
| VPP_DEINTEXCL_PARAM_EXCLUSION_SEL, |
| VPP_DEINTEXCL_PARAM_EXCLUSION_SEL_2ZONE |
| |
| }VPP_DEINTEXCL_PARAM_MODE; |
| |
| |
| typedef struct tagVPP_DEINTEXCL_CTRL_PARAMS |
| { |
| VPP_DEINTEXCL_PARAM_MODE ExclSel; |
| unsigned char LinesFromTop; |
| unsigned char LinesFromBottom; |
| unsigned char PixelsFromLeft; |
| unsigned char PixelsFromRight; |
| |
| } VPP_DEINTEXCL_CTRL_PARAMS, *PVPP_DEINTEXCL_CTRL_PARAMS; |
| |
| |
| typedef struct tagVPP_DEINTUSER_CAD_PARAMS_NEW |
| { |
| VPP_DEINTUSER_CAD_MODE Cadence; |
| int Enable; |
| unsigned char Length; |
| unsigned int Pattern; |
| |
| } VPP_DEINTUSER_CAD_PARAMS_NEW, *PVPP_DEINTUSER_CAD_PARAMS_NEW; |
| |
| typedef struct tagVPP_DEINTUSER_CAD_PARAMS |
| { |
| int Enable; |
| unsigned char Length; |
| unsigned int Pattern; |
| |
| } VPP_DEINTUSER_CAD_PARAMS, *PVPP_DEINTUSER_CAD_PARAMS; |
| |
| |
| /* SHIFT3D DS */ |
| typedef struct tagVPP_SHIFT3D_SETPARAMS |
| { |
| unsigned int BlackLevel; |
| unsigned char TopShift; |
| unsigned char BottomShift; |
| unsigned short EndTop; |
| unsigned short StartBottom; |
| }VPP_SHIFT3D_SETPARAMS,*PVPP_SHIFT3D_SETPARAMS; |
| |
| typedef struct tagVPP_SHIFT3D_SETPARAMS_NEW |
| { |
| int SetParam; |
| VPP_SHIFT3D_SETPARAMS ParamVal; |
| }VPP_SHIFT3D_SETPARAMS_NEW; |
| |
| typedef struct tagVPP_SHIFT3D_CTRLPARAMS |
| { |
| int Enable3D; |
| int HardByPass; |
| }VPP_SHIFT3D_CTRLPARAMS,*PVPP_SHIFT3D_CTRLPARAMS; |
| |
| typedef union tagVPP_VDO_SHIFT3D_REG |
| { |
| VPP_SHIFT3D_SETPARAMS_NEW SHIFT3DSetParam; |
| VPP_SHIFT3D_CTRLPARAMS SHIFT3DCtrlParam; |
| }VPP_VDO_SHIFT3D_REG; |
| /*struct for Detail Control LPF settings.*/ |
| typedef struct VPP_FE_DET_LPF_CTRL |
| { |
| unsigned char Lpfmode; //VPP_FE_DET_LPF_MODE |
| int HlpfEnable; |
| int VlpfEnable; |
| }VPP_FE_DET_LPF_CTRL,*PVPP_FE_DET_LPF_CTRL; |
| |
| /*struct for LPF parameters (controls the sharpness).*/ |
| typedef struct VPP_FE_DET_LPF_CTRL_PARAMS |
| { |
| unsigned char DetailLpfHs; |
| unsigned char DetailLpfVs; |
| }VPP_FE_DET_LPF_CTRL_PARAMS,*PVPP_FE_DET_LPF_CTRL_PARAMS; |
| |
| typedef struct VPP_FE_DEINT_LPF_CTRL |
| { |
| VPP_FE_DET_LPF_CTRL LPFCtrl; |
| VPP_FE_DET_LPF_CTRL_PARAMS LPFParam; |
| }VPP_FE_DEINT_LPF_CTRL; |
| |
| typedef enum tagVPP_DEINTVI_MODE |
| { |
| VPP_DEINTMODE_OFF = 0, |
| VPP_DEINTMODE_SAFE , |
| VPP_DEINTMODE_AGGRESSIVE |
| |
| }VPP_DEINTVI_MODE; |
| |
| typedef enum tagVPP_DEINTCHROMA_MOT_VID_MODE |
| { |
| VPP_DEINTCHROMA_MOT_VID_SAME_AS_LUMA = 0, |
| VPP_DEINTCHROMA_MOT_FIXED_2D, |
| VPP_DEINTCHROMA_MOT_INDEP_CHROMA_MOT, |
| VPP_DEINTCHROMA_MOT_MAX_OF_CHROMA_AND_LUMA_MOT |
| |
| }VPP_DEINTCHROMA_MOT_VID_MODE; |
| |
| /* |
| * These Params are mainly based on the mode. |
| * So they are combined with SetPresetMode(). |
| */ |
| typedef struct tagVPP_DINT_PRESET_MODE_PARAMS |
| { |
| VPP_DEINTVI_MODE ViMode; |
| VPP_DEINTCHROMA_MOT_VID_MODE ChrMotVidMode; |
| int ChrMotFlmMode; |
| |
| }VPP_DINT_PRESET_MODE_PARAMS, *PVPP_DINT_PRESET_MODE_PARAMS; |
| |
| typedef struct tagVPP_DEINT_PRESET_MODE |
| { |
| int DeintPresetMode; |
| VPP_DINT_PRESET_MODE_PARAMS DeintPresetModeParam; |
| }VPP_FE_DEINT_PRESET_MODE, *PVPP_FE_DEINT_PRESET_MODE; |
| |
| typedef enum tagVPP_DEINT_SPATIO_TEMP_MIXER_CTRL_ENUM |
| { |
| VPP_DEINT_MOTION_ADAPTIVE = 0, |
| VPP_DEINT_FORCED_SPATIAL, |
| VPP_DEINT_FORCED_TEMPORAL |
| |
| }VPP_DEINT_SPATIO_TEMP_MIXER_CTRL_ENUM; |
| |
| //Deint Saptio-Temporal Mixer Control Parameters |
| typedef struct tagVPP_DEINT_FORCED2D_CTRL |
| { |
| VPP_DEINT_SPATIO_TEMP_MIXER_CTRL_ENUM LumaCtrlForVideoPix; |
| VPP_DEINT_SPATIO_TEMP_MIXER_CTRL_ENUM ChromaCtrlForVideoPix; |
| VPP_DEINT_SPATIO_TEMP_MIXER_CTRL_ENUM LumaCtrlForFilmPix; |
| VPP_DEINT_SPATIO_TEMP_MIXER_CTRL_ENUM ChromaCtrlForFilmPix; |
| |
| }VPP_DEINT_FORCED2D_CTRL, *PVPP_DEINT_FORCED2D_CTRL; |
| |
| typedef enum tagVPP_DEINT_FILM_ENTRY_MODE |
| { |
| VPP_DEINT_MODE_22=0, |
| VPP_DEINT_MODE_32 |
| }VPP_DEINT_FILM_ENTRY_MODE; |
| |
| typedef struct tagVPP_DEINT_FILM_MODE_ENTRY_PARAM |
| { |
| VPP_DEINT_FILM_ENTRY_MODE EntryMode; |
| unsigned short NofInHardBld; |
| unsigned short NofInSoftBld; |
| }VPP_DEINT_FILM_MODE_ENTRY_PARAM, *PVPP_DEINT_FILM_MODE_ENTRY_PARAM; |
| |
| typedef union tagVPP_VDO_DEINT_REG |
| { |
| VPP_DEINTUSER_CAD_PARAMS_NEW DEINTUserCad; |
| VPP_DEINTEXCL_CTRL_PARAMS DEINTExclCtrl; |
| VPP_FE_DEINT_LPF_CTRL DEINTLPFCtrl; |
| unsigned short FilmCadence; |
| VPP_FE_DEINT_PRESET_MODE DEINTPreset; |
| VPP_DEINT_FORCED2D_CTRL DEINTF2DCtrl; |
| VPP_DEINT_FILM_MODE_ENTRY_PARAM DEINTFilmMode; |
| }VPP_VDO_DEINT_REG; |
| |
| |
| /* NEST DS and ENUM */ |
| #define VNR_MAX_NUM_SIGMA 16 |
| #define NE_MAX_NUM_SIGMA 4 |
| |
| /* Type of thresholds for map signal generator */ |
| typedef enum tagVPP_NE_TYPE_OF_THRESHOLD |
| { |
| VPP_NE_BAND_THRESHOLD = 0, |
| VPP_NE_FLAT_THRESHOLD, |
| VPP_NE_PIX_THRESHOLD, |
| VPP_NE_THRESH_MAX |
| }VPP_NE_TYPE_OF_THRESHOLD,*PVPP_NE_TYPE_OF_THRESHOLD; |
| |
| |
| /* Type of feedback thresholds */ |
| typedef enum tagVPP_NE_FEEDBACK_THRESH |
| { |
| VPP_NE_TEMPORAL_BETA_FACT_FB = 0, |
| VPP_NE_SPATIAL_THRESH_FB, |
| VPP_NE_MOTION_THRESH_FB, |
| VPP_NE_BLOCK_MOTION_THRESH_FB, |
| VPP_NE_FB_MAX |
| }VPP_NE_FEEDBACK_THRESH,*PVPP_NE_FEEDBACK_THRESH; |
| |
| typedef struct tagVPP_NE_CROP_CTRL |
| { |
| int TypeOfCrop; |
| unsigned char CropVal; |
| }VPP_NE_CROP_CTRL; |
| |
| /* Noise Estimation Map control registers */ |
| typedef struct tagVPP_NE_MAP_CTRL |
| { |
| int GreyLevel; |
| unsigned char GreyLevMin; |
| unsigned char GreyLevMax; |
| unsigned char ThrForFlatness; |
| unsigned char ThrForMedianComp; |
| unsigned char WeightingFactor1Th[3]; |
| unsigned short ThrForFlatAreaCntSum[4]; |
| unsigned char ThrForFlatAreaCntSumLSB; |
| unsigned char WeightingFactor2Th[3]; |
| unsigned char NoOfFrames; |
| }VPP_NE_MAP_CTRL,*PVPP_NE_MAP_CTRL; |
| |
| /* NE Feedback control registers */ |
| typedef struct tagVPP_NE_FEEDBACK_CTRL |
| { |
| int InputType; |
| int OsdSigmaInd; |
| unsigned char HVBlkEnble; |
| unsigned char Threshold; |
| }VPP_NE_FEEDBACK_CTRL,*PVPP_NE_FEEDBACK_CTRL; |
| |
| |
| typedef struct tagVPP_NE_THRESHOLDS |
| { |
| VPP_NE_TYPE_OF_THRESHOLD ThType; |
| unsigned short ThVal[4]; |
| }VPP_NE_THRESHOLDS,*PVPP_NE_THRESHOLDS; |
| |
| typedef struct tagVPP_NE_FEEDBACK_THRESHOLDS |
| { |
| VPP_NE_FEEDBACK_THRESH FbThresh; |
| unsigned short ThreshVal[VNR_MAX_NUM_SIGMA]; |
| }VPP_NE_FEEDBACK_THRESHOLDS, *PVPP_NE_FEEDBACK_THRESHOLDS; |
| |
| typedef union tagVPP_VDO_NE_REG |
| { |
| VPP_NE_CROP_CTRL NESTCropCtrl; |
| VPP_NE_MAP_CTRL NESTMapCtrl; |
| VPP_NE_FEEDBACK_CTRL NESTFDCtrl; |
| VPP_NE_THRESHOLDS NESTThrd; |
| VPP_NE_FEEDBACK_THRESHOLDS NESTFDThrd; |
| }VPP_VDO_NEST_REG; |
| |
| /* EE DS */ |
| /*enum for detail path 1 horizontal filter selection (DET_CTRL)*/ |
| typedef enum VPP_FE_DET_HFMODE |
| { |
| VPP_FE_DET_HFMODE_DISABLED = 0x00, // Filter output is 0 |
| VPP_FE_DET_HORIZONTAL_BPF = 0x01, // Band Pass Filter |
| VPP_FE_DET_HORIZONTAL_HPF = 0x02, // High Pass Filter |
| VPP_FE_DET_HFEND |
| }VPP_FE_DET_HFMODE, *PVPP_FE_DET_HFMODE; |
| |
| /*enum for detail path 2 vertiocal filter selection (DET_CTRL)*/ |
| typedef enum VPP_FE_DET_VFMODE |
| { |
| VPP_FE_DET_VFMODE_DISABLED = 0x00, // Filter output in Path2 is 0.(Disabled) |
| VPP_FE_DET_VERTICAL_BPF = 0x01, // Band Pass Filter |
| VPP_FE_DET_VERTICAL_HPF = 0x02, // High Pass Filter |
| VPP_FE_DET_OMNI_DIRECTION_2D_HPF = 0x03, // Omni-Directional 2D HPF |
| VPP_FE_DET_VFEND |
| }VPP_FE_DET_VFMODE, *PVPP_FE_DET_VFMODE; |
| |
| /*enum for mode of generating large mask signal (DET_CTRL_PARAMS)*/ |
| typedef enum VPP_FE_DET_MASK_GEN_MODE |
| { |
| VPP_FE_DET_MASK_GEN_DISABLED = 0x00, // Mask generation Disabled |
| VPP_FE_DET_MASK_GEN_3X3_MAX = 0x01, // Generation using 3x3 max |
| VPP_FE_DET_MASK_GEN_5X5_AND_AVERAGE_COMB = 0x02, // Generation using 5x5 max and average combination |
| VPP_FE_DET_MASK_GEN_5X5_MAX = 0x03, // Generation using 5x5 max |
| VPP_FE_DET_MASK_GEN_END |
| }VPP_FE_DET_MASK_GEN_MODE, *PVPP_FE_DET_MASK_GEN_MODE; |
| /*struct for FE detail EE control*/ |
| typedef struct VPP_FE_DET_CTRL |
| { |
| int EeEnable; |
| int DetailEnable; |
| int DetailAdd; |
| unsigned char HfMode; //VPP_FE_DET_HFMODE |
| unsigned char VfMode; //VPP_FE_DET_HFMODE |
| unsigned char DetailLut[16]; |
| }VPP_FE_DET_CTRL, *PVPP_FE_DET_CTRL; |
| |
| |
| /*struct for FE detail EE control parameters*/ |
| typedef struct VPP_FE_DET_CTRL_PARAMS |
| { |
| unsigned char DetNosieTh1; |
| unsigned char DetNosieTh2; |
| unsigned char DetGain1; |
| unsigned char DetGain2; |
| unsigned char DetMaskGenMode; //VPP_FE_DET_MASK_GEN_MODE |
| unsigned char DetThBase; |
| unsigned char DetThStep; |
| }VPP_FE_DET_CTRL_PARAMS, *PVPP_FE_DET_CTRL_PARAMS; |
| |
| |
| typedef enum VPP_CPCB_EE_UNIT_NUM |
| { |
| VPP_CPCB_EE0 = 0, |
| VPP_CPCB_EE1, |
| VPP_CPCB_EE_MAX |
| }VPP_CPCB_EE_UNIT_NUM, *PVPP_CPCB_EE_UNIT_NUM; |
| |
| /*struct for CPCB EE control*/ |
| typedef struct VPP_CPCB_EE_CTRL |
| { |
| unsigned char UpsamplerEn; |
| unsigned char LumaGainEn; |
| unsigned char DetailEn; |
| unsigned char ChromaGainEn; |
| } VPP_CPCB_EE_CTRL, *PVPP_CPCB_EE_CTRL; |
| |
| |
| typedef enum tagVPP_CMU_ACE_REGION |
| { |
| VPP_CMU_ACE_REGION1 = 0, |
| VPP_CMU_ACE_REGION2, |
| VPP_CMU_ACE_REGION3 |
| } VPP_CMU_ACE_REGION; |
| |
| typedef enum tagVPP_CMU_ACE_THOLD |
| { |
| VPP_CMU_ACE_THOLD0 = 0, // Below this is Black crush |
| VPP_CMU_ACE_THOLD1, |
| VPP_CMU_ACE_THOLD2, |
| VPP_CMU_ACE_THOLD3, |
| VPP_CMU_ACE_THOLD4, |
| VPP_CMU_ACE_THOLD5 // Above this is white pull up. |
| } VPP_CMU_ACE_THOLD; |
| |
| |
| typedef enum tagVPP_CMU_ACE_OUTPUT |
| { |
| VPP_CMU_ACE_OUTPUT0 = 0, // White (below th0) |
| VPP_CMU_ACE_OUTPUT5 // Black (above th5) |
| } VPP_CMU_ACE_OUTPUT; |
| |
| |
| typedef enum tagVPP_CMU_ACE_GUARDBAND |
| { |
| VPP_CMU_ACE_GUARDBAND2 = 0, |
| VPP_CMU_ACE_GUARDBAND3 |
| } VPP_CMU_ACE_GUARDBAND; |
| |
| typedef enum tagVPP_CMU_ACE_MAXSLOPE |
| { |
| VPP_CMU_ACE_MAXSLOPE1= 0, |
| VPP_CMU_ACE_MAXSLOPE2, |
| VPP_CMU_ACE_MAXSLOPE3 |
| } VPP_CMU_ACE_MAXSLOPE; |
| |
| |
| typedef enum tagVPP_CMU_ACE_MODE |
| { |
| VPP_CMU_ACE_OFF = 0, |
| VPP_CMU_ACE_MANUAL, |
| VPP_CMU_ACE_LOW, |
| VPP_CMU_ACE_MEDIUM, |
| VPP_CMU_ACE_HIGH, |
| VPP_CMU_ACE_MAX_MODE |
| } VPP_CMU_ACE_MODE; |
| |
| |
| typedef enum tagVPP_CMU_ACE_RANGE |
| { |
| VPP_CMU_ACE_RANGE_0_255 = 0, |
| VPP_CMU_ACE_RANGE_16_236, |
| VPP_CMU_ACE_MAX_RANGE |
| } VPP_CMU_ACE_RANGE; |
| |
| typedef struct tagVPP_CMU_ACE_PARAMS |
| { |
| unsigned char Enable; |
| unsigned char ColorCompensationLevel; |
| unsigned char Crush; |
| unsigned char WeightingFactor1; |
| unsigned char WeightingFactor2; |
| unsigned char WeightingFactor3; |
| |
| unsigned char ThresHold0; |
| unsigned char ThresHold1; |
| unsigned char ThresHold2; |
| unsigned char ThresHold3; |
| unsigned char ThresHold4; |
| unsigned char ThresHold5; |
| |
| unsigned short OutPut0; //White |
| unsigned short OutPut5; // Black |
| |
| unsigned char GuardBand2; |
| unsigned char GuardBand3; |
| |
| unsigned char MaximumSlope1; |
| unsigned char MaximumSlope2; |
| unsigned char MaximumSlope3; |
| |
| }VPP_CMU_ACE_PARAMS, *PVPP_CMU_ACE_PARAMS; |
| |
| |
| /*Enum for FRC SCL unit number*/ |
| typedef enum VPP_FRC_SCL_NUM |
| { |
| VPP_FRC_SCL_MAIN = 0, |
| VPP_FRC_SCL_PIP, |
| VPP_FRC_SCL_OSD, |
| VPP_FRC_SCL_PG, |
| VPP_FRC_SCL_DETAIL, |
| VPP_FRC_SCL_BE, |
| VPP_FRC_SCL_GFX2, |
| VPP_FRC_SCL_MAX |
| }VPP_FRC_SCL_NUM; |
| |
| |
| /*data structure for scaler control*/ |
| typedef struct VPP_SCL_CTRL_T |
| { |
| unsigned char HScalePos; //vertical scaler position, usually set to auto |
| unsigned char InputClr; //input color space |
| unsigned char OsdInput; //whether OSD input |
| unsigned char NLEn; //enable non linear scaler |
| unsigned char BitMode; //input and out put bit mode |
| unsigned char I565; //whether 18 bits 656 input |
| |
| unsigned char HTapNum; |
| unsigned char VTapNum; |
| |
| unsigned char DynamicLoad; // 1: dynamically load coefficient table, 0: don't load coefficient table dynamically. |
| unsigned char ForceSel; // 0: secect coefficients by scaling ratio.1:force selection scaler H coeff, 2:force selection scaler V coeff, 3:force selection both |
| int HSclMode; //if set ForceSel to 1, HSclMode should be set |
| int VSclMode; //if set ForceSel to 1, VSclMode should be set |
| |
| unsigned char CscMode; //used when the input is OSD |
| unsigned char CenterFrac;//used when enable NL scaling |
| |
| } VPP_SCL_CTRL, *PVPP_SCL_CTRL; |
| |
| /*scaler input and output resolution*/ |
| typedef struct VPP_SCL_RES_T |
| { |
| unsigned int IVRes; |
| unsigned int IHRes; |
| unsigned int OVRes; |
| unsigned int OHRes; |
| } VPP_SCL_RES, *PVPP_SCL_RES; |
| |
| typedef struct VPP_SCL_CTRL_PARAM_T |
| { |
| VPP_SCL_RES IORes; |
| VPP_SCL_CTRL SclCtrl; |
| }VPP_SCL_CTRL_PARAM; |
| |
| /************* VPP module external APIs *****************/ |
| |
| /*********************************************** |
| * FUNCTION: create a VPP object |
| * PARAMS: base_addr - VPP object base address |
| * *handle - pointer to object handle |
| * RETURN: MV_THINVPP_OK - succeed |
| * MV_THINVPP_EUNCONFIG - not initialized |
| * MV_THINVPP_ENODEV - no device |
| * MV_THINVPP_ENOMEM - no memory |
| ***********************************************/ |
| //int MV_THINVPP_Create(int base_addr); |
| int MV_THINVPP_Create(void); |
| |
| /*********************************************** |
| * FUNCTION: destroy a VPP object |
| * PARAMS: handle - VPP object handle |
| * RETURN: MV_THINVPP_OK - succeed |
| * MV_THINVPP_EUNCONFIG - not initialized |
| * MV_THINVPP_ENODEV - no device |
| * MV_THINVPP_ENOMEM - no memory |
| ***********************************************/ |
| int MV_THINVPP_Destroy(void); |
| |
| /*************************************** |
| * FUNCTION: VPP reset |
| * INPUT: NONE |
| * RETURN: NONE |
| **************************************/ |
| int MV_THINVPP_Reset(void); |
| |
| /*************************************** |
| * FUNCTION: VPP profile configuration |
| * INPUT: NONE |
| * RETURN: NONE |
| **************************************/ |
| int MV_THINVPP_Config(void); |
| |
| /******************************************************************* |
| * FUNCTION: set CPCB or DV output resolution |
| * INPUT: cpcbID - CPCB(for Berlin) or DV(for Galois) id |
| * resID - id of output resolution |
| * bit_depth - HDMI deep color bit depth |
| * RETURN: MV_THINVPP_OK - SUCCEED |
| * MV_EBADPARAM - invalid parameters |
| * MV_EUNCONFIG - VPP not configured or plane not active |
| * MV_EFRAMEQFULL - frame queue is full |
| * Note: this function has to be called before enabling a plane |
| * which belongs to that CPCB or DV. |
| *******************************************************************/ |
| int MV_THINVPP_SetCPCBOutputResolution(int cpcbID, int resID, int bit_depth); |
| |
| int MV_THINVPP_IsCPCBActive(int cpcbID); |
| |
| int MV_THINVPP_SetMainDisplayFrame(VBUF_INFO *pinfo); |
| |
| /****************************************************************************** |
| * FUNCTION: open a window of a video/graphics plane for display. |
| * the window is defined in end display resolution |
| * INPUT: planeID - id of a video/grahpics plane |
| * *win - pointer to a vpp window struct |
| * *attr - pointer to a vpp window attribute struct |
| * RETURN: MV_THINVPP_OK - SUCCEED |
| * MV_EBADPARAM - invalid parameters |
| * MV_EUNCONFIG - VPP not configured |
| * MV_EUNSUPPORT - plane not connected in configuration |
| * MV_ECMDQFULL - command queue is full |
| ******************************************************************************/ |
| int MV_THINVPP_OpenDispWindow(int planeID, VPP_WIN *win, VPP_WIN_ATTR *attr); |
| |
| int MV_THINVPP_CloseDispWindow(void); |
| |
| int MV_THINVPP_Stop(void); |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #define printz printk |
| //#define printz(...) |
| #endif |