diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2012-03-03 13:17:47 +0100 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2012-03-04 19:36:24 +0100 |
commit | 7f06ca6e2ba4769adfcff6d7d0491349d8a69654 (patch) | |
tree | d823d2b5d0925763a4d915e161f34193b345914d /libavfilter | |
parent | d8d1fbbd7f34b9640cf100149b1c5cd934a66347 (diff) | |
download | ffmpeg-7f06ca6e2ba4769adfcff6d7d0491349d8a69654.tar.gz |
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.c | 18 |
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, |