summaryrefslogtreecommitdiff
authorYixin Peng <yixin.peng@amlogic.com>2020-03-06 10:17:46 (GMT)
committer Shen Liu <shen.liu@amlogic.com>2020-06-02 03:07:14 (GMT)
commitb6a7a740dda06c7f33dddcb10d15de019a374feb (patch)
tree848fd7890024c3cc7dcbc93c0744971ed7b23609
parentdcb4e45780d03c21490457b48049b6fd4bfbbbe2 (diff)
downloadmedia_modules-b6a7a740dda06c7f33dddcb10d15de019a374feb.zip
media_modules-b6a7a740dda06c7f33dddcb10d15de019a374feb.tar.gz
media_modules-b6a7a740dda06c7f33dddcb10d15de019a374feb.tar.bz2
media_module: h264 mosaics issue [1/1]
PD#OTT-7437 Problem: Because of the video file have some error, the decoder did not filter out some masaics frames, result show mosaic picture. Solution: 1.Due to the video file error, the DPB buffer is flushed when the driver logic is wrong, resulting in the reference frame referenced by the later frame is not correct, result show mosaic picture, remove the error logic to solve this problems. 2.When there are some frames lost in the video file and have frame number gap, the reference frame relationship will be wrong and the decoding will show mosaic picture. In this case, the decoding of the frame will be marked wrong, to solve this problem. 3.Resolve the error in the stream file, all the frames except for I frame were marked as wrong frames, resulting playback unsmooth. Verify: u212 Signed-off-by: Yixin Peng <yixin.peng@amlogic.com> Change-Id: I530c47ffb6c0d7f9a59143101bf7b58076eb8513
Diffstat
-rw-r--r--drivers/frame_provider/decoder/h264_multi/vmh264.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/frame_provider/decoder/h264_multi/vmh264.c b/drivers/frame_provider/decoder/h264_multi/vmh264.c
index 7a464b4..7dfc608 100644
--- a/drivers/frame_provider/decoder/h264_multi/vmh264.c
+++ b/drivers/frame_provider/decoder/h264_multi/vmh264.c
@@ -259,13 +259,16 @@ static unsigned int i_only_flag;
bit[9] check ERROR_STATUS_REG
bit[10] check reference list
bit[11] mark error if dpb error
-
bit[12] i_only when error happen
bit[13] 0: mark error according to last pic, 1: ignore mark error
+ bit[14] 0: result done when timeout from ucode. 1: reset bufmgr when timeout.
+ bit[15] 1: dpb_frame_count If the dpb_frame_count difference is large, it moves out of the DPB buffer.
+ bit[16] 1: check slice header number.
+ bit[17] 1: If the decoded Mb count is insufficient but greater than the threshold, it is considered the correct frame.
bit[18] 1: time out status, store pic to dpb buffer.
bit[19] 1: If a lot b frames are wrong consecutively, the DPB queue reset.
*/
-static unsigned int error_proc_policy = 0xD8f36; /*0x1f14*/
+static unsigned int error_proc_policy = 0xfCfb6; /*0x1f14*/
/*
error_skip_count: