[FFmpeg-devel] [PATCH 3/6] avcodec/vp6: Avoid allocation for alpha_context
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Fri Feb 11 10:50:58 EET 2022
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
---
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,
--
2.32.0
More information about the ffmpeg-devel
mailing list