avformat/webpenc: Fix memleak when trailer is never written

When the trailer is never written (or when a stream switches from
non-animation mode to animation mode mid-stream), a cached packet
(if existing) would leak. Fix this by adding a deinit function.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
This commit is contained in:
Andreas Rheinhardt 2021-03-18 23:27:57 +01:00
parent df9d969954
commit 3903c139a9

View File

@ -191,6 +191,13 @@ static int webp_write_trailer(AVFormatContext *s)
return 0; return 0;
} }
static void webp_deinit(AVFormatContext *s)
{
WebpContext *w = s->priv_data;
av_packet_unref(&w->last_pkt);
}
#define OFFSET(x) offsetof(WebpContext, x) #define OFFSET(x) offsetof(WebpContext, x)
#define ENC AV_OPT_FLAG_ENCODING_PARAM #define ENC AV_OPT_FLAG_ENCODING_PARAM
static const AVOption options[] = { static const AVOption options[] = {
@ -214,6 +221,7 @@ AVOutputFormat ff_webp_muxer = {
.init = webp_init, .init = webp_init,
.write_packet = webp_write_packet, .write_packet = webp_write_packet,
.write_trailer = webp_write_trailer, .write_trailer = webp_write_trailer,
.deinit = webp_deinit,
.priv_class = &webp_muxer_class, .priv_class = &webp_muxer_class,
.flags = AVFMT_VARIABLE_FPS, .flags = AVFMT_VARIABLE_FPS,
}; };