C Specification

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

The VkVideoEncodeH264CapabilitiesEXT structure is defined as:

// Provided by VK_EXT_video_encode_h264
typedef struct VkVideoEncodeH264CapabilitiesEXT {
    VkStructureType                          sType;
    const void*                              pNext;
    VkVideoEncodeH264CapabilitiesFlagsEXT    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 reports various encoding tools supported from those defined in VkVideoEncodeH264CapabilitiesFlagBitsEXT.

  • inputModeFlags reports supported command buffer input granularities/modes from those defined in VkVideoEncodeH264InputModeFlagBitsEXT.

  • outputModeFlags reports supported output (bitstream size reporting) granularities/modes from those defined in VkVideoEncodeH264OutputModeFlagBitsEXT.

  • 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.


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

  • VUID-VkVideoEncodeH264CapabilitiesEXT-flags-parameter
    flags must be a valid combination of VkVideoEncodeH264CapabilitiesFlagBitsEXT 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