struct vdec_info tmp4x;
int stream_offset = pic->stream_offset;
set_vframe(dec, vf, pic, 0);
+ decoder_do_frame_check(pvdec, vf);
vdec_vframe_ready(pvdec, vf);
kfifo_put(&dec->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
debug_print(hw, PRINT_FLAG_PTS,
"interlace1 vf->pts = %d, vf->pts_us64 = %lld, pts_valid = %d\n", vf->pts, vf->pts_us64, pts_valid);
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
avs_vf_notify_receiver(hw, PROVIDER_NAME,
}
debug_print(hw, PRINT_FLAG_PTS,
"interlace2 vf->pts = %d, vf->pts_us64 = %lld, pts_valid = %d\n", vf->pts, vf->pts_us64, pts_valid);
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
avs_vf_notify_receiver(hw, PROVIDER_NAME,
(((u64)vf->duration << 32) & 0xffffffff00000000) | offset;
vf->pts = 0;
}
- vdec_vframe_ready(hw_to_vdec(hw), vf);
+ decoder_do_frame_check(hw_to_vdec(hw), vf);
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
avs_vf_notify_receiver(hw, PROVIDER_NAME,
pvdec = hw_to_vdec(hw);
memset(&vs, 0, sizeof(struct vdec_info));
pvdec->dec_status(pvdec, &vs);
- vdec_vframe_ready(pvdec, vf);
+ decoder_do_frame_check(pvdec, vf);
vdec_fill_vdec_frame(pvdec, &hw->vframe_qos, &vs, vf, frame->hw_decode_time);
dpb_print(DECODE_ID(hw), PRINT_FLAG_DPB_DETAIL,
vf->pts = 0;
}
}
+ vdec_vframe_ready(hw_to_vdec(hw), vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hw->vf_pre_count++;
vf->v4l_mem_handle = (index == INVALID_IDX) ? (ulong)fb :
hw->buffer_spec[index].cma_alloc_addr;
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf->type |= VIDTYPE_SCATTER;
}
hevc->vf_pre_count++;
+ vdec_vframe_ready(hw_to_vdec(hevc), vf);
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf->index |= (pair_pic->index << 8);
vf->canvas1Addr = spec2canvas(pair_pic);
pair_pic->vf_ref++;
+ vdec_vframe_ready(hw_to_vdec(hevc), vf);
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf->index |= pair_pic->index;
vf->canvas0Addr = spec2canvas(pair_pic);
pair_pic->vf_ref++;
+ vdec_vframe_ready(hw_to_vdec(hevc), vf);
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
static void put_vf_to_display_q(struct hevc_state_s *hevc, struct vframe_s *vf)
{
hevc->vf_pre_count++;
+ decoder_do_frame_check(hw_to_vdec(hevc), vf);
vdec_vframe_ready(hw_to_vdec(hevc), vf);
kfifo_put(&hevc->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
}
put_vf_to_display_q(hevc, vf);
hevc->vf_pre_count++;
+ vdec_vframe_ready(hw_to_vdec(hevc), vf2);
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf2);
ATRACE_COUNTER(MODULE_NAME, vf2->pts);
}
put_vf_to_display_q(hevc, vf);
hevc->vf_pre_count++;
+ vdec_vframe_ready(hw_to_vdec(hevc), vf2);
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf2);
ATRACE_COUNTER(MODULE_NAME, vf2->pts);
hevc->vf_pre_count++;
+ vdec_vframe_ready(hw_to_vdec(hevc), vf3);
kfifo_put(&hevc->display_q,
(const struct vframe_s *)vf3);
ATRACE_COUNTER(MODULE_NAME, vf3->pts);
process_pending_vframe(hevc,
pic, (pic->pic_struct == 9));
+ decoder_do_frame_check(vdec, vf);
vdec_vframe_ready(vdec, vf);
/* process current vf */
kfifo_put(&hevc->pending_q,
nv_order | VIDTYPE_VIU_FIELD;
vf->index = (pic->index << 8) | 0xff;
}
+ decoder_do_frame_check(vdec, vf);
vdec_vframe_ready(vdec, vf);
kfifo_put(&hevc->pending_q,
(const struct vframe_s *)vf);
vf->flag = VFRAME_FLAG_EMPTY_FRAME_V4L;
vf->v4l_mem_handle = (index == INVALID_IDX) ? (ulong)fb :
hw->m_BUF[index].v4l_ref_buf_addr;
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
vf_notify_receiver(vdec->vf_provider_name,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);
vf->mem_handle =
decoder_bmmu_box_get_mem_handle(
hw->mm_blk_handle, index);
+ decoder_do_frame_check(vdec, vf);
vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
hw->buffer_spec[index].v4l_ref_buf_addr;
vf->flag = VFRAME_FLAG_EMPTY_FRAME_V4L;
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
vf_notify_receiver(vdec->vf_provider_name,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);
vf->duration, vf->type, vf->pts, vf->pts_us64);
hw->disp_num++;
if (i == 0) {
- struct vdec_s *vdec = hw_to_vdec(hw);
-
- vdec_vframe_ready(vdec, vf);
+ decoder_do_frame_check(vdec, vf);
hw_update_gvs(hw);
vdec_fill_vdec_frame(vdec, &hw->vframe_qos,
&hw->gvs, vf, pic->hw_decode_time);
vf->pts = 0;
}
}
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
/* if (hw->disp_num == 1) { */
hw->pics[index].v4l_ref_buf_addr;
vf->flag = VFRAME_FLAG_EMPTY_FRAME_V4L;
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
vf_notify_receiver(vdec->vf_provider_name,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);
vf->mem_handle =
decoder_bmmu_box_get_mem_handle(
hw->mm_blk_handle, index);
+ decoder_do_frame_check(vdec, vf);
vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
vf->mem_handle =
decoder_bmmu_box_get_mem_handle(
hw->mm_blk_handle, index);
+ decoder_do_frame_check(vdec, vf);
vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q,
(const struct vframe_s *)vf);
hw->pic[index].v4l_ref_buf_addr;;
vf->flag = VFRAME_FLAG_EMPTY_FRAME_V4L;
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
vf_notify_receiver(vdec->vf_provider_name,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);
EXPORT_SYMBOL(vdec_fill_vdec_frame);
void vdec_vframe_ready(struct vdec_s *vdec, struct vframe_s *vf) {
- decoder_do_frame_check(vdec, vf);
if (vdec_secure(vdec)) {
vf->flag |= VFRAME_FLAG_VIDEO_SECURE;
} else {
update_vf_memhandle(hw, vf, pic_config);
av1_inc_vf_ref(hw, pic_config->index);
+ decoder_do_frame_check(hw_to_vdec(hw), vf);
vdec_vframe_ready(hw_to_vdec(hw), vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf->v4l_mem_handle = (index == INVALID_IDX) ? (ulong)fb :
hw->m_BUF[index].v4l_ref_buf_addr;
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
vf_notify_receiver(vdec->vf_provider_name,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);
struct vdec_info tmp4x;
inc_vf_ref(pbi, pic_config->index);
+ decoder_do_frame_check(pvdec, vf);
vdec_vframe_ready(pvdec, vf);
kfifo_put(&pbi->display_q, (const struct vframe_s *)vf);
ATRACE_COUNTER(MODULE_NAME, vf->pts);
vf->v4l_mem_handle = (index == INVALID_IDX) ? (ulong)fb :
hw->m_BUF[index].v4l_ref_buf_addr;
+ vdec_vframe_ready(vdec, vf);
kfifo_put(&hw->display_q, (const struct vframe_s *)vf);
vf_notify_receiver(vdec->vf_provider_name,
VFRAME_EVENT_PROVIDER_VFRAME_READY, NULL);