Contact
-
Ahmed Abdelkhalek 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
-
See Also
VkVideoEncodeH264CapabilitiesKHR, VkVideoEncodeH264CapabilityFlagBitsKHR, VkVideoEncodeH264CapabilityFlagsKHR, VkVideoEncodeH264DpbSlotInfoKHR, VkVideoEncodeH264FrameSizeKHR, VkVideoEncodeH264GopRemainingFrameInfoKHR, VkVideoEncodeH264NaluSliceInfoKHR, VkVideoEncodeH264PictureInfoKHR, VkVideoEncodeH264ProfileInfoKHR, VkVideoEncodeH264QpKHR, VkVideoEncodeH264QualityLevelPropertiesKHR, VkVideoEncodeH264RateControlFlagBitsKHR, VkVideoEncodeH264RateControlFlagsKHR, VkVideoEncodeH264RateControlInfoKHR, VkVideoEncodeH264RateControlLayerInfoKHR, VkVideoEncodeH264SessionCreateInfoKHR, VkVideoEncodeH264SessionParametersAddInfoKHR, VkVideoEncodeH264SessionParametersCreateInfoKHR, VkVideoEncodeH264SessionParametersFeedbackInfoKHR, VkVideoEncodeH264SessionParametersGetInfoKHR, VkVideoEncodeH264StdFlagBitsKHR, VkVideoEncodeH264StdFlagsKHR
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.