UPSTREAM:frontends/va: fixed an av1 dec image corruption.
[problem]
When decoding an av1 bitstream, it shows image corruption
in the middle of the bitstream around key frames.
[analysis]
in av1_spec.pdf page 38/669, there is a sentence below:
if ( frame_type == KEY_FRAME && show_frame ) {
for ( i = 0; i < NUM_REF_FRAMES; i++) {
RefValid[ i ] = 0
......
}
......
}
This shows that the condition of invalidating current
DPB frames should be the coming frame_type is KEY_FRAME plus
show_frame is equal to 1. Otherwise, some of the frames
in sequence after KEY_FRAME still refer to the reference frames
before KEY_FRAME, and if these before KEY_FRAME reference
frames were invalidated, these frames could not find their
reference frames, and it could cause image corruption.
[solution]
Add condition of show_frame, with the corresponding fix
in ffmpeg, we cannot see this issue any longer.
BUG=b:237956307
TEST=tast run <ip> video.ChromeStackDecoderVerification.av1_common
Cq-Depend: chromium:4005811
Reviewed-by: Leo Liu <leo.liu@amd.com>
Signed-off-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/19386>
(cherry picked from commit 4bf116d440e341f807367d118e7f320886485c45)
Change-Id: I41025f42efb1ac393318a294ac353ce40c487e6f
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/mesa/+/4022852
Commit-Queue: Himanshu Nayak <himanshu.nayak@amd.corp-partner.google.com>
Reviewed-by: Miguel Casas <mcasas@google.com>
Reviewed-by: Sean Paul <sean@poorly.run>
Tested-by: Himanshu Nayak <himanshu.nayak@amd.corp-partner.google.com>
1 file changed