]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/roqvideoenc: Cleanup generically after init failure
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Sat, 29 Aug 2020 07:05:17 +0000 (09:05 +0200)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Sun, 30 Aug 2020 01:00:42 +0000 (03:00 +0200)
Reviewed-by: Paul B Mahol <onemda@gmail.com>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavcodec/roqvideoenc.c

index ac05123dc66cde0952b257d3f7cae14218be60ec..dc6a63099d93ccf328c7f9cf3cb609c066c44e8e 100644 (file)
@@ -1004,10 +1004,8 @@ static av_cold int roq_encode_init(AVCodecContext *avctx)
 
     enc->last_frame    = av_frame_alloc();
     enc->current_frame = av_frame_alloc();
-    if (!enc->last_frame || !enc->current_frame) {
-        roq_encode_end(avctx);
+    if (!enc->last_frame || !enc->current_frame)
         return AVERROR(ENOMEM);
-    }
 
     enc->tmpData      = av_malloc(sizeof(RoqTempdata));
 
@@ -1024,10 +1022,8 @@ static av_cold int roq_encode_init(AVCodecContext *avctx)
         av_malloc_array ((enc->width*enc->height/64), sizeof(motion_vect));
 
     if (!enc->tmpData || !enc->this_motion4 || !enc->last_motion4 ||
-        !enc->this_motion8 || !enc->last_motion8) {
-        roq_encode_end(avctx);
+        !enc->this_motion8 || !enc->last_motion8)
         return AVERROR(ENOMEM);
-    }
 
     return 0;
 }
@@ -1135,4 +1131,5 @@ AVCodec ff_roq_encoder = {
     .pix_fmts             = (const enum AVPixelFormat[]){ AV_PIX_FMT_YUVJ444P,
                                                         AV_PIX_FMT_NONE },
     .priv_class     = &roq_class,
+    .caps_internal        = FF_CODEC_CAP_INIT_CLEANUP,
 };