546 lines
20 KiB
C
546 lines
20 KiB
C
/*
|
|
* Copyright (c) XMEDIA. All rights reserved.
|
|
*/
|
|
#ifndef __XMEDIA_API_AWB_H__
|
|
#define __XMEDIA_API_AWB_H__
|
|
|
|
#include "xmedia_type.h"
|
|
#include "xmedia_isp.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif // End of #ifdef __cplusplus
|
|
|
|
typedef struct {
|
|
xmedia_u16 red_cast_gain; // RW; Range: [0x100, 0x180]; Format:4.8; R channel gain after CCM
|
|
xmedia_u16 green_cast_gain; // RW; Range: [0x100, 0x180]; Format:4.8; G channel gain after CCM
|
|
xmedia_u16 blue_cast_gain; // RW; Range: [0x100, 0x180]; Format:4.8; B channel gain after CCM
|
|
} xmedia_awb_color_tone_attr;
|
|
|
|
typedef enum {
|
|
XMEDIA_AWB_INDOOR_MODE = 0,
|
|
XMEDIA_AWB_OUTDOOR_MODE,
|
|
XMEDIA_AWB_INDORR_OUTDOOR_MAX
|
|
} xmedia_awb_indoor_outdoor_status;
|
|
|
|
typedef struct {
|
|
xmedia_u16 rgain; // R; Range: [0x0, 0xFFF]; Format:8.8;AWB result of R color channel
|
|
xmedia_u16 grgain; // R; Range: [0x0, 0xFFF]; Format:8.8; AWB result of Gr color channel
|
|
xmedia_u16 gbgain; // R; Range: [0x0, 0xFFF]; Format:8.8; AWB result of Gb color channel
|
|
xmedia_u16 bgain; // R; Range: [0x0, 0xFFF]; Format:8.8; AWB result of B color channel
|
|
xmedia_u16 saturation; // R; Range: [0x0, 0xFF];Format:8.0;Current saturation
|
|
xmedia_u16 ct; // R; Range: [0x0, 0xFFFF];Format:16.0;Detect color temperature, maybe out of color
|
|
// cemeprature range
|
|
xmedia_u16 ccm[XMEDIA_ISP_CCM_MATRIX_SIZE]; // R; Range: [0x0, 0xFFFF];Format:16.0;Current color correction matrix
|
|
|
|
xmedia_u16 ls0_ct; // R; Range: [0x0, 0xFFFF];Format:16.0;color tempearture of primary light source
|
|
xmedia_u16 ls1_ct; // R; Range: [0x0, 0xFFFF];Format:16.0;color tempearture of secondary light source
|
|
xmedia_u16 ls0_area; // R; Range: [0x0, 0xFF];Format:8.0;area of primary light source
|
|
xmedia_u16 ls1_area; // R; Range: [0x0, 0xFF];Format:8.0;area of secondary light source
|
|
|
|
xmedia_u8 multi_degree; // R; Range:[0x0, 0xFF];0 means uniform light source, larger value means multi light source
|
|
xmedia_u16 active_shift; // R; Range;[0x0,0xFF]
|
|
xmedia_u32 first_stable_time; // R, Range: [0x0, 0xFFFFFFFF];Format:32.0;AWB first stable frame number
|
|
xmedia_awb_indoor_outdoor_status inout_status; // R; indoor or outdoor status
|
|
xmedia_s16 bv; // R; Range;[-32768, 32767]; Bv value
|
|
} xmedia_awb_info;
|
|
|
|
typedef struct {
|
|
xmedia_u8 saturation;
|
|
} xmedia_awb_saturation_manual;
|
|
|
|
typedef struct {
|
|
xmedia_u8 iso_num;
|
|
xmedia_u32 iso_level[XMEDIA_ISP_ISO_MAX_COUNT];
|
|
xmedia_u8 sat[XMEDIA_ISP_ISO_MAX_COUNT];
|
|
} xmedia_awb_saturation_auto;
|
|
|
|
typedef struct {
|
|
xmedia_video_operation_mode op_type;
|
|
xmedia_awb_saturation_manual manual_attr;
|
|
xmedia_awb_saturation_auto auto_attr;
|
|
} xmedia_awb_saturation_attr;
|
|
|
|
typedef struct {
|
|
xmedia_bool sat_en;
|
|
xmedia_u16 ccm[XMEDIA_ISP_CCM_MATRIX_SIZE];
|
|
} xmedia_awb_ccm_manual;
|
|
|
|
typedef struct {
|
|
xmedia_u16 ct;
|
|
xmedia_u16 ccm[XMEDIA_ISP_CCM_MATRIX_SIZE];
|
|
} xmedia_awb_ccm_param;
|
|
|
|
typedef struct {
|
|
xmedia_bool iso_act_en;
|
|
xmedia_bool temp_act_en;
|
|
xmedia_u16 ccm_tab_num;
|
|
xmedia_awb_ccm_param ccm_tab[XMEDIA_ISP_CCM_TAB_MAX_NUM];
|
|
} xmedia_awb_ccm_auto;
|
|
|
|
typedef struct {
|
|
xmedia_bool ccm_en;
|
|
xmedia_video_operation_mode op_type;
|
|
xmedia_awb_ccm_manual manual_attr;
|
|
xmedia_awb_ccm_auto auto_attr;
|
|
} xmedia_awb_ccm_attr;
|
|
|
|
typedef struct {
|
|
xmedia_u16 hue_shift[XMEDIA_ISP_COLOR_SECTOR_NUM];
|
|
xmedia_u16 sat_shift[XMEDIA_ISP_COLOR_SECTOR_NUM];
|
|
} xmedia_color_sector_manual;
|
|
|
|
typedef struct {
|
|
xmedia_u8 ct_num;
|
|
xmedia_u32 ct_level[XMEDIA_ISP_CCM_TAB_MAX_NUM];
|
|
xmedia_u16 hue_shift[XMEDIA_ISP_CCM_TAB_MAX_NUM][XMEDIA_ISP_COLOR_SECTOR_NUM];
|
|
xmedia_u16 sat_shift[XMEDIA_ISP_CCM_TAB_MAX_NUM][XMEDIA_ISP_COLOR_SECTOR_NUM];
|
|
} xmedia_color_sector_auto;
|
|
|
|
typedef struct {
|
|
xmedia_bool sector_en;
|
|
xmedia_video_operation_mode op_type;
|
|
xmedia_color_sector_manual manual_attr;
|
|
xmedia_color_sector_auto auto_attr;
|
|
} xmedia_color_sector_attr;
|
|
|
|
typedef enum {
|
|
XMEDIA_AWB_MULTI_LS_SAT = 0,
|
|
XMEDIA_AWB_MULTI_LS_CCM,
|
|
XMEDIA_AWB_MULTI_LS_MAX
|
|
} xmedia_awb_multi_ls_type;
|
|
|
|
typedef struct {
|
|
xmedia_bool enable;
|
|
xmedia_video_operation_mode op_type;
|
|
xmedia_awb_indoor_outdoor_status outdoorstatus;
|
|
xmedia_u32 out_thresh;
|
|
xmedia_u16 low_start;
|
|
xmedia_u16 low_stop;
|
|
xmedia_u16 high_start;
|
|
xmedia_u16 high_stop;
|
|
xmedia_bool green_enhanceen;
|
|
xmedia_u8 out_shift_limit;
|
|
} xmedia_awb_in_out_attr;
|
|
|
|
typedef struct {
|
|
xmedia_u16 white_rgain;
|
|
xmedia_u16 white_bgain;
|
|
xmedia_u16 exp_quant;
|
|
xmedia_u16 light_status;
|
|
xmedia_u16 radius;
|
|
} xmedia_awb_extra_lightsource_info;
|
|
|
|
#define XMEDIA_ISP_AWB_LS_NUM 4
|
|
#define XMEDIA_ISP_AWB_MULTI_CT_NUM 8
|
|
|
|
typedef struct {
|
|
xmedia_u8 tolerance; // RW; Range:[0x0, 0xFF]; Format:8.0; AWB adjust tolerance
|
|
xmedia_u8 iso_num;
|
|
xmedia_u32 iso_level[XMEDIA_ISP_ISO_MAX_COUNT];
|
|
xmedia_u8 zone_radius[XMEDIA_ISP_ISO_MAX_COUNT]; // RW; Range:[0x0, 0xFF]; Format:8.0; radius of AWB blocks
|
|
xmedia_u16 curve_l_limit; // RW; Range:[0x0, 0x100]; Format:9.0; Left limit of AWB Curve, recomend for indoor
|
|
// 0xE0,outdoor 0xE0
|
|
xmedia_u16 curve_r_limit; // RW; Range:[0x100, 0xFFF]; Format:12.0; Right Limit of AWB Curve,recomend for indoor
|
|
// 0x130, outdoor 0x120
|
|
xmedia_bool extra_lighten; // RW; Range:[0, 1]; Format:1.0; Enable special light source function
|
|
xmedia_awb_extra_lightsource_info light_info[XMEDIA_ISP_AWB_LS_NUM];
|
|
xmedia_awb_in_out_attr in_or_out;
|
|
xmedia_bool multilight_source_en; // RW; Range:[0, 1]; Format:1.0;
|
|
xmedia_awb_multi_ls_type multi_ls_type; // Saturation or CCM Tunning
|
|
xmedia_u16 multi_ls_scaler; // RW; Range:[0x0, 0x100]; Format:12.0;
|
|
xmedia_u16 multi_ct_bin[XMEDIA_ISP_AWB_MULTI_CT_NUM]; // RW; Range:[0, 0XFFFF]; Format:16.0;AWB Support divide the
|
|
xmedia_u16 multi_ct_wt[XMEDIA_ISP_AWB_MULTI_CT_NUM]; // RW; Range:[0x0, 0x400];Weight for different color
|
|
// temperature, same value of 8 means CT weight does't work
|
|
xmedia_bool fine_tun_en; // RW; Range:[0x0, 0x1]; Format:1.0;If enabled, skin color scene will be optimized
|
|
xmedia_u8 fine_tun_strength; // RW; Range:[0x0, 0xFF]; Format:8.0;larger value means better performance of skin
|
|
// color scene, but will increase error probability in low color temperature scene
|
|
} xmedia_awb_scene_adj_attr;
|
|
|
|
typedef struct {
|
|
xmedia_bool enable;
|
|
xmedia_video_operation_mode op_type;
|
|
|
|
// RW; Range:[0x0, 0xFFF]; Format:4.8; in Manual Mode, user define the Max Rgain of High Color Temperature
|
|
xmedia_u16 high_rg_limit;
|
|
// RW; Range:[0x0, 0xFFF]; Format:4.8; in Manual Mode, user define the Min Bgain of High Color Temperature
|
|
xmedia_u16 high_bg_limit;
|
|
// RW; Range:[0x0, 0xFFF]; Format:4.8; limited range:[0x0, u16HighRgLimit)
|
|
xmedia_u16 low_rg_limit;
|
|
// RW; Range:[0, 0xFFF]; Format:4.8; limited Range:(u16HighBgLimit, 0xFFF]
|
|
xmedia_u16 low_bg_limit;
|
|
|
|
} xmedia_awb_ct_limit_attr;
|
|
|
|
typedef struct {
|
|
// RW; Range:[0, 1]; Format:1.0;If enabled, statistic parameter cr, cb will change according to iso
|
|
xmedia_bool enable;
|
|
xmedia_u8 iso_num;
|
|
xmedia_u32 iso_level[XMEDIA_ISP_ISO_MAX_COUNT];
|
|
xmedia_u16 crmax[XMEDIA_ISP_ISO_MAX_COUNT]; // RW; Range:[0x0, 0xFFF]; au16CrMax[i] >= au16CrMin[i]
|
|
xmedia_u16 crmin[XMEDIA_ISP_ISO_MAX_COUNT]; // RW; Range:[0x0, 0xFFF]
|
|
xmedia_u16 cbmax[XMEDIA_ISP_ISO_MAX_COUNT]; // RW; Range:[0x0, 0xFFF]; au16CbMax[i] >= au16CbMin[i]
|
|
xmedia_u16 cbmin[XMEDIA_ISP_ISO_MAX_COUNT]; // RW; Range:[0x0, 0xFFF]
|
|
} xmedia_awb_cbcr_track_attr;
|
|
|
|
#define XMEDIA_AWB_LUM_HIST_NUM 6
|
|
|
|
// Defines the parameters of the luminance histogram statistics for white balance
|
|
typedef struct {
|
|
xmedia_bool enable; // RW; Range:[0, 1]; Format:1.0; If enabled, zone weight to awb is combined with zone luma
|
|
xmedia_video_operation_mode op_type; // In auto mode, the weight distribution follows Gaussian distribution
|
|
// RW; Range:[0x0, 0xFF]; Format:8.0; In manual mode, user define luma thresh, thresh[0] = 0, thresh[5] = 0xFF,
|
|
// thresh[i] >= thresh[i-1]
|
|
xmedia_u8 hist_thresh[XMEDIA_AWB_LUM_HIST_NUM];
|
|
// RW; Range:[0x0, 0xFFFF]; Format:16.0; user can define luma weight in both manual and auto mode.
|
|
xmedia_u16 hist_wt[XMEDIA_AWB_LUM_HIST_NUM];
|
|
} xmedia_awb_luma_hist_attr;
|
|
|
|
typedef enum {
|
|
XMEDIA_AWB_ALG_NORMAL = 0,
|
|
XMEDIA_AWB_ALG_AI,
|
|
XMEDIA_AWB_ALG_MAX
|
|
} xmedia_awb_alg;
|
|
|
|
typedef enum {
|
|
XMEDIA_AWB_NORMAL_ALG_LOWCOST = 0,
|
|
XMEDIA_AWB_NORMAL_ALG_ADVANCE,
|
|
XMEDIA_AWB_NORMAL_ALG_MAX
|
|
} xmedia_awb_normal_alg_type;
|
|
|
|
#define XMEDIA_AWB_BAYER_CHN_NUM 4
|
|
#define XMEDIA_AWB_ZONE_ORIG_ROW 32
|
|
#define XMEDIA_AWB_ZONE_ORIG_COLUMN 32
|
|
|
|
typedef struct {
|
|
xmedia_bool enable;
|
|
xmedia_u16 ref_ct;
|
|
xmedia_u16 static_wb[XMEDIA_AWB_BAYER_CHN_NUM];
|
|
xmedia_s32 curve_para[XMEDIA_ISP_AWB_CURVE_PARA_NUM];
|
|
xmedia_awb_normal_alg_type alg_type;
|
|
xmedia_u8 rg_str;
|
|
xmedia_u8 bg_str;
|
|
xmedia_u16 speed;
|
|
xmedia_u16 zone_sel;
|
|
xmedia_u16 high_ct;
|
|
xmedia_u16 low_ct;
|
|
xmedia_awb_ct_limit_attr ct_limit;
|
|
xmedia_bool shift_limit_en;
|
|
xmedia_u8 shift_limit;
|
|
xmedia_bool gain_norm_en;
|
|
xmedia_bool natural_cast_en;
|
|
xmedia_awb_cbcr_track_attr cbcr_track;
|
|
xmedia_awb_luma_hist_attr luma_hist;
|
|
xmedia_bool awb_zone_wt_en;
|
|
xmedia_u8 zone_wt[XMEDIA_AWB_ZONE_ORIG_ROW * XMEDIA_AWB_ZONE_ORIG_COLUMN];
|
|
} xmedia_awb_auto_attr;
|
|
|
|
typedef struct {
|
|
xmedia_u16 rgain;
|
|
xmedia_u16 grgain;
|
|
xmedia_u16 gbgain;
|
|
xmedia_u16 bgain;
|
|
} xmedia_awb_manual_attr;
|
|
|
|
typedef struct {
|
|
xmedia_bool bypass; // RW; Range: [0, 1]; Format:1.0; If enabled, awb will be bypassed
|
|
xmedia_u8 awb_runinterval; // RW; Range: [0x1, 0xFF]; Format:8.0; set the AWB run interval
|
|
xmedia_video_operation_mode op_type;
|
|
xmedia_awb_alg alg_type;
|
|
xmedia_awb_manual_attr manual_attr;
|
|
xmedia_awb_auto_attr auto_attr;
|
|
} xmedia_awb_attr;
|
|
|
|
typedef struct {
|
|
xmedia_u16 raw_white_level;
|
|
xmedia_u16 raw_black_level;
|
|
xmedia_u16 raw_cr_max;
|
|
xmedia_u16 raw_cr_min;
|
|
xmedia_u16 raw_cb_max;
|
|
xmedia_u16 raw_cb_min;
|
|
|
|
xmedia_u16 wdr_mode;
|
|
xmedia_u16 enable;
|
|
xmedia_u16 manual_en;
|
|
xmedia_u16 zone;
|
|
xmedia_u16 high_temp;
|
|
xmedia_u16 low_temp;
|
|
xmedia_u16 ref_temp;
|
|
xmedia_u16 rgain_base;
|
|
xmedia_u16 ggain_base;
|
|
xmedia_u16 bgain_base;
|
|
xmedia_s32 p1;
|
|
xmedia_s32 p2;
|
|
xmedia_s32 q;
|
|
xmedia_s32 a;
|
|
xmedia_s32 c;
|
|
|
|
xmedia_u16 man_sat_en;
|
|
xmedia_u16 sat_target;
|
|
|
|
xmedia_u16 hist_en;
|
|
xmedia_u16 multi_en;
|
|
xmedia_u16 outdoor_en;
|
|
} xmedia_awb_dbg_attr;
|
|
|
|
typedef struct {
|
|
xmedia_u16 count_all;
|
|
xmedia_u16 raw_r_avg;
|
|
xmedia_u16 raw_g_avg;
|
|
xmedia_u16 raw_b_avg;
|
|
xmedia_u16 tk;
|
|
xmedia_u16 weight;
|
|
xmedia_s16 shift;
|
|
} xmedia_awb_zone_dbg;
|
|
|
|
typedef struct {
|
|
xmedia_u32 frm_num_bgn;
|
|
xmedia_u16 global_countall;
|
|
xmedia_u16 global_countmin;
|
|
xmedia_u16 global_countmax;
|
|
xmedia_u16 global_ravg;
|
|
xmedia_u16 global_gavg;
|
|
xmedia_u16 global_bavg;
|
|
xmedia_u16 tk;
|
|
xmedia_u16 rgain;
|
|
xmedia_u16 ggain;
|
|
xmedia_u16 bgain;
|
|
xmedia_u16 ccm[XMEDIA_ISP_CCM_MATRIX_SIZE];
|
|
xmedia_awb_zone_dbg zone_debug[XMEDIA_AWB_ZONE_ORIG_ROW * XMEDIA_AWB_ZONE_ORIG_COLUMN];
|
|
|
|
xmedia_u32 frm_num_end;
|
|
} xmedia_awb_dbg_status;
|
|
|
|
/*
|
|
* 函数功能: 注册awb库
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe无效
|
|
* XMEDIA_ERRCODE_EXIST - awb重复注册
|
|
* XMEDIA_ERRCODE_NULL_PTR - 空指针
|
|
*/
|
|
xmedia_s32 xmedia_awb_register(xmedia_u32 pipe);
|
|
|
|
/*
|
|
* 函数功能: 注销awb库
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入参数无效
|
|
*/
|
|
xmedia_s32 xmedia_awb_unregister(xmedia_u32 pipe);
|
|
|
|
/*
|
|
* 函数功能: 设置awb属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* awb_attr - awb属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_set_attr(xmedia_u32 pipe, const xmedia_awb_attr *awb_attr);
|
|
|
|
/*
|
|
* 函数功能: 获取awb属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* awb_attr - awb属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_get_attr(xmedia_u32 pipe, xmedia_awb_attr *awb_attr);
|
|
|
|
/*
|
|
* 函数功能: 设置awb场景调整属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* awb_scene_adj_attr - 部分场景调整属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_set_scene_adj_attr(xmedia_u32 pipe, const xmedia_awb_scene_adj_attr *awb_scene_adj_attr);
|
|
|
|
/*
|
|
* 函数功能: 获取awb场景调整属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* awb_scene_adj_attr - 部分场景调整属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_get_scene_adj_attr(xmedia_u32 pipe, xmedia_awb_scene_adj_attr *awb_scene_adj_attr);
|
|
|
|
/*
|
|
* 函数功能: 设置ccm属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* ccm_attr - ccm属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_set_ccm_attr(xmedia_u32 pipe, const xmedia_awb_ccm_attr *ccm_attr);
|
|
|
|
/*
|
|
* 函数功能: 获取ccm属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* ccm_attr - ccm属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_get_ccm_attr(xmedia_u32 pipe, xmedia_awb_ccm_attr *ccm_attr);
|
|
|
|
/*
|
|
* 函数功能: 设置ccm 色调和饱和度调整属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* color_sector_attr - ccm 色调和饱和度调整属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_set_color_sector_attr(xmedia_u32 pipe, const xmedia_color_sector_attr *color_sector_attr);
|
|
|
|
/*
|
|
* 函数功能: 获取ccm 色调和饱和度调整参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* color_sector_attr - ccm 色调和饱和度调整属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_get_color_sector_attr(xmedia_u32 pipe, xmedia_color_sector_attr *color_sector_attr);
|
|
|
|
/*
|
|
* 函数功能: 设置饱和度属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* sat_attr - 饱和度属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_set_saturation_attr(xmedia_u32 pipe, const xmedia_awb_saturation_attr *sat_attr);
|
|
|
|
/*
|
|
* 函数功能: 获取饱和度属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* sat_attr - 饱和度属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_get_saturation_attr(xmedia_u32 pipe, xmedia_awb_saturation_attr *sat_attr);
|
|
|
|
/*
|
|
* 函数功能: 更新awb info
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* wb_info - awb info
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_query_info(xmedia_u32 pipe, xmedia_awb_info *wb_info);
|
|
|
|
/*
|
|
* 函数功能: 设置color tone属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* ct_attr - color tone属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_set_color_tone_attr(xmedia_u32 pipe, const xmedia_awb_color_tone_attr *ct_attr);
|
|
|
|
/*
|
|
* 函数功能: 获取color tone属性参数
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* ct_attr - color tone属性
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入pipe参数无效
|
|
* XMEDIA_ERRCODE_INVALID_PARAM - 输入指针参数无效
|
|
* XMEDIA_ERRCODE_NULL_PTR - 获取vreg失败
|
|
*/
|
|
xmedia_s32 xmedia_awb_get_color_tone_attr(xmedia_u32 pipe, xmedia_awb_color_tone_attr *ct_attr);
|
|
|
|
/*
|
|
* 函数功能: 根据色温值计算awbgain
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* awb_attr - awb属性
|
|
* color_temp - 色温
|
|
* shift - 偏移量
|
|
* awb_gain - awb gain
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
*/
|
|
xmedia_s32 xmedia_awb_cal_gain_by_temp(xmedia_u32 pipe, const xmedia_awb_attr *awb_attr, xmedia_u16 color_temp,
|
|
xmedia_s16 shift, xmedia_u16 *awb_gain);
|
|
|
|
/*
|
|
* 函数功能: 设置awb库debug功能, 打印信息输出到内存
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* debug_info - 用户分配的debug信息输出buffer信息
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入参数无效
|
|
*/
|
|
xmedia_s32 xmedia_awb_set_debug_info(xmedia_u32 pipe, xmedia_isp_debug_info *debug_info);
|
|
|
|
/*
|
|
* 函数功能: 设置awb库debug打印等级, 打印信息输出到串口
|
|
* 函数参数:
|
|
* pipe - 输入参数,pipe号
|
|
* debug_level - AWB库debug打印等级 (1: ERROR 2: WARNING 3: NOTICE 4: INFO 5: DEBUG)
|
|
* 返回值:
|
|
* XMEDIA_SUCCESS - 函数执行成功
|
|
* XMEDIA_ERRCODE_INVALID_PIPE_ID - 输入参数无效
|
|
*/
|
|
xmedia_s32 xmedia_awb_set_debug_level(xmedia_u32 pipe, xmedia_u32 debug_level);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif // End of #ifdef __cplusplus
|
|
|
|
#endif
|