vkencoder-private: fix and complete public functions prechecks
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7974>
This commit is contained in:
parent
e9ef5e0c36
commit
20a0a46676
@ -344,7 +344,7 @@ gst_vulkan_encoder_new_video_session_parameters (GstVulkanEncoder * self,
|
|||||||
VkVideoSessionParametersKHR session_params;
|
VkVideoSessionParametersKHR session_params;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), NULL);
|
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), NULL);
|
||||||
g_return_val_if_fail (params, NULL);
|
g_return_val_if_fail (params != NULL, NULL);
|
||||||
|
|
||||||
priv = gst_vulkan_encoder_get_instance_private (self);
|
priv = gst_vulkan_encoder_get_instance_private (self);
|
||||||
|
|
||||||
@ -430,18 +430,22 @@ gst_vulkan_encode_picture_new (GstVulkanEncoder * self, GstBuffer * in_buffer,
|
|||||||
int width, int height, gboolean is_ref, gint nb_refs)
|
int width, int height, gboolean is_ref, gint nb_refs)
|
||||||
{
|
{
|
||||||
GstVulkanEncodePicture *pic;
|
GstVulkanEncodePicture *pic;
|
||||||
GstVulkanEncoderPrivate *priv =
|
GstVulkanEncoderPrivate *priv;
|
||||||
gst_vulkan_encoder_get_instance_private (self);
|
|
||||||
|
|
||||||
g_return_val_if_fail (self && GST_IS_VULKAN_ENCODER (self), NULL);
|
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), NULL);
|
||||||
g_return_val_if_fail (in_buffer && GST_IS_BUFFER (in_buffer), NULL);
|
g_return_val_if_fail (GST_IS_BUFFER (in_buffer), NULL);
|
||||||
|
|
||||||
|
priv = gst_vulkan_encoder_get_instance_private (self);
|
||||||
|
|
||||||
pic = g_new0 (GstVulkanEncodePicture, 1);
|
pic = g_new0 (GstVulkanEncodePicture, 1);
|
||||||
|
|
||||||
if (priv->layered_dpb) {
|
if (priv->layered_dpb) {
|
||||||
g_assert (priv->layered_buffer);
|
g_assert (priv->layered_buffer);
|
||||||
pic->dpb_buffer = gst_buffer_ref (priv->layered_buffer);
|
pic->dpb_buffer = gst_buffer_ref (priv->layered_buffer);
|
||||||
} else {
|
} else {
|
||||||
GstFlowReturn ret;
|
GstFlowReturn ret;
|
||||||
|
|
||||||
|
g_assert (GST_IS_BUFFER_POOL (priv->dpb_pool));
|
||||||
ret =
|
ret =
|
||||||
gst_buffer_pool_acquire_buffer (priv->dpb_pool, &pic->dpb_buffer, NULL);
|
gst_buffer_pool_acquire_buffer (priv->dpb_pool, &pic->dpb_buffer, NULL);
|
||||||
if (ret != GST_FLOW_OK) {
|
if (ret != GST_FLOW_OK) {
|
||||||
@ -474,7 +478,8 @@ gst_vulkan_encode_picture_new (GstVulkanEncoder * self, GstBuffer * in_buffer,
|
|||||||
void
|
void
|
||||||
gst_vulkan_encode_picture_free (GstVulkanEncodePicture * pic)
|
gst_vulkan_encode_picture_free (GstVulkanEncodePicture * pic)
|
||||||
{
|
{
|
||||||
g_return_if_fail (pic);
|
g_return_if_fail (pic != NULL);
|
||||||
|
|
||||||
gst_clear_buffer (&pic->in_buffer);
|
gst_clear_buffer (&pic->in_buffer);
|
||||||
gst_clear_buffer (&pic->dpb_buffer);
|
gst_clear_buffer (&pic->dpb_buffer);
|
||||||
gst_clear_buffer (&pic->out_buffer);
|
gst_clear_buffer (&pic->out_buffer);
|
||||||
@ -615,6 +620,7 @@ gst_vulkan_encoder_start (GstVulkanEncoder * self,
|
|||||||
GError *query_err = NULL;
|
GError *query_err = NULL;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), FALSE);
|
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), FALSE);
|
||||||
|
g_return_val_if_fail (profile != NULL, FALSE);
|
||||||
|
|
||||||
priv = gst_vulkan_encoder_get_instance_private (self);
|
priv = gst_vulkan_encoder_get_instance_private (self);
|
||||||
|
|
||||||
@ -829,6 +835,7 @@ gst_vulkan_encoder_update_video_session_parameters (GstVulkanEncoder * self,
|
|||||||
GstVulkanHandle *handle;
|
GstVulkanHandle *handle;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), FALSE);
|
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), FALSE);
|
||||||
|
g_return_val_if_fail (params != NULL, FALSE);
|
||||||
|
|
||||||
handle =
|
handle =
|
||||||
gst_vulkan_encoder_new_video_session_parameters (self, params, error);
|
gst_vulkan_encoder_new_video_session_parameters (self, params, error);
|
||||||
@ -878,7 +885,7 @@ gst_vulkan_encoder_video_session_parameters_overrides (GstVulkanEncoder * self,
|
|||||||
gpointer param_data;
|
gpointer param_data;
|
||||||
|
|
||||||
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), FALSE);
|
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), FALSE);
|
||||||
g_return_val_if_fail (params, FALSE);
|
g_return_val_if_fail (params != NULL && feedback != NULL, FALSE);
|
||||||
|
|
||||||
priv = gst_vulkan_encoder_get_instance_private (self);
|
priv = gst_vulkan_encoder_get_instance_private (self);
|
||||||
if (!priv->started)
|
if (!priv->started)
|
||||||
@ -1047,8 +1054,7 @@ gboolean
|
|||||||
gst_vulkan_encoder_encode (GstVulkanEncoder * self,
|
gst_vulkan_encoder_encode (GstVulkanEncoder * self,
|
||||||
GstVulkanEncodePicture * pic, GstVulkanEncodePicture ** ref_pics)
|
GstVulkanEncodePicture * pic, GstVulkanEncodePicture ** ref_pics)
|
||||||
{
|
{
|
||||||
GstVulkanEncoderPrivate *priv =
|
GstVulkanEncoderPrivate *priv;
|
||||||
gst_vulkan_encoder_get_instance_private (self);
|
|
||||||
GError *err = NULL;
|
GError *err = NULL;
|
||||||
gboolean ret = TRUE;
|
gboolean ret = TRUE;
|
||||||
GstMemory *mem;
|
GstMemory *mem;
|
||||||
@ -1062,12 +1068,19 @@ gst_vulkan_encoder_encode (GstVulkanEncoder * self,
|
|||||||
VkVideoBeginCodingInfoKHR begin_coding;
|
VkVideoBeginCodingInfoKHR begin_coding;
|
||||||
VkVideoEncodeInfoKHR encode_info;
|
VkVideoEncodeInfoKHR encode_info;
|
||||||
VkVideoEndCodingInfoKHR end_coding;
|
VkVideoEndCodingInfoKHR end_coding;
|
||||||
gint maxDpbSlots = priv->layered_dpb ? 2 : priv->caps.caps.maxDpbSlots;
|
gint maxDpbSlots;
|
||||||
VkVideoReferenceSlotInfoKHR ref_slots[16];
|
VkVideoReferenceSlotInfoKHR ref_slots[16];
|
||||||
gint ref_slot_num = 0;
|
gint ref_slot_num = 0;
|
||||||
GstVulkanCommandBuffer *cmd_buf;
|
GstVulkanCommandBuffer *cmd_buf;
|
||||||
GArray *barriers;
|
GArray *barriers;
|
||||||
|
|
||||||
|
g_return_val_if_fail (GST_IS_VULKAN_ENCODER (self), FALSE);
|
||||||
|
g_return_val_if_fail (pic != NULL, FALSE);
|
||||||
|
|
||||||
|
priv = gst_vulkan_encoder_get_instance_private (self);
|
||||||
|
|
||||||
|
maxDpbSlots = priv->layered_dpb ? 2 : priv->caps.caps.maxDpbSlots;
|
||||||
|
|
||||||
/* initialize the vulkan operation */
|
/* initialize the vulkan operation */
|
||||||
if (!gst_vulkan_operation_begin (priv->exec, &err))
|
if (!gst_vulkan_operation_begin (priv->exec, &err))
|
||||||
goto bail;
|
goto bail;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user