summaryrefslogtreecommitdiff
authorYixin 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)
commit593bd81e42d5ef1a73ab82fc55acc10d0d88706a (patch)
treeef50129a5b74e955d4721ce52eb9b26511d18850
parent1e79ba4fbba28048dacfa8dbf29ad8434a11aa62 (diff)
downloadmedia_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>
Diffstat
-rw-r--r--drivers/frame_provider/decoder/avs_multi/avs_multi.c2
-rw-r--r--drivers/frame_provider/decoder/h264_multi/vmh264.c4
-rw-r--r--drivers/frame_provider/decoder/h265/vh265.c4
-rw-r--r--drivers/frame_provider/decoder/mpeg4/vmpeg4_multi.c2
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)