struct vframe_s *toggle_vf,
int flags,
unsigned int sps_h_en,
- unsigned int sps_v_en)
+ unsigned int sps_v_en,
+ unsigned int sps_w_in,
+ unsigned int sps_h_in)
{
int result = 0;
ioctrl_get_hdr_metadata(toggle_vf);
if (toggle_vf)
- lc_process(toggle_vf, sps_h_en, sps_v_en);
+ lc_process(toggle_vf, sps_h_en, sps_v_en,
+ sps_w_in, sps_h_in);
} else {
amvecm_reset_overscan();
result = amvecm_matrix_process(NULL, NULL, flags);
ve_hist_gamma_reset();
- lc_process(NULL, sps_h_en, sps_v_en);
+ lc_process(NULL, sps_h_en, sps_v_en,
+ sps_w_in, sps_h_in);
}
if (!is_dolby_vision_on())
struct vframe_s *vf,
unsigned int sps_h_en,
unsigned int sps_v_en,
+ unsigned int sps_w_in,
+ unsigned int sps_h_in,
int bitdepth)
{
int h_num, v_num;
unsigned int height, width;
static unsigned int vf_height, vf_width;
unsigned int flag;
- const struct vinfo_s *vinfo = get_current_vinfo();
- height = vinfo->height;
- width = vinfo->width;
h_num = 12;
v_num = 8;
return;
}
+ height = sps_h_in << sps_h_en;
+ width = sps_w_in << sps_v_en;
+
vf_height = vf->height;
vf_width = vf->width;
/*flag: 0 for 601; 1 for 709*/
flag = (vf_height > 720) ? 1 : 0;
lc_top_config(enable, h_num, v_num, height, width, bitdepth, flag);
- if (sps_h_en == 1)
- width /= 2;
- if (sps_v_en == 1)
- height /= 2;
+ width = sps_w_in;
+ height = sps_h_in;
lc_curve_ctrl_config(enable, height, width);
lc_stts_blk_config(enable, height, width);
void lc_process(struct vframe_s *vf,
unsigned int sps_h_en,
- unsigned int sps_v_en)
+ unsigned int sps_v_en,
+ unsigned int sps_w_in,
+ unsigned int sps_h_in)
{
int blk_hnum, blk_vnum, dwTemp;
int bitdepth;
dwTemp = READ_VPP_REG(LC_CURVE_HV_NUM);
blk_hnum = (dwTemp >> 8) & 0x1f;
blk_vnum = (dwTemp) & 0x1f;
- lc_config(lc_en, vf, sps_h_en, sps_v_en, bitdepth);
+ lc_config(lc_en, vf, sps_h_en, sps_v_en,
+ sps_w_in, sps_h_in, bitdepth);
/*get each block curve*/
read_lc_curve(blk_vnum, blk_hnum);
lc_read_region(blk_vnum, blk_hnum);
extern void lc_init(int bitdepth);
extern void lc_process(struct vframe_s *vf,
unsigned int sps_h_en,
- unsigned int sps_v_en);
+ unsigned int sps_v_en,
+ unsigned int sps_w_in,
+ unsigned int sps_h_in);
extern void lc_free(void);
#endif
#if ENABLE_UPDATE_HDR_FROM_USER
set_hdr_to_frame(vf);
#endif
-
/*
*two special case:
*case1:4k display case,input buffer not enough &
0,
cur_frame_par ?
cur_frame_par->supsc1_vert_ratio :
+ 0,
+ cur_frame_par ?
+ cur_frame_par->spsc1_w_in :
+ 0,
+ cur_frame_par ?
+ cur_frame_par->spsc1_h_in :
0) == 1)
break;
#endif
-
vsync_toggle_frame(vf, __LINE__);
toggle_frame = vf;
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
: 0,
cur_frame_par ?
cur_frame_par->supsc1_vert_ratio
- : 0) == 1)
+ : 0,
+ cur_frame_par ?
+ cur_frame_par->spsc1_w_in :
+ 0,
+ cur_frame_par ?
+ cur_frame_par->spsc1_h_in :
+ 0) == 1)
break;
#endif
vf = video_vf_get();
0,
cur_frame_par ?
cur_frame_par->supsc1_vert_ratio :
+ 0,
+ cur_frame_par ?
+ cur_frame_par->spsc1_w_in :
+ 0,
+ cur_frame_par ?
+ cur_frame_par->spsc1_h_in :
0);
#endif
/* filter setting management */
struct vframe_s *toggle_vf,
int flags,
unsigned int sps_h_en,
- unsigned int sps_v_en);
+ unsigned int sps_v_en,
+ unsigned int sps_w_in,
+ unsigned int sps_h_in);
extern void refresh_on_vs(struct vframe_s *vf);
extern void pc_mode_process(void);
extern void pq_user_latch_process(void);