Contact
- 
Ahmed Abdelkhalek [GitHub]aabdelkh 
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 
- 
Peter Fang, AMD 
- 
Ping Liu, Intel 
- 
Srinath Kumarapuram, NVIDIA 
- 
Tony Zlatinski, NVIDIA 
- 
Ravi Chaudhary, NVIDIA 
- 
Yang Liu, AMD 
- 
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.264/AVC video compression standard.
| Note | This extension was promoted to  | 
New Structures
- 
Extending VkVideoBeginCodingInfoKHR: 
- 
Extending VkVideoCapabilitiesKHR: 
- 
Extending VkVideoCodingControlInfoKHR, VkVideoBeginCodingInfoKHR: 
- 
Extending VkVideoEncodeInfoKHR: 
- 
Extending VkVideoEncodeQualityLevelPropertiesKHR: 
- 
Extending VkVideoEncodeRateControlLayerInfoKHR: 
- 
Extending VkVideoEncodeSessionParametersGetInfoKHR: 
- 
Extending VkVideoProfileInfoKHR, VkQueryPoolCreateInfo: 
- 
Extending VkVideoReferenceSlotInfoKHR: 
- 
Extending VkVideoSessionCreateInfoKHR: 
- 
Extending VkVideoSessionParametersCreateInfoKHR: 
- 
Extending VkVideoSessionParametersUpdateInfoKHR: 
New Enum Constants
- 
VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME
- 
VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION
- 
Extending VkStructureType: - 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR
- 
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR
 
- 
- 
Extending VkVideoCodecOperationFlagBitsKHR: - 
VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR
 
- 
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 VkVideoEncodeH264CapabilitiesFlagsEXTtoVkVideoEncodeH264CapabilityFlagsEXTandVkVideoEncodeH264CapabilitiesFlagsEXTtoVkVideoEncodeH264CapabilityFlagsEXT, 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. 
 
- 
- 
Revision 8, 2022-07-18 (Daniel Rakos) - 
Replace VkVideoEncodeH264RateControlStructureFlagBitsEXTbit enum withVkVideoEncodeH264RateControlStructureEXTenum
- 
Rename VkVideoEncodeH264ProfileEXTtoVkVideoEncodeH264ProfileInfoEXT
- 
Rename VkVideoEncodeH264ReferenceListsEXTtoVkVideoEncodeH264ReferenceListsInfoEXT
- 
Rename VkVideoEncodeH264EmitPictureParametersEXTtoVkVideoEncodeH264EmitPictureParametersInfoEXT
- 
Rename VkVideoEncodeH264NaluSliceEXTtoVkVideoEncodeH264NaluSliceInfoEXT
 
- 
- 
Revision 9, 2022-09-18 (Daniel Rakos) - 
Rename spsStdCount,pSpsStd,ppsStdCount, andpPpsStdtostdSPSCount,pStdSPSs,stdPPSCount, andpStdPPSs, respectively, inVkVideoEncodeH264SessionParametersAddInfoEXT
- 
Rename maxSpsStdCountandmaxPpsStdCounttomaxStdSPSCountandmaxStdPPSCount, respectively, inVkVideoEncodeH264SessionParametersCreateInfoEXT
 
- 
- 
Revision 10, 2023-03-06 (Daniel Rakos) - 
Removed VkVideoEncodeH264EmitPictureParametersInfoEXT
- 
Changed member types in VkVideoEncodeH264CapabilitiesEXTandVkVideoEncodeH264ReferenceListsInfoEXTfromuint8_ttouint32_t
- 
Changed the type of VkVideoEncodeH264RateControlInfoEXT::temporalLayerCountandVkVideoEncodeH264RateControlLayerInfoEXT::temporalLayerIdfromuint8_ttouint32_t
- 
Removed VkVideoEncodeH264InputModeFlagsEXTandVkVideoEncodeH264OutputModeFlagsEXTas we only support frame-in-frame-out mode for now
- 
Rename pCurrentPictureInfoinVkVideoEncodeH264VclFrameInfoEXTtopStdPictureInfo
- 
Rename pSliceHeaderStdinVkVideoEncodeH264NaluSliceInfoEXTtopStdSliceHeader
- 
Rename pReferenceFinalListsinVkVideoEncodeH264VclFrameInfoEXTandVkVideoEncodeH264NaluSliceInfoEXTtopStdReferenceFinalLists
- 
Removed the slotIndexmember ofVkVideoEncodeH264DpbSlotInfoEXTand changed it to be chained toVkVideoReferenceSlotInfoKHR
- 
Replaced VkVideoEncodeH264ReferenceListsInfoEXTwith the new Video Std header structureStdVideoEncodeH264ReferenceListsthat also includes data previously part of the now removedStdVideoEncodeH264RefMemMgmtCtrlOperationsstructure
- 
Added new capability flag VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT
 
- 
- 
Revision 11, 2023-05-22 (Daniel Rakos) - 
Renamed VkVideoEncodeH264VclFrameInfoEXTtoVkVideoEncodeH264PictureInfoEXT
- 
Added VkVideoEncodeH264PictureInfoEXT::generatePrefixNaluandVK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXTto enable the generation of H.264 prefix NALUs when supported by the implementation
- 
Removed VkVideoEncodeH264RateControlLayerInfoEXT::temporalLayerId
- 
Added expectDyadicTemporalLayerPatterncapability
- 
Added the VkVideoEncodeH264SessionParametersGetInfoEXTstructure to identify the H.264 parameter sets to retrieve encoded parameter data for, and theVkVideoEncodeH264SessionParametersFeedbackInfoEXTstructure to retrieve H.264 parameter set override information when using the newvkGetEncodedVideoSessionParametersKHRcommand
- 
Added VkVideoEncodeH264NaluSliceInfoEXT::constantQpto specify per-slice constant QP when rate control mode isVK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR
- 
Added VkVideoEncodeH264QualityLevelPropertiesEXTfor retrieving H.264 specific quality level recommendations
- 
Replaced VkVideoEncodeH264RateControlStructureEXTenum with the flags typeVkVideoEncodeH264RateControlFlagsEXTand bits defined inVkVideoEncodeH264RateControlFlagBitsEXTand added HRD compliance flag
- 
Removed useInitialRcQpandinitialRcQpmembers ofVkVideoEncodeH264RateControlLayerInfoEXT
- 
Added prefersGopRemainingFramesandrequiresGopRemainingFrames, and the newVkVideoEncodeH264GopRemainingFrameInfoEXTstructure to allow specifying remaining frames of each type in the rate control GOP
- 
Added maxTemporalLayers,maxQp, andminQpcapabilities
- 
Added maxLevelIdccapability and newVkVideoEncodeH264SessionCreateInfoEXTstructure to specify upper bounds on the H.264 level of the produced video bitstream
- 
Moved capability flags specific to codec syntax restrictions from VkVideoEncodeH264CapabilityFlagsEXTto the newVkVideoEncodeH264StdFlagsEXTwhich is now included as a separatestdSyntaxFlagsmember inVkVideoEncodeH264CapabilitiesEXT
- 
Removed codec syntax override values from VkVideoEncodeH264CapabilitiesEXT
- 
Removed VkVideoEncodeH264NaluSliceInfoEXT::mbCountandVK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT
- 
Replaced VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICES_PER_FRAME_BIT_EXTwith the newmaxSliceCountcapability
- 
Removed capability flag VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXTand removedpStdReferenceFinalListsmembers from theVkVideoEncodeH264PictureInfoEXTandVkVideoEncodeH264NaluSliceInfoEXTstructures as reference lists info is now included inpStdPictureInfo
- 
Added capability flag VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT
 
- 
- 
Revision 12, 2023-07-19 (Daniel Rakos) - 
Added video std capability flags VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_EXTandVK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT
- 
Fixed optionality of the array members of VkVideoEncodeH264SessionParametersAddInfoEXT
- 
Fixed optionality of VkVideoEncodeH264RateControlInfoEXT::flags
 
- 
- 
Revision 13, 2023-09-04 (Daniel Rakos) - 
Change extension from EXTtoKHR
- 
Extension is no longer provisional 
 
- 
- 
Revision 14, 2023-12-05 (Daniel Rakos) - 
Condition reference picture setup based on the value of StdVideoEncodeH264PictureInfo::flags.is_reference
 
- 
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.