From 8baf1ec50076bd4ea13477875069eb48d7f2a337 Mon Sep 17 00:00:00 2001 From: Song Bing Date: Tue, 16 Dec 2014 12:10:53 +0100 Subject: videopool: update buffer size after video alignment Update the new buffer size after alignment in the pool configuration before calling the parent set_config. This ensures that the parent knows about the buffer size that we will allocate and makes the size check work in the release_buffer method. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=741420 --- sys/ximage/ximagepool.c | 7 ++++++- sys/xvimage/xvimagepool.c | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) (limited to 'sys') diff --git a/sys/ximage/ximagepool.c b/sys/ximage/ximagepool.c index 9d4ac2fcf..3582f115e 100644 --- a/sys/ximage/ximagepool.c +++ b/sys/ximage/ximagepool.c @@ -542,8 +542,10 @@ ximage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config) GstXImageBufferPool *xpool = GST_XIMAGE_BUFFER_POOL_CAST (pool); GstVideoInfo info; GstCaps *caps; + guint size, min_buffers, max_buffers; - if (!gst_buffer_pool_config_get_params (config, &caps, NULL, NULL, NULL)) + if (!gst_buffer_pool_config_get_params (config, &caps, &size, &min_buffers, + &max_buffers)) goto wrong_config; if (caps == NULL) @@ -596,6 +598,9 @@ ximage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config) xpool->info = info; + gst_buffer_pool_config_set_params (config, caps, info.size, min_buffers, + max_buffers); + return GST_BUFFER_POOL_CLASS (parent_class)->set_config (pool, config); /* ERRORS */ diff --git a/sys/xvimage/xvimagepool.c b/sys/xvimage/xvimagepool.c index 77fc2727f..614f19750 100644 --- a/sys/xvimage/xvimagepool.c +++ b/sys/xvimage/xvimagepool.c @@ -60,9 +60,11 @@ xvimage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config) GstXvImageBufferPool *xvpool = GST_XVIMAGE_BUFFER_POOL_CAST (pool); GstVideoInfo info; GstCaps *caps; + guint size, min_buffers, max_buffers; GstXvContext *context; - if (!gst_buffer_pool_config_get_params (config, &caps, NULL, NULL, NULL)) + if (!gst_buffer_pool_config_get_params (config, &caps, &size, &min_buffers, + &max_buffers)) goto wrong_config; if (caps == NULL) @@ -124,6 +126,9 @@ xvimage_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config) xvpool->crop.w = xvpool->info.width; xvpool->crop.h = xvpool->info.height; + gst_buffer_pool_config_set_params (config, caps, info.size, min_buffers, + max_buffers); + return GST_BUFFER_POOL_CLASS (parent_class)->set_config (pool, config); /* ERRORS */ -- cgit v1.2.3