summaryrefslogtreecommitdiff
path: root/gst-libs/gst/vaapi/gstvaapidecoder_objects.c
diff options
context:
space:
mode:
authorHe Junyan <junyan.he@intel.com>2020-08-27 21:39:35 +0800
committerHe Junyan <junyan.he@intel.com>2020-12-14 18:43:52 +0800
commit46c1f3875a6e998b3d85ab4f938fd846e616252a (patch)
treeabb72e3dbed015d98983a4a084bf0903b6b71453 /gst-libs/gst/vaapi/gstvaapidecoder_objects.c
parenta16849b4ed03557b2f03cc1458cd297ef6aeda71 (diff)
downloadgstreamer-vaapi-46c1f3875a6e998b3d85ab4f938fd846e616252a.tar.gz
libs: codecobject: Add number of elements when create codec object.
One slice data may need several slice parameter buffers at one time. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer-vaapi/-/merge_requests/191>
Diffstat (limited to 'gst-libs/gst/vaapi/gstvaapidecoder_objects.c')
-rw-r--r--gst-libs/gst/vaapi/gstvaapidecoder_objects.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/gst-libs/gst/vaapi/gstvaapidecoder_objects.c b/gst-libs/gst/vaapi/gstvaapidecoder_objects.c
index 48e9ead9..8139e140 100644
--- a/gst-libs/gst/vaapi/gstvaapidecoder_objects.c
+++ b/gst-libs/gst/vaapi/gstvaapidecoder_objects.c
@@ -457,9 +457,10 @@ gst_vaapi_slice_create (GstVaapiSlice * slice,
if (!success)
return FALSE;
- success = vaapi_create_buffer (GET_VA_DISPLAY (slice), GET_VA_CONTEXT (slice),
- VASliceParameterBufferType, args->param_size, args->param,
- &slice->param_id, &slice->param);
+ g_assert (args->param_num >= 1);
+ success = vaapi_create_n_elements_buffer (GET_VA_DISPLAY (slice),
+ GET_VA_CONTEXT (slice), VASliceParameterBufferType, args->param_size,
+ args->param, &slice->param_id, &slice->param, args->param_num);
if (!success)
return FALSE;
@@ -480,3 +481,16 @@ gst_vaapi_slice_new (GstVaapiDecoder * decoder,
GST_VAAPI_CODEC_BASE (decoder), param, param_size, data, data_size, 0);
return GST_VAAPI_SLICE_CAST (object);
}
+
+GstVaapiSlice *
+gst_vaapi_slice_new_n_params (GstVaapiDecoder * decoder,
+ gconstpointer param, guint param_size, guint param_num, const guchar * data,
+ guint data_size)
+{
+ GstVaapiCodecObject *object;
+
+ object = gst_vaapi_codec_object_new_with_param_num (&GstVaapiSliceClass,
+ GST_VAAPI_CODEC_BASE (decoder), param, param_size, param_num, data,
+ data_size, 0);
+ return GST_VAAPI_SLICE_CAST (object);
+}