mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-24 17:20:36 +00:00
vkvideoutils: add gst_vulkan_video_profile_is_valid()
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4850>
This commit is contained in:
parent
f896e2a347
commit
13d78652b7
2 changed files with 47 additions and 1 deletions
|
@ -323,3 +323,45 @@ gst_vulkan_video_profile_from_caps (GstVulkanVideoProfile * profile,
|
||||||
#endif
|
#endif
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_vulkan_video_profile_is_valid: (skip)
|
||||||
|
* @profile: the output profile
|
||||||
|
* @codec: VkVideoCodecOperationFlagBitsKHR described by @profile
|
||||||
|
*
|
||||||
|
* Returns: %TRUE if @profile is correct and matches with @codec
|
||||||
|
*
|
||||||
|
* Since: 1.24
|
||||||
|
*/
|
||||||
|
gboolean
|
||||||
|
gst_vulkan_video_profile_is_valid (GstVulkanVideoProfile * profile, guint codec)
|
||||||
|
{
|
||||||
|
#if GST_VULKAN_HAVE_VIDEO_EXTENSIONS
|
||||||
|
int i;
|
||||||
|
VkVideoCodecOperationFlagBitsKHR op = codec;
|
||||||
|
VkStructureType stype = VK_STRUCTURE_TYPE_MAX_ENUM;
|
||||||
|
|
||||||
|
if (op == VK_VIDEO_CODEC_OPERATION_NONE_KHR)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (profile->profile.videoCodecOperation != op)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
for (i = 0; i < G_N_ELEMENTS (video_codecs_map); i++) {
|
||||||
|
if (op == video_codecs_map[i].codec) {
|
||||||
|
stype = video_codecs_map[i].stype;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (stype == VK_STRUCTURE_TYPE_MAX_ENUM)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
if (profile->codec.base.sType != stype)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include <gst/vulkan/vulkan.h>
|
#include <gst/vulkan/gstvkapi.h>
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
@ -39,6 +39,7 @@ struct _GstVulkanVideoProfile
|
||||||
VkVideoProfileInfoKHR profile;
|
VkVideoProfileInfoKHR profile;
|
||||||
VkVideoDecodeUsageInfoKHR usage;
|
VkVideoDecodeUsageInfoKHR usage;
|
||||||
union {
|
union {
|
||||||
|
VkBaseInStructure base;
|
||||||
VkVideoDecodeH264ProfileInfoKHR h264;
|
VkVideoDecodeH264ProfileInfoKHR h264;
|
||||||
VkVideoDecodeH265ProfileInfoKHR h265;
|
VkVideoDecodeH265ProfileInfoKHR h265;
|
||||||
} codec;
|
} codec;
|
||||||
|
@ -51,5 +52,8 @@ GstCaps * gst_vulkan_video_profile_to_caps (const GstVulkan
|
||||||
GST_VULKAN_API
|
GST_VULKAN_API
|
||||||
gboolean gst_vulkan_video_profile_from_caps (GstVulkanVideoProfile * profile,
|
gboolean gst_vulkan_video_profile_from_caps (GstVulkanVideoProfile * profile,
|
||||||
GstCaps * caps);
|
GstCaps * caps);
|
||||||
|
GST_VULKAN_API
|
||||||
|
gboolean gst_vulkan_video_profile_is_valid (GstVulkanVideoProfile * profile,
|
||||||
|
guint codec);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
Loading…
Reference in a new issue