diff mbox series

[FFmpeg-devel,3/6] avcodec/vp6: Avoid allocation for alpha_context

Message ID AM7PR03MB6660EA3A21CA21C188570BFE8F309@AM7PR03MB6660.eurprd03.prod.outlook.com
State Accepted
Commit 3cbef22f8f14962f1b58284015892a62855f419d
Headers show
Series [FFmpeg-devel,1/6] avcodec/vp6: Check initializing VP6A context | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished
andriy/make_ppc success Make finished
andriy/make_fate_ppc success Make fate finished

Commit Message

Andreas Rheinhardt Feb. 11, 2022, 8:50 a.m. UTC
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavcodec/vp6.c | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

Comments

Michael Niedermayer Feb. 11, 2022, 5:45 p.m. UTC | #1
On Fri, Feb 11, 2022 at 09:50:58AM +0100, Andreas Rheinhardt wrote:
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
> ---
>  libavcodec/vp6.c | 10 ++++------
>  1 file changed, 4 insertions(+), 6 deletions(-)

nice

thx

[...]
diff mbox series

Patch

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,