author | Yixin 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) |
commit | b6a7a740dda06c7f33dddcb10d15de019a374feb (patch) | |
tree | 848fd7890024c3cc7dcbc93c0744971ed7b23609 | |
parent | dcb4e45780d03c21490457b48049b6fd4bfbbbe2 (diff) | |
download | media_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
-rw-r--r-- | drivers/frame_provider/decoder/h264_multi/vmh264.c | 7 |
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: |