VK_EXT_video_encode_h265(3)

# VK_EXT_video_encode_h265(3) Manual Page

## Name

VK_EXT_video_encode_h265 - device extension

Loading… please wait.

## Registered Extension Number

40

## Revision

10

## Extension and Version Dependencies

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

  2023-03-06

IP Status

  No known IP claims.

Contributors

  - Ahmed Abdelkhalek, AMD

  - George Hao, AMD

  - Jake Beju, AMD

  - Chunbo Chen, Intel

  - Ping Liu, Intel

  - Srinath Kumarapuram, NVIDIA

  - Tony Zlatinski, NVIDIA

  - Daniel Rakos, RasterGrid

## Description

This extension builds upon the `VK_KHR_video_encode_queue` extension by adding support for encoding elementary video stream sequences compliant with the H.265/HEVC video compression standard.

## New Structures

- VkVideoEncodeH265FrameSizeEXT

- VkVideoEncodeH265NaluSliceSegmentInfoEXT

- VkVideoEncodeH265QpEXT

- Extending VkVideoCapabilitiesKHR:

  - VkVideoEncodeH265CapabilitiesEXT

- Extending VkVideoCodingControlInfoKHR:

  - VkVideoEncodeH265RateControlInfoEXT

- Extending VkVideoCodingControlInfoKHR, VkVideoEncodeRateControlLayerInfoKHR:

  - VkVideoEncodeH265RateControlLayerInfoEXT

- Extending VkVideoEncodeInfoKHR:

  - VkVideoEncodeH265VclFrameInfoEXT

- Extending VkVideoProfileInfoKHR, VkQueryPoolCreateInfo:

  - VkVideoEncodeH265ProfileInfoEXT

- Extending VkVideoReferenceSlotInfoKHR:

  - VkVideoEncodeH265DpbSlotInfoEXT

- Extending VkVideoSessionParametersCreateInfoKHR:

  - VkVideoEncodeH265SessionParametersCreateInfoEXT

- Extending VkVideoSessionParametersUpdateInfoKHR:

  - VkVideoEncodeH265SessionParametersAddInfoEXT

## New Enums

- VkVideoEncodeH265CapabilityFlagBitsEXT

- VkVideoEncodeH265CtbSizeFlagBitsEXT

- VkVideoEncodeH265RateControlStructureEXT

- VkVideoEncodeH265TransformBlockSizeFlagBitsEXT

## New Bitmasks

- VkVideoEncodeH265CapabilityFlagsEXT

- VkVideoEncodeH265CtbSizeFlagsEXT

- VkVideoEncodeH265TransformBlockSizeFlagsEXT

## New Enum Constants

- `VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME`

- `VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION`

- Extending VkStructureType:

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT`

  - `VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT`

- Extending VkVideoCodecOperationFlagBitsKHR:

  - `VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT`

## Version History

- Revision 0, 2019-11-14 (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 2, Oct 10 2021 (Srinath Kumarapuram)

  - Vulkan Video Encode h.265 update and spec edits

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

  - Rate control updates

- Revision 4, 2022-01-11 (Ahmed Abdelkhalek)

  - Replace occurrences of “slice” by “slice segment” and rename structures/enums to reflect this.

- 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 the now empty VkVideoEncodeH265SessionCreateInfoEXT.

- Revision 7, 2022-03-24 (Ahmed Abdelkhalek)

  - Add capability flags to report support to disable transform skip and support to use B frame in L1 reference list.

- Revision 8, 2022-07-18 (Daniel Rakos)

  - Replace `VkVideoEncodeH265RateControlStructureFlagBitsEXT` bit enum with `VkVideoEncodeH265RateControlStructureEXT` enum

  - Rename `VkVideoEncodeH265ProfileEXT` to `VkVideoEncodeH265ProfileInfoEXT`

  - Rename `VkVideoEncodeH265ReferenceListsEXT` to `VkVideoEncodeH265ReferenceListsInfoEXT`

  - Rename `VkVideoEncodeH265EmitPictureParametersEXT` to `VkVideoEncodeH265EmitPictureParametersInfoEXT`

  - Rename `VkVideoEncodeH265NaluSliceSegmentEXT` to `VkVideoEncodeH265NaluSliceSegmentInfoEXT`

- Revision 9, 2022-09-18 (Daniel Rakos)

  - Rename `vpsStdCount`, `pVpsStd`, `spsStdCount`, `pSpsStd`, `ppsStdCount`, and `pPpsStd` to `stdVPSCount`, `pStdVPSs`, `stdSPSCount`, `pStdSPSs`, `stdPPSCount`, and `pStdPPSs`, respectively, in `VkVideoEncodeH265SessionParametersAddInfoEXT`

  - Rename `maxVpsStdCount`, `maxSpsStdCount`, and `maxPpsStdCount` to `maxStdVPSCount`, `maxStdSPSCount` and `maxStdPPSCount`, respectively, in `VkVideoEncodeH265SessionParametersCreateInfoEXT`

- Revision 10, 2023-03-06 (Daniel Rakos)

  - Removed `VkVideoEncodeH265EmitPictureParametersInfoEXT`

  - Changed member types in `VkVideoEncodeH265CapabilitiesEXT` and `VkVideoEncodeH265ReferenceListsInfoEXT` from `uint8_t` to `uint32_t`

  - Changed the type of `VkVideoEncodeH265RateControlInfoEXT::subLayerCount` and `VkVideoEncodeH264RateControlLayerInfoEXT::temporalId` from `uint8_t` to `uint32_t`

  - Removed `VkVideoEncodeH265InputModeFlagsEXT` and `VkVideoEncodeH265OutputModeFlagsEXT` as we only support frame-in-frame-out mode for now

  - Rename `pCurrentPictureInfo` in `VkVideoEncodeH265VclFrameInfoEXT` to `pStdPictureInfo`

  - Rename `pSliceSegmentHeaderStd` in `VkVideoEncodeH265NaluSliceInfoEXT` to `pStdSliceSegmentHeader`

  - Rename `pReferenceFinalLists` in `VkVideoEncodeH264VclFrameInfoEXT` and `VkVideoEncodeH264NaluSliceInfoEXT` to `pStdReferenceFinalLists`

  - Removed the `slotIndex` member of `VkVideoEncodeH265DpbSlotInfoEXT` and changed it to be chained to `VkVideoReferenceSlotInfoKHR`

  - Replaced `VkVideoEncodeH265ReferenceListsInfoEXT` with the new Video Std header structure `StdVideoEncodeH265ReferenceLists`

  - Added new capability flag `VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT`

## See Also

VkVideoEncodeH265CapabilitiesEXT, VkVideoEncodeH265CapabilityFlagBitsEXT, VkVideoEncodeH265CapabilityFlagsEXT, VkVideoEncodeH265CtbSizeFlagBitsEXT, VkVideoEncodeH265CtbSizeFlagsEXT, VkVideoEncodeH265DpbSlotInfoEXT, VkVideoEncodeH265FrameSizeEXT, VkVideoEncodeH265NaluSliceSegmentInfoEXT, VkVideoEncodeH265ProfileInfoEXT, VkVideoEncodeH265QpEXT, VkVideoEncodeH265RateControlInfoEXT, VkVideoEncodeH265RateControlLayerInfoEXT, VkVideoEncodeH265RateControlStructureEXT, VkVideoEncodeH265SessionParametersAddInfoEXT, VkVideoEncodeH265SessionParametersCreateInfoEXT, VkVideoEncodeH265TransformBlockSizeFlagBitsEXT, VkVideoEncodeH265TransformBlockSizeFlagsEXT, VkVideoEncodeH265VclFrameInfoEXT

## 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-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0