diff options
author | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-09-25 14:28:10 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@outlook.com> | 2021-11-30 17:17:52 +0100 |
commit | d47a986b7922f610acb6801620aa9b4fa9a2b243 (patch) | |
tree | e7af25e2a14869d926acbf43cf66587362782015 | |
parent | e9e2157dda26a08113a146330682f29e6d2accb4 (diff) | |
download | ffmpeg-d47a986b7922f610acb6801620aa9b4fa9a2b243.tar.gz |
avcodec/qsvenc: Properly flush the FIFO on close
Freeing the new H.264 specific fields has been forgotten.
(This leak only appears in case the encoder has not been completely
drained.)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r-- | libavcodec/qsvenc.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libavcodec/qsvenc.c b/libavcodec/qsvenc.c index e5d09752cb..26a94cd419 100644 --- a/libavcodec/qsvenc.c +++ b/libavcodec/qsvenc.c @@ -1626,6 +1626,14 @@ int ff_qsv_enc_close(AVCodecContext *avctx, QSVEncContext *q) av_fifo_generic_read(q->async_fifo, &sync, sizeof(sync), NULL); av_fifo_generic_read(q->async_fifo, &bs, sizeof(bs), NULL); +#if QSV_VERSION_ATLEAST(1, 26) + if (avctx->codec_id == AV_CODEC_ID_H264) { + mfxExtBuffer **enc_buf = bs->ExtParam; + mfxExtAVCEncodedFrameInfo *enc_info = (mfxExtAVCEncodedFrameInfo *)(*bs->ExtParam); + av_freep(&enc_info); + av_freep(&enc_buf); + } +#endif av_freep(&sync); av_freep(&bs); av_packet_unref(&pkt); |