blob: 33d37e5640e5b7ccb947a31058229b53e93dcaf3 [file] [log] [blame]
/*******************************************************************************
* 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
typedef enum {
THINVPP_OPTION_NONE = 0,
THINVPP_OPTION_SHOWLOGO = 1,
THINVPP_OPTION_DEFAULT = THINVPP_OPTION_NONE,
} THINVPP_OPTION;
/* 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,
#if (BERLIN_CHIP_VERSION >= BERLIN_BG2)
VPP_FRC_SCL_GFX2,
#endif
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 *****************/
int MV_THINVPP_Create(int base_addr, unsigned options);
int MV_THINVPP_Destroy(void);
int MV_THINVPP_Reset(void);
int MV_THINVPP_Config(void);
int MV_THINVPP_SetCPCBOutputResolution(int cpcbID, int resID, int bit_depth);
int MV_THINVPP_IsCPCBActive(int cpcbID);
int MV_THINVPP_SetMainRefWindow(const VPP_WIN *win);
int MV_THINVPP_SetMainDisplayFrame(VBUF_INFO *pinfo);
int MV_THINVPP_OpenDispWindow(int planeID, const VPP_WIN *win, const VPP_WIN_ATTR *attr);
int MV_THINVPP_CloseDispWindow(void);
int MV_THINVPP_Stop(void);
#ifdef __cplusplus
}
#endif
#endif