VK_EXT_video_encode_h264(3)

# VK_EXT_video_encode_h264(3) Manual Page

## Name

VK_EXT_video_encode_h264 - device extension

Loading… please wait.

## Registered Extension Number

39

## Revision

7

## Extension and Version Dependencies

- Requires Vulkan 1.0

- Requires `VK_KHR_video_encode_queue`

- This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.

## Contact

- Ahmed Abdelkhalek aabdelkh

## Other Extension Metadata

Last Modified Date

  2022-04-06

IP Status

  No known IP claims.

Contributors

  - Ahmed Abdelkhalek, AMD

  - Daniel Rakos, AMD

  - George Hao, AMD

  - Jake Beju, AMD

  - Peter Fang, AMD

  - Ping Liu, Intel

  - Srinath Kumarapuram, NVIDIA

  - Tony Zlatinski, NVIDIA

  - Yang Liu, AMD

## Description

This extension allows applications to compress a raw video sequence by using the H.264/AVC video compression standard.

## New Structures

- VkVideoEncodeH264DpbSlotInfoEXT

- VkVideoEncodeH264FrameSizeEXT

- VkVideoEncodeH264NaluSliceEXT

- VkVideoEncodeH264QpEXT

- VkVideoEncodeH264ReferenceListsEXT

- Extending VkVideoEncodeCapabilitiesKHR:

  - VkVideoEncodeH264CapabilitiesEXT

- Extending VkVideoEncodeInfoKHR:

  - VkVideoEncodeH264EmitPictureParametersEXT

  - VkVideoEncodeH264VclFrameInfoEXT

- Extending VkVideoEncodeRateControlInfoKHR:

  - VkVideoEncodeH264RateControlInfoEXT

- Extending VkVideoEncodeRateControlLayerInfoKHR:

  - VkVideoEncodeH264RateControlLayerInfoEXT

- Extending VkVideoProfileKHR, VkQueryPoolCreateInfo, VkFormatProperties2, VkImageCreateInfo, VkImageViewCreateInfo, VkBufferCreateInfo:

  - VkVideoEncodeH264ProfileEXT

- Extending VkVideoSessionParametersCreateInfoKHR:

  - VkVideoEncodeH264SessionParametersCreateInfoEXT

- Extending VkVideoSessionParametersUpdateInfoKHR:

  - VkVideoEncodeH264SessionParametersAddInfoEXT

## New Enums

- VkVideoEncodeH264CapabilityFlagBitsEXT

- VkVideoEncodeH264InputModeFlagBitsEXT

- VkVideoEncodeH264OutputModeFlagBitsEXT

- VkVideoEncodeH264RateControlStructureFlagBitsEXT

## New Bitmasks

- VkVideoEncodeH264CapabilityFlagsEXT

- VkVideoEncodeH264InputModeFlagsEXT

- VkVideoEncodeH264OutputModeFlagsEXT

- VkVideoEncodeH264RateControlStructureFlagsEXT

## New Enum Constants

- `VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME`

- `VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT`

- Extending VkVideoCodecOperationFlagBitsKHR:

  - `VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT`

## Version History

- Revision 0, 2018-7-23 (Ahmed Abdelkhalek)

  - Initial draft

- Revision 0.5, 2020-02-13 (Tony Zlatinski)

  - General Spec cleanup

  - Added DPB structures

  - Change the VCL frame encode structure

  - Added a common Non-VCL Picture Paramarameters structure

- Revision 1, 2021-03-29 (Tony Zlatinski)

  - Spec and API updates

- Revision 2, August 1 2021 (Srinath Kumarapuram)

  - Rename `VkVideoEncodeH264CapabilitiesFlagsEXT` to `VkVideoEncodeH264CapabilityFlagsEXT` and `VkVideoEncodeH264CapabilitiesFlagsEXT` to `VkVideoEncodeH264CapabilityFlagsEXT`, following Vulkan naming conventions.

- Revision 3, 2021-12-08 (Ahmed Abdelkhalek)

  - Rate control updates

- Revision 4, 2022-02-04 (Ahmed Abdelkhalek)

  - Align VkVideoEncodeH264VclFrameInfoEXT structure to similar one in VK_EXT_video_encode_h265 extension

- Revision 5, 2022-02-10 (Ahmed Abdelkhalek)

  - Updates to encode capability interface

- Revision 6, 2022-03-16 (Ahmed Abdelkhalek)

  - Relocate Std header version reporting/requesting from this extension to VK_KHR_video_queue extension.

  - Remove redundant maxPictureSizeInMbs from VkVideoEncodeH264SessionCreateInfoEXT.

  - Remove the now empty VkVideoEncodeH264SessionCreateInfoEXT.

- Revision 7, 2022-04-06 (Ahmed Abdelkhalek)

  - Add capability flag to report support to use B frame in L1 reference list.

  - Add capability flag to report support for disabling SPS direct_8x8_inference_flag.

## See Also

VkVideoEncodeH264CapabilitiesEXT, VkVideoEncodeH264CapabilityFlagBitsEXT, VkVideoEncodeH264CapabilityFlagsEXT, VkVideoEncodeH264DpbSlotInfoEXT, VkVideoEncodeH264EmitPictureParametersEXT, VkVideoEncodeH264FrameSizeEXT, VkVideoEncodeH264InputModeFlagBitsEXT, VkVideoEncodeH264InputModeFlagsEXT, VkVideoEncodeH264NaluSliceEXT, VkVideoEncodeH264OutputModeFlagBitsEXT, VkVideoEncodeH264OutputModeFlagsEXT, VkVideoEncodeH264ProfileEXT, VkVideoEncodeH264QpEXT, VkVideoEncodeH264RateControlInfoEXT, VkVideoEncodeH264RateControlLayerInfoEXT, VkVideoEncodeH264RateControlStructureFlagBitsEXT, VkVideoEncodeH264RateControlStructureFlagsEXT, VkVideoEncodeH264ReferenceListsEXT, VkVideoEncodeH264SessionParametersAddInfoEXT, VkVideoEncodeH264SessionParametersCreateInfoEXT, VkVideoEncodeH264VclFrameInfoEXT

## Document Notes

For more information, see the Vulkan Specification

This page is a generated document. Fixes and changes should be made to the generator scripts, not directly.

## Copyright

Copyright 2014-2022 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0