From 9341bbfc51ad7c2f1b25e841f7ba5792e980582d Mon Sep 17 00:00:00 2001 From: Nicolas George Date: Tue, 14 Aug 2012 18:51:05 +0200 Subject: [PATCH] vf_yadif: fix permissions. Require AV_PERM_PRESERVE and leave harmless permissions alone for the next filter. --- libavfilter/vf_yadif.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libavfilter/vf_yadif.c b/libavfilter/vf_yadif.c index f200cb1474..9f949f800a 100644 --- a/libavfilter/vf_yadif.c +++ b/libavfilter/vf_yadif.c @@ -240,7 +240,7 @@ static int start_frame(AVFilterLink *link, AVFilterBufferRef *picref) return 0; if (yadif->auto_enable && !yadif->cur->video->interlaced) { - yadif->out = avfilter_ref_buffer(yadif->cur, AV_PERM_READ); + yadif->out = avfilter_ref_buffer(yadif->cur, ~AV_PERM_WRITE); if (!yadif->out) return AVERROR(ENOMEM); @@ -251,7 +251,7 @@ static int start_frame(AVFilterLink *link, AVFilterBufferRef *picref) } if (!yadif->prev && - !(yadif->prev = avfilter_ref_buffer(yadif->cur, AV_PERM_READ))) + !(yadif->prev = avfilter_ref_buffer(yadif->cur, ~AV_PERM_WRITE))) return AVERROR(ENOMEM); yadif->out = ff_get_video_buffer(ctx->outputs[0], AV_PERM_WRITE | AV_PERM_PRESERVE | @@ -304,7 +304,7 @@ static int request_frame(AVFilterLink *link) ret = ff_request_frame(link->src->inputs[0]); if (ret == AVERROR_EOF && yadif->cur) { - AVFilterBufferRef *next = avfilter_ref_buffer(yadif->next, AV_PERM_READ); + AVFilterBufferRef *next = avfilter_ref_buffer(yadif->next, ~AV_PERM_WRITE); if (!next) return AVERROR(ENOMEM); @@ -445,7 +445,7 @@ AVFilter avfilter_vf_yadif = { .start_frame = start_frame, .draw_slice = null_draw_slice, .end_frame = end_frame, - .rej_perms = AV_PERM_REUSE2, }, + .min_perms = AV_PERM_PRESERVE, }, { .name = NULL}}, .outputs = (const AVFilterPad[]) {{ .name = "default",