mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
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
This commit is contained in:
parent
0b7537f93b
commit
8baf1ec500
3 changed files with 18 additions and 3 deletions
|
@ -122,11 +122,13 @@ video_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
|
|||
GstVideoBufferPoolPrivate *priv = vpool->priv;
|
||||
GstVideoInfo info;
|
||||
GstCaps *caps;
|
||||
guint size, min_buffers, max_buffers;
|
||||
gint width, height;
|
||||
GstAllocator *allocator;
|
||||
GstAllocationParams params;
|
||||
|
||||
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)
|
||||
|
@ -170,6 +172,9 @@ video_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
|
|||
}
|
||||
priv->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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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 */
|
||||
|
|
Loading…
Reference in a new issue