提交 4d62c9d3 编写于 作者: V 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
上级 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% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册