summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorSong Bing <b06498@freescale.com>2014-12-16 12:10:53 +0100
committerWim Taymans <wtaymans@redhat.com>2014-12-16 12:14:53 +0100
commit8baf1ec50076bd4ea13477875069eb48d7f2a337 (patch)
tree95721ba69605fbd03e9acd29c9900f688f244d79 /sys
parent0b7537f93baa3200c3d0435dd95c4383777aa1ba (diff)
downloadgst-plugins-base-8baf1ec50076bd4ea13477875069eb48d7f2a337.tar.gz
gst-plugins-base-8baf1ec50076bd4ea13477875069eb48d7f2a337.tar.xz
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
Diffstat (limited to 'sys')
-rw-r--r--sys/ximage/ximagepool.c7
-rw-r--r--sys/xvimage/xvimagepool.c7
2 files changed, 12 insertions, 2 deletions
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 */