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>
This commit is contained in:
Janne Grunau 2013-06-15 22:11:55 +03:00 committed by Luca Barbato
parent df9f22d42b
commit 985f34b756

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)