Commit 4d62c9d3 authored by Vitor Sessak's avatar Vitor Sessak

Track the permissions that have been given out to each picture.

This should make it easier to know what can be done to a buffer once
it's been passed to your filter without falling back to copying it "just
to be safe".

Commited in SoC by Bobby Bingham on 2007-08-17 18:21:07

Originally committed as revision 12068 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent fc0f39c2
......@@ -28,6 +28,13 @@ void avfilter_default_free_video_buffer(AVFilterPic *pic)
av_free(pic);
}
AVFilterPicRef *avfilter_next_get_video_buffer(AVFilterLink *link, int perms)
{
if(!link->dst->outputs[0])
return NULL;
return avfilter_get_video_buffer(link->dst->outputs[0], perms);
}
/* TODO: set the buffer's priv member to a context structure for the whole
* filter chain. This will allow for a buffer pool instead of the constant
* alloc & free cycle currently implemented. */
......@@ -41,6 +48,9 @@ AVFilterPicRef *avfilter_default_get_video_buffer(AVFilterLink *link, int perms)
ref->h = link->h;
ref->perms = perms;
/* we always give the destination filter read access by default */
avfilter_add_pic_perms(ref, link->dst, AV_PERM_READ);
pic->refcount = 1;
pic->format = link->format;
pic->free = avfilter_default_free_video_buffer;
......@@ -62,7 +72,7 @@ void avfilter_default_start_frame(AVFilterLink *link, AVFilterPicRef *picref)
if(out) {
out->outpic = avfilter_get_video_buffer(out, AV_PERM_WRITE);
out->outpic->pts = picref->pts;
avfilter_start_frame(out, avfilter_ref_pic(out->outpic, ~0));
avfilter_start_frame(out, avfilter_ref_pic(out->outpic, out->dst, ~0));
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment