mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2025-01-30 11:24:17 +00:00
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
This commit is contained in:
parent
fc0f39c222
commit
4d62c9d377
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user