mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-29 22:00:58 +02:00
h264: er: Copy from the previous reference only if compatible
Also use the frame pixel format instead of the one from the codec context, which is more robust. Signed-off-by: Luca Barbato <lu_zero@gentoo.org> Reviewed-by: Michael Niedermayer <michaelni@gmx.at> Signed-off-by: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> (cherry picked from commit fdc64a104410f5fcc7f35b62287b0ae502b7061a) Conflicts: libavcodec/h264_slice.c Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
3ea15a4547
commit
008229b7f9
@ -1669,12 +1669,15 @@ int ff_h264_decode_slice_header(H264Context *h, H264Context *h0)
|
||||
* vectors. Given we are concealing a lost frame, this probably
|
||||
* is not noticeable by comparison, but it should be fixed. */
|
||||
if (h->short_ref_count) {
|
||||
if (prev) {
|
||||
if (prev &&
|
||||
h->short_ref[0]->f.width == prev->f.width &&
|
||||
h->short_ref[0]->f.height == prev->f.height &&
|
||||
h->short_ref[0]->f.format == prev->f.format) {
|
||||
av_image_copy(h->short_ref[0]->f.data,
|
||||
h->short_ref[0]->f.linesize,
|
||||
(const uint8_t **)prev->f.data,
|
||||
prev->f.linesize,
|
||||
h->avctx->pix_fmt,
|
||||
prev->f.format,
|
||||
h->mb_width * 16,
|
||||
h->mb_height * 16);
|
||||
h->short_ref[0]->poc = prev->poc + 2;
|
||||
|
Loading…
x
Reference in New Issue
Block a user