diff options
author | Hui Zhang <hui.zhang@amlogic.com> | 2018-10-30 19:31:01 +0800 |
---|---|---|
committer | xiaojing.huang <xiaojing.huang@amlogic.com> | 2018-12-10 15:31:52 +0800 |
commit | ee2f204c73e0973f813ee6cf19c198924b088f7c (patch) | |
tree | c37f9dab106447d37aa45c26524e7449e93382e6 | |
parent | df7d990433b83c6e7b6cc36576ca25086f237ead (diff) | |
download | media_modules-android-tv-9.0.0_r0.1.tar.gz |
media_module: fix netflix test video freeze issue [1/1]android-tv-9.0.0_r0.1android-tv-4.9-pie
PD#SWPL-809
PD#OTT-844
BUG=117762584 & 120382559
Problem:
in stream mode, decoder drivers with again check will be always in run_ready state.
because of again_threshold not reach. but acutally there is enough data in vbuf.
decoding hang up
Solution:
sync input buf status once again check appears
Verify:
QA test on ampere&atom
Change-Id: I72dc98461865f296fe0c625f8ca60a11561976ac
Signed-off-by: Hui Zhang <hui.zhang@amlogic.com>
-rw-r--r-- | drivers/frame_provider/decoder/h264_multi/vmh264.c | 6 | ||||
-rw-r--r-- | drivers/frame_provider/decoder/h265/vh265.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/drivers/frame_provider/decoder/h264_multi/vmh264.c b/drivers/frame_provider/decoder/h264_multi/vmh264.c index d231591..0885616 100644 --- a/drivers/frame_provider/decoder/h264_multi/vmh264.c +++ b/drivers/frame_provider/decoder/h264_multi/vmh264.c @@ -6588,8 +6588,12 @@ static unsigned long run_ready(struct vdec_s *vdec, unsigned long mask) READ_PARSER_REG(PARSER_VIDEO_WP); if (parser_wr_ptr >= hw->pre_parser_wr_ptr && (parser_wr_ptr - hw->pre_parser_wr_ptr) < - again_threshold) + again_threshold) { + int r = vdec_sync_input(vdec); + dpb_print(DECODE_ID(hw), PRINT_FLAG_VDEC_DETAIL, + "%s buf lelvel:%x\n", __func__, r); return 0; + } } if (h264_debug_flag & 0x20000000) { diff --git a/drivers/frame_provider/decoder/h265/vh265.c b/drivers/frame_provider/decoder/h265/vh265.c index 1abd329..313be27 100644 --- a/drivers/frame_provider/decoder/h265/vh265.c +++ b/drivers/frame_provider/decoder/h265/vh265.c @@ -9996,8 +9996,12 @@ static unsigned long run_ready(struct vdec_s *vdec, unsigned long mask) READ_PARSER_REG(PARSER_VIDEO_WP); if (parser_wr_ptr >= hevc->pre_parser_wr_ptr && (parser_wr_ptr - hevc->pre_parser_wr_ptr) < - again_threshold) + again_threshold) { + int r = vdec_sync_input(vdec); + hevc_print(hevc, + PRINT_FLAG_VDEC_DETAIL, "%s buf lelvel:%x\n", __func__, r); return 0; + } } #endif |