C Specification

The VkVideoEncodeH264CapabilitiesEXT structure is defined as:

// Provided by VK_EXT_video_encode_h264
typedef struct VkVideoEncodeH264CapabilitiesEXT {
    VkStructureType                        sType;
    const void*                            pNext;
    VkVideoEncodeH264CapabilityFlagsEXT    flags;
    VkVideoEncodeH264InputModeFlagsEXT     inputModeFlags;
    VkVideoEncodeH264OutputModeFlagsEXT    outputModeFlags;
    VkExtent2D                             minPictureSizeInMbs;
    VkExtent2D                             maxPictureSizeInMbs;
    VkExtent2D                             inputImageDataAlignment;
    uint8_t                                maxNumL0ReferenceForP;
    uint8_t                                maxNumL0ReferenceForB;
    uint8_t                                maxNumL1Reference;
    uint8_t                                qualityLevelCount;
    VkExtensionProperties                  stdExtensionVersion;
} VkVideoEncodeH264CapabilitiesEXT;


  • sType is the type of this structure.

  • pNext is NULL or a pointer to a structure extending this structure.

  • flags is a bitmask of VkVideoEncodeH264CapabilityFlagBitsEXT describing supported encoding tools.

  • inputModeFlags is a bitmask of VkVideoEncodeH264InputModeFlagBitsEXT describing supported command buffer input granularities/modes.

  • outputModeFlags is a bitmask of VkVideoEncodeH264OutputModeFlagBitsEXT describing supported output (bitstream size reporting) granularities/modes.

  • maxPictureSizeInMbs reports the maximum encoded picture width and height in Macroblocks.

  • minPictureSizeInMbs reports the minimum encoded picture width and height in Macroblocks.

  • inputImageDataAlignment reports alignment of data that must be filled in the input image horizontally and vertically in pixels. Max is 16: Data must be filled up to Macroblock boundary (no extrapolation/filling is supported by implementation). Min is 1: The implementation will take care of all needed extrapolation/filling up to the next Macroblock boundary.

  • maxNumL0ReferenceForP reports the maximum number of reference pictures the encoder supports as list0 references for P pictures.

  • maxNumL0ReferenceForB reports the maximum number of reference pictures the encoder supports as list0 references for B pictures. Reports 0 if B pictures are not supported.

  • maxNumL1Reference reports the maximum number of reference pictures the encoder supports as list1 references if B pictures are supported. Reports 0 if B pictures are not supported.

  • qualityLevelCount is the number of discrete quality levels supported.

  • stdExtensionVersion is the specific H.264 extension name and version supported by this implementation.


When vkGetPhysicalDeviceVideoCapabilitiesKHR is called to query the capabilities with parameter videoCodecOperation specified as VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT, a VkVideoEncodeH264CapabilitiesEXT structure can be chained to VkVideoCapabilitiesKHR to retrieve H.264 extension specific capabilities.

Valid Usage (Implicit)
  • VUID-VkVideoEncodeH264CapabilitiesEXT-sType-sType

  • VUID-VkVideoEncodeH264CapabilitiesEXT-flags-parameter
    flags must be a valid combination of VkVideoEncodeH264CapabilityFlagBitsEXT values

  • VUID-VkVideoEncodeH264CapabilitiesEXT-flags-requiredbitmask
    flags must not be 0

  • VUID-VkVideoEncodeH264CapabilitiesEXT-inputModeFlags-parameter
    inputModeFlags must be a valid combination of VkVideoEncodeH264InputModeFlagBitsEXT values

  • VUID-VkVideoEncodeH264CapabilitiesEXT-inputModeFlags-requiredbitmask
    inputModeFlags must not be 0

  • VUID-VkVideoEncodeH264CapabilitiesEXT-outputModeFlags-parameter
    outputModeFlags must be a valid combination of VkVideoEncodeH264OutputModeFlagBitsEXT values

  • VUID-VkVideoEncodeH264CapabilitiesEXT-outputModeFlags-requiredbitmask
    outputModeFlags must not be 0

  • VUID-VkVideoEncodeH264CapabilitiesEXT-stdExtensionVersion-parameter
    stdExtensionVersion must be a valid VkExtensionProperties structure

See Also

Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

Copyright 2014-2021 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0