mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +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: Andreas Cadhalpun <Andreas.Cadhalpun@googlemail.com> Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
parent
9af7e8045e
commit
a4fbd55d6e
@ -1357,12 +1357,15 @@ int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
|
|||||||
* vectors. Given we are concealing a lost frame, this probably
|
* vectors. Given we are concealing a lost frame, this probably
|
||||||
* is not noticeable by comparison, but it should be fixed. */
|
* is not noticeable by comparison, but it should be fixed. */
|
||||||
if (h->short_ref_count) {
|
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,
|
av_image_copy(h->short_ref[0]->f->data,
|
||||||
h->short_ref[0]->f->linesize,
|
h->short_ref[0]->f->linesize,
|
||||||
(const uint8_t **)prev->f->data,
|
(const uint8_t **)prev->f->data,
|
||||||
prev->f->linesize,
|
prev->f->linesize,
|
||||||
h->avctx->pix_fmt,
|
prev->f->format,
|
||||||
h->mb_width * 16,
|
h->mb_width * 16,
|
||||||
h->mb_height * 16);
|
h->mb_height * 16);
|
||||||
h->short_ref[0]->poc = prev->poc + 2;
|
h->short_ref[0]->poc = prev->poc + 2;
|
||||||
|
Loading…
Reference in New Issue
Block a user