]> git.sesse.net Git - ffmpeg/blobdiff - libavfilter/vf_mp.c
vsrx_mptestsrc: remove duplicate config_props init.
[ffmpeg] / libavfilter / vf_mp.c
index a61f0866c1dd9f3f49442fa00044a0a37c731cd2..75a4246b9eef3d55e6c1cb2dba1bf28196e8f289 100644 (file)
@@ -225,6 +225,7 @@ static const vf_info_t* const filters[]={
     &vf_info_palette,
     &vf_info_perspective,
     &vf_info_phase,
+    &vf_info_pp,
     &vf_info_pp7,
     &vf_info_pullup,
     &vf_info_qp,
@@ -768,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;
@@ -878,8 +896,9 @@ static void end_frame(AVFilterLink *inlink)
 
 AVFilter avfilter_vf_mp = {
     .name      = "mp",
-    .description = NULL_IF_CONFIG_SMALL("libmpcodecs wrapper."),
+    .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,