vf_mp: uninit filter chain.

Most of the code was taken from MPlayer's vf_uninit_filter_chain.
This commit is contained in:
Nicolas George 2012-03-03 13:17:47 +01:00
parent d8d1fbbd7f
commit 7f06ca6e2b
1 changed files with 18 additions and 0 deletions

View File

@ -769,6 +769,23 @@ static av_cold int init(AVFilterContext *ctx, const char *args, void *opaque)
return 0; 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) static int query_formats(AVFilterContext *ctx)
{ {
AVFilterFormats *avfmts=NULL; AVFilterFormats *avfmts=NULL;
@ -881,6 +898,7 @@ AVFilter avfilter_vf_mp = {
.name = "mp", .name = "mp",
.description = NULL_IF_CONFIG_SMALL("Apply a libmpcodecs filter to the input video."), .description = NULL_IF_CONFIG_SMALL("Apply a libmpcodecs filter to the input video."),
.init = init, .init = init,
.uninit = uninit,
.priv_size = sizeof(MPContext), .priv_size = sizeof(MPContext),
.query_formats = query_formats, .query_formats = query_formats,