]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/xl.c
Free encoder extradata in avcodec_close(). Should fix several small memory
[ffmpeg] / libavcodec / xl.c
index ccff40e17a4bef7943f54abf9b9a523a531880ce..2a5110cb98ead540921c080cf414cfffae4317fb 100644 (file)
@@ -40,8 +40,10 @@ static const int xl_table[32] = {
 
 static int decode_frame(AVCodecContext *avctx,
                         void *data, int *data_size,
-                        const uint8_t *buf, int buf_size)
+                        AVPacket *avpkt)
 {
+    const uint8_t *buf = avpkt->data;
+    int buf_size = avpkt->size;
     VideoXLContext * const a = avctx->priv_data;
     AVFrame * const p= (AVFrame*)&a->pic;
     uint8_t *Y, *U, *V;
@@ -126,6 +128,16 @@ static av_cold int decode_init(AVCodecContext *avctx){
     return 0;
 }
 
+static av_cold int decode_end(AVCodecContext *avctx){
+    VideoXLContext * const a = avctx->priv_data;
+    AVFrame *pic = &a->pic;
+
+    if (pic->data[0])
+        avctx->release_buffer(avctx, pic);
+
+    return 0;
+}
+
 AVCodec xl_decoder = {
     "xl",
     CODEC_TYPE_VIDEO,
@@ -133,7 +145,7 @@ AVCodec xl_decoder = {
     sizeof(VideoXLContext),
     decode_init,
     NULL,
-    NULL,
+    decode_end,
     decode_frame,
     CODEC_CAP_DR1,
     .long_name = NULL_IF_CONFIG_SMALL("Miro VideoXL"),