[FFmpeg-cvslog] vf_mp: uninit filter chain.

Nicolas George git at videolan.org
Sun Mar 4 21:34:02 CET 2012


ffmpeg | branch: master | Nicolas George <nicolas.george at normalesup.org> | Sat Mar  3 13:17:47 2012 +0100| [7f06ca6e2ba4769adfcff6d7d0491349d8a69654] | committer: Nicolas George

vf_mp: uninit filter chain.

Most of the code was taken from MPlayer's vf_uninit_filter_chain.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7f06ca6e2ba4769adfcff6d7d0491349d8a69654
---

 libavfilter/vf_mp.c |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)

diff --git a/libavfilter/vf_mp.c b/libavfilter/vf_mp.c
index 701e387..75a4246 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,
 



More information about the ffmpeg-cvslog mailing list