[FFmpeg-cvslog] avcodec/pdvdec: fix leaks on init failure and when seeking

Paul B Mahol git at videolan.org
Thu Apr 20 18:14:16 EEST 2023


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Thu Apr 20 17:10:27 2023 +0200| [0dceda12e7c3d10865e1167407878381efa5a138] | committer: Paul B Mahol

avcodec/pdvdec: fix leaks on init failure and when seeking

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0dceda12e7c3d10865e1167407878381efa5a138
---

 libavcodec/pdvdec.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/libavcodec/pdvdec.c b/libavcodec/pdvdec.c
index 690a298e16..d1a3d1d3f9 100644
--- a/libavcodec/pdvdec.c
+++ b/libavcodec/pdvdec.c
@@ -113,6 +113,13 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame,
     return avpkt->size;
 }
 
+static void decode_flush(AVCodecContext *avctx)
+{
+    PDVContext *s = avctx->priv_data;
+
+    av_frame_unref(s->previous_frame);
+}
+
 const FFCodec ff_pdv_decoder = {
     .p.name         = "pdv",
     CODEC_LONG_NAME("PDV (PlayDate Video)"),
@@ -120,8 +127,10 @@ const FFCodec ff_pdv_decoder = {
     .p.type         = AVMEDIA_TYPE_VIDEO,
     .p.id           = AV_CODEC_ID_PDV,
     .p.capabilities = AV_CODEC_CAP_DR1,
-    .caps_internal  = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM,
+    .caps_internal  = FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM |
+                      FF_CODEC_CAP_INIT_CLEANUP,
     .init           = decode_init,
     .close          = decode_end,
+    .flush          = decode_flush,
     FF_CODEC_DECODE_CB(decode_frame),
 };



More information about the ffmpeg-cvslog mailing list