From ed72e01d5cda34d60ae6fac11b07c41100008638 Mon Sep 17 00:00:00 2001 From: exomia-bot Date: Thu, 1 Feb 2024 22:35:13 +0000 Subject: [PATCH] v1.3.277 --- .version | 2 +- src/Directory.Build.props | 2 +- src/Exomia.Vulkan.Api.Core/Custom/VkArray8.cs | 88 ++++++++ .../Enums/VkStructureType.cs | 30 +++ .../Enums/VkSubgroupFeatureFlagBits.cs | 14 +- .../VkExtLineRasterization.cs | 1 + .../VkKhrShaderSubgroupRotate.cs | 2 +- .../VkKhrVideoDecodeAv1.cs | 51 +++++ .../VkVideoDecodeAV1CapabilitiesKHR.cs | 51 +++++ .../VkVideoDecodeAV1DpbSlotInfoKHR.cs | 45 ++++ .../VkVideoDecodeAV1PictureInfoKHR.cs | 72 +++++++ .../VkVideoDecodeAV1ProfileInfoKHR.cs | 52 +++++ ...DecodeAV1SessionParametersCreateInfoKHR.cs | 48 +++++ .../VkVideoCodecOperationFlagBitsKHR.cs | 12 +- .../StdVideoAV1CDEF.cs | 33 +++ .../StdVideoAV1ChromaSamplePosition.cs | 26 +++ .../StdVideoAV1ColorConfig.cs | 39 ++++ .../StdVideoAV1ColorConfigFlags.cs | 53 +++++ .../StdVideoAV1ColorPrimaries.cs | 34 +++ .../StdVideoAV1FilmGrain.cs | 71 ++++++ .../StdVideoAV1FilmGrainFlags.cs | 53 +++++ .../StdVideoAV1FrameRestorationType.cs | 26 +++ .../StdVideoAV1FrameType.cs | 26 +++ .../StdVideoAV1GlobalMotion.cs | 25 +++ .../StdVideoAV1InterpolationFilter.cs | 27 +++ .../StdVideoAV1Level.cs | 46 ++++ .../StdVideoAV1LoopFilter.cs | 35 +++ .../StdVideoAV1LoopFilterFlags.cs | 41 ++++ .../StdVideoAV1LoopRestoration.cs | 25 +++ .../StdVideoAV1MatrixCoefficients.cs | 37 ++++ .../StdVideoAV1Profile.cs | 25 +++ .../StdVideoAV1Quantization.cs | 41 ++++ .../StdVideoAV1QuantizationFlags.cs | 41 ++++ .../StdVideoAV1ReferenceName.cs | 30 +++ .../StdVideoAV1Segmentation.cs | 25 +++ .../StdVideoAV1SequenceHeader.cs | 49 +++++ .../StdVideoAV1SequenceHeaderFlags.cs | 143 ++++++++++++ .../StdVideoAV1TileInfo.cs | 41 ++++ .../StdVideoAV1TileInfoFlags.cs | 35 +++ .../StdVideoAV1TimingInfo.cs | 29 +++ .../StdVideoAV1TimingInfoFlags.cs | 35 +++ .../StdVideoAV1TransferCharacteristics.cs | 41 ++++ .../StdVideoAV1TxMode.cs | 25 +++ .../VulkanVideoCodecAv1std.cs | 64 ++++++ .../StdVideoDecodeAV1PictureInfo.cs | 69 ++++++ .../StdVideoDecodeAV1PictureInfoFlags.cs | 203 ++++++++++++++++++ .../StdVideoDecodeAV1ReferenceInfo.cs | 31 +++ .../StdVideoDecodeAV1ReferenceInfoFlags.cs | 41 ++++ .../VulkanVideoCodecAv1stdDecode.cs | 43 ++++ .../VulkanVideoCodecAv1stdDecode.defines.cs | 21 ++ 50 files changed, 2094 insertions(+), 5 deletions(-) create mode 100644 src/Exomia.Vulkan.Api.Core/Custom/VkArray8.cs create mode 100644 src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkKhrVideoDecodeAv1.cs create mode 100644 src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1CapabilitiesKHR.cs create mode 100644 src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1DpbSlotInfoKHR.cs create mode 100644 src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1PictureInfoKHR.cs create mode 100644 src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1ProfileInfoKHR.cs create mode 100644 src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1SessionParametersCreateInfoKHR.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1CDEF.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ChromaSamplePosition.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorConfig.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorConfigFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorPrimaries.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FilmGrain.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FilmGrainFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FrameRestorationType.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FrameType.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1GlobalMotion.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1InterpolationFilter.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Level.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopFilter.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopFilterFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopRestoration.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1MatrixCoefficients.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Profile.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Quantization.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1QuantizationFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ReferenceName.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Segmentation.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1SequenceHeader.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1SequenceHeaderFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TileInfo.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TileInfoFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TimingInfo.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TimingInfoFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TransferCharacteristics.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TxMode.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/VulkanVideoCodecAv1std.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1PictureInfo.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1PictureInfoFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1ReferenceInfo.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1ReferenceInfoFlags.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/VulkanVideoCodecAv1stdDecode.cs create mode 100644 src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/VulkanVideoCodecAv1stdDecode.defines.cs diff --git a/.version b/.version index a006ba70..64f75c23 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.3.276 \ No newline at end of file +1.3.277 \ No newline at end of file diff --git a/src/Directory.Build.props b/src/Directory.Build.props index 65acc433..fb8fe9a7 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -3,7 +3,7 @@ - net6.0;net7.0 + net6.0;net7.0;net8.0 AnyCPU;x64 diff --git a/src/Exomia.Vulkan.Api.Core/Custom/VkArray8.cs b/src/Exomia.Vulkan.Api.Core/Custom/VkArray8.cs new file mode 100644 index 00000000..03f6f77e --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Custom/VkArray8.cs @@ -0,0 +1,88 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +// ReSharper disable UnusedMember.Global +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// Used instead of public fixed T[8]. +/// +/// Generic type parameter. +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkArray8 + where T : unmanaged +{ + /// + /// The length of . + /// + public const uint LENGTH = 8; + + /// + /// Indexer to get or set items within this collection using array index syntax. + /// + /// Zero-based index of the entry to access. + /// + /// The indexed item. + /// + public T this[uint index] + { + get + { +#if DEBUG + if (index >= LENGTH) { throw new ArgumentOutOfRangeException(nameof(index)); } +#endif + return *((T*)Unsafe.AsPointer(ref this) + index); + } + set + { +#if DEBUG + if (index >= LENGTH) { throw new ArgumentOutOfRangeException(nameof(index)); } +#endif + *((T*)Unsafe.AsPointer(ref this) + index) = value; + } + } + + /// + /// Indexer to get or set items within this collection using array index syntax. + /// + /// Zero-based index of the entry to access. + /// + /// The indexed item. + /// + public T this[int index] + { + get + { +#if DEBUG + if (index >= LENGTH || index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); } +#endif + return *((T*)Unsafe.AsPointer(ref this) + index); + } + set + { +#if DEBUG + if (index >= LENGTH || index < 0) { throw new ArgumentOutOfRangeException(nameof(index)); } +#endif + *((T*)Unsafe.AsPointer(ref this) + index) = value; + } + } + +#pragma warning disable 1591 //Missing XML comment for publicly visible type or member + public T M01; + public T M02; + public T M03; + public T M04; + public T M05; + public T M06; + public T M07; + public T M08; +#pragma warning restore 1591 //Missing XML comment for publicly visible type or member +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs index 2914c9d3..caa30352 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkStructureType.cs @@ -5083,6 +5083,36 @@ public enum VkStructureType /// VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001, + /// + /// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR = 1000512000, + + /// + /// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR = 1000512001, + + /// + /// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR = 1000512003, + + /// + /// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000512004, + + /// + /// VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType + ///
+ VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR = 1000512005, + /// /// VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkStructureType diff --git a/src/Exomia.Vulkan.Api.Core/Enums/VkSubgroupFeatureFlagBits.cs b/src/Exomia.Vulkan.Api.Core/Enums/VkSubgroupFeatureFlagBits.cs index 6e3dc4ae..f5195ff7 100644 --- a/src/Exomia.Vulkan.Api.Core/Enums/VkSubgroupFeatureFlagBits.cs +++ b/src/Exomia.Vulkan.Api.Core/Enums/VkSubgroupFeatureFlagBits.cs @@ -72,5 +72,17 @@ public enum VkSubgroupFeatureFlagBits /// VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV
/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits ///
- VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x100 + VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x100, + + /// + /// VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits + ///
+ VK_SUBGROUP_FEATURE_ROTATE_BIT_KHR = 0x200, + + /// + /// VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR
+ /// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/html/vkspec.html#VkSubgroupFeatureFlagBits + ///
+ VK_SUBGROUP_FEATURE_ROTATE_CLUSTERED_BIT_KHR = 0x400 } \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_line_rasterization/VkExtLineRasterization.cs b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_line_rasterization/VkExtLineRasterization.cs index 3c0e8b5d..3f6c94fb 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_line_rasterization/VkExtLineRasterization.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/EXT/VK_EXT_line_rasterization/VkExtLineRasterization.cs @@ -29,6 +29,7 @@ namespace Exomia.Vulkan.Api.Core; [VkDepends("VK_KHR_get_physical_device_properties2,VK_VERSION_1_1")] [VkSpecialuse("cadsupport")] [VkDeviceExt] +[Obsolete("promoted to VK_KHR_line_rasterization", false, UrlFormat = "https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_line_rasterization.html#_deprecation_state")] public static unsafe class VkExtLineRasterization { /// The spec version. diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_shader_subgroup_rotate/VkKhrShaderSubgroupRotate.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_shader_subgroup_rotate/VkKhrShaderSubgroupRotate.cs index 740fa7dc..3877b2f8 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_shader_subgroup_rotate/VkKhrShaderSubgroupRotate.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_shader_subgroup_rotate/VkKhrShaderSubgroupRotate.cs @@ -27,7 +27,7 @@ namespace Exomia.Vulkan.Api.Core; public static class VkKhrShaderSubgroupRotate { /// The spec version. - public const uint VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 1; + public const uint VK_KHR_SHADER_SUBGROUP_ROTATE_SPEC_VERSION = 2; /// The extension name. public const string VK_KHR_SHADER_SUBGROUP_ROTATE_EXTENSION_NAME = "VK_KHR_shader_subgroup_rotate"; diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkKhrVideoDecodeAv1.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkKhrVideoDecodeAv1.cs new file mode 100644 index 00000000..8de0432c --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkKhrVideoDecodeAv1.cs @@ -0,0 +1,51 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +global using static Exomia.Vulkan.Api.Core.VkKhrVideoDecodeAv1; + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// VK_KHR_video_decode_av1 - device extension (nr. 513) - author 'KHR' [platform '' | contact 'Daniel Rakos @aqnuep'] +///
+/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_KHR_video_decode_av1.html +///
+[VkDepends("VK_KHR_video_decode_queue")] +[VkDeviceExt] +public static class VkKhrVideoDecodeAv1 +{ + /// The spec version. + public const uint VK_KHR_VIDEO_DECODE_AV1_SPEC_VERSION = 1; + + /// The extension name. + public const string VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME = "VK_KHR_video_decode_av1"; + + /// + /// An UTF8 null terminated version of represented by an + /// UTF16 string. + /// + /// + /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME_UTF8_NT) {
+ /// sbyte* utf8NtPtr = (sbyte*)ptr; // utf8NtPtr - can now be passed and used directly as a utf8_nt string for + /// unmanaged code.
+ /// } + ///
+ public const string VK_KHR_VIDEO_DECODE_AV1_EXTENSION_NAME_UTF8_NT = "\u4b56\u4b5f\u5248\u565f\u4449\u4f45\u445f\u4345\u444f\u5f45\u5641\u5f31\u5845\u4554\u534e\u4f49\u5f4e\u414e\u454d\u0000"; + + public const uint VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR = 7; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1CapabilitiesKHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1CapabilitiesKHR.cs new file mode 100644 index 00000000..da7597de --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1CapabilitiesKHR.cs @@ -0,0 +1,51 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// VkVideoDecodeAV1CapabilitiesKHR - Structure describing AV1 decode capabilities - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1CapabilitiesKHR.html +/// +/// +/// +/// +/// +/// structextendsVkVideoCapabilitiesKHR +/// +/// +/// returnedonlytrue +/// +/// +/// +[VkStructExtends("VkVideoCapabilitiesKHR")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkVideoDecodeAV1CapabilitiesKHR +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_CAPABILITIES_KHR; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// + /// maxLevel is a StdVideoAV1Level value specifying the maximum AV1 level supported by the profile, as defined in + /// section A.3 of the AV1 Specification. + /// + public StdVideoAV1Level maxLevel; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1DpbSlotInfoKHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1DpbSlotInfoKHR.cs new file mode 100644 index 00000000..45027f89 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1DpbSlotInfoKHR.cs @@ -0,0 +1,45 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// VkVideoDecodeAV1DpbSlotInfoKHR - Structure specifies AV1 DPB information when decoding a frame - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1DpbSlotInfoKHR.html +/// +/// +/// +/// +/// structextendsVkVideoReferenceSlotInfoKHR +/// +/// +/// +[VkStructExtends("VkVideoReferenceSlotInfoKHR")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkVideoDecodeAV1DpbSlotInfoKHR +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_DPB_SLOT_INFO_KHR; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// + /// pStdReferenceInfo is a pointer to a StdVideoDecodeAV1ReferenceInfo structure specifying AV1 reference + /// information. + /// + public StdVideoDecodeAV1ReferenceInfo* pStdReferenceInfo; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1PictureInfoKHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1PictureInfoKHR.cs new file mode 100644 index 00000000..7714a19a --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1PictureInfoKHR.cs @@ -0,0 +1,72 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// VkVideoDecodeAV1PictureInfoKHR - Structure specifies AV1 picture information when decoding a frame - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1PictureInfoKHR.html +/// +/// +/// +/// +/// structextendsVkVideoDecodeInfoKHR +/// +/// +/// +[VkStructExtends("VkVideoDecodeInfoKHR")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkVideoDecodeAV1PictureInfoKHR +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PICTURE_INFO_KHR; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// pStdPictureInfo is a pointer to a StdVideoDecodeAV1PictureInfo structure specifying AV1 picture information. + public StdVideoDecodeAV1PictureInfo* pStdPictureInfo; + + /// + /// referenceNameSlotIndices is an array of seven (VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR, which is equal to + /// the Video Std definition STD_VIDEO_AV1_REFS_PER_FRAME) signed integer values specifying the index of the DPB slot + /// or a negative integer value for each AV1 reference nameused for inter coding. In particular, the DPB slot index for + /// the AV1 reference name frameis specified in referenceNameSlotIndices[frame - + /// STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME]. + /// + public fixed int referenceNameSlotIndices[(int)VK_MAX_VIDEO_AV1_REFERENCES_PER_FRAME_KHR]; + + /// + /// frameHeaderOffset is the byte offset of the AV1 frame header OBU, as defined in section 5.9 of the AV1 + /// Specification, within the video bitstream buffer range specified in VkVideoDecodeInfoKHR. + /// + public uint frameHeaderOffset; + + /// tileCount is the number of elements in pTileOffsets and pTileSizes. + public uint tileCount; + + /// + /// pTileOffsets is a pointer to an array of tileCount integers specifying the byte offset of the tiles of the + /// picture within the video bitstream buffer range specified in VkVideoDecodeInfoKHR. + /// + public uint* pTileOffsets; + + /// + /// pTileSizes is a pointer to an array of tileCount integers specifying the byte size of the tiles of the picture + /// within the video bitstream buffer range specified in VkVideoDecodeInfoKHR. + /// + public uint* pTileSizes; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1ProfileInfoKHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1ProfileInfoKHR.cs new file mode 100644 index 00000000..28faca90 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1ProfileInfoKHR.cs @@ -0,0 +1,52 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// VkVideoDecodeAV1ProfileInfoKHR - Structure specifying AV1 decode profile - +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1ProfileInfoKHR.html +/// +/// +/// +/// +/// structextendsVkVideoProfileInfoKHR,VkQueryPoolCreateInfo +/// +/// +/// +[VkStructExtends("VkVideoProfileInfoKHR,VkQueryPoolCreateInfo")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkVideoDecodeAV1ProfileInfoKHR +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_PROFILE_INFO_KHR; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// + /// stdProfile is a StdVideoAV1Profile value specifying the AV1 codec profile, as defined in section A.2 of the + /// AV1 Specification. + /// + public StdVideoAV1Profile stdProfile; + + /// + /// filmGrainSupport specifies whether AV1 film grain, as defined in section 7.8.3 of the AV1 Specification, can + /// be used with the video profile. When this member is set to VK_TRUE, video session objects created against the video + /// profile will be able to decode pictures that have film grain enabled. + /// + public VkBool32 filmGrainSupport; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1SessionParametersCreateInfoKHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1SessionParametersCreateInfoKHR.cs new file mode 100644 index 00000000..8359dcc9 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_decode_av1/VkVideoDecodeAV1SessionParametersCreateInfoKHR.cs @@ -0,0 +1,48 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +/// +/// VkVideoDecodeAV1SessionParametersCreateInfoKHR - Structure specifies AV1 decoder parameter set information - +/// +/// https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeAV1SessionParametersCreateInfoKHR.html +/// +/// +/// +/// +/// +/// structextendsVkVideoSessionParametersCreateInfoKHR +/// +/// +/// +[VkStructExtends("VkVideoSessionParametersCreateInfoKHR")] +[StructLayout(LayoutKind.Sequential)] +public unsafe struct VkVideoDecodeAV1SessionParametersCreateInfoKHR +{ + /// The stype of this structure. + public const VkStructureType STYPE = VK_STRUCTURE_TYPE_VIDEO_DECODE_AV1_SESSION_PARAMETERS_CREATE_INFO_KHR; + + /// sType is a VkStructureType value identifying this structure. + public VkStructureType sType; + + /// pNext is NULL or a pointer to a structure extending this structure. + public void* pNext; + + /// + /// pStdSequenceHeader is a pointer to a StdVideoAV1SequenceHeader structure describing the AV1 sequence header + /// entry to store in the created object. + /// + public StdVideoAV1SequenceHeader* pStdSequenceHeader; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_queue/VkVideoCodecOperationFlagBitsKHR.cs b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_queue/VkVideoCodecOperationFlagBitsKHR.cs index b15bd315..0fbcbb79 100644 --- a/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_queue/VkVideoCodecOperationFlagBitsKHR.cs +++ b/src/Exomia.Vulkan.Api.Core/Extensions/KHR/VK_KHR_video_queue/VkVideoCodecOperationFlagBitsKHR.cs @@ -64,5 +64,15 @@ public enum VkVideoCodecOperationFlagBitsKHR /// /// . /// - VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0x2 + VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0x2, + + /// + /// VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR specifies support for + /// + /// AV1 decode + /// operations + /// + /// . + /// + VK_VIDEO_CODEC_OPERATION_DECODE_AV1_BIT_KHR = 0x4 } \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1CDEF.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1CDEF.cs new file mode 100644 index 00000000..8de029d2 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1CDEF.cs @@ -0,0 +1,33 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoAV1CDEF +{ + public byte cdef_damping_minus_3; + + public byte cdef_bits; + + public fixed byte cdef_y_pri_strength[(int)STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; + + public fixed byte cdef_y_sec_strength[(int)STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; + + public fixed byte cdef_uv_pri_strength[(int)STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; + + public fixed byte cdef_uv_sec_strength[(int)STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS]; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ChromaSamplePosition.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ChromaSamplePosition.cs new file mode 100644 index 00000000..67ea254a --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ChromaSamplePosition.cs @@ -0,0 +1,26 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1ChromaSamplePosition +{ + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_UNKNOWN = 0, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_VERTICAL = 1, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_COLOCATED = 2, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_RESERVED = 3, + STD_VIDEO_AV1_CHROMA_SAMPLE_POSITION_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorConfig.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorConfig.cs new file mode 100644 index 00000000..de1a447b --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorConfig.cs @@ -0,0 +1,39 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1ColorConfig +{ + public StdVideoAV1ColorConfigFlags flags; + + public byte BitDepth; + + public byte subsampling_x; + + public byte subsampling_y; + + public byte reserved1; + + public StdVideoAV1ColorPrimaries color_primaries; + + public StdVideoAV1TransferCharacteristics transfer_characteristics; + + public StdVideoAV1MatrixCoefficients matrix_coefficients; + + public StdVideoAV1ChromaSamplePosition chroma_sample_position; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorConfigFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorConfigFlags.cs new file mode 100644 index 00000000..2b0d0bb4 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorConfigFlags.cs @@ -0,0 +1,53 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1ColorConfigFlags +{ + private uint _bitfield1; + + public uint mono_chrome + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint color_range + { + get { return (uint)((_bitfield1 >> 1) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFD) | (((uint)value & 0x00000001) << 1); } + } + + public uint separate_uv_delta_q + { + get { return (uint)((_bitfield1 >> 2) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFB) | (((uint)value & 0x00000001) << 2); } + } + + public uint color_description_present_flag + { + get { return (uint)((_bitfield1 >> 3) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFF7) | (((uint)value & 0x00000001) << 3); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 4) & 0x0FFFFFFF); } + set { _bitfield1 = (_bitfield1 & 0x0000000F) | (((uint)value & 0x0FFFFFFF) << 4); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorPrimaries.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorPrimaries.cs new file mode 100644 index 00000000..0c52ba58 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ColorPrimaries.cs @@ -0,0 +1,34 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1ColorPrimaries +{ + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_709 = 1, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_UNSPECIFIED = 2, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_M = 4, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_470_B_G = 5, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_601 = 6, + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_240 = 7, + STD_VIDEO_AV1_COLOR_PRIMARIES_GENERIC_FILM = 8, + STD_VIDEO_AV1_COLOR_PRIMARIES_BT_2020 = 9, + STD_VIDEO_AV1_COLOR_PRIMARIES_XYZ = 10, + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_431 = 11, + STD_VIDEO_AV1_COLOR_PRIMARIES_SMPTE_432 = 12, + STD_VIDEO_AV1_COLOR_PRIMARIES_EBU_3213 = 22, + STD_VIDEO_AV1_COLOR_PRIMARIES_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FilmGrain.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FilmGrain.cs new file mode 100644 index 00000000..b63c989e --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FilmGrain.cs @@ -0,0 +1,71 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoAV1FilmGrain +{ + public StdVideoAV1FilmGrainFlags flags; + + public byte grain_scaling_minus_8; + + public byte ar_coeff_lag; + + public byte ar_coeff_shift_minus_6; + + public byte grain_scale_shift; + + public ushort grain_seed; + + public byte film_grain_params_ref_idx; + + public byte num_y_points; + + public fixed byte point_y_value[(int)STD_VIDEO_AV1_MAX_NUM_Y_POINTS]; + + public fixed byte point_y_scaling[(int)STD_VIDEO_AV1_MAX_NUM_Y_POINTS]; + + public byte num_cb_points; + + public fixed byte point_cb_value[(int)STD_VIDEO_AV1_MAX_NUM_CB_POINTS]; + + public fixed byte point_cb_scaling[(int)STD_VIDEO_AV1_MAX_NUM_CB_POINTS]; + + public byte num_cr_points; + + public fixed byte point_cr_value[(int)STD_VIDEO_AV1_MAX_NUM_CR_POINTS]; + + public fixed byte point_cr_scaling[(int)STD_VIDEO_AV1_MAX_NUM_CR_POINTS]; + + public fixed sbyte ar_coeffs_y_plus_128[(int)STD_VIDEO_AV1_MAX_NUM_POS_LUMA]; + + public fixed sbyte ar_coeffs_cb_plus_128[(int)STD_VIDEO_AV1_MAX_NUM_POS_CHROMA]; + + public fixed sbyte ar_coeffs_cr_plus_128[(int)STD_VIDEO_AV1_MAX_NUM_POS_CHROMA]; + + public byte cb_mult; + + public byte cb_luma_mult; + + public ushort cb_offset; + + public byte cr_mult; + + public byte cr_luma_mult; + + public ushort cr_offset; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FilmGrainFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FilmGrainFlags.cs new file mode 100644 index 00000000..d6d18b5b --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FilmGrainFlags.cs @@ -0,0 +1,53 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1FilmGrainFlags +{ + private uint _bitfield1; + + public uint chroma_scaling_from_luma + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint overlap_flag + { + get { return (uint)((_bitfield1 >> 1) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFD) | (((uint)value & 0x00000001) << 1); } + } + + public uint clip_to_restricted_range + { + get { return (uint)((_bitfield1 >> 2) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFB) | (((uint)value & 0x00000001) << 2); } + } + + public uint update_grain + { + get { return (uint)((_bitfield1 >> 3) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFF7) | (((uint)value & 0x00000001) << 3); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 4) & 0x0FFFFFFF); } + set { _bitfield1 = (_bitfield1 & 0x0000000F) | (((uint)value & 0x0FFFFFFF) << 4); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FrameRestorationType.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FrameRestorationType.cs new file mode 100644 index 00000000..275602e4 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FrameRestorationType.cs @@ -0,0 +1,26 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1FrameRestorationType +{ + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_NONE = 0, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_WIENER = 1, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SGRPROJ = 2, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_SWITCHABLE = 3, + STD_VIDEO_AV1_FRAME_RESTORATION_TYPE_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FrameType.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FrameType.cs new file mode 100644 index 00000000..31a85fa3 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1FrameType.cs @@ -0,0 +1,26 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1FrameType +{ + STD_VIDEO_AV1_FRAME_TYPE_KEY = 0, + STD_VIDEO_AV1_FRAME_TYPE_INTER = 1, + STD_VIDEO_AV1_FRAME_TYPE_INTRA_ONLY = 2, + STD_VIDEO_AV1_FRAME_TYPE_SWITCH = 3, + STD_VIDEO_AV1_FRAME_TYPE_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1GlobalMotion.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1GlobalMotion.cs new file mode 100644 index 00000000..b5a49644 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1GlobalMotion.cs @@ -0,0 +1,25 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoAV1GlobalMotion +{ + public fixed byte GmType[(int)STD_VIDEO_AV1_NUM_REF_FRAMES]; + + public VkArray8> gm_params; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1InterpolationFilter.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1InterpolationFilter.cs new file mode 100644 index 00000000..26aae611 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1InterpolationFilter.cs @@ -0,0 +1,27 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1InterpolationFilter +{ + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP = 0, + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SMOOTH = 1, + STD_VIDEO_AV1_INTERPOLATION_FILTER_EIGHTTAP_SHARP = 2, + STD_VIDEO_AV1_INTERPOLATION_FILTER_BILINEAR = 3, + STD_VIDEO_AV1_INTERPOLATION_FILTER_SWITCHABLE = 4, + STD_VIDEO_AV1_INTERPOLATION_FILTER_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Level.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Level.cs new file mode 100644 index 00000000..fad76dd5 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Level.cs @@ -0,0 +1,46 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1Level +{ + STD_VIDEO_AV1_LEVEL_2_0 = 0, + STD_VIDEO_AV1_LEVEL_2_1 = 1, + STD_VIDEO_AV1_LEVEL_2_2 = 2, + STD_VIDEO_AV1_LEVEL_2_3 = 3, + STD_VIDEO_AV1_LEVEL_3_0 = 4, + STD_VIDEO_AV1_LEVEL_3_1 = 5, + STD_VIDEO_AV1_LEVEL_3_2 = 6, + STD_VIDEO_AV1_LEVEL_3_3 = 7, + STD_VIDEO_AV1_LEVEL_4_0 = 8, + STD_VIDEO_AV1_LEVEL_4_1 = 9, + STD_VIDEO_AV1_LEVEL_4_2 = 10, + STD_VIDEO_AV1_LEVEL_4_3 = 11, + STD_VIDEO_AV1_LEVEL_5_0 = 12, + STD_VIDEO_AV1_LEVEL_5_1 = 13, + STD_VIDEO_AV1_LEVEL_5_2 = 14, + STD_VIDEO_AV1_LEVEL_5_3 = 15, + STD_VIDEO_AV1_LEVEL_6_0 = 16, + STD_VIDEO_AV1_LEVEL_6_1 = 17, + STD_VIDEO_AV1_LEVEL_6_2 = 18, + STD_VIDEO_AV1_LEVEL_6_3 = 19, + STD_VIDEO_AV1_LEVEL_7_0 = 20, + STD_VIDEO_AV1_LEVEL_7_1 = 21, + STD_VIDEO_AV1_LEVEL_7_2 = 22, + STD_VIDEO_AV1_LEVEL_7_3 = 23, + STD_VIDEO_AV1_LEVEL_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopFilter.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopFilter.cs new file mode 100644 index 00000000..8f41fe8b --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopFilter.cs @@ -0,0 +1,35 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoAV1LoopFilter +{ + public StdVideoAV1LoopFilterFlags flags; + + public fixed byte loop_filter_level[(int)STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS]; + + public byte loop_filter_sharpness; + + public byte update_ref_delta; + + public fixed sbyte loop_filter_ref_deltas[(int)STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME]; + + public byte update_mode_delta; + + public fixed sbyte loop_filter_mode_deltas[(int)STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS]; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopFilterFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopFilterFlags.cs new file mode 100644 index 00000000..e7a56fb0 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopFilterFlags.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1LoopFilterFlags +{ + private uint _bitfield1; + + public uint loop_filter_delta_enabled + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint loop_filter_delta_update + { + get { return (uint)((_bitfield1 >> 1) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFD) | (((uint)value & 0x00000001) << 1); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 2) & 0x3FFFFFFF); } + set { _bitfield1 = (_bitfield1 & 0x00000003) | (((uint)value & 0x3FFFFFFF) << 2); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopRestoration.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopRestoration.cs new file mode 100644 index 00000000..644ae99a --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1LoopRestoration.cs @@ -0,0 +1,25 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1LoopRestoration +{ + public VkArray3 FrameRestorationType; + + public VkArray3 LoopRestorationSize; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1MatrixCoefficients.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1MatrixCoefficients.cs new file mode 100644 index 00000000..36e2207a --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1MatrixCoefficients.cs @@ -0,0 +1,37 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1MatrixCoefficients +{ + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_IDENTITY = 0, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_709 = 1, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_UNSPECIFIED = 2, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_RESERVED_3 = 3, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_FCC = 4, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_470_B_G = 5, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_601 = 6, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_240 = 7, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_YCGCO = 8, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_NCL = 9, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_BT_2020_CL = 10, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_SMPTE_2085 = 11, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_NCL = 12, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_CHROMAT_CL = 13, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_ICTCP = 14, + STD_VIDEO_AV1_MATRIX_COEFFICIENTS_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Profile.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Profile.cs new file mode 100644 index 00000000..7003229b --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Profile.cs @@ -0,0 +1,25 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1Profile +{ + STD_VIDEO_AV1_PROFILE_MAIN = 0, + STD_VIDEO_AV1_PROFILE_HIGH = 1, + STD_VIDEO_AV1_PROFILE_PROFESSIONAL = 2, + STD_VIDEO_AV1_PROFILE_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Quantization.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Quantization.cs new file mode 100644 index 00000000..a537eecb --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Quantization.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1Quantization +{ + public StdVideoAV1QuantizationFlags flags; + + public byte base_q_idx; + + public sbyte DeltaQYDc; + + public sbyte DeltaQUDc; + + public sbyte DeltaQUAc; + + public sbyte DeltaQVDc; + + public sbyte DeltaQVAc; + + public byte qm_y; + + public byte qm_u; + + public byte qm_v; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1QuantizationFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1QuantizationFlags.cs new file mode 100644 index 00000000..a57c13e2 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1QuantizationFlags.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1QuantizationFlags +{ + private uint _bitfield1; + + public uint using_qmatrix + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint diff_uv_delta + { + get { return (uint)((_bitfield1 >> 1) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFD) | (((uint)value & 0x00000001) << 1); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 2) & 0x3FFFFFFF); } + set { _bitfield1 = (_bitfield1 & 0x00000003) | (((uint)value & 0x3FFFFFFF) << 2); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ReferenceName.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ReferenceName.cs new file mode 100644 index 00000000..0f322659 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1ReferenceName.cs @@ -0,0 +1,30 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1ReferenceName +{ + STD_VIDEO_AV1_REFERENCE_NAME_INTRA_FRAME = 0, + STD_VIDEO_AV1_REFERENCE_NAME_LAST_FRAME = 1, + STD_VIDEO_AV1_REFERENCE_NAME_LAST2_FRAME = 2, + STD_VIDEO_AV1_REFERENCE_NAME_LAST3_FRAME = 3, + STD_VIDEO_AV1_REFERENCE_NAME_GOLDEN_FRAME = 4, + STD_VIDEO_AV1_REFERENCE_NAME_BWDREF_FRAME = 5, + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF2_FRAME = 6, + STD_VIDEO_AV1_REFERENCE_NAME_ALTREF_FRAME = 7, + STD_VIDEO_AV1_REFERENCE_NAME_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Segmentation.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Segmentation.cs new file mode 100644 index 00000000..055850d7 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1Segmentation.cs @@ -0,0 +1,25 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoAV1Segmentation +{ + public fixed byte FeatureEnabled[(int)STD_VIDEO_AV1_MAX_SEGMENTS]; + + public VkArray8> FeatureData; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1SequenceHeader.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1SequenceHeader.cs new file mode 100644 index 00000000..f4779c73 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1SequenceHeader.cs @@ -0,0 +1,49 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoAV1SequenceHeader +{ + public StdVideoAV1SequenceHeaderFlags flags; + + public StdVideoAV1Profile seq_profile; + + public byte frame_width_bits_minus_1; + + public byte frame_height_bits_minus_1; + + public ushort max_frame_width_minus_1; + + public ushort max_frame_height_minus_1; + + public byte delta_frame_id_length_minus_2; + + public byte additional_frame_id_length_minus_1; + + public byte order_hint_bits_minus_1; + + public byte seq_force_integer_mv; + + public byte seq_force_screen_content_tools; + + public fixed byte reserved1[5]; + + public StdVideoAV1ColorConfig* pColorConfig; + + public StdVideoAV1TimingInfo* pTimingInfo; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1SequenceHeaderFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1SequenceHeaderFlags.cs new file mode 100644 index 00000000..294fa4ba --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1SequenceHeaderFlags.cs @@ -0,0 +1,143 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1SequenceHeaderFlags +{ + private uint _bitfield1; + + public uint still_picture + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint reduced_still_picture_header + { + get { return (uint)((_bitfield1 >> 1) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFD) | (((uint)value & 0x00000001) << 1); } + } + + public uint use_128x128_superblock + { + get { return (uint)((_bitfield1 >> 2) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFB) | (((uint)value & 0x00000001) << 2); } + } + + public uint enable_filter_intra + { + get { return (uint)((_bitfield1 >> 3) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFF7) | (((uint)value & 0x00000001) << 3); } + } + + public uint enable_intra_edge_filter + { + get { return (uint)((_bitfield1 >> 4) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFEF) | (((uint)value & 0x00000001) << 4); } + } + + public uint enable_interintra_compound + { + get { return (uint)((_bitfield1 >> 5) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFDF) | (((uint)value & 0x00000001) << 5); } + } + + public uint enable_masked_compound + { + get { return (uint)((_bitfield1 >> 6) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFBF) | (((uint)value & 0x00000001) << 6); } + } + + public uint enable_warped_motion + { + get { return (uint)((_bitfield1 >> 7) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFF7F) | (((uint)value & 0x00000001) << 7); } + } + + public uint enable_dual_filter + { + get { return (uint)((_bitfield1 >> 8) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFEFF) | (((uint)value & 0x00000001) << 8); } + } + + public uint enable_order_hint + { + get { return (uint)((_bitfield1 >> 9) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFDFF) | (((uint)value & 0x00000001) << 9); } + } + + public uint enable_jnt_comp + { + get { return (uint)((_bitfield1 >> 10) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFBFF) | (((uint)value & 0x00000001) << 10); } + } + + public uint enable_ref_frame_mvs + { + get { return (uint)((_bitfield1 >> 11) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFF7FF) | (((uint)value & 0x00000001) << 11); } + } + + public uint frame_id_numbers_present_flag + { + get { return (uint)((_bitfield1 >> 12) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFEFFF) | (((uint)value & 0x00000001) << 12); } + } + + public uint enable_superres + { + get { return (uint)((_bitfield1 >> 13) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFDFFF) | (((uint)value & 0x00000001) << 13); } + } + + public uint enable_cdef + { + get { return (uint)((_bitfield1 >> 14) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFBFFF) | (((uint)value & 0x00000001) << 14); } + } + + public uint enable_restoration + { + get { return (uint)((_bitfield1 >> 15) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFF7FFF) | (((uint)value & 0x00000001) << 15); } + } + + public uint film_grain_params_present + { + get { return (uint)((_bitfield1 >> 16) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFEFFFF) | (((uint)value & 0x00000001) << 16); } + } + + public uint timing_info_present_flag + { + get { return (uint)((_bitfield1 >> 17) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFDFFFF) | (((uint)value & 0x00000001) << 17); } + } + + public uint initial_display_delay_present_flag + { + get { return (uint)((_bitfield1 >> 18) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFBFFFF) | (((uint)value & 0x00000001) << 18); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 19) & 0x00001FFF); } + set { _bitfield1 = (_bitfield1 & 0x0007FFFF) | (((uint)value & 0x00001FFF) << 19); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TileInfo.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TileInfo.cs new file mode 100644 index 00000000..a29f8be7 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TileInfo.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoAV1TileInfo +{ + public StdVideoAV1TileInfoFlags flags; + + public byte TileCols; + + public byte TileRows; + + public ushort context_update_tile_id; + + public byte tile_size_bytes_minus_1; + + public fixed byte reserved1[7]; + + public ushort* pMiColStarts; + + public ushort* pMiRowStarts; + + public ushort* pWidthInSbsMinus1; + + public ushort* pHeightInSbsMinus1; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TileInfoFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TileInfoFlags.cs new file mode 100644 index 00000000..e693acba --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TileInfoFlags.cs @@ -0,0 +1,35 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1TileInfoFlags +{ + private uint _bitfield1; + + public uint uniform_tile_spacing_flag + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 1) & 0x7FFFFFFF); } + set { _bitfield1 = (_bitfield1 & 0x00000001) | (((uint)value & 0x7FFFFFFF) << 1); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TimingInfo.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TimingInfo.cs new file mode 100644 index 00000000..193e86e9 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TimingInfo.cs @@ -0,0 +1,29 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1TimingInfo +{ + public StdVideoAV1TimingInfoFlags flags; + + public uint num_units_in_display_tick; + + public uint time_scale; + + public uint num_ticks_per_picture_minus_1; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TimingInfoFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TimingInfoFlags.cs new file mode 100644 index 00000000..9d226188 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TimingInfoFlags.cs @@ -0,0 +1,35 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoAV1TimingInfoFlags +{ + private uint _bitfield1; + + public uint equal_picture_interval + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 1) & 0x7FFFFFFF); } + set { _bitfield1 = (_bitfield1 & 0x00000001) | (((uint)value & 0x7FFFFFFF) << 1); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TransferCharacteristics.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TransferCharacteristics.cs new file mode 100644 index 00000000..dd606092 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TransferCharacteristics.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1TransferCharacteristics +{ + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_0 = 0, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_709 = 1, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_UNSPECIFIED = 2, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_RESERVED_3 = 3, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_M = 4, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_470_B_G = 5, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_601 = 6, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_240 = 7, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LINEAR = 8, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100 = 9, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_LOG_100_SQRT10 = 10, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_IEC_61966 = 11, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_1361 = 12, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SRGB = 13, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_10_BIT = 14, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_BT_2020_12_BIT = 15, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_2084 = 16, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_SMPTE_428 = 17, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_HLG = 18, + STD_VIDEO_AV1_TRANSFER_CHARACTERISTICS_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TxMode.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TxMode.cs new file mode 100644 index 00000000..a5cc66d6 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/StdVideoAV1TxMode.cs @@ -0,0 +1,25 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public enum StdVideoAV1TxMode +{ + STD_VIDEO_AV1_TX_MODE_ONLY_4X4 = 0, + STD_VIDEO_AV1_TX_MODE_LARGEST = 1, + STD_VIDEO_AV1_TX_MODE_SELECT = 2, + STD_VIDEO_AV1_TX_MODE_INVALID = 0x7FFFFFFF +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/VulkanVideoCodecAv1std.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/VulkanVideoCodecAv1std.cs new file mode 100644 index 00000000..380c6c2a --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std/VulkanVideoCodecAv1std.cs @@ -0,0 +1,64 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +global using static Exomia.Vulkan.Api.Core.VulkanVideoCodecAv1std; + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public static class VulkanVideoCodecAv1std +{ + public const int STD_VIDEO_AV1_NUM_REF_FRAMES = 8; + + public const int STD_VIDEO_AV1_REFS_PER_FRAME = 7; + + public const int STD_VIDEO_AV1_TOTAL_REFS_PER_FRAME = 8; + + public const int STD_VIDEO_AV1_MAX_TILE_COLS = 64; + + public const int STD_VIDEO_AV1_MAX_TILE_ROWS = 64; + + public const int STD_VIDEO_AV1_MAX_SEGMENTS = 8; + + public const int STD_VIDEO_AV1_SEG_LVL_MAX = 8; + + public const int STD_VIDEO_AV1_PRIMARY_REF_NONE = 7; + + public const int STD_VIDEO_AV1_SELECT_INTEGER_MV = 2; + + public const int STD_VIDEO_AV1_SELECT_SCREEN_CONTENT_TOOLS = 2; + + public const int STD_VIDEO_AV1_SKIP_MODE_FRAMES = 2; + + public const int STD_VIDEO_AV1_MAX_LOOP_FILTER_STRENGTHS = 4; + + public const int STD_VIDEO_AV1_LOOP_FILTER_ADJUSTMENTS = 2; + + public const int STD_VIDEO_AV1_MAX_CDEF_FILTER_STRENGTHS = 8; + + public const int STD_VIDEO_AV1_MAX_NUM_PLANES = 3; + + public const int STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS = 6; + + public const int STD_VIDEO_AV1_MAX_NUM_Y_POINTS = 14; + + public const int STD_VIDEO_AV1_MAX_NUM_CB_POINTS = 10; + + public const int STD_VIDEO_AV1_MAX_NUM_CR_POINTS = 10; + + public const int STD_VIDEO_AV1_MAX_NUM_POS_LUMA = 24; + + public const int STD_VIDEO_AV1_MAX_NUM_POS_CHROMA = 25; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1PictureInfo.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1PictureInfo.cs new file mode 100644 index 00000000..7cb0d31e --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1PictureInfo.cs @@ -0,0 +1,69 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoDecodeAV1PictureInfo +{ + public StdVideoDecodeAV1PictureInfoFlags flags; + + public StdVideoAV1FrameType frame_type; + + public uint current_frame_id; + + public byte OrderHint; + + public byte primary_ref_frame; + + public byte refresh_frame_flags; + + public byte reserved1; + + public StdVideoAV1InterpolationFilter interpolation_filter; + + public StdVideoAV1TxMode TxMode; + + public byte delta_q_res; + + public byte delta_lf_res; + + public fixed byte SkipModeFrame[(int)STD_VIDEO_AV1_SKIP_MODE_FRAMES]; + + public byte coded_denom; + + public VkArray3 reserved2; + + public fixed byte OrderHints[(int)STD_VIDEO_AV1_NUM_REF_FRAMES]; + + public fixed uint expectedFrameId[(int)STD_VIDEO_AV1_NUM_REF_FRAMES]; + + public StdVideoAV1TileInfo* pTileInfo; + + public StdVideoAV1Quantization* pQuantization; + + public StdVideoAV1Segmentation* pSegmentation; + + public StdVideoAV1LoopFilter* pLoopFilter; + + public StdVideoAV1CDEF* pCDEF; + + public StdVideoAV1LoopRestoration* pLoopRestoration; + + public StdVideoAV1GlobalMotion* pGlobalMotion; + + public StdVideoAV1FilmGrain* pFilmGrain; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1PictureInfoFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1PictureInfoFlags.cs new file mode 100644 index 00000000..15d6c0e7 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1PictureInfoFlags.cs @@ -0,0 +1,203 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoDecodeAV1PictureInfoFlags +{ + private uint _bitfield1; + + public uint error_resilient_mode + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint disable_cdf_update + { + get { return (uint)((_bitfield1 >> 1) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFD) | (((uint)value & 0x00000001) << 1); } + } + + public uint use_superres + { + get { return (uint)((_bitfield1 >> 2) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFB) | (((uint)value & 0x00000001) << 2); } + } + + public uint render_and_frame_size_different + { + get { return (uint)((_bitfield1 >> 3) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFF7) | (((uint)value & 0x00000001) << 3); } + } + + public uint allow_screen_content_tools + { + get { return (uint)((_bitfield1 >> 4) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFEF) | (((uint)value & 0x00000001) << 4); } + } + + public uint is_filter_switchable + { + get { return (uint)((_bitfield1 >> 5) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFDF) | (((uint)value & 0x00000001) << 5); } + } + + public uint force_integer_mv + { + get { return (uint)((_bitfield1 >> 6) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFBF) | (((uint)value & 0x00000001) << 6); } + } + + public uint frame_size_override_flag + { + get { return (uint)((_bitfield1 >> 7) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFF7F) | (((uint)value & 0x00000001) << 7); } + } + + public uint buffer_removal_time_present_flag + { + get { return (uint)((_bitfield1 >> 8) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFEFF) | (((uint)value & 0x00000001) << 8); } + } + + public uint allow_intrabc + { + get { return (uint)((_bitfield1 >> 9) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFDFF) | (((uint)value & 0x00000001) << 9); } + } + + public uint frame_refs_short_signaling + { + get { return (uint)((_bitfield1 >> 10) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFBFF) | (((uint)value & 0x00000001) << 10); } + } + + public uint allow_high_precision_mv + { + get { return (uint)((_bitfield1 >> 11) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFF7FF) | (((uint)value & 0x00000001) << 11); } + } + + public uint is_motion_mode_switchable + { + get { return (uint)((_bitfield1 >> 12) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFEFFF) | (((uint)value & 0x00000001) << 12); } + } + + public uint use_ref_frame_mvs + { + get { return (uint)((_bitfield1 >> 13) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFDFFF) | (((uint)value & 0x00000001) << 13); } + } + + public uint disable_frame_end_update_cdf + { + get { return (uint)((_bitfield1 >> 14) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFBFFF) | (((uint)value & 0x00000001) << 14); } + } + + public uint allow_warped_motion + { + get { return (uint)((_bitfield1 >> 15) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFF7FFF) | (((uint)value & 0x00000001) << 15); } + } + + public uint reduced_tx_set + { + get { return (uint)((_bitfield1 >> 16) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFEFFFF) | (((uint)value & 0x00000001) << 16); } + } + + public uint reference_select + { + get { return (uint)((_bitfield1 >> 17) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFDFFFF) | (((uint)value & 0x00000001) << 17); } + } + + public uint skip_mode_present + { + get { return (uint)((_bitfield1 >> 18) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFBFFFF) | (((uint)value & 0x00000001) << 18); } + } + + public uint delta_q_present + { + get { return (uint)((_bitfield1 >> 19) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFF7FFFF) | (((uint)value & 0x00000001) << 19); } + } + + public uint delta_lf_present + { + get { return (uint)((_bitfield1 >> 20) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFEFFFFF) | (((uint)value & 0x00000001) << 20); } + } + + public uint delta_lf_multi + { + get { return (uint)((_bitfield1 >> 21) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFDFFFFF) | (((uint)value & 0x00000001) << 21); } + } + + public uint segmentation_enabled + { + get { return (uint)((_bitfield1 >> 22) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFBFFFFF) | (((uint)value & 0x00000001) << 22); } + } + + public uint segmentation_update_map + { + get { return (uint)((_bitfield1 >> 23) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFF7FFFFF) | (((uint)value & 0x00000001) << 23); } + } + + public uint segmentation_temporal_update + { + get { return (uint)((_bitfield1 >> 24) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFEFFFFFF) | (((uint)value & 0x00000001) << 24); } + } + + public uint segmentation_update_data + { + get { return (uint)((_bitfield1 >> 25) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFDFFFFFF) | (((uint)value & 0x00000001) << 25); } + } + + public uint UsesLr + { + get { return (uint)((_bitfield1 >> 26) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFBFFFFFF) | (((uint)value & 0x00000001) << 26); } + } + + public uint usesChromaLr + { + get { return (uint)((_bitfield1 >> 27) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xF7FFFFFF) | (((uint)value & 0x00000001) << 27); } + } + + public uint apply_grain + { + get { return (uint)((_bitfield1 >> 28) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xEFFFFFFF) | (((uint)value & 0x00000001) << 28); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 29) & 0x00000007); } + set { _bitfield1 = (_bitfield1 & 0x1FFFFFFF) | (((uint)value & 0x00000007) << 29); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1ReferenceInfo.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1ReferenceInfo.cs new file mode 100644 index 00000000..6f056a00 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1ReferenceInfo.cs @@ -0,0 +1,31 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public unsafe struct StdVideoDecodeAV1ReferenceInfo +{ + public StdVideoDecodeAV1ReferenceInfoFlags flags; + + public byte frame_type; + + public byte RefFrameSignBias; + + public byte OrderHint; + + public fixed byte SavedOrderHints[(int)STD_VIDEO_AV1_NUM_REF_FRAMES]; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1ReferenceInfoFlags.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1ReferenceInfoFlags.cs new file mode 100644 index 00000000..3aade6db --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/StdVideoDecodeAV1ReferenceInfoFlags.cs @@ -0,0 +1,41 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable IdentifierTypo +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +[StructLayout(LayoutKind.Sequential)] +public struct StdVideoDecodeAV1ReferenceInfoFlags +{ + private uint _bitfield1; + + public uint disable_frame_end_update_cdf + { + get { return (uint)((_bitfield1 >> 0) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFE) | (((uint)value & 0x00000001) << 0); } + } + + public uint segmentation_enabled + { + get { return (uint)((_bitfield1 >> 1) & 0x00000001); } + set { _bitfield1 = (_bitfield1 & 0xFFFFFFFD) | (((uint)value & 0x00000001) << 1); } + } + + public uint reserved + { + get { return (uint)((_bitfield1 >> 2) & 0x3FFFFFFF); } + set { _bitfield1 = (_bitfield1 & 0x00000003) | (((uint)value & 0x3FFFFFFF) << 2); } + } +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/VulkanVideoCodecAv1stdDecode.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/VulkanVideoCodecAv1stdDecode.cs new file mode 100644 index 00000000..8e6a338d --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/VulkanVideoCodecAv1stdDecode.cs @@ -0,0 +1,43 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +global using static Exomia.Vulkan.Api.Core.VulkanVideoCodecAv1stdDecode; + +#pragma warning disable CA2211 // Non-constant fields should not be visible +#pragma warning disable CS1591 // Missing XML comment for publicly visible type or member + +// ReSharper disable UnusedMember.Global +// ReSharper disable InconsistentNaming +// ReSharper disable once CheckNamespace +namespace Exomia.Vulkan.Api.Core; + +public static class VulkanVideoCodecAv1stdDecode +{ + /// The spec version. + public const uint VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0; + + /// The extension name. + public const string VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME = "VK_STD_vulkan_video_codec_av1_decode"; + + /// + /// An UTF8 null terminated version of + /// represented by an UTF16 string. + /// + /// + /// Example usage:
+ ///
+ /// fixed(char* ptr = VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME_UTF8_NT) {
+ /// sbyte* utf8NtPtr = (sbyte*)ptr; // utf8NtPtr - can now be passed and used directly as a utf8_nt string for + /// unmanaged code.
+ /// } + ///
+ public const string VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME_UTF8_NT = + "\u4b56\u535f\u4454\u565f\u4c55\u414b\u5f4e\u4956\u4544\u5f4f\u4f43\u4544\u5f43\u5641\u5f31\u4544\u4f43\u4544\u455f\u5458\u4e45\u4953\u4e4f\u4e5f\u4d41\u0045"; +} \ No newline at end of file diff --git a/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/VulkanVideoCodecAv1stdDecode.defines.cs b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/VulkanVideoCodecAv1stdDecode.defines.cs new file mode 100644 index 00000000..483fc462 --- /dev/null +++ b/src/Exomia.Vulkan.Api.Core/vk_video/vulkan_video_codec_av1std_decode/VulkanVideoCodecAv1stdDecode.defines.cs @@ -0,0 +1,21 @@ +#region License + +// Copyright (c) 2018-2024, exomia +// All rights reserved. +// +// This source code is licensed under the BSD-style license found in the +// LICENSE file in the root directory of this source tree. + +#endregion + +global using static Exomia.Vulkan.Api.Core.VulkanVideoCodecAv1stdDecodeDefines; + +// ReSharper disable ShiftExpressionZeroLeftOperand +namespace Exomia.Vulkan.Api.Core; + +/// The VulkanVideoCodecAv1stdDecodeDefines class. +public static class VulkanVideoCodecAv1stdDecodeDefines +{ + /// The VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0. + public const uint VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_API_VERSION_1_0_0 = (1 << 22) | (0 << 12) | 0; +} \ No newline at end of file