mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
amvecm: modify dnlp algorithm
PD#161646: amvecm: modify dnlp algorithm 1. separate dnlp algorithm to dnlp_cal.c 2. modify dnlp algorithm 3. add dnlp curve debug interface Change-Id: Ic5dd20f606b6cd612897c30ec09c6f0535ffefca Signed-off-by: wenfeng.guo <wenfeng.guo@amlogic.com>
This commit is contained in:
@@ -3,5 +3,5 @@
|
||||
#
|
||||
|
||||
obj-$(CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_VECM) += am_vecm.o
|
||||
am_vecm-objs := amve.o amcm.o amcsc.o amvecm.o keystone_correction.o bitdepth.o set_hdr2_v0.o
|
||||
am_vecm-objs := amve.o amcm.o amcsc.o amvecm.o keystone_correction.o bitdepth.o set_hdr2_v0.o dnlp_cal.o
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -73,7 +73,6 @@ enum vlock_param_e {
|
||||
extern struct ve_hist_s video_ve_hist;
|
||||
extern unsigned int ve_size;
|
||||
extern struct ve_dnlp_s am_ve_dnlp;
|
||||
extern struct ve_dnlp_table_s am_ve_new_dnlp;
|
||||
extern struct tcon_gamma_table_s video_gamma_table_r;
|
||||
extern struct tcon_gamma_table_s video_gamma_table_g;
|
||||
extern struct tcon_gamma_table_s video_gamma_table_b;
|
||||
@@ -82,19 +81,6 @@ extern struct tcon_gamma_table_s video_gamma_table_g_adj;
|
||||
extern struct tcon_gamma_table_s video_gamma_table_b_adj;
|
||||
extern struct tcon_rgb_ogo_s video_rgb_ogo;
|
||||
|
||||
extern int glb_scurve[65];
|
||||
extern int glb_clash_curve[65];
|
||||
extern int glb_pst_gamma[65];
|
||||
|
||||
extern int gma_scurve0[65];
|
||||
extern int gma_scurve1[65];
|
||||
extern int gma_scurvet[65];
|
||||
extern int clash_curve[65];
|
||||
extern int clsh_scvbld[65];
|
||||
extern int blk_gma_crv[65];
|
||||
extern int blk_gma_bld[65];
|
||||
extern int blkwht_ebld[65];
|
||||
|
||||
|
||||
extern spinlock_t vpp_lcd_gamma_lock;
|
||||
|
||||
@@ -102,7 +88,6 @@ void ve_on_vs(struct vframe_s *vf);
|
||||
|
||||
void ve_set_bext(struct ve_bext_s *p);
|
||||
void ve_set_dnlp(struct ve_dnlp_s *p);
|
||||
void ve_set_new_dnlp(struct ve_dnlp_table_s *p);
|
||||
void ve_set_dnlp_2(void);
|
||||
void ve_set_hsvs(struct ve_hsvs_s *p);
|
||||
void ve_set_ccor(struct ve_ccor_s *p);
|
||||
@@ -194,6 +179,8 @@ extern int video_rgb_ogo_xvy_mtx;
|
||||
/* 0:enc;1:pll;2:manual pll */
|
||||
extern unsigned int vlock_mode;
|
||||
extern unsigned int vlock_en;
|
||||
extern unsigned int dnlp_sel;
|
||||
extern void ve_dnlp_load_reg(void);
|
||||
|
||||
/*gxlx sr adaptive setting*/
|
||||
extern void amve_sharpness_adaptive_setting(struct vframe_s *vf,
|
||||
|
||||
@@ -56,6 +56,7 @@
|
||||
#include "keystone_correction.h"
|
||||
#include "bitdepth.h"
|
||||
#include <linux/amlogic/media/amdolbyvision/dolby_vision.h>
|
||||
#include "dnlp_cal.h"
|
||||
|
||||
#define pr_amvecm_dbg(fmt, args...)\
|
||||
do {\
|
||||
@@ -1032,21 +1033,16 @@ static long amvecm_ioctl(struct file *file,
|
||||
case AMVECM_IOC_VE_DNLP_DIS:
|
||||
vecm_latch_flag |= FLAG_VE_DNLP_DIS;
|
||||
break;
|
||||
case AMVECM_IOC_VE_DNLP:
|
||||
if (copy_from_user(&am_ve_dnlp,
|
||||
(void __user *)arg,
|
||||
sizeof(struct ve_dnlp_s)))
|
||||
ret = -EFAULT;
|
||||
else
|
||||
ve_dnlp_param_update();
|
||||
break;
|
||||
case AMVECM_IOC_VE_NEW_DNLP:
|
||||
if (copy_from_user(&am_ve_new_dnlp,
|
||||
(void __user *)arg,
|
||||
sizeof(struct ve_dnlp_table_s)))
|
||||
if (copy_from_user(&dnlp_curve_param_load,
|
||||
(void __user *)arg,
|
||||
sizeof(struct ve_dnlp_curve_param_s))) {
|
||||
pr_amvecm_dbg("dnlp load fail\n");
|
||||
ret = -EFAULT;
|
||||
else
|
||||
ve_new_dnlp_param_update();
|
||||
} else {
|
||||
ve_new_dnlp_param_update();
|
||||
pr_amvecm_dbg("dnlp load success\n");
|
||||
}
|
||||
break;
|
||||
case AMVECM_IOC_G_HIST_AVG:
|
||||
argp = (void __user *)arg;
|
||||
@@ -1171,156 +1167,443 @@ static long amvecm_compat_ioctl(struct file *file, unsigned int cmd,
|
||||
}
|
||||
#endif
|
||||
|
||||
static ssize_t amvecm_dnlp_curve_show(struct class *cla,
|
||||
static ssize_t amvecm_dnlp_debug_show(struct class *cla,
|
||||
struct class_attribute *attr, char *buf)
|
||||
{
|
||||
pr_info("echo gma_scurve0 > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo gma_scurve1 > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo gma_scurvet > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo clash_curve > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo clsh_scvbld > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo blk_gma_crv > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo blk_gma_bld > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo blkwht_ebld > /sys/class/amvecm/dnlp_curve\n");
|
||||
|
||||
pr_info("echo wv glb_scurve idx value > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo wv glb_clash_curve idx value > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo wv glb_pst_gamma idx value > /sys/class/amvecm/dnlp_curve\n");
|
||||
|
||||
pr_info("echo glb_scurve > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo glb_clash_curve > /sys/class/amvecm/dnlp_curve\n");
|
||||
pr_info("echo glb_pst_gamma > /sys/class/amvecm/dnlp_curve\n");
|
||||
return 0;
|
||||
}
|
||||
static ssize_t amvecm_dnlp_curve_store(struct class *cla,
|
||||
static void str_sapr_to_d(char *s, int *d, int n)
|
||||
{
|
||||
int i, j, count;
|
||||
long value;
|
||||
char des[9] = {0};
|
||||
|
||||
count = (strlen(s) + n - 2) / (n - 1);
|
||||
for (i = 0; i < count; i++) {
|
||||
for (j = 0; j < n - 1; j++)
|
||||
des[j] = s[j + i * (n - 1)];
|
||||
des[n - 1] = '\0';
|
||||
if (kstrtol(des, 10, &value) < 0)
|
||||
return;
|
||||
d[i] = value;
|
||||
}
|
||||
}
|
||||
|
||||
static void d_convert_str(int num,
|
||||
int num_num, char cur_s[], int char_bit)
|
||||
{
|
||||
char buf[9] = {0};
|
||||
int i, count;
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d", num);
|
||||
count = strlen(buf);
|
||||
for (i = 0; i < count; i++)
|
||||
buf[i + char_bit] = buf[i];
|
||||
for (i = 0; i < char_bit; i++)
|
||||
buf[i] = '0';
|
||||
count = strlen(buf);
|
||||
for (i = 0; i < char_bit; i++)
|
||||
buf[i] = buf[count - char_bit + i];
|
||||
if (num_num > 0) {
|
||||
for (i = 0; i < char_bit; i++)
|
||||
cur_s[i + num_num * char_bit] =
|
||||
buf[i];
|
||||
} else {
|
||||
for (i = 0; i < char_bit; i++)
|
||||
cur_s[i] = buf[i];
|
||||
}
|
||||
}
|
||||
|
||||
static ssize_t amvecm_dnlp_debug_store(struct class *cla,
|
||||
struct class_attribute *attr, const char *buf, size_t count)
|
||||
{
|
||||
int i;
|
||||
long val = 0;
|
||||
unsigned int idx, value;
|
||||
unsigned int num;
|
||||
char *buf_orig, *parm[8] = {NULL};
|
||||
|
||||
int curve_val[65] = {0};
|
||||
char *stemp = NULL;
|
||||
if (!buf)
|
||||
return count;
|
||||
|
||||
stemp = kmalloc(400, GFP_KERNEL);
|
||||
if (!stemp)
|
||||
return 0;
|
||||
buf_orig = kstrdup(buf, GFP_KERNEL);
|
||||
parse_param_amvecm(buf_orig, (char **)&parm);
|
||||
if (!strncmp(parm[0], "wv", 2)) {
|
||||
if (!strncmp(parm[1], "glb_scurve", 10)) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0)
|
||||
return -EINVAL;
|
||||
idx = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0)
|
||||
return -EINVAL;
|
||||
value = val;
|
||||
if (idx > 0 && idx < 66) {
|
||||
glb_scurve[idx-1] = value;
|
||||
pr_amvecm_dbg("idx = %d, value = %d\n",
|
||||
idx, value);
|
||||
}
|
||||
} else if (!strncmp(parm[1], "glb_clash_curve", 15)) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0)
|
||||
return -EINVAL;
|
||||
idx = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0)
|
||||
return -EINVAL;
|
||||
value = val;
|
||||
if (idx > 0 && idx < 66) {
|
||||
glb_clash_curve[idx-1] = value;
|
||||
pr_amvecm_dbg("idx = %d, value = %d\n",
|
||||
idx, value);
|
||||
}
|
||||
} else if (!strncmp(parm[1], "glb_pst_gamma", 13)) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0)
|
||||
return -EINVAL;
|
||||
idx = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0)
|
||||
return -EINVAL;
|
||||
value = val;
|
||||
if (idx > 0 && idx < 66) {
|
||||
glb_pst_gamma[idx-1] = value;
|
||||
pr_amvecm_dbg("idx = %d, value = %d\n",
|
||||
idx, value);
|
||||
if (!strcmp(parm[0], "r")) {/*read param*/
|
||||
if (!strcmp(parm[1], "param")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0;
|
||||
dnlp_parse_cmd[i].value; i++) {
|
||||
pr_info("%d ",
|
||||
*(dnlp_parse_cmd[i].value));
|
||||
}
|
||||
pr_info("\n");
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else {
|
||||
for (i = 0;
|
||||
dnlp_parse_cmd[i].value; i++) {
|
||||
if (!strcmp(parm[1],
|
||||
dnlp_parse_cmd[i].parse_string)) {
|
||||
pr_info("%d\n",
|
||||
*(dnlp_parse_cmd[i].value));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (!strcmp(parm[0], "w")) {/*write param*/
|
||||
for (i = 0; dnlp_parse_cmd[i].value; i++) {
|
||||
if (!strcmp(parm[1],
|
||||
dnlp_parse_cmd[i].parse_string)) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
*(dnlp_parse_cmd[i].value) = val;
|
||||
pr_amvecm_dbg(" %s: %d\n",
|
||||
dnlp_parse_cmd[i].parse_string,
|
||||
*(dnlp_parse_cmd[i].value));
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else if (!strcmp(parm[0], "rc")) {/*read curve*/
|
||||
if (!strcmp(parm[1], "scurv_low")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(dnlp_scurv_low[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((val > 64) || (val < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
pr_info("%d\n", dnlp_scurv_low[val]);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "scurv_mid1")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(dnlp_scurv_mid1[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((val > 64) || (val < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
pr_info("%d\n", dnlp_scurv_mid1[val]);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "scurv_mid2")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(dnlp_scurv_mid2[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((val > 64) || (val < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
pr_info("%d\n", dnlp_scurv_mid2[val]);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "scurv_hgh1")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(dnlp_scurv_hgh1[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((val > 64) || (val < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
pr_info("%d\n", dnlp_scurv_hgh1[val]);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "scurv_hgh2")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(dnlp_scurv_hgh2[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((val > 64) || (val < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
pr_info("%d\n", dnlp_scurv_hgh2[val]);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "gain_var_lut49")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 49; i++)
|
||||
d_convert_str(gain_var_lut49[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((val > 48) || (val < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
pr_info("%d\n", gain_var_lut49[val]);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "wext_gain")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 48; i++)
|
||||
d_convert_str(wext_gain[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((val > 47) || (val < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
pr_info("%d\n", wext_gain[val]);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "ve_dnlp_tgt")) {
|
||||
/*read only curve*/
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(ve_dnlp_tgt[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "GmScurve")) {
|
||||
/*read only curve*/
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(GmScurve[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "clash_curve")) {
|
||||
/*read only curve*/
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(clash_curve[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "clsh_scvbld")) {
|
||||
/*read only curve*/
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(clsh_scvbld[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "blkwht_ebld")) {
|
||||
/*read only curve*/
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 65; i++)
|
||||
d_convert_str(blkwht_ebld[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
} else if (!strcmp(parm[1], "vpp_histgram")) {
|
||||
/*read only curve*/
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
for (i = 0; i < 64; i++)
|
||||
d_convert_str(
|
||||
vpp_hist_param.vpp_histgram[i],
|
||||
i, stemp, 4);
|
||||
pr_info("%s\n", stemp);
|
||||
} else
|
||||
pr_info("error cmd\n");
|
||||
}
|
||||
} else if (!strcmp(parm[0], "wc")) {/*write curve*/
|
||||
if (!strcmp(parm[1], "scurv_low")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
str_sapr_to_d(parm[3], curve_val, 5);
|
||||
for (i = 0; i < 65; i++)
|
||||
dnlp_scurv_low[i] = curve_val[i];
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
num = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((num > 64) || (num < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
dnlp_scurv_low[num] = val;
|
||||
}
|
||||
} else if (!strcmp(parm[1], "scurv_mid1")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
str_sapr_to_d(parm[3], curve_val, 5);
|
||||
for (i = 0; i < 65; i++)
|
||||
dnlp_scurv_mid1[i] = curve_val[i];
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
num = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((num > 64) || (num < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
dnlp_scurv_mid1[num] = val;
|
||||
}
|
||||
} else if (!strcmp(parm[1], "scurv_mid2")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
str_sapr_to_d(parm[3], curve_val, 5);
|
||||
for (i = 0; i < 65; i++)
|
||||
dnlp_scurv_mid2[i] = curve_val[i];
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
num = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((num > 64) || (num < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
dnlp_scurv_mid2[num] = val;
|
||||
}
|
||||
} else if (!strcmp(parm[1], "scurv_hgh1")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
str_sapr_to_d(parm[3], curve_val, 5);
|
||||
for (i = 0; i < 65; i++)
|
||||
dnlp_scurv_hgh1[i] = curve_val[i];
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
num = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((num > 64) || (num < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
dnlp_scurv_hgh1[num] = val;
|
||||
}
|
||||
} else if (!strcmp(parm[1], "scurv_hgh2")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
str_sapr_to_d(parm[3], curve_val, 5);
|
||||
for (i = 0; i < 65; i++)
|
||||
dnlp_scurv_hgh2[i] = curve_val[i];
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
num = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((num > 64) || (num < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
dnlp_scurv_hgh2[num] = val;
|
||||
}
|
||||
} else if (!strcmp(parm[1], "gain_var_lut49")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
str_sapr_to_d(parm[3], curve_val, 5);
|
||||
for (i = 0; i < 49; i++)
|
||||
gain_var_lut49[i] = curve_val[i];
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
num = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((num > 48) || (num < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
gain_var_lut49[num] = val;
|
||||
}
|
||||
} else if (!strcmp(parm[1], "wext_gain")) {
|
||||
if (!strcmp(parm[2], "all")) {
|
||||
str_sapr_to_d(parm[3], curve_val, 5);
|
||||
for (i = 0; i < 48; i++)
|
||||
wext_gain[i] = curve_val[i];
|
||||
} else if (parm[2] != NULL) {
|
||||
if (kstrtoul(parm[2], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
num = val;
|
||||
if (kstrtoul(parm[3], 10, &val) < 0) {
|
||||
kfree(buf_orig);
|
||||
return -EINVAL;
|
||||
}
|
||||
if ((num > 47) || (num < 0))
|
||||
pr_info("error cmd\n");
|
||||
else
|
||||
wext_gain[num] = val;
|
||||
}
|
||||
}
|
||||
} else if (!strcmp(parm[0], "ro")) {
|
||||
if (!strcmp(parm[1], "luma_avg4"))
|
||||
pr_info("%d\n", ro_luma_avg4);
|
||||
else if (!strcmp(parm[1], "var_d8"))
|
||||
pr_info("%d\n", ro_var_d8);
|
||||
else if (!strcmp(parm[1], "scurv_gain"))
|
||||
pr_info("%d\n", ro_scurv_gain);
|
||||
else if (!strcmp(parm[1], "blk_wht_ext0"))
|
||||
pr_info("%d\n", ro_blk_wht_ext0);
|
||||
else if (!strcmp(parm[1], "blk_wht_ext1"))
|
||||
pr_info("%d\n", ro_blk_wht_ext1);
|
||||
else if (!strcmp(parm[1], "dnlp_brightness"))
|
||||
pr_info("%d\n", ro_dnlp_brightness);
|
||||
else
|
||||
pr_info("error cmd\n");
|
||||
}
|
||||
|
||||
if (!strncmp(parm[0], "gma_scurve0", 11)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("gma_scurve0[%d] = %d\n", i, gma_scurve0[i]);
|
||||
} else if (!strncmp(parm[0], "gma_scurve1", 11)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("gma_scurve1[%d] = %d\n", i, gma_scurve1[i]);
|
||||
} else if (!strncmp(parm[0], "gma_scurvet", 11)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("gma_scurvet[%d] = %d\n", i, gma_scurvet[i]);
|
||||
} else if (!strncmp(parm[0], "clash_curve", 11)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("clash_curve[%d] = %d\n", i, clash_curve[i]);
|
||||
} else if (!strncmp(parm[0], "clsh_scvbld", 11)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("clsh_scvbld[%d] = %d\n", i, clsh_scvbld[i]);
|
||||
} else if (!strncmp(parm[0], "blk_gma_crv", 11)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("blk_gma_crv[%d] = %d\n", i, blk_gma_crv[i]);
|
||||
} else if (!strncmp(parm[0], "blk_gma_bld", 11)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("blk_gma_bld[%d] = %d\n", i, blk_gma_bld[i]);
|
||||
} else if (!strncmp(parm[0], "blkwht_ebld", 11)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("blkwht_ebld[%d] = %d\n", i, blkwht_ebld[i]);
|
||||
} else if (!strncmp(parm[0], "glb_scurve", 10)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("glb_scurve[%d] = %d\n", i, glb_scurve[i]);
|
||||
} else if (!strncmp(parm[0], "glb_clash_curve", 15)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("glb_clash_curve[%d] = %d\n",
|
||||
i, glb_clash_curve[i]);
|
||||
} else if (!strncmp(parm[0], "glb_pst_gamma", 13)) {
|
||||
for (i = 0; i < 64; i++)
|
||||
pr_info("glb_pst_gamma[%d] = %d\n",
|
||||
i, glb_pst_gamma[i]);
|
||||
}
|
||||
|
||||
kfree(buf_orig);
|
||||
return count;
|
||||
}
|
||||
static ssize_t amvecm_dnlp_show(struct class *cla,
|
||||
struct class_attribute *attr, char *buf)
|
||||
{
|
||||
return sprintf(buf, "0x%x\n",
|
||||
(am_ve_dnlp.en << 28) | (am_ve_dnlp.rt << 24) |
|
||||
(am_ve_dnlp.rl << 16) | (am_ve_dnlp.black << 8) |
|
||||
(am_ve_dnlp.white << 0));
|
||||
}
|
||||
/* [ 28] en 0~1 */
|
||||
/* [27:20] rt 0~16 */
|
||||
/* [19:16] rl-1 0~15 */
|
||||
/* [15: 8] black 0~16 */
|
||||
/* [ 7: 0] white 0~16 */
|
||||
static ssize_t amvecm_dnlp_store(struct class *cla,
|
||||
struct class_attribute *attr,
|
||||
const char *buf, size_t count)
|
||||
{
|
||||
size_t r;
|
||||
s32 val;
|
||||
|
||||
r = sscanf(buf, "0x%x", &val);
|
||||
if ((r != 1) || (vecm_latch_flag & FLAG_VE_DNLP))
|
||||
return -EINVAL;
|
||||
am_ve_dnlp.en = (val & 0xf0000000) >> 28;
|
||||
am_ve_dnlp.rt = (val & 0x0f000000) >> 24;
|
||||
am_ve_dnlp.rl = (val & 0x00ff0000) >> 16;
|
||||
am_ve_dnlp.black = (val & 0x0000ff00) >> 8;
|
||||
am_ve_dnlp.white = (val & 0x000000ff) >> 0;
|
||||
if (am_ve_dnlp.en > 1)
|
||||
am_ve_dnlp.en = 1;
|
||||
if (am_ve_dnlp.rl > 64)
|
||||
am_ve_dnlp.rl = 64;
|
||||
if (am_ve_dnlp.black > 16)
|
||||
am_ve_dnlp.black = 16;
|
||||
if (am_ve_dnlp.white > 16)
|
||||
am_ve_dnlp.white = 16;
|
||||
vecm_latch_flag |= FLAG_VE_DNLP;
|
||||
kfree(stemp);
|
||||
return count;
|
||||
}
|
||||
|
||||
@@ -3867,6 +4150,9 @@ void init_pq_setting(void)
|
||||
}
|
||||
if (is_meson_gxlx_cpu())
|
||||
amve_sharpness_init();
|
||||
|
||||
/*dnlp alg parameters init*/
|
||||
dnlp_alg_param_init();
|
||||
}
|
||||
/* #endif*/
|
||||
|
||||
@@ -3961,11 +4247,9 @@ static void amvecm_wb_init(bool en)
|
||||
static struct class_attribute amvecm_class_attrs[] = {
|
||||
__ATTR(debug, 0644,
|
||||
amvecm_debug_show, amvecm_debug_store),
|
||||
__ATTR(dnlp, 0644,
|
||||
amvecm_dnlp_show, amvecm_dnlp_store),
|
||||
__ATTR(dnlp_curve, 0644,
|
||||
amvecm_dnlp_curve_show,
|
||||
amvecm_dnlp_curve_store),
|
||||
__ATTR(dnlp_debug, 0644,
|
||||
amvecm_dnlp_debug_show,
|
||||
amvecm_dnlp_debug_store),
|
||||
__ATTR(brightness, 0644,
|
||||
amvecm_brightness_show, amvecm_brightness_store),
|
||||
__ATTR(contrast, 0644,
|
||||
|
||||
3939
drivers/amlogic/media/enhancement/amvecm/dnlp_cal.c
Normal file
3939
drivers/amlogic/media/enhancement/amvecm/dnlp_cal.c
Normal file
File diff suppressed because it is too large
Load Diff
108
drivers/amlogic/media/enhancement/amvecm/dnlp_cal.h
Normal file
108
drivers/amlogic/media/enhancement/amvecm/dnlp_cal.h
Normal file
@@ -0,0 +1,108 @@
|
||||
|
||||
#ifndef __AM_DNLP_CAL_H
|
||||
#define __AM_DNLP_CAL_H
|
||||
|
||||
struct dnlp_alg_param_s {
|
||||
unsigned int dnlp_alg_enable;
|
||||
unsigned int dnlp_respond;
|
||||
unsigned int dnlp_sel;
|
||||
unsigned int dnlp_respond_flag;
|
||||
unsigned int dnlp_smhist_ck;
|
||||
unsigned int dnlp_mvreflsh;
|
||||
unsigned int dnlp_pavg_btsft;
|
||||
unsigned int dnlp_dbg_i2r;
|
||||
unsigned int dnlp_cuvbld_min;
|
||||
unsigned int dnlp_cuvbld_max;
|
||||
unsigned int dnlp_schg_sft;
|
||||
unsigned int dnlp_bbd_ratio_low;
|
||||
unsigned int dnlp_bbd_ratio_hig;
|
||||
unsigned int dnlp_limit_rng;
|
||||
unsigned int dnlp_range_det;
|
||||
unsigned int dnlp_blk_cctr;
|
||||
unsigned int dnlp_brgt_ctrl;
|
||||
unsigned int dnlp_brgt_range;
|
||||
unsigned int dnlp_brght_add;
|
||||
unsigned int dnlp_brght_max;
|
||||
unsigned int dnlp_dbg_adjavg;
|
||||
unsigned int dnlp_auto_rng;
|
||||
unsigned int dnlp_lowrange;
|
||||
unsigned int dnlp_hghrange;
|
||||
unsigned int dnlp_satur_rat;
|
||||
unsigned int dnlp_satur_max;
|
||||
unsigned int dnlp_set_saturtn;
|
||||
unsigned int dnlp_sbgnbnd;
|
||||
unsigned int dnlp_sendbnd;
|
||||
unsigned int dnlp_clashBgn;
|
||||
unsigned int dnlp_clashEnd;
|
||||
unsigned int dnlp_var_th;
|
||||
unsigned int dnlp_clahe_gain_neg;
|
||||
unsigned int dnlp_clahe_gain_pos;
|
||||
unsigned int dnlp_clahe_gain_delta;
|
||||
unsigned int dnlp_mtdbld_rate;
|
||||
unsigned int dnlp_adpmtd_lbnd;
|
||||
unsigned int dnlp_adpmtd_hbnd;
|
||||
unsigned int dnlp_blkext_ofst;
|
||||
unsigned int dnlp_whtext_ofst;
|
||||
unsigned int dnlp_blkext_rate;
|
||||
unsigned int dnlp_whtext_rate;
|
||||
unsigned int dnlp_bwext_div4x_min;
|
||||
unsigned int dnlp_iRgnBgn;
|
||||
unsigned int dnlp_iRgnEnd;
|
||||
unsigned int dnlp_dbg_map;
|
||||
unsigned int dnlp_final_gain;
|
||||
unsigned int dnlp_cliprate_v3;
|
||||
unsigned int dnlp_cliprate_min;
|
||||
unsigned int dnlp_adpcrat_lbnd;
|
||||
unsigned int dnlp_adpcrat_hbnd;
|
||||
unsigned int dnlp_scurv_low_th;
|
||||
unsigned int dnlp_scurv_mid1_th;
|
||||
unsigned int dnlp_scurv_mid2_th;
|
||||
unsigned int dnlp_scurv_hgh1_th;
|
||||
unsigned int dnlp_scurv_hgh2_th;
|
||||
unsigned int dnlp_mtdrate_adp_en;
|
||||
};
|
||||
|
||||
struct dnlp_parse_cmd_s {
|
||||
char *parse_string;
|
||||
unsigned int *value;
|
||||
};
|
||||
|
||||
extern struct ve_dnlp_table_s am_ve_new_dnlp;
|
||||
extern struct ve_dnlp_curve_param_s dnlp_curve_param_load;
|
||||
extern unsigned int ve_dnlp_rt;
|
||||
extern unsigned char ve_dnlp_tgt[65];
|
||||
extern int GmScurve[65];
|
||||
extern int clash_curve[65];
|
||||
extern int clsh_scvbld[65];
|
||||
extern int blkwht_ebld[65];
|
||||
extern bool ve_en;
|
||||
extern unsigned int ve_dnlp_rt;
|
||||
extern unsigned int ve_dnlp_luma_sum;
|
||||
extern ulong ve_dnlp_lpf[64];
|
||||
extern ulong ve_dnlp_reg[16];
|
||||
extern ulong ve_dnlp_reg_def[16];
|
||||
extern struct dnlp_parse_cmd_s dnlp_parse_cmd[];
|
||||
|
||||
extern int dnlp_scurv_low[65];
|
||||
extern int dnlp_scurv_mid1[65];
|
||||
extern int dnlp_scurv_mid2[65];
|
||||
extern int dnlp_scurv_hgh1[65];
|
||||
extern int dnlp_scurv_hgh2[65];
|
||||
extern int gain_var_lut49[49];
|
||||
extern int wext_gain[48];
|
||||
|
||||
extern int ro_luma_avg4;
|
||||
extern int ro_var_d8;
|
||||
extern int ro_scurv_gain;
|
||||
extern int ro_blk_wht_ext0;
|
||||
extern int ro_blk_wht_ext1;
|
||||
extern int ro_dnlp_brightness;
|
||||
|
||||
extern void ve_dnlp_calculate_tgtx_v3(struct vframe_s *vf);
|
||||
extern void ve_set_v3_dnlp(struct ve_dnlp_curve_param_s *p);
|
||||
extern void ve_dnlp_calculate_lpf(void);
|
||||
extern void ve_dnlp_calculate_reg(void);
|
||||
extern void dnlp_alg_param_init(void);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -125,11 +125,10 @@ enum pq_table_name_e {
|
||||
|
||||
#define _VE_CM 'C'
|
||||
|
||||
#define AMVECM_IOC_VE_DNLP _IOW(_VE_CM, 0x21, struct ve_dnlp_s)
|
||||
#define AMVECM_IOC_G_HIST_AVG _IOW(_VE_CM, 0x22, struct ve_hist_s)
|
||||
#define AMVECM_IOC_VE_DNLP_EN _IO(_VE_CM, 0x23)
|
||||
#define AMVECM_IOC_VE_DNLP_DIS _IO(_VE_CM, 0x24)
|
||||
#define AMVECM_IOC_VE_NEW_DNLP _IOW(_VE_CM, 0x25, struct ve_dnlp_table_s)
|
||||
#define AMVECM_IOC_VE_NEW_DNLP _IOW(_VE_CM, 0x25, struct ve_dnlp_curve_param_s)
|
||||
#define AMVECM_IOC_G_HIST_BIN _IOW(_VE_CM, 0x26, struct vpp_hist_param_s)
|
||||
#define AMVECM_IOC_G_HDR_METADATA _IOW(_VE_CM, 0x27, struct hdr_metadata_info_s)
|
||||
|
||||
|
||||
@@ -66,107 +66,92 @@ struct ve_hist_s {
|
||||
int height;
|
||||
int ave;
|
||||
};
|
||||
struct ve_dnlp_table_s {
|
||||
unsigned int en;
|
||||
unsigned int method;
|
||||
unsigned int cliprate;
|
||||
unsigned int lowrange;
|
||||
unsigned int hghrange;
|
||||
unsigned int lowalpha;
|
||||
unsigned int midalpha;
|
||||
unsigned int hghalpha;
|
||||
unsigned int adj_level;
|
||||
unsigned int new_adj_level;
|
||||
unsigned int new_mvreflsh;
|
||||
unsigned int new_gmma_rate;
|
||||
unsigned int new_lowalpha;
|
||||
unsigned int new_hghalpha;
|
||||
unsigned int new_sbgnbnd;
|
||||
unsigned int new_sendbnd;
|
||||
unsigned int new_clashBgn;
|
||||
unsigned int new_clashEnd;
|
||||
unsigned int new_cliprate;
|
||||
unsigned int new_mtdbld_rate;
|
||||
unsigned int new_dnlp_pst_gmarat;
|
||||
unsigned int dnlp_sel;
|
||||
unsigned int dnlp_blk_cctr;/*blk signal add brightness*/
|
||||
unsigned int dnlp_brgt_ctrl;
|
||||
unsigned int dnlp_brgt_range;
|
||||
unsigned int dnlp_brght_add;
|
||||
unsigned int dnlp_brght_max;
|
||||
unsigned int dnlp_almst_wht;
|
||||
unsigned int dnlp_hghbin;/*1*/
|
||||
unsigned int dnlp_hghnum;
|
||||
unsigned int dnlp_lowbin;
|
||||
unsigned int dnlp_lownum;
|
||||
unsigned int dnlp_bkgend;
|
||||
unsigned int dnlp_bkgert;
|
||||
unsigned int dnlp_blkext;
|
||||
unsigned int dnlp_whtext;
|
||||
unsigned int dnlp_bextmx;
|
||||
unsigned int dnlp_wextmx;
|
||||
unsigned int dnlp_smhist_ck;
|
||||
unsigned int dnlp_glb_crate;/*12*/
|
||||
unsigned int dnlp_pstgma_brghtrate;
|
||||
unsigned int dnlp_pstgma_brghtrat1;
|
||||
unsigned int dnlp_wext_autorat;
|
||||
unsigned int dnlp_cliprate_min;
|
||||
unsigned int dnlp_adpcrat_lbnd;
|
||||
unsigned int dnlp_adpcrat_hbnd;
|
||||
unsigned int dnlp_adpmtd_lbnd;
|
||||
unsigned int dnlp_adpmtd_hbnd;
|
||||
unsigned int dnlp_set_bext;
|
||||
unsigned int dnlp_set_wext;
|
||||
unsigned int dnlp_satur_rat;
|
||||
unsigned int dnlp_satur_max;
|
||||
unsigned int blk_prct_rng;
|
||||
unsigned int blk_prct_max;
|
||||
unsigned int dnlp_lowrange;
|
||||
unsigned int dnlp_hghrange;
|
||||
unsigned int dnlp_auto_rng;
|
||||
unsigned int dnlp_bin0_absmax;
|
||||
unsigned int dnlp_bin0_sbtmax;
|
||||
unsigned int dnlp_adpalpha_lrate;
|
||||
unsigned int dnlp_adpalpha_hrate;
|
||||
unsigned int dnlp_lrate00;/*0-64bin curve slope*/
|
||||
unsigned int dnlp_lrate02;
|
||||
unsigned int dnlp_lrate04;
|
||||
unsigned int dnlp_lrate06;
|
||||
unsigned int dnlp_lrate08;
|
||||
unsigned int dnlp_lrate10;
|
||||
unsigned int dnlp_lrate12;
|
||||
unsigned int dnlp_lrate14;
|
||||
unsigned int dnlp_lrate16;
|
||||
unsigned int dnlp_lrate18;
|
||||
unsigned int dnlp_lrate20;
|
||||
unsigned int dnlp_lrate22;
|
||||
unsigned int dnlp_lrate24;
|
||||
unsigned int dnlp_lrate26;
|
||||
unsigned int dnlp_lrate28;
|
||||
unsigned int dnlp_lrate30;
|
||||
unsigned int dnlp_lrate32;
|
||||
unsigned int dnlp_lrate34;
|
||||
unsigned int dnlp_lrate36;
|
||||
unsigned int dnlp_lrate38;
|
||||
unsigned int dnlp_lrate40;
|
||||
unsigned int dnlp_lrate42;
|
||||
unsigned int dnlp_lrate44;
|
||||
unsigned int dnlp_lrate46;
|
||||
unsigned int dnlp_lrate48;
|
||||
unsigned int dnlp_lrate50;
|
||||
unsigned int dnlp_lrate52;
|
||||
unsigned int dnlp_lrate54;
|
||||
unsigned int dnlp_lrate56;
|
||||
unsigned int dnlp_lrate58;
|
||||
unsigned int dnlp_lrate60;
|
||||
unsigned int dnlp_lrate62;
|
||||
};
|
||||
|
||||
struct vpp_hist_param_s {
|
||||
unsigned int vpp_hist_pow;
|
||||
unsigned int vpp_luma_sum;
|
||||
unsigned int vpp_pixel_sum;
|
||||
unsigned short vpp_histgram[64];
|
||||
};
|
||||
struct ve_dnlp_curve_param_s {
|
||||
unsigned int ve_dnlp_scurv_low[65];
|
||||
unsigned int ve_dnlp_scurv_mid1[65];
|
||||
unsigned int ve_dnlp_scurv_mid2[65];
|
||||
unsigned int ve_dnlp_scurv_hgh1[65];
|
||||
unsigned int ve_dnlp_scurv_hgh2[65];
|
||||
unsigned int ve_gain_var_lut49[49];
|
||||
unsigned int ve_wext_gain[48];
|
||||
unsigned int param[100];
|
||||
};
|
||||
enum dnlp_param_e {
|
||||
ve_dnlp_enable = 0,
|
||||
ve_dnlp_respond,
|
||||
ve_dnlp_sel,
|
||||
ve_dnlp_respond_flag,
|
||||
ve_dnlp_smhist_ck,
|
||||
ve_dnlp_mvreflsh,
|
||||
ve_dnlp_pavg_btsft,
|
||||
ve_dnlp_dbg_i2r,
|
||||
ve_dnlp_cuvbld_min,
|
||||
ve_dnlp_cuvbld_max,
|
||||
ve_dnlp_schg_sft,
|
||||
ve_dnlp_bbd_ratio_low,
|
||||
ve_dnlp_bbd_ratio_hig,
|
||||
ve_dnlp_limit_rng,
|
||||
ve_dnlp_range_det,
|
||||
ve_dnlp_blk_cctr,
|
||||
ve_dnlp_brgt_ctrl,
|
||||
ve_dnlp_brgt_range,
|
||||
ve_dnlp_brght_add,
|
||||
ve_dnlp_brght_max,
|
||||
ve_dnlp_dbg_adjavg,
|
||||
ve_dnlp_auto_rng,
|
||||
ve_dnlp_lowrange,
|
||||
ve_dnlp_hghrange,
|
||||
ve_dnlp_satur_rat,
|
||||
ve_dnlp_satur_max,
|
||||
ve_dnlp_set_saturtn,
|
||||
ve_dnlp_sbgnbnd,
|
||||
ve_dnlp_sendbnd,
|
||||
ve_dnlp_clashBgn,
|
||||
ve_dnlp_clashEnd,
|
||||
ve_dnlp_var_th,
|
||||
ve_dnlp_clahe_gain_neg,
|
||||
ve_dnlp_clahe_gain_pos,
|
||||
ve_dnlp_clahe_gain_delta,
|
||||
ve_dnlp_mtdbld_rate,
|
||||
ve_dnlp_adpmtd_lbnd,
|
||||
ve_dnlp_adpmtd_hbnd,
|
||||
ve_dnlp_blkext_ofst,
|
||||
ve_dnlp_whtext_ofst,
|
||||
ve_dnlp_blkext_rate,
|
||||
ve_dnlp_whtext_rate,
|
||||
ve_dnlp_bwext_div4x_min,
|
||||
ve_dnlp_iRgnBgn,
|
||||
ve_dnlp_iRgnEnd,
|
||||
ve_dnlp_dbg_map,
|
||||
ve_dnlp_final_gain,
|
||||
ve_dnlp_cliprate_v3,
|
||||
ve_dnlp_cliprate_min,
|
||||
ve_dnlp_adpcrat_lbnd,
|
||||
ve_dnlp_adpcrat_hbnd,
|
||||
ve_dnlp_scurv_low_th,
|
||||
ve_dnlp_scurv_mid1_th,
|
||||
ve_dnlp_scurv_mid2_th,
|
||||
ve_dnlp_scurv_hgh1_th,
|
||||
ve_dnlp_scurv_hgh2_th,
|
||||
ve_dnlp_mtdrate_adp_en,
|
||||
ve_dnlp_param_max,
|
||||
};
|
||||
enum dnlp_curve_e {
|
||||
ve_scurv_low = 1000,
|
||||
ve_scurv_mid1,
|
||||
ve_scurv_mid2,
|
||||
ve_scurv_hgh1,
|
||||
ve_scurv_hgh2,
|
||||
ve_curv_var_lut49,
|
||||
ve_curv_wext_gain,
|
||||
};
|
||||
#else
|
||||
struct ve_dnlp_s {
|
||||
unsigned char en;
|
||||
|
||||
Reference in New Issue
Block a user