Browse Source

utils: fix avcodec_flush_buffers pre-reference counting compatibility

The to_free AVframe must be freed just like the other ones.
Indeed, the calling application may expect all frames to be
released.

(This regression caused use-after-free in VLC with hwaccel.)

Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
tags/n2.0
Janne Grunau Luca Barbato 12 years ago
parent
commit
985f34b756
1 changed files with 3 additions and 0 deletions
  1. +3
    -0
      libavcodec/utils.c

+ 3
- 0
libavcodec/utils.c View File

@@ -1804,6 +1804,9 @@ void avcodec_flush_buffers(AVCodecContext *avctx)
ff_thread_flush(avctx);
else if (avctx->codec->flush)
avctx->codec->flush(avctx);

if (!avctx->refcounted_frames)
av_frame_unref(&avctx->internal->to_free);
}

int av_get_exact_bits_per_sample(enum AVCodecID codec_id)


Loading…
Cancel
Save