aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2012-08-14 18:34:36 +0200
committerNicolas George <nicolas.george@normalesup.org>2012-08-17 18:26:38 +0200
commit046eb21c72c5a385179e0a043d6f164cf174d966 (patch)
tree09e1c096601223fb6c97b21b30dfedccfbc786bb
parentfa3fde168b8c3d2d7c008a98457832575dbf9fe0 (diff)
downloadffmpeg-046eb21c72c5a385179e0a043d6f164cf174d966.tar.gz
lavfi: grant all permissions on mallocated video buffers.
The permissions not requested by the filter that created the buffer may be useful for a later filter and avoid a copy.
-rw-r--r--libavfilter/video.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/libavfilter/video.c b/libavfilter/video.c
index d04505c854..5a3bbb9ae6 100644
--- a/libavfilter/video.c
+++ b/libavfilter/video.c
@@ -43,6 +43,10 @@ AVFilterBufferRef *ff_default_get_video_buffer(AVFilterLink *link, int perms, in
int i;
AVFilterBufferRef *picref = NULL;
AVFilterPool *pool = link->pool;
+ int full_perms = AV_PERM_READ | AV_PERM_WRITE | AV_PERM_PRESERVE |
+ AV_PERM_REUSE | AV_PERM_REUSE2 | AV_PERM_ALIGN;
+
+ av_assert1(!(perms & ~(full_perms | AV_PERM_NEG_LINESIZES)));
if (pool) {
for (i = 0; i < POOL_SIZE; i++) {
@@ -53,7 +57,7 @@ AVFilterBufferRef *ff_default_get_video_buffer(AVFilterLink *link, int perms, in
pool->count--;
picref->video->w = w;
picref->video->h = h;
- picref->perms = perms | AV_PERM_READ;
+ picref->perms = full_perms;
picref->format = link->format;
pic->refcount = 1;
memcpy(picref->data, pic->data, sizeof(picref->data));
@@ -72,7 +76,7 @@ AVFilterBufferRef *ff_default_get_video_buffer(AVFilterLink *link, int perms, in
return NULL;
picref = avfilter_get_video_buffer_ref_from_arrays(data, linesize,
- perms, w, h, link->format);
+ full_perms, w, h, link->format);
if (!picref) {
av_free(data[0]);
return NULL;