• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright 2018-2024 The Khronos Group Inc.
2//
3// SPDX-License-Identifier: CC-BY-4.0
4
5include::{generated}/meta/{refprefix}VK_KHR_video_encode_h265.adoc[]
6
7=== Other Extension Metadata
8
9*Last Modified Date*::
10    2023-12-05
11*IP Status*::
12    No known IP claims.
13*Contributors*::
14  - Ahmed Abdelkhalek, AMD
15  - George Hao, AMD
16  - Jake Beju, AMD
17  - Chunbo Chen, Intel
18  - Ping Liu, Intel
19  - Srinath Kumarapuram, NVIDIA
20  - Tony Zlatinski, NVIDIA
21  - Ravi Chaudhary, NVIDIA
22  - Daniel Rakos, RasterGrid
23  - Aidan Fabius, Core Avionics & Industrial Inc.
24  - Lynne Iribarren, Independent
25
26=== Description
27
28This extension builds upon the `apiext:VK_KHR_video_encode_queue` extension
29by adding support for encoding elementary video stream sequences compliant
30with the H.265/HEVC video compression standard.
31
32[NOTE]
33.Note
34====
35This extension was promoted to `KHR` from the provisional extension
36`VK_EXT_video_encode_h265`.
37====
38
39include::{generated}/interfaces/VK_KHR_video_encode_h265.adoc[]
40
41=== Version History
42
43  * Revision 0, 2019-11-14 (Ahmed Abdelkhalek)
44  ** Initial draft
45  * Revision 0.5, 2020-02-13 (Tony Zlatinski)
46  ** General Spec cleanup
47  ** Added DPB structures
48  ** Change the VCL frame encode structure
49  ** Added a common Non-VCL Picture Paramarameters structure
50  * Revision 2, Oct 10 2021 (Srinath Kumarapuram)
51  ** Vulkan Video Encode h.265 update and spec edits
52  * Revision 3, 2021-12-08 (Ahmed Abdelkhalek)
53  ** Rate control updates
54  * Revision 4, 2022-01-11 (Ahmed Abdelkhalek)
55  ** Replace occurrences of "`slice`" by "`slice segment`" and rename
56     structures/enums to reflect this.
57  * Revision 5, 2022-02-10 (Ahmed Abdelkhalek)
58  ** Updates to encode capability interface
59  * Revision 6, 2022-03-16 (Ahmed Abdelkhalek)
60  ** Relocate Std header version reporting/requesting from this extension to
61     VK_KHR_video_queue extension.
62  ** Remove the now empty VkVideoEncodeH265SessionCreateInfoEXT.
63  * Revision 7, 2022-03-24 (Ahmed Abdelkhalek)
64  ** Add capability flags to report support to disable transform skip and
65     support to use B frame in L1 reference list.
66  * Revision 8, 2022-07-18 (Daniel Rakos)
67  ** Replace `VkVideoEncodeH265RateControlStructureFlagBitsEXT` bit enum
68     with `VkVideoEncodeH265RateControlStructureEXT` enum
69  ** Rename `VkVideoEncodeH265ProfileEXT` to
70     `VkVideoEncodeH265ProfileInfoEXT`
71  ** Rename `VkVideoEncodeH265ReferenceListsEXT` to
72     `VkVideoEncodeH265ReferenceListsInfoEXT`
73  ** Rename `VkVideoEncodeH265EmitPictureParametersEXT` to
74     `VkVideoEncodeH265EmitPictureParametersInfoEXT`
75  ** Rename `VkVideoEncodeH265NaluSliceSegmentEXT` to
76     `VkVideoEncodeH265NaluSliceSegmentInfoEXT`
77  * Revision 9, 2022-09-18 (Daniel Rakos)
78  ** Rename `vpsStdCount`, `pVpsStd`, `spsStdCount`, `pSpsStd`,
79     `ppsStdCount`, and `pPpsStd` to `stdVPSCount`, `pStdVPSs`,
80     `stdSPSCount`, `pStdSPSs`, `stdPPSCount`, and `pStdPPSs`, respectively,
81     in `VkVideoEncodeH265SessionParametersAddInfoEXT`
82  ** Rename `maxVpsStdCount`, `maxSpsStdCount`, and `maxPpsStdCount` to
83     `maxStdVPSCount`, `maxStdSPSCount` and `maxStdPPSCount`, respectively,
84     in `VkVideoEncodeH265SessionParametersCreateInfoEXT`
85  * Revision 10, 2023-03-06 (Daniel Rakos)
86  ** Removed `VkVideoEncodeH265EmitPictureParametersInfoEXT`
87  ** Changed member types in `VkVideoEncodeH265CapabilitiesEXT` and
88     `VkVideoEncodeH265ReferenceListsInfoEXT` from `uint8_t` to `uint32_t`
89  ** Changed the type of
90     `VkVideoEncodeH265RateControlInfoEXT::subLayerCount` and
91     `VkVideoEncodeH265RateControlLayerInfoEXT::temporalId` from `uint8_t`
92     to `uint32_t`
93  ** Removed `VkVideoEncodeH265InputModeFlagsEXT` and
94     `VkVideoEncodeH265OutputModeFlagsEXT` as we only support
95     frame-in-frame-out mode for now
96  ** Rename `pCurrentPictureInfo` in `VkVideoEncodeH265VclFrameInfoEXT` to
97     `pStdPictureInfo`
98  ** Rename `pSliceSegmentHeaderStd` in
99     `VkVideoEncodeH265NaluSliceSegmentInfoEXT` to `pStdSliceSegmentHeader`
100  ** Rename `pReferenceFinalLists` in `VkVideoEncodeH265VclFrameInfoEXT` and
101     `VkVideoEncodeH265NaluSliceSegmentInfoEXT` to `pStdReferenceFinalLists`
102  ** Removed the `slotIndex` member of `VkVideoEncodeH265DpbSlotInfoEXT` and
103     changed it to be chained to `VkVideoReferenceSlotInfoKHR`
104  ** Replaced `VkVideoEncodeH265ReferenceListsInfoEXT` with the new Video
105     Std header structure `StdVideoEncodeH265ReferenceLists`
106  ** Added new capability flag
107     `VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT`
108  * Revision 11, 2023-05-26 (Daniel Rakos)
109  ** Renamed `VkVideoEncodeH265VclFrameInfoEXT` to
110     `VkVideoEncodeH265PictureInfoEXT`
111  ** Removed `VkVideoEncodeH265RateControlLayerInfoEXT::temporalId`
112  ** Added `expectDyadicTemporalSubLayerPattern` capability
113  ** Added the `VkVideoEncodeH265SessionParametersGetInfoEXT` structure to
114     identify the H.265 parameter sets to retrieve encoded parameter data
115     for, and the `VkVideoEncodeH265SessionParametersFeedbackInfoEXT`
116     structure to retrieve H.265 parameter set override information when
117     using the new `vkGetEncodedVideoSessionParametersKHR` command
118  ** Added `VkVideoEncodeH265NaluSliceSegmentInfoEXT::constantQp` to specify
119     per-slice segment constant QP when rate control mode is
120     `VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR`
121  ** Added `VkVideoEncodeH265QualityLevelPropertiesEXT` for retrieving H.265
122     specific quality level recommendations
123  ** Replaced `VkVideoEncodeH265RateControlStructureEXT` enum with the flags
124     type `VkVideoEncodeH265RateControlFlagsEXT` and bits defined in
125     `VkVideoEncodeH265RateControlFlagBitsEXT` and added HRD compliance flag
126  ** Removed `useInitialRcQp` and `initialRcQp` members of
127     `VkVideoEncodeH265RateControlLayerInfoEXT`
128  ** Added `prefersGopRemainingFrames` and `requiresGopRemainingFrames`, and
129     the new `VkVideoEncodeH265GopRemainingFrameInfoEXT` structure to allow
130     specifying remaining frames of each type in the rate control GOP
131  ** Renamed `maxSubLayersCount` capability to `maxSubLayerCount`
132  ** Added `maxQp`, and `minQp` capabilities
133  ** Added `maxLevelIdc` capability and new
134     `VkVideoEncodeH265SessionCreateInfoEXT` structure to specify upper
135     bounds on the H.265 level of the produced video bitstream
136  ** Moved capability flags specific to codec syntax restrictions from
137     `VkVideoEncodeH265CapabilityFlagsEXT` to the new
138     `VkVideoEncodeH265StdFlagsEXT` which is now included as a separate
139     `stdSyntaxFlags` member in `VkVideoEncodeH265CapabilitiesEXT`
140  ** Added `std` prefix to codec syntax capabilities in
141     `VkVideoEncodeH265CapabilitiesEXT`
142  ** Removed `VkVideoEncodeH265NaluSliceSegmentInfoEXT::ctbCount` and
143     `VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT`
144  ** Replaced
145     `VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_FRAME_BIT_EXT`
146     with the new `maxSliceSegmentCount` capability
147  ** Added `maxTiles` capability
148  ** Removed codec syntax min/max capabilities from
149     `VkVideoEncodeH265CapabilitiesEXT`
150  ** Removed capability flag
151     `VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT`
152     and removed `pStdReferenceFinalLists` members from the
153     `VkVideoEncodeH265PictureInfoEXT` and
154     `VkVideoEncodeH265NaluSliceSegmentInfoEXT` structures as reference
155     lists info is now included in `pStdPictureInfo`
156  ** Added capability flag
157     `VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT`
158  * Revision 12, 2023-07-19 (Daniel Rakos)
159  ** Added video std capability flags
160     `VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_EXT` and
161     `VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT`
162  ** Fixed optionality of the array members of
163     `VkVideoEncodeH265SessionParametersAddInfoEXT`
164  ** Fixed optionality of `VkVideoEncodeH265RateControlInfoEXT::flags`
165  * Revision 13, 2023-09-04 (Daniel Rakos)
166  ** Change extension from `EXT` to `KHR`
167  ** Extension is no longer provisional
168  * Revision 14, 2023-12-05 (Daniel Rakos)
169  ** Condition reference picture setup based on the value of
170     `StdVideoEncodeH265PictureInfo::flags.is_reference`
171