mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-26 18:20:44 +00:00
va: no need to provide a buffer size for VA pool
VA drivers allocate surfaces given their properties, so there's no need to provide a buffer size to the VA pool. Though, the buffer size is provided by the driver, or the canonical size is used for single planed surfaces. This patch removes the need to provide a size for the function gst_va_pool_new_with_config() and adds a helper method to retrieve the surface size, gst_va_pool_get_buffer_size(). Also change the callers accordingly. Changes for custom VA pool creation will be addressed in the following commits. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5805>
This commit is contained in:
parent
fab1c5f953
commit
4a22cc8fb3
12 changed files with 81 additions and 76 deletions
|
@ -794,10 +794,6 @@ the most widely used VA drivers.</doc>
|
|||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.c">the #GstCaps of the buffers handled by the new pool.</doc>
|
||||
<type name="Gst.Caps" c:type="GstCaps*"/>
|
||||
</parameter>
|
||||
<parameter name="size" transfer-ownership="none">
|
||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.c">the size of the frames to hold.</doc>
|
||||
<type name="guint" c:type="guint"/>
|
||||
</parameter>
|
||||
<parameter name="min_buffers" transfer-ownership="none">
|
||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.c">minimum number of frames to create.</doc>
|
||||
<type name="guint" c:type="guint"/>
|
||||
|
@ -825,6 +821,24 @@ the most widely used VA drivers.</doc>
|
|||
</parameter>
|
||||
</parameters>
|
||||
</constructor>
|
||||
<function name="get_buffer_size" c:identifier="gst_va_pool_get_buffer_size" version="1.24">
|
||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.c">Helper function to retrieve the VA surface size provided by @pool.</doc>
|
||||
<source-position filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.h"/>
|
||||
<return-value transfer-ownership="none">
|
||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.c">whether the surface size was retrieved.</doc>
|
||||
<type name="gboolean" c:type="gboolean"/>
|
||||
</return-value>
|
||||
<parameters>
|
||||
<parameter name="pool" transfer-ownership="none">
|
||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.c">a #GstBufferPool</doc>
|
||||
<type name="Gst.BufferPool" c:type="GstBufferPool*"/>
|
||||
</parameter>
|
||||
<parameter name="size" direction="out" caller-allocates="0" transfer-ownership="full">
|
||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.c">the declared surface size</doc>
|
||||
<type name="guint" c:type="guint*"/>
|
||||
</parameter>
|
||||
</parameters>
|
||||
</function>
|
||||
<function name="requires_video_meta" c:identifier="gst_va_pool_requires_video_meta" version="1.22">
|
||||
<doc xml:space="preserve" filename="../subprojects/gst-plugins-bad/gst-libs/gst/va/gstvapool.c">Retuns: %TRUE if @pool always add #GstVideoMeta to its
|
||||
buffers. Otherwise, %FALSE.</doc>
|
||||
|
|
|
@ -465,7 +465,6 @@ gst_buffer_pool_config_set_va_alignment (GstStructure * config,
|
|||
gboolean
|
||||
gst_va_pool_requires_video_meta (GstBufferPool * pool)
|
||||
{
|
||||
|
||||
g_return_val_if_fail (GST_IS_VA_POOL (pool), FALSE);
|
||||
|
||||
return GST_VA_POOL (pool)->force_videometa;
|
||||
|
@ -474,7 +473,6 @@ gst_va_pool_requires_video_meta (GstBufferPool * pool)
|
|||
/**
|
||||
* gst_va_pool_new_with_config:
|
||||
* @caps: the #GstCaps of the buffers handled by the new pool.
|
||||
* @size: the size of the frames to hold.
|
||||
* @min_buffers: minimum number of frames to create.
|
||||
* @max_buffers: maximum number of frames to create.
|
||||
* @usage_hint: VA usage hint
|
||||
|
@ -490,7 +488,7 @@ gst_va_pool_requires_video_meta (GstBufferPool * pool)
|
|||
* Since: 1.22
|
||||
*/
|
||||
GstBufferPool *
|
||||
gst_va_pool_new_with_config (GstCaps * caps, guint size, guint min_buffers,
|
||||
gst_va_pool_new_with_config (GstCaps * caps, guint min_buffers,
|
||||
guint max_buffers, guint usage_hint, GstVaFeature use_derived,
|
||||
GstAllocator * allocator, GstAllocationParams * alloc_params)
|
||||
{
|
||||
|
@ -500,8 +498,8 @@ gst_va_pool_new_with_config (GstCaps * caps, guint size, guint min_buffers,
|
|||
pool = gst_va_pool_new ();
|
||||
|
||||
config = gst_buffer_pool_get_config (pool);
|
||||
gst_buffer_pool_config_set_params (config, caps, size, min_buffers,
|
||||
max_buffers);
|
||||
/* ignore the size since it's calculated by the driver */
|
||||
gst_buffer_pool_config_set_params (config, caps, 0, min_buffers, max_buffers);
|
||||
gst_buffer_pool_config_set_va_allocation_params (config, usage_hint,
|
||||
use_derived);
|
||||
gst_buffer_pool_config_set_allocator (config, allocator, alloc_params);
|
||||
|
@ -512,3 +510,28 @@ gst_va_pool_new_with_config (GstCaps * caps, guint size, guint min_buffers,
|
|||
|
||||
return pool;
|
||||
}
|
||||
|
||||
/**
|
||||
* gst_va_pool_get_buffer_size:
|
||||
* @pool: a #GstBufferPool
|
||||
* @size: (out) (allow-null-none): the declared surface size
|
||||
*
|
||||
* Helper function to retrieve the VA surface size provided by @pool.
|
||||
*
|
||||
* Returns: whether the surface size was retrieved.
|
||||
*
|
||||
* Since: 1.24
|
||||
*/
|
||||
gboolean
|
||||
gst_va_pool_get_buffer_size (GstBufferPool * pool, guint * size)
|
||||
{
|
||||
gboolean ret;
|
||||
GstStructure *config;
|
||||
|
||||
g_return_val_if_fail (GST_IS_VA_POOL (pool), FALSE);
|
||||
|
||||
config = gst_buffer_pool_get_config (pool);
|
||||
ret = gst_buffer_pool_config_get_params (config, NULL, size, NULL, NULL);
|
||||
gst_structure_free (config);
|
||||
return ret && *size > 0;
|
||||
}
|
||||
|
|
|
@ -48,12 +48,14 @@ void gst_buffer_pool_config_set_va_alignment (GstStructure * con
|
|||
const GstVideoAlignment * align);
|
||||
GST_VA_API
|
||||
GstBufferPool * gst_va_pool_new_with_config (GstCaps * caps,
|
||||
guint size,
|
||||
guint min_buffers,
|
||||
guint max_buffers,
|
||||
guint usage_hint,
|
||||
GstVaFeature use_derived,
|
||||
GstAllocator * allocator,
|
||||
GstAllocationParams * alloc_params);
|
||||
GST_VA_API
|
||||
gboolean gst_va_pool_get_buffer_size (GstBufferPool * pool,
|
||||
guint * size);
|
||||
|
||||
G_END_DECLS
|
||||
|
|
|
@ -1772,9 +1772,7 @@ gst_msdk_create_va_pool (GstMsdkDec * thiz, GstVideoInfo * info,
|
|||
caps = gst_video_info_to_caps (info);
|
||||
}
|
||||
|
||||
pool =
|
||||
gst_va_pool_new_with_config (caps,
|
||||
GST_VIDEO_INFO_SIZE (info), num_buffers, num_buffers,
|
||||
pool = gst_va_pool_new_with_config (caps, num_buffers, num_buffers,
|
||||
VA_SURFACE_ATTRIB_USAGE_HINT_DECODER, GST_VA_FEATURE_AUTO,
|
||||
allocator, &alloc_params);
|
||||
|
||||
|
|
|
@ -1200,9 +1200,8 @@ gst_msdk_create_va_pool (GstMsdkEnc * thiz, GstVideoInfo * info,
|
|||
} else
|
||||
aligned_caps = gst_video_info_to_caps (info);
|
||||
|
||||
pool =
|
||||
gst_va_pool_new_with_config (aligned_caps, GST_VIDEO_INFO_SIZE (info),
|
||||
num_buffers, 0, VA_SURFACE_ATTRIB_USAGE_HINT_GENERIC, GST_VA_FEATURE_AUTO,
|
||||
pool = gst_va_pool_new_with_config (aligned_caps, num_buffers, 0,
|
||||
VA_SURFACE_ATTRIB_USAGE_HINT_GENERIC, GST_VA_FEATURE_AUTO,
|
||||
allocator, &alloc_params);
|
||||
|
||||
gst_object_unref (allocator);
|
||||
|
|
|
@ -429,10 +429,8 @@ gst_msdk_create_va_pool (GstMsdkVPP * thiz, GstVideoInfo * info,
|
|||
} else
|
||||
aligned_caps = gst_video_info_to_caps (info);
|
||||
|
||||
pool =
|
||||
gst_va_pool_new_with_config (aligned_caps,
|
||||
GST_VIDEO_INFO_SIZE (info), min_buffers, 0,
|
||||
usage_hint, GST_VA_FEATURE_AUTO, allocator, &alloc_params);
|
||||
pool = gst_va_pool_new_with_config (aligned_caps, min_buffers, 0, usage_hint,
|
||||
GST_VA_FEATURE_AUTO, allocator, &alloc_params);
|
||||
|
||||
gst_object_unref (allocator);
|
||||
gst_caps_unref (aligned_caps);
|
||||
|
|
|
@ -981,8 +981,7 @@ gst_qsv_encoder_prepare_va_pool (GstQsvEncoder * self,
|
|||
|
||||
gst_allocation_params_init (¶ms);
|
||||
|
||||
priv->internal_pool = gst_va_pool_new_with_config (caps,
|
||||
GST_VIDEO_INFO_SIZE (aligned_info), 0, 0,
|
||||
priv->internal_pool = gst_va_pool_new_with_config (caps, 0, 0,
|
||||
VA_SURFACE_ATTRIB_USAGE_HINT_GENERIC, GST_VA_FEATURE_AUTO,
|
||||
allocator, ¶ms);
|
||||
gst_object_unref (allocator);
|
||||
|
@ -1592,8 +1591,7 @@ gst_qsv_encoder_propose_allocation (GstVideoEncoder * encoder, GstQuery * query)
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
pool = gst_va_pool_new_with_config (caps,
|
||||
GST_VIDEO_INFO_SIZE (&info), priv->surface_pool->len, 0,
|
||||
pool = gst_va_pool_new_with_config (caps, priv->surface_pool->len, 0,
|
||||
VA_SURFACE_ATTRIB_USAGE_HINT_GENERIC, GST_VA_FEATURE_AUTO,
|
||||
allocator, ¶ms);
|
||||
|
||||
|
|
|
@ -293,8 +293,8 @@ _create_internal_pool (GstVaAV1Dec * self, gint width, gint height)
|
|||
usage_hint = va_get_surface_usage_hint (base->display,
|
||||
VAEntrypointVLD, GST_PAD_SRC, FALSE);
|
||||
|
||||
pool = gst_va_pool_new_with_config (caps, GST_VIDEO_INFO_SIZE (&info),
|
||||
1, 0, usage_hint, GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
pool = gst_va_pool_new_with_config (caps, 1, 0, usage_hint,
|
||||
GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
|
||||
gst_clear_caps (&caps);
|
||||
gst_object_unref (allocator);
|
||||
|
|
|
@ -201,7 +201,7 @@ _get_sinkpad_pool (GstElement * element, gpointer data)
|
|||
GstVaBaseEnc *base = GST_VA_BASE_ENC (element);
|
||||
GstAllocator *allocator;
|
||||
GstAllocationParams params = { 0, };
|
||||
guint size, usage_hint;
|
||||
guint usage_hint;
|
||||
GArray *surface_formats = NULL;
|
||||
GstCaps *caps = NULL;
|
||||
|
||||
|
@ -219,8 +219,6 @@ _get_sinkpad_pool (GstElement * element, gpointer data)
|
|||
|
||||
gst_allocation_params_init (¶ms);
|
||||
|
||||
size = GST_VIDEO_INFO_SIZE (&base->in_info);
|
||||
|
||||
surface_formats = gst_va_encoder_get_surface_formats (base->encoder);
|
||||
|
||||
allocator = gst_va_allocator_new (base->display, surface_formats);
|
||||
|
@ -228,8 +226,8 @@ _get_sinkpad_pool (GstElement * element, gpointer data)
|
|||
usage_hint = va_get_surface_usage_hint (base->display,
|
||||
VAEntrypointEncSlice, GST_PAD_SINK, FALSE);
|
||||
|
||||
base->priv->raw_pool = gst_va_pool_new_with_config (caps, size, 1, 0,
|
||||
usage_hint, GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
base->priv->raw_pool = gst_va_pool_new_with_config (caps, 1, 0, usage_hint,
|
||||
GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
gst_clear_caps (&caps);
|
||||
|
||||
if (!base->priv->raw_pool) {
|
||||
|
@ -356,38 +354,33 @@ gst_va_base_enc_propose_allocation (GstVideoEncoder * venc, GstQuery * query)
|
|||
GstAllocationParams params = { 0, };
|
||||
GstBufferPool *pool;
|
||||
GstCaps *caps;
|
||||
GstVideoInfo info;
|
||||
gboolean need_pool = FALSE;
|
||||
guint size, usage_hint;
|
||||
guint size = 0, usage_hint;
|
||||
|
||||
gst_query_parse_allocation (query, &caps, &need_pool);
|
||||
if (!caps)
|
||||
return FALSE;
|
||||
|
||||
if (!gst_video_info_from_caps (&info, caps)) {
|
||||
GST_ERROR_OBJECT (base, "Cannot parse caps %" GST_PTR_FORMAT, caps);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
usage_hint = va_get_surface_usage_hint (base->display,
|
||||
VAEntrypointEncSlice, GST_PAD_SINK, gst_video_is_dma_drm_caps (caps));
|
||||
|
||||
size = GST_VIDEO_INFO_SIZE (&info);
|
||||
|
||||
gst_allocation_params_init (¶ms);
|
||||
|
||||
if (!(allocator = _allocator_from_caps (base, caps)))
|
||||
return FALSE;
|
||||
|
||||
pool = gst_va_pool_new_with_config (caps, size, 1, 0, usage_hint,
|
||||
pool = gst_va_pool_new_with_config (caps, 1, 0, usage_hint,
|
||||
GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
if (!pool) {
|
||||
gst_object_unref (allocator);
|
||||
goto config_failed;
|
||||
}
|
||||
|
||||
if (!gst_va_pool_get_buffer_size (pool, &size))
|
||||
goto config_failed;
|
||||
|
||||
gst_query_add_allocation_param (query, allocator, ¶ms);
|
||||
gst_query_add_allocation_pool (query, pool, size, 0, 0);
|
||||
gst_query_add_allocation_pool (query, pool, size, 1, 0);
|
||||
|
||||
GST_DEBUG_OBJECT (base,
|
||||
"proposing %" GST_PTR_FORMAT " with allocator %" GST_PTR_FORMAT,
|
||||
|
|
|
@ -240,7 +240,6 @@ gst_va_base_transform_propose_allocation (GstBaseTransform * trans,
|
|||
GstAllocationParams params = { 0, };
|
||||
GstBufferPool *pool;
|
||||
GstCaps *caps;
|
||||
GstVideoInfo info;
|
||||
gboolean update_allocator = FALSE;
|
||||
guint size, usage_hint;
|
||||
|
||||
|
@ -261,16 +260,9 @@ gst_va_base_transform_propose_allocation (GstBaseTransform * trans,
|
|||
if (!caps)
|
||||
return FALSE;
|
||||
|
||||
if (!gst_va_video_info_from_caps (&info, NULL, caps)) {
|
||||
GST_ERROR_OBJECT (self, "Cannot parse caps %" GST_PTR_FORMAT, caps);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
usage_hint = va_get_surface_usage_hint (self->display,
|
||||
VAEntrypointVideoProc, GST_PAD_SINK, gst_video_is_dma_drm_caps (caps));
|
||||
|
||||
size = GST_VIDEO_INFO_SIZE (&info);
|
||||
|
||||
if (gst_query_get_n_allocation_params (query) > 0) {
|
||||
gst_query_parse_nth_allocation_param (query, 0, &allocator, ¶ms);
|
||||
if (!GST_IS_VA_DMABUF_ALLOCATOR (allocator)
|
||||
|
@ -286,8 +278,8 @@ gst_va_base_transform_propose_allocation (GstBaseTransform * trans,
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
pool = gst_va_pool_new_with_config (caps, size, 1 + self->extra_min_buffers,
|
||||
0, usage_hint, GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
pool = gst_va_pool_new_with_config (caps, 1 + self->extra_min_buffers, 0,
|
||||
usage_hint, GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
if (!pool) {
|
||||
gst_object_unref (allocator);
|
||||
goto config_failed;
|
||||
|
@ -298,6 +290,9 @@ gst_va_base_transform_propose_allocation (GstBaseTransform * trans,
|
|||
else
|
||||
gst_query_add_allocation_param (query, allocator, ¶ms);
|
||||
|
||||
if (!gst_va_pool_get_buffer_size (pool, &size))
|
||||
goto config_failed;
|
||||
|
||||
gst_query_add_allocation_pool (query, pool, size, 1 + self->extra_min_buffers,
|
||||
0);
|
||||
|
||||
|
@ -760,8 +755,7 @@ _get_sinkpad_pool (GstElement * element, gpointer data)
|
|||
GstAllocator *allocator;
|
||||
GstAllocationParams params = { 0, };
|
||||
GstCaps *caps;
|
||||
GstVideoInfo in_info;
|
||||
guint size, usage_hint;
|
||||
guint usage_hint;
|
||||
|
||||
if (self->priv->sinkpad_pool)
|
||||
return self->priv->sinkpad_pool;
|
||||
|
@ -787,21 +781,13 @@ _get_sinkpad_pool (GstElement * element, gpointer data)
|
|||
gst_caps_set_simple (caps, "height", G_TYPE_INT,
|
||||
self->priv->uncropped_height, NULL);
|
||||
|
||||
if (!gst_video_info_from_caps (&in_info, caps)) {
|
||||
GST_ERROR_OBJECT (self, "Cannot parse caps %" GST_PTR_FORMAT, caps);
|
||||
gst_caps_unref (caps);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
usage_hint = va_get_surface_usage_hint (self->display,
|
||||
VAEntrypointVideoProc, GST_PAD_SINK, FALSE);
|
||||
|
||||
size = GST_VIDEO_INFO_SIZE (&in_info);
|
||||
|
||||
allocator = gst_va_base_transform_allocator_from_caps (self, caps);
|
||||
g_assert (GST_IS_VA_ALLOCATOR (allocator));
|
||||
|
||||
self->priv->sinkpad_pool = gst_va_pool_new_with_config (caps, size, 1, 0,
|
||||
self->priv->sinkpad_pool = gst_va_pool_new_with_config (caps, 1, 0,
|
||||
usage_hint, GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
if (!self->priv->sinkpad_pool) {
|
||||
gst_caps_unref (caps);
|
||||
|
|
|
@ -580,8 +580,6 @@ gst_va_compositor_propose_allocation (GstAggregator * agg,
|
|||
usage_hint = va_get_surface_usage_hint (self->display,
|
||||
VAEntrypointVideoProc, GST_PAD_SINK, gst_video_is_dma_drm_caps (caps));
|
||||
|
||||
size = GST_VIDEO_INFO_SIZE (&info);
|
||||
|
||||
if (gst_query_get_n_allocation_params (query) > 0) {
|
||||
gst_query_parse_nth_allocation_param (query, 0, &allocator, ¶ms);
|
||||
if (!GST_IS_VA_DMABUF_ALLOCATOR (allocator)
|
||||
|
@ -599,13 +597,16 @@ gst_va_compositor_propose_allocation (GstAggregator * agg,
|
|||
|
||||
/* Now we have a VA-based allocator */
|
||||
|
||||
pool = gst_va_pool_new_with_config (caps, size, 1, 0, usage_hint,
|
||||
pool = gst_va_pool_new_with_config (caps, 1, 0, usage_hint,
|
||||
GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
if (!pool) {
|
||||
gst_object_unref (allocator);
|
||||
goto config_failed;
|
||||
}
|
||||
|
||||
if (!gst_va_pool_get_buffer_size (pool, &size))
|
||||
goto config_failed;
|
||||
|
||||
if (update_allocator)
|
||||
gst_query_set_nth_allocation_param (query, 0, allocator, ¶ms);
|
||||
else
|
||||
|
@ -803,7 +804,7 @@ _get_sinkpad_pool (GstElement * element, gpointer data)
|
|||
GstAllocationParams params = { 0, };
|
||||
GstCaps *caps;
|
||||
GstVideoInfo info;
|
||||
guint size, usage_hint;
|
||||
guint usage_hint;
|
||||
|
||||
if (pad->pool)
|
||||
return pad->pool;
|
||||
|
@ -822,10 +823,8 @@ _get_sinkpad_pool (GstElement * element, gpointer data)
|
|||
usage_hint = va_get_surface_usage_hint (self->display,
|
||||
VAEntrypointVideoProc, GST_PAD_SINK, FALSE);
|
||||
|
||||
size = GST_VIDEO_INFO_SIZE (&info);
|
||||
|
||||
allocator = gst_va_compositor_allocator_from_caps (self, caps);
|
||||
pad->pool = gst_va_pool_new_with_config (caps, size, 1, 0, usage_hint,
|
||||
pad->pool = gst_va_pool_new_with_config (caps, 1, 0, usage_hint,
|
||||
GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
gst_caps_unref (caps);
|
||||
|
||||
|
|
|
@ -310,7 +310,6 @@ _create_reconstruct_pool (GstVaDisplay * display, GArray * surface_formats,
|
|||
GstVideoInfo info;
|
||||
GstAllocationParams params = { 0, };
|
||||
GstBufferPool *pool;
|
||||
guint size;
|
||||
GstCaps *caps = NULL;
|
||||
|
||||
gst_video_info_set_format (&info, format, coded_width, coded_height);
|
||||
|
@ -318,17 +317,13 @@ _create_reconstruct_pool (GstVaDisplay * display, GArray * surface_formats,
|
|||
usage_hint = va_get_surface_usage_hint (display,
|
||||
VAEntrypointEncSlice, GST_PAD_SINK, FALSE);
|
||||
|
||||
size = GST_VIDEO_INFO_SIZE (&info);
|
||||
|
||||
caps = gst_video_info_to_caps (&info);
|
||||
gst_caps_set_features_simple (caps,
|
||||
gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_VA));
|
||||
|
||||
allocator = gst_va_allocator_new (display, surface_formats);
|
||||
|
||||
gst_allocation_params_init (¶ms);
|
||||
|
||||
pool = gst_va_pool_new_with_config (caps, size, 0, max_buffers, usage_hint,
|
||||
pool = gst_va_pool_new_with_config (caps, 0, max_buffers, usage_hint,
|
||||
GST_VA_FEATURE_AUTO, allocator, ¶ms);
|
||||
|
||||
gst_clear_object (&allocator);
|
||||
|
|
Loading…
Reference in a new issue