summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2012-03-03 13:17:47 +0100
committerNicolas George <nicolas.george@normalesup.org>2012-03-04 19:36:24 +0100
commit7f06ca6e2ba4769adfcff6d7d0491349d8a69654 (patch)
treed823d2b5d0925763a4d915e161f34193b345914d /libavfilter
parentd8d1fbbd7f34b9640cf100149b1c5cd934a66347 (diff)
vf_mp: uninit filter chain.
Most of the code was taken from MPlayer's vf_uninit_filter_chain.
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/vf_mp.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/libavfilter/vf_mp.c b/libavfilter/vf_mp.c
index 701e387d95..75a4246b9e 100644
--- a/libavfilter/vf_mp.c
+++ b/libavfilter/vf_mp.c
@@ -769,6 +769,23 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
return 0;
}
+static av_cold void uninit(AVFilterContext *ctx)
+{
+ MPContext *m = ctx->priv;
+ vf_instance_t *vf = &m->vf;
+
+ while(vf){
+ vf_instance_t *next = vf->next;
+ if(vf->uninit)
+ vf->uninit(vf);
+ free_mp_image(vf->imgctx.static_images[0]);
+ free_mp_image(vf->imgctx.static_images[1]);
+ free_mp_image(vf->imgctx.temp_images[0]);
+ free_mp_image(vf->imgctx.export_images[0]);
+ vf = next;
+ }
+}
+
static int query_formats(AVFilterContext *ctx)
{
AVFilterFormats *avfmts=NULL;
@@ -881,6 +898,7 @@ AVFilter avfilter_vf_mp = {
.name = "mp",
.description = NULL_IF_CONFIG_SMALL("Apply a libmpcodecs filter to the input video."),
.init = init,
+ .uninit = uninit,
.priv_size = sizeof(MPContext),
.query_formats = query_formats,