mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-11 05:17:10 +09:00
media_modules: revised dolby vision macro control for g12a
PD#157605: media_modules: revised dolby vision macro control for g12a Change-Id: I4a6bb3e904782d87916ea303c74da9e47404e366 Signed-off-by: zhilei.wu <zhilei.wu@amlogic.com>
This commit is contained in:
@@ -16,6 +16,7 @@ CONFIGS := CONFIG_AMLOGIC_MEDIA_VDEC_MPEG12=m \
|
||||
CONFIG_AMLOGIC_MEDIA_VDEC_AVS=m \
|
||||
CONFIG_AMLOGIC_MEDIA_VENC_H264=m \
|
||||
CONFIG_AMLOGIC_MEDIA_VECN_H265=m \
|
||||
CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION=y
|
||||
CONFIG_AMLOGIC_MEDIA_GE2D=y
|
||||
|
||||
define copy-media-modules
|
||||
|
||||
@@ -124,7 +124,7 @@ static unsigned int fixed_frame_rate_mode;
|
||||
static unsigned int error_recovery_mode_in;
|
||||
static int start_decode_buf_level = 0x8000;
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
/*to make reorder size difference of bl and el not too big*/
|
||||
static unsigned int reorder_dpb_size_margin_dv = 16;
|
||||
#endif
|
||||
@@ -186,7 +186,7 @@ static unsigned int step[H264_DEV_NUM];
|
||||
static u32 prefix_aux_buf_size = (16 * 1024);
|
||||
static u32 suffix_aux_buf_size;
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
static u32 dv_toggle_prov_name;
|
||||
|
||||
static u32 dolby_meta_with_el;
|
||||
@@ -374,7 +374,7 @@ struct buffer_spec_s {
|
||||
#endif
|
||||
char *aux_data_buf;
|
||||
int aux_data_size;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
unsigned char dv_enhance_exist;
|
||||
#endif
|
||||
int canvas_pos;
|
||||
@@ -662,7 +662,7 @@ struct vdec_h264_hw_s {
|
||||
unsigned int total_read_size_pre;
|
||||
unsigned int total_read_size;
|
||||
unsigned int frame_count_pre;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
u8 switch_dvlayer_flag;
|
||||
u8 got_valid_nal;
|
||||
#endif
|
||||
@@ -2001,13 +2001,13 @@ static void dump_aux_buf(struct vdec_h264_hw_s *hw)
|
||||
|
||||
static void config_decode_mode(struct vdec_h264_hw_s *hw)
|
||||
{
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
struct vdec_s *vdec = hw_to_vdec(hw);
|
||||
#endif
|
||||
if (input_frame_based(hw_to_vdec(hw)))
|
||||
WRITE_VREG(H264_DECODE_MODE,
|
||||
DECODE_MODE_MULTI_FRAMEBASE);
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
else if (vdec->slave)
|
||||
WRITE_VREG(H264_DECODE_MODE,
|
||||
(hw->got_valid_nal << 8) |
|
||||
@@ -2688,7 +2688,7 @@ static int vh264_event_cb(int type, void *data, void *op_arg)
|
||||
hw->buffer_spec[buf_spec_num].aux_data_buf;
|
||||
req->aux_size =
|
||||
hw->buffer_spec[buf_spec_num].aux_data_size;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
req->dv_enhance_exist =
|
||||
hw->buffer_spec[buf_spec_num].dv_enhance_exist;
|
||||
#else
|
||||
@@ -2836,7 +2836,7 @@ static int vh264_set_params(struct vdec_h264_hw_s *hw,
|
||||
unsigned int crop_infor, crop_bottom, crop_right;
|
||||
unsigned int used_reorder_dpb_size_margin
|
||||
= reorder_dpb_size_margin;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (vdec->master || vdec->slave)
|
||||
used_reorder_dpb_size_margin =
|
||||
reorder_dpb_size_margin_dv;
|
||||
@@ -3623,7 +3623,7 @@ static irqreturn_t vh264_isr_thread_fn(struct vdec_s *vdec)
|
||||
pic_done_proc:
|
||||
reset_process_time(hw);
|
||||
if (p_H264_Dpb->mVideo.dec_picture) {
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
DEL_EXIST(hw,
|
||||
p_H264_Dpb->mVideo.dec_picture) = 0;
|
||||
if (vdec->master) {
|
||||
@@ -3641,7 +3641,7 @@ pic_done_proc:
|
||||
hw->chunk->pts;
|
||||
p_H264_Dpb->mVideo.dec_picture->pts64 =
|
||||
hw->chunk->pts64;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
} else if (vdec->master) {
|
||||
/*dv enhance layer,
|
||||
do not checkout pts*/
|
||||
@@ -3739,7 +3739,7 @@ pic_done_proc:
|
||||
hw->decode_pic_count);
|
||||
/* WRITE_VREG(DPB_STATUS_REG, H264_ACTION_SEARCH_HEAD); */
|
||||
hw->dec_result = DEC_RESULT_DONE;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (vdec->slave &&
|
||||
dec_dpb_status == H264_FIND_NEXT_DVEL_NAL) {
|
||||
struct vdec_h264_hw_s *hw_el =
|
||||
@@ -3758,7 +3758,7 @@ pic_done_proc:
|
||||
}
|
||||
#endif
|
||||
vdec_schedule_work(&hw->work);
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
} else if (
|
||||
(dec_dpb_status == H264_FIND_NEXT_PIC_NAL) ||
|
||||
(dec_dpb_status == H264_FIND_NEXT_DVEL_NAL)) {
|
||||
@@ -3775,7 +3775,7 @@ pic_done_proc:
|
||||
if (dpb_is_debug(DECODE_ID(hw),
|
||||
PRINT_FLAG_DPB_DETAIL))
|
||||
dump_aux_buf(hw);
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (vdec->dolby_meta_with_el || vdec->slave) {
|
||||
if (hw->last_dec_picture)
|
||||
set_aux_data(hw, hw->last_dec_picture,
|
||||
@@ -3801,7 +3801,7 @@ pic_done_proc:
|
||||
hw->last_dec_picture, 0, 0, NULL);
|
||||
#endif
|
||||
}
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
hw->switch_dvlayer_flag = 0;
|
||||
hw->got_valid_nal = 1;
|
||||
#endif
|
||||
@@ -4113,7 +4113,7 @@ static void vmh264_dump_state(struct vdec_s *vdec)
|
||||
hw->buffer_spec[i].canvas_pos,
|
||||
hw->buffer_spec[i].vf_ref
|
||||
);
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
dpb_print_cont(DECODE_ID(hw), 0,
|
||||
"dv_el_exist %d",
|
||||
hw->buffer_spec[i].dv_enhance_exist
|
||||
@@ -5036,7 +5036,7 @@ result_done:
|
||||
/* mark itself has all HW resource released and input released */
|
||||
vdec_set_status(hw_to_vdec(hw), VDEC_STATUS_CONNECTED);
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (hw->switch_dvlayer_flag) {
|
||||
if (vdec->slave)
|
||||
vdec_set_next_sched(vdec, vdec->slave);
|
||||
@@ -5056,7 +5056,7 @@ static bool run_ready(struct vdec_s *vdec)
|
||||
struct vdec_h264_hw_s *hw =
|
||||
(struct vdec_h264_hw_s *)vdec->private;
|
||||
|
||||
#ifndef CONFIG_AM_VDEC_DV
|
||||
#ifndef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (vdec->master)
|
||||
return false;
|
||||
#endif
|
||||
@@ -5126,7 +5126,7 @@ static void run(struct vdec_s *vdec,
|
||||
}
|
||||
}
|
||||
/* hw->chunk = vdec_prepare_input(vdec); */
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (vdec->slave || vdec->master)
|
||||
vdec_set_flag(vdec, VDEC_FLAG_SELF_INPUT_CONTEXT);
|
||||
#endif
|
||||
@@ -5508,7 +5508,7 @@ static int ammvdec_h264_probe(struct platform_device *pdev)
|
||||
if (pdata->use_vfm_path)
|
||||
snprintf(pdata->vf_provider_name, VDEC_PROVIDER_NAME_SIZE,
|
||||
VFM_DEC_PROVIDER_NAME);
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
else if (vdec_dual(pdata)) {
|
||||
if (dv_toggle_prov_name) /*debug purpose*/
|
||||
snprintf(pdata->vf_provider_name,
|
||||
@@ -5676,7 +5676,7 @@ static struct mconfig hm264_configs[] = {
|
||||
MC_PI32("force_disp_bufspec_num", &force_disp_bufspec_num),
|
||||
MC_PU32("prefix_aux_buf_size", &prefix_aux_buf_size),
|
||||
MC_PU32("suffix_aux_buf_size", &suffix_aux_buf_size),
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
MC_PU32("reorder_dpb_size_margin_dv", &reorder_dpb_size_margin_dv),
|
||||
MC_PU32("dv_toggle_prov_name", &dv_toggle_prov_name),
|
||||
MC_PU32("dolby_meta_with_el", &dolby_meta_with_el),
|
||||
@@ -5734,7 +5734,7 @@ MODULE_PARM_DESC(frame_max_data_packet, "\n amvdec_h264 frame_max_data_packet\n"
|
||||
module_param(reorder_dpb_size_margin, uint, 0664);
|
||||
MODULE_PARM_DESC(reorder_dpb_size_margin, "\n ammvdec_h264 reorder_dpb_size_margin\n");
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
module_param(reorder_dpb_size_margin_dv, uint, 0664);
|
||||
MODULE_PARM_DESC(reorder_dpb_size_margin_dv,
|
||||
"\n ammvdec_h264 reorder_dpb_size_margin_dv\n");
|
||||
@@ -5776,7 +5776,7 @@ MODULE_PARM_DESC(prefix_aux_buf_size, "\n prefix_aux_buf_size\n");
|
||||
module_param(suffix_aux_buf_size, uint, 0664);
|
||||
MODULE_PARM_DESC(suffix_aux_buf_size, "\n suffix_aux_buf_size\n");
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
module_param(dv_toggle_prov_name, uint, 0664);
|
||||
MODULE_PARM_DESC(dv_toggle_prov_name, "\n dv_toggle_prov_name\n");
|
||||
|
||||
|
||||
@@ -403,7 +403,7 @@ static u32 fr_hint_status;
|
||||
* bit 8, debug flag
|
||||
*/
|
||||
static u32 parser_sei_enable;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
static u32 parser_dolby_vision_enable = 1;
|
||||
static u32 dolby_meta_with_el;
|
||||
#endif
|
||||
@@ -430,7 +430,7 @@ static unsigned int not_run_ready[MAX_DECODE_INSTANCE_NUM];
|
||||
static unsigned char get_idx(struct hevc_state_s *hevc);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
static u32 dv_toggle_prov_name;
|
||||
|
||||
static u32 dv_debug;
|
||||
@@ -1220,7 +1220,7 @@ struct PIC_s {
|
||||
int m_aiRefPOCList1[MAX_SLICE_NUM][16];
|
||||
/*buffer */
|
||||
unsigned int header_adr;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
unsigned char dv_enhance_exist;
|
||||
#endif
|
||||
char *aux_data_buf;
|
||||
@@ -1319,7 +1319,7 @@ struct hevc_state_s {
|
||||
unsigned int last_lcu_idx;
|
||||
unsigned int decode_timeout_count;
|
||||
unsigned int timeout_num;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
unsigned char switch_dvlayer_flag;
|
||||
#endif
|
||||
unsigned char start_parser_type;
|
||||
@@ -4995,7 +4995,7 @@ static int hevc_slice_segment_header_process(struct hevc_state_s *hevc,
|
||||
union param_u *rpm_param,
|
||||
int decode_pic_begin)
|
||||
{
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
struct vdec_s *vdec = hw_to_vdec(hevc);
|
||||
#endif
|
||||
int i;
|
||||
@@ -5263,7 +5263,7 @@ static int hevc_slice_segment_header_process(struct hevc_state_s *hevc,
|
||||
if (hevc->mmu_enable)
|
||||
recycle_mmu_bufs(hevc);
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (vdec->master) {
|
||||
struct hevc_state_s *hevc_ba =
|
||||
(struct hevc_state_s *)
|
||||
@@ -5288,7 +5288,7 @@ static int hevc_slice_segment_header_process(struct hevc_state_s *hevc,
|
||||
#ifdef MULTI_INSTANCE_SUPPORT
|
||||
hevc->decoding_pic = hevc->cur_pic;
|
||||
#endif
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
hevc->cur_pic->dv_enhance_exist = 0;
|
||||
if (vdec->master == NULL &&
|
||||
vdec->slave == NULL)
|
||||
@@ -5305,7 +5305,7 @@ static int hevc_slice_segment_header_process(struct hevc_state_s *hevc,
|
||||
return -1;
|
||||
}
|
||||
} else {
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (vdec->master == NULL &&
|
||||
vdec->slave == NULL) {
|
||||
set_aux_data(hevc, hevc->cur_pic, 1, 0);
|
||||
@@ -5330,7 +5330,7 @@ static int hevc_slice_segment_header_process(struct hevc_state_s *hevc,
|
||||
if (hevc->cur_pic == NULL)
|
||||
return -1;
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
hevc->cur_pic->dv_enhance_exist = 0;
|
||||
if (vdec->master == NULL &&
|
||||
vdec->slave == NULL)
|
||||
@@ -6416,7 +6416,7 @@ static int vh265_event_cb(int type, void *data, void *op_arg)
|
||||
&& hevc->m_PIC[index]) {
|
||||
req->aux_buf = hevc->m_PIC[index]->aux_data_buf;
|
||||
req->aux_size = hevc->m_PIC[index]->aux_data_size;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
req->dv_enhance_exist =
|
||||
hevc->m_PIC[index]->dv_enhance_exist;
|
||||
#else
|
||||
@@ -6557,7 +6557,7 @@ static void update_vf_memhandle(struct hevc_state_s *hevc,
|
||||
}
|
||||
static int prepare_display_buf(struct hevc_state_s *hevc, struct PIC_s *pic)
|
||||
{
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
struct vdec_s *vdec = hw_to_vdec(hevc);
|
||||
#endif
|
||||
struct vframe_s *vf = NULL;
|
||||
@@ -6586,7 +6586,7 @@ static int prepare_display_buf(struct hevc_state_s *hevc, struct PIC_s *pic)
|
||||
}
|
||||
/* if (pts_lookup_offset(PTS_TYPE_VIDEO,
|
||||
stream_offset, &vf->pts, 0) != 0) { */
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
else if (vdec->master == NULL) {
|
||||
#else
|
||||
else {
|
||||
@@ -6609,7 +6609,7 @@ static int prepare_display_buf(struct hevc_state_s *hevc, struct PIC_s *pic)
|
||||
hevc->pts_hit++;
|
||||
#endif
|
||||
#ifdef MULTI_INSTANCE_SUPPORT
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
} else {
|
||||
vf->pts = 0;
|
||||
vf->pts_us64 = 0;
|
||||
@@ -7250,7 +7250,7 @@ static int hevc_recover(struct hevc_state_s *hevc)
|
||||
WRITE_VREG(NAL_SEARCH_CTL,
|
||||
READ_VREG(NAL_SEARCH_CTL)
|
||||
| ((parser_sei_enable & 0x7) << 17));
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
WRITE_VREG(NAL_SEARCH_CTL,
|
||||
READ_VREG(NAL_SEARCH_CTL) |
|
||||
((parser_dolby_vision_enable & 0x1) << 20));
|
||||
@@ -7348,7 +7348,7 @@ static void dump_aux_buf(struct hevc_state_s *hevc)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
static void dolby_get_meta(struct hevc_state_s *hevc)
|
||||
{
|
||||
struct vdec_s *vdec = hw_to_vdec(hevc);
|
||||
@@ -7391,7 +7391,7 @@ static irqreturn_t vh265_isr_thread_fn(int irq, void *data)
|
||||
struct hevc_state_s *hevc = (struct hevc_state_s *) data;
|
||||
unsigned int dec_status = hevc->dec_status;
|
||||
int i, ret;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
struct vdec_s *vdec = hw_to_vdec(hevc);
|
||||
#endif
|
||||
if (hevc->eos)
|
||||
@@ -7424,7 +7424,7 @@ static irqreturn_t vh265_isr_thread_fn(int irq, void *data)
|
||||
WRITE_VREG(NAL_SEARCH_CTL, 0x1);/* manual parser NAL */
|
||||
}
|
||||
if ((get_dbg_flag(hevc) & H265_DEBUG_NO_EOS_SEARCH_DONE)
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
|| vdec->master
|
||||
|| vdec->slave
|
||||
#endif
|
||||
@@ -7435,7 +7435,7 @@ static irqreturn_t vh265_isr_thread_fn(int irq, void *data)
|
||||
WRITE_VREG(NAL_SEARCH_CTL,
|
||||
READ_VREG(NAL_SEARCH_CTL)
|
||||
| ((parser_sei_enable & 0x7) << 17));
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
WRITE_VREG(NAL_SEARCH_CTL,
|
||||
READ_VREG(NAL_SEARCH_CTL) |
|
||||
((parser_dolby_vision_enable & 0x1) << 20));
|
||||
@@ -7517,7 +7517,7 @@ static irqreturn_t vh265_isr_thread_fn(int irq, void *data)
|
||||
goto pic_done;
|
||||
} else {
|
||||
if (
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
vdec->master ||
|
||||
vdec->slave ||
|
||||
#endif
|
||||
@@ -7566,7 +7566,7 @@ pic_done:
|
||||
}
|
||||
|
||||
return IRQ_HANDLED;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
} else if (dec_status == HEVC_FIND_NEXT_PIC_NAL ||
|
||||
dec_status == HEVC_FIND_NEXT_DVEL_NAL) {
|
||||
if (hevc->m_ins_flag) {
|
||||
@@ -7646,7 +7646,7 @@ pic_done:
|
||||
struct PIC_s *pic;
|
||||
|
||||
hevc_print(hevc, 0, "get NAL_UNIT_EOS, flush output\n");
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if ((vdec->master || vdec->slave) &&
|
||||
READ_VREG(HEVC_AUX_DATA_SIZE) != 0) {
|
||||
if (hevc->decoding_pic)
|
||||
@@ -7771,7 +7771,7 @@ pic_done:
|
||||
|
||||
if ((get_dbg_flag(hevc) &
|
||||
H265_DEBUG_NO_EOS_SEARCH_DONE)
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
|| vdec->master
|
||||
|| vdec->slave
|
||||
#endif
|
||||
@@ -7783,7 +7783,7 @@ pic_done:
|
||||
WRITE_VREG(NAL_SEARCH_CTL,
|
||||
READ_VREG(NAL_SEARCH_CTL)
|
||||
| ((parser_sei_enable & 0x7) << 17));
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
WRITE_VREG(NAL_SEARCH_CTL,
|
||||
READ_VREG(NAL_SEARCH_CTL) |
|
||||
((parser_dolby_vision_enable & 0x1) << 20));
|
||||
@@ -7876,7 +7876,7 @@ pic_done:
|
||||
hevc->param.p.vui_time_scale_lo);
|
||||
}
|
||||
if (
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
vdec->master == NULL &&
|
||||
vdec->slave == NULL &&
|
||||
#endif
|
||||
@@ -8560,7 +8560,7 @@ static void H265_DECODE_INIT(void)
|
||||
|
||||
static void config_decode_mode(struct hevc_state_s *hevc)
|
||||
{
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
struct vdec_s *vdec = hw_to_vdec(hevc);
|
||||
#endif
|
||||
unsigned decode_mode;
|
||||
@@ -8569,7 +8569,7 @@ static void config_decode_mode(struct hevc_state_s *hevc)
|
||||
else if (vdec_frame_based(hw_to_vdec(hevc)))
|
||||
decode_mode =
|
||||
DECODE_MODE_MULTI_FRAMEBASE;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
else if (vdec->slave)
|
||||
decode_mode =
|
||||
(hevc->start_parser_type << 8)
|
||||
@@ -8593,7 +8593,7 @@ static void config_decode_mode(struct hevc_state_s *hevc)
|
||||
|
||||
static void vh265_prot_init(struct hevc_state_s *hevc)
|
||||
{
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
struct vdec_s *vdec = hw_to_vdec(hevc);
|
||||
#endif
|
||||
/* H265_DECODE_INIT(); */
|
||||
@@ -8633,7 +8633,7 @@ static void vh265_prot_init(struct hevc_state_s *hevc)
|
||||
WRITE_VREG(NAL_SEARCH_CTL, ctl_val);
|
||||
}
|
||||
if ((get_dbg_flag(hevc) & H265_DEBUG_NO_EOS_SEARCH_DONE)
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
|| vdec->master
|
||||
|| vdec->slave
|
||||
#endif
|
||||
@@ -8643,7 +8643,7 @@ static void vh265_prot_init(struct hevc_state_s *hevc)
|
||||
WRITE_VREG(NAL_SEARCH_CTL,
|
||||
READ_VREG(NAL_SEARCH_CTL)
|
||||
| ((parser_sei_enable & 0x7) << 17));
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
WRITE_VREG(NAL_SEARCH_CTL,
|
||||
READ_VREG(NAL_SEARCH_CTL) |
|
||||
((parser_dolby_vision_enable & 0x1) << 20));
|
||||
@@ -9364,7 +9364,7 @@ static void vh265_work(struct work_struct *work)
|
||||
|
||||
check_pic_decoded_error(hevc,
|
||||
hevc->pic_decoded_lcu_idx);
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
#if 1
|
||||
if (vdec->slave) {
|
||||
if (dv_debug & 0x1)
|
||||
@@ -9390,7 +9390,7 @@ static void vh265_work(struct work_struct *work)
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
hevc->shift_byte_count_lo
|
||||
= READ_VREG(HEVC_SHIFT_BYTE_COUNT);
|
||||
if (vdec->slave) {
|
||||
@@ -9426,7 +9426,7 @@ static void vh265_work(struct work_struct *work)
|
||||
} else if (hevc->dec_result == DEC_RESULT_EOS) {
|
||||
struct PIC_s *pic;
|
||||
hevc->eos = 1;
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if ((vdec->master || vdec->slave) &&
|
||||
READ_VREG(HEVC_AUX_DATA_SIZE) != 0)
|
||||
dolby_get_meta(hevc);
|
||||
@@ -9438,7 +9438,7 @@ static void vh265_work(struct work_struct *work)
|
||||
"%s: end of stream, last dec poc %d => 0x%pf\n",
|
||||
__func__, hevc->curr_POC, pic);
|
||||
flush_output(hevc, pic);
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
hevc->shift_byte_count_lo
|
||||
= READ_VREG(HEVC_SHIFT_BYTE_COUNT);
|
||||
if (vdec->slave) {
|
||||
@@ -9490,7 +9490,7 @@ static void vh265_work(struct work_struct *work)
|
||||
/* mark itself has all HW resource released and input released */
|
||||
vdec_set_status(hw_to_vdec(hevc), VDEC_STATUS_CONNECTED);
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
if (hevc->switch_dvlayer_flag) {
|
||||
if (vdec->slave)
|
||||
vdec_set_next_sched(vdec, vdec->slave);
|
||||
@@ -9651,7 +9651,7 @@ static void run(struct vdec_s *vdec,
|
||||
r = hevc->chunk->size +
|
||||
(hevc->chunk->offset & (VDEC_FIFO_ALIGN - 1));
|
||||
}
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
else {
|
||||
if (vdec->master || vdec->slave)
|
||||
WRITE_VREG(HEVC_SHIFT_BYTE_COUNT,
|
||||
@@ -10036,7 +10036,7 @@ static int ammvdec_h265_probe(struct platform_device *pdev)
|
||||
snprintf(pdata->vf_provider_name,
|
||||
VDEC_PROVIDER_NAME_SIZE,
|
||||
VFM_DEC_PROVIDER_NAME);
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
else if (vdec_dual(pdata)) {
|
||||
struct hevc_state_s *hevc_pair = NULL;
|
||||
|
||||
@@ -10283,7 +10283,7 @@ static struct mconfig h265_configs[] = {
|
||||
MC_PU32("parser_sei_enable", &parser_sei_enable),
|
||||
MC_PU32("start_decode_buf_level", &start_decode_buf_level),
|
||||
MC_PU32("decode_timeout_val", &decode_timeout_val),
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
MC_PU32("parser_dolby_vision_enable", &parser_dolby_vision_enable),
|
||||
MC_PU32("dv_toggle_prov_name", &dv_toggle_prov_name),
|
||||
MC_PU32("dv_debug", &dv_debug),
|
||||
@@ -10509,7 +10509,7 @@ MODULE_PARM_DESC(pts_unstable, "\n amvdec_h265 pts_unstable\n");
|
||||
module_param(parser_sei_enable, uint, 0664);
|
||||
MODULE_PARM_DESC(parser_sei_enable, "\n parser_sei_enable\n");
|
||||
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
module_param(parser_dolby_vision_enable, uint, 0664);
|
||||
MODULE_PARM_DESC(parser_dolby_vision_enable,
|
||||
"\n parser_dolby_vision_enable\n");
|
||||
@@ -10558,7 +10558,7 @@ module_param_array(input_empty, uint,
|
||||
module_param_array(not_run_ready, uint,
|
||||
&max_decode_instance_num, 0664);
|
||||
#endif
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
module_param(dv_toggle_prov_name, uint, 0664);
|
||||
MODULE_PARM_DESC(dv_toggle_prov_name, "\n dv_toggle_prov_name\n");
|
||||
|
||||
|
||||
@@ -409,7 +409,7 @@ static struct stream_port_s ports[] = {
|
||||
.fops = &vbuf_fops,
|
||||
.vformat = VFORMAT_HEVC,
|
||||
},
|
||||
#ifdef CONFIG_AM_VDEC_DV
|
||||
#ifdef CONFIG_AMLOGIC_MEDIA_ENHANCEMENT_DOLBYVISION
|
||||
{
|
||||
.name = "amstream_dves_avc",
|
||||
.type = PORT_TYPE_ES | PORT_TYPE_VIDEO |
|
||||
|
||||
Reference in New Issue
Block a user