VK_KHR_video_encode_h265
Other Extension Metadata
Last Modified Date
2023-12-05
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
- Ravi Chaudhary, NVIDIA
- Daniel Rakos, RasterGrid
- Aidan Fabius, Core Avionics & Industrial Inc.
- Lynne Iribarren, Independent
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.
This extension was promoted to KHR from the provisional extension
VK_EXT_video_encode_h265.
New Structures
- VkVideoEncodeH265FrameSizeKHR
- VkVideoEncodeH265NaluSliceSegmentInfoKHR
- VkVideoEncodeH265QpKHR
- Extending VkVideoBeginCodingInfoKHR:
- Extending VkVideoCapabilitiesKHR:
- Extending VkVideoCodingControlInfoKHR, VkVideoBeginCodingInfoKHR:
- Extending VkVideoEncodeInfoKHR:
- Extending VkVideoEncodeQualityLevelPropertiesKHR:
- Extending VkVideoEncodeRateControlLayerInfoKHR:
- Extending VkVideoEncodeSessionParametersFeedbackInfoKHR:
- Extending VkVideoEncodeSessionParametersGetInfoKHR:
- Extending VkVideoProfileInfoKHR, VkQueryPoolCreateInfo:
- Extending VkVideoReferenceSlotInfoKHR:
- Extending VkVideoSessionCreateInfoKHR:
- Extending VkVideoSessionParametersCreateInfoKHR:
- Extending VkVideoSessionParametersUpdateInfoKHR:
New Enums
- VkVideoEncodeH265CapabilityFlagBitsKHR
- VkVideoEncodeH265CtbSizeFlagBitsKHR
- VkVideoEncodeH265RateControlFlagBitsKHR
- VkVideoEncodeH265StdFlagBitsKHR
- VkVideoEncodeH265TransformBlockSizeFlagBitsKHR
New Bitmasks
- VkVideoEncodeH265CapabilityFlagsKHR
- VkVideoEncodeH265CtbSizeFlagsKHR
- VkVideoEncodeH265RateControlFlagsKHR
- VkVideoEncodeH265StdFlagsKHR
- VkVideoEncodeH265TransformBlockSizeFlagsKHR
New Enum Constants
VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAMEVK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION- Extending VkStructureType:
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHRVK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR
- Extending VkVideoCodecOperationFlagBitsKHR:
VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR
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
slicebyslice segmentand rename structures/enums to reflect this.
- Replace occurrences of
- 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
VkVideoEncodeH265RateControlStructureFlagBitsEXTbit enum withVkVideoEncodeH265RateControlStructureEXTenum - Rename
VkVideoEncodeH265ProfileEXTtoVkVideoEncodeH265ProfileInfoEXT - Rename
VkVideoEncodeH265ReferenceListsEXTtoVkVideoEncodeH265ReferenceListsInfoEXT - Rename
VkVideoEncodeH265EmitPictureParametersEXTtoVkVideoEncodeH265EmitPictureParametersInfoEXT - Rename
VkVideoEncodeH265NaluSliceSegmentEXTtoVkVideoEncodeH265NaluSliceSegmentInfoEXT
- Replace
- Revision 9, 2022-09-18 (Daniel Rakos)
- Rename
vpsStdCount,pVpsStd,spsStdCount,pSpsStd,ppsStdCount, andpPpsStdtostdVPSCount,pStdVPSs,stdSPSCount,pStdSPSs,stdPPSCount, andpStdPPSs, respectively, inVkVideoEncodeH265SessionParametersAddInfoEXT - Rename
maxVpsStdCount,maxSpsStdCount, andmaxPpsStdCounttomaxStdVPSCount,maxStdSPSCountandmaxStdPPSCount, respectively, inVkVideoEncodeH265SessionParametersCreateInfoEXT
- Rename
- Revision 10, 2023-03-06 (Daniel Rakos)
- Removed
VkVideoEncodeH265EmitPictureParametersInfoEXT - Changed member types in
VkVideoEncodeH265CapabilitiesEXTandVkVideoEncodeH265ReferenceListsInfoEXTfromuint8_ttouint32_t - Changed the type of
VkVideoEncodeH265RateControlInfoEXT::subLayerCountandVkVideoEncodeH265RateControlLayerInfoEXT::temporalIdfromuint8_ttouint32_t - Removed
VkVideoEncodeH265InputModeFlagsEXTandVkVideoEncodeH265OutputModeFlagsEXTas we only support frame-in-frame-out mode for now - Rename
pCurrentPictureInfoinVkVideoEncodeH265VclFrameInfoEXTtopStdPictureInfo - Rename
pSliceSegmentHeaderStdinVkVideoEncodeH265NaluSliceSegmentInfoEXTtopStdSliceSegmentHeader - Rename
pReferenceFinalListsinVkVideoEncodeH265VclFrameInfoEXTandVkVideoEncodeH265NaluSliceSegmentInfoEXTtopStdReferenceFinalLists - Removed the
slotIndexmember ofVkVideoEncodeH265DpbSlotInfoEXTand changed it to be chained toVkVideoReferenceSlotInfoKHR - Replaced
VkVideoEncodeH265ReferenceListsInfoEXTwith the new Video Std header structureStdVideoEncodeH265ReferenceLists - Added new capability flag
VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT
- Removed
- Revision 11, 2023-05-26 (Daniel Rakos)
- Renamed
VkVideoEncodeH265VclFrameInfoEXTtoVkVideoEncodeH265PictureInfoEXT - Removed
VkVideoEncodeH265RateControlLayerInfoEXT::temporalId - Added
expectDyadicTemporalSubLayerPatterncapability - Added the
VkVideoEncodeH265SessionParametersGetInfoEXTstructure to identify the H.265 parameter sets to retrieve encoded parameter data for, and theVkVideoEncodeH265SessionParametersFeedbackInfoEXTstructure to retrieve H.265 parameter set override information when using the newvkGetEncodedVideoSessionParametersKHRcommand - Added
VkVideoEncodeH265NaluSliceSegmentInfoEXT::constantQpto specify per-slice segment constant QP when rate control mode isVK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR - Added
VkVideoEncodeH265QualityLevelPropertiesEXTfor retrieving H.265 specific quality level recommendations - Replaced
VkVideoEncodeH265RateControlStructureEXTenum with the flags typeVkVideoEncodeH265RateControlFlagsEXTand bits defined inVkVideoEncodeH265RateControlFlagBitsEXTand added HRD compliance flag - Removed
useInitialRcQpandinitialRcQpmembers ofVkVideoEncodeH265RateControlLayerInfoEXT - Added
prefersGopRemainingFramesandrequiresGopRemainingFrames, and the newVkVideoEncodeH265GopRemainingFrameInfoEXTstructure to allow specifying remaining frames of each type in the rate control GOP - Renamed
maxSubLayersCountcapability tomaxSubLayerCount - Added
maxQp, andminQpcapabilities - Added
maxLevelIdccapability and newVkVideoEncodeH265SessionCreateInfoEXTstructure to specify upper bounds on the H.265 level of the produced video bitstream - Moved capability flags specific to codec syntax restrictions from
VkVideoEncodeH265CapabilityFlagsEXTto the newVkVideoEncodeH265StdFlagsEXTwhich is now included as a separatestdSyntaxFlagsmember inVkVideoEncodeH265CapabilitiesEXT - Added
stdprefix to codec syntax capabilities inVkVideoEncodeH265CapabilitiesEXT - Removed
VkVideoEncodeH265NaluSliceSegmentInfoEXT::ctbCountandVK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT - Replaced
VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_FRAME_BIT_EXTwith the newmaxSliceSegmentCountcapability - Added
maxTilescapability - Removed codec syntax min/max capabilities from
VkVideoEncodeH265CapabilitiesEXT - Removed capability flag
VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXTand removedpStdReferenceFinalListsmembers from theVkVideoEncodeH265PictureInfoEXTandVkVideoEncodeH265NaluSliceSegmentInfoEXTstructures as reference lists info is now included inpStdPictureInfo - Added capability flag
VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT
- Renamed
- Revision 12, 2023-07-19 (Daniel Rakos)
- Added video std capability flags
VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_EXTandVK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT - Fixed optionality of the array members of
VkVideoEncodeH265SessionParametersAddInfoEXT - Fixed optionality of
VkVideoEncodeH265RateControlInfoEXT::flags
- Added video std capability flags
- Revision 13, 2023-09-04 (Daniel Rakos)
- Change extension from
EXTtoKHR - Extension is no longer provisional
- Change extension from
- Revision 14, 2023-12-05 (Daniel Rakos)
- Condition reference picture setup based on the value of
StdVideoEncodeH265PictureInfo::flags.is_reference
- Condition reference picture setup based on the value of