author | Yixin Peng <yixin.peng@amlogic.com> | 2020-03-10 02:05:33 (GMT) |
---|---|---|
committer | Hui Zhang <hui.zhang@amlogic.com> | 2020-03-23 05:09:20 (GMT) |
commit | 593bd81e42d5ef1a73ab82fc55acc10d0d88706a (patch) | |
tree | ef50129a5b74e955d4721ce52eb9b26511d18850 | |
parent | 1e79ba4fbba28048dacfa8dbf29ad8434a11aa62 (diff) | |
download | media_modules-593bd81e42d5ef1a73ab82fc55acc10d0d88706a.zip media_modules-593bd81e42d5ef1a73ab82fc55acc10d0d88706a.tar.gz media_modules-593bd81e42d5ef1a73ab82fc55acc10d0d88706a.tar.bz2 |
media_module: fixed playback stuck issue [1/1]
PD#SWPL-21645
Problem:
When input data insufficient and decoder does not
work properly, timeout was not in effect.
Solution:
Modify the logic to make the timer work properly.
Verify:
U212
Change-Id: I49a4c3571e7611bd5c953c2d5349786a3e4582bd
Signed-off-by: Yixin Peng <yixin.peng@amlogic.com>
4 files changed, 2 insertions, 10 deletions
diff --git a/drivers/frame_provider/decoder/avs_multi/avs_multi.c b/drivers/frame_provider/decoder/avs_multi/avs_multi.c index a9dd7fd..f041bf7 100644 --- a/drivers/frame_provider/decoder/avs_multi/avs_multi.c +++ b/drivers/frame_provider/decoder/avs_multi/avs_multi.c @@ -3386,8 +3386,6 @@ static void check_timer_func(unsigned long arg) } if ((debug & DEBUG_FLAG_DISABLE_TIMEOUT) == 0 && - (input_frame_based(vdec) || - (READ_VREG(VLD_MEM_VIFIFO_LEVEL) > 0x100)) && (timeout_val > 0) && (hw->start_process_time > 0) && ((1000 * (jiffies - hw->start_process_time) / HZ) diff --git a/drivers/frame_provider/decoder/h264_multi/vmh264.c b/drivers/frame_provider/decoder/h264_multi/vmh264.c index d4a051b..9af897c 100644 --- a/drivers/frame_provider/decoder/h264_multi/vmh264.c +++ b/drivers/frame_provider/decoder/h264_multi/vmh264.c @@ -6814,9 +6814,7 @@ static void check_timer_func(unsigned long arg) radr = 0; } - if ((input_frame_based(vdec) || - (READ_VREG(VLD_MEM_VIFIFO_LEVEL) > 0xb0)) && - ((h264_debug_flag & DISABLE_ERROR_HANDLE) == 0) && + if (((h264_debug_flag & DISABLE_ERROR_HANDLE) == 0) && (timeout_val > 0) && (hw->start_process_time > 0) && ((1000 * (jiffies - hw->start_process_time) / HZ) diff --git a/drivers/frame_provider/decoder/h265/vh265.c b/drivers/frame_provider/decoder/h265/vh265.c index e2c6e3e..91d8f0d 100644 --- a/drivers/frame_provider/decoder/h265/vh265.c +++ b/drivers/frame_provider/decoder/h265/vh265.c @@ -10754,9 +10754,7 @@ static void vh265_check_timer_func(unsigned long arg) } if (hevc->m_ins_flag) { - if ((input_frame_based(hw_to_vdec(hevc)) || - (READ_VREG(HEVC_STREAM_LEVEL) > 0xb0)) && - ((get_dbg_flag(hevc) & + if (((get_dbg_flag(hevc) & H265_DEBUG_DIS_LOC_ERROR_PROC) == 0) && (decode_timeout_val > 0) && (hevc->start_process_time > 0) && diff --git a/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c b/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c index 15d8b4c..c55d8da 100644 --- a/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c +++ b/drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c @@ -1786,8 +1786,6 @@ static void check_timer_func(unsigned long arg) } if (((debug_enable & PRINT_FLAG_TIMEOUT_STATUS) == 0) && - (vdec_frame_based(vdec) || - ((u32)READ_VREG(VLD_MEM_VIFIFO_LEVEL) > 0x100)) && (timeout_val > 0) && (hw->start_process_time > 0) && ((1000 * (jiffies - hw->start_process_time) / HZ) |