aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2017-08-08 18:45:32 +0200
committerPaul B Mahol <onemda@gmail.com>2017-08-08 18:53:10 +0200
commit41096904d03611de8024a8dbebb6935d643c3d6b (patch)
treebb9a147069753374b8ca36cef83bac062c323dff
parent463b81de2b252691d75417643597c42684bf830d (diff)
downloadffmpeg-41096904d03611de8024a8dbebb6935d643c3d6b.tar.gz
avfilter/vf_separatefields: stop leaking last frame
This can happen when filtering is ended without receiving EOF.
-rw-r--r--libavfilter/vf_separatefields.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libavfilter/vf_separatefields.c b/libavfilter/vf_separatefields.c
index 69653c991f..3ed222f271 100644
--- a/libavfilter/vf_separatefields.c
+++ b/libavfilter/vf_separatefields.c
@@ -118,6 +118,13 @@ static int request_frame(AVFilterLink *outlink)
return ret;
}
+static av_cold void uninit(AVFilterContext *ctx)
+{
+ SeparateFieldsContext *s = ctx->priv;
+
+ av_frame_free(&s->second);
+}
+
static const AVFilterPad separatefields_inputs[] = {
{
.name = "default",
@@ -141,6 +148,7 @@ AVFilter ff_vf_separatefields = {
.name = "separatefields",
.description = NULL_IF_CONFIG_SMALL("Split input video frames into fields."),
.priv_size = sizeof(SeparateFieldsContext),
+ .uninit = uninit,
.inputs = separatefields_inputs,
.outputs = separatefields_outputs,
};