[FFmpeg-cvslog] avcodec/vp6: Avoid allocation for alpha_context

Andreas Rheinhardt git at videolan.org
Sun Feb 13 14:07:10 EET 2022


ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Fri Feb 11 08:27:40 2022 +0100| [3cbef22f8f14962f1b58284015892a62855f419d] | committer: Andreas Rheinhardt

avcodec/vp6: Avoid allocation for alpha_context

Reviewed-by: Peter Ross <pross at xvid.org>
Reviewed-by: Michael Niedermayer <michael at niedermayer.cc>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>

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

 libavcodec/vp6.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/libavcodec/vp6.c b/libavcodec/vp6.c
index 6bcbbce47b..3acca16f3c 100644
--- a/libavcodec/vp6.c
+++ b/libavcodec/vp6.c
@@ -652,10 +652,8 @@ static av_cold int vp6_decode_init(AVCodecContext *avctx)
     vp6_decode_init_context(s);
 
     if (s->has_alpha) {
-        s->alpha_context = av_mallocz(sizeof(VP56Context));
-        if (!s->alpha_context) {
-            return AVERROR(ENOMEM);
-        }
+        /* Can only happen for ff_vp6a_decoder */
+        s->alpha_context = &s[1];
         ret = ff_vp56_init_context(avctx, s->alpha_context,
                                    s->flip == -1, s->has_alpha);
         if (ret < 0)
@@ -691,7 +689,7 @@ static av_cold int vp6_decode_free(AVCodecContext *avctx)
     if (s->alpha_context) {
         ff_vp56_free_context(s->alpha_context);
         vp6_decode_free_context(s->alpha_context);
-        av_freep(&s->alpha_context);
+        s->alpha_context = NULL;
     }
 
     return 0;
@@ -743,7 +741,7 @@ const AVCodec ff_vp6a_decoder = {
     .long_name      = NULL_IF_CONFIG_SMALL("On2 VP6 (Flash version, with alpha channel)"),
     .type           = AVMEDIA_TYPE_VIDEO,
     .id             = AV_CODEC_ID_VP6A,
-    .priv_data_size = sizeof(VP56Context),
+    .priv_data_size = 2 /* Main context + alpha context */ * sizeof(VP56Context),
     .init           = vp6_decode_init,
     .close          = vp6_decode_free,
     .decode         = ff_vp56_decode_frame,



More information about the ffmpeg-cvslog mailing list