Extension and Version Dependencies
-
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-07-19
- 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.
-
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.
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_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME
-
VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION
-
Extending VkStructureType:
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_EXT
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_EXT
-
-
Extending VkVideoCodecOperationFlagBitsKHR:
-
VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT
-
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
VkVideoEncodeH264CapabilitiesFlagsEXT
toVkVideoEncodeH264CapabilityFlagsEXT
andVkVideoEncodeH264CapabilitiesFlagsEXT
toVkVideoEncodeH264CapabilityFlagsEXT
, 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
VkVideoEncodeH264RateControlStructureFlagBitsEXT
bit enum withVkVideoEncodeH264RateControlStructureEXT
enum -
Rename
VkVideoEncodeH264ProfileEXT
toVkVideoEncodeH264ProfileInfoEXT
-
Rename
VkVideoEncodeH264ReferenceListsEXT
toVkVideoEncodeH264ReferenceListsInfoEXT
-
Rename
VkVideoEncodeH264EmitPictureParametersEXT
toVkVideoEncodeH264EmitPictureParametersInfoEXT
-
Rename
VkVideoEncodeH264NaluSliceEXT
toVkVideoEncodeH264NaluSliceInfoEXT
-
-
Revision 9, 2022-09-18 (Daniel Rakos)
-
Rename
spsStdCount
,pSpsStd
,ppsStdCount
, andpPpsStd
tostdSPSCount
,pStdSPSs
,stdPPSCount
, andpStdPPSs
, respectively, inVkVideoEncodeH264SessionParametersAddInfoEXT
-
Rename
maxSpsStdCount
andmaxPpsStdCount
tomaxStdSPSCount
andmaxStdPPSCount
, respectively, inVkVideoEncodeH264SessionParametersCreateInfoEXT
-
-
Revision 10, 2023-03-06 (Daniel Rakos)
-
Removed
VkVideoEncodeH264EmitPictureParametersInfoEXT
-
Changed member types in
VkVideoEncodeH264CapabilitiesEXT
andVkVideoEncodeH264ReferenceListsInfoEXT
fromuint8_t
touint32_t
-
Changed the type of
VkVideoEncodeH264RateControlInfoEXT::temporalLayerCount
andVkVideoEncodeH264RateControlLayerInfoEXT::temporalLayerId
fromuint8_t
touint32_t
-
Removed
VkVideoEncodeH264InputModeFlagsEXT
andVkVideoEncodeH264OutputModeFlagsEXT
as we only support frame-in-frame-out mode for now -
Rename
pCurrentPictureInfo
inVkVideoEncodeH264VclFrameInfoEXT
topStdPictureInfo
-
Rename
pSliceHeaderStd
inVkVideoEncodeH264NaluSliceInfoEXT
topStdSliceHeader
-
Rename
pReferenceFinalLists
inVkVideoEncodeH264VclFrameInfoEXT
andVkVideoEncodeH264NaluSliceInfoEXT
topStdReferenceFinalLists
-
Removed the
slotIndex
member ofVkVideoEncodeH264DpbSlotInfoEXT
and changed it to be chained toVkVideoReferenceSlotInfoKHR
-
Replaced
VkVideoEncodeH264ReferenceListsInfoEXT
with the new Video Std header structureStdVideoEncodeH264ReferenceLists
that also includes data previously part of the now removedStdVideoEncodeH264RefMemMgmtCtrlOperations
structure -
Added new capability flag
VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT
-
-
Revision 11, 2023-05-22 (Daniel Rakos)
-
Renamed
VkVideoEncodeH264VclFrameInfoEXT
toVkVideoEncodeH264PictureInfoEXT
-
Added
VkVideoEncodeH264PictureInfoEXT::generatePrefixNalu
andVK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXT
to enable the generation of H.264 prefix NALUs when supported by the implementation -
Removed
VkVideoEncodeH264RateControlLayerInfoEXT::temporalLayerId
-
Added
expectDyadicTemporalLayerPattern
capability -
Added the
VkVideoEncodeH264SessionParametersGetInfoEXT
structure to identify the H.264 parameter sets to retrieve encoded parameter data for, and theVkVideoEncodeH264SessionParametersFeedbackInfoEXT
structure to retrieve H.264 parameter set override information when using the newvkGetEncodedVideoSessionParametersKHR
command -
Added
VkVideoEncodeH264NaluSliceInfoEXT::constantQp
to specify per-slice constant QP when rate control mode isVK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR
-
Added
VkVideoEncodeH264QualityLevelPropertiesEXT
for retrieving H.264 specific quality level recommendations -
Replaced
VkVideoEncodeH264RateControlStructureEXT
enum with the flags typeVkVideoEncodeH264RateControlFlagsEXT
and bits defined inVkVideoEncodeH264RateControlFlagBitsEXT
and added HRD compliance flag -
Removed
useInitialRcQp
andinitialRcQp
members ofVkVideoEncodeH264RateControlLayerInfoEXT
-
Added
prefersGopRemainingFrames
andrequiresGopRemainingFrames
, and the newVkVideoEncodeH264GopRemainingFrameInfoEXT
structure to allow specifying remaining frames of each type in the rate control GOP -
Added
maxTemporalLayers
,maxQp
, andminQp
capabilities -
Added
maxLevelIdc
capability and newVkVideoEncodeH264SessionCreateInfoEXT
structure to specify upper bounds on the H.264 level of the produced video bitstream -
Moved capability flags specific to codec syntax restrictions from
VkVideoEncodeH264CapabilityFlagsEXT
to the newVkVideoEncodeH264StdFlagsEXT
which is now included as a separatestdSyntaxFlags
member inVkVideoEncodeH264CapabilitiesEXT
-
Removed codec syntax override values from
VkVideoEncodeH264CapabilitiesEXT
-
Removed
VkVideoEncodeH264NaluSliceInfoEXT::mbCount
andVK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT
-
Replaced
VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICES_PER_FRAME_BIT_EXT
with the newmaxSliceCount
capability -
Removed capability flag
VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_REFERENCE_FINAL_LISTS_BIT_EXT
and removedpStdReferenceFinalLists
members from theVkVideoEncodeH264PictureInfoEXT
andVkVideoEncodeH264NaluSliceInfoEXT
structures 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_EXT
andVK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_EXT
-
Fixed optionality of the array members of
VkVideoEncodeH264SessionParametersAddInfoEXT
-
Fixed optionality of
VkVideoEncodeH264RateControlInfoEXT::flags
-
See Also
VkVideoEncodeH264CapabilitiesEXT, VkVideoEncodeH264CapabilityFlagBitsEXT, VkVideoEncodeH264CapabilityFlagsEXT, VkVideoEncodeH264DpbSlotInfoEXT, VkVideoEncodeH264FrameSizeEXT, VkVideoEncodeH264GopRemainingFrameInfoEXT, VkVideoEncodeH264NaluSliceInfoEXT, VkVideoEncodeH264PictureInfoEXT, VkVideoEncodeH264ProfileInfoEXT, VkVideoEncodeH264QpEXT, VkVideoEncodeH264QualityLevelPropertiesEXT, VkVideoEncodeH264RateControlFlagBitsEXT, VkVideoEncodeH264RateControlFlagsEXT, VkVideoEncodeH264RateControlInfoEXT, VkVideoEncodeH264RateControlLayerInfoEXT, VkVideoEncodeH264SessionCreateInfoEXT, VkVideoEncodeH264SessionParametersAddInfoEXT, VkVideoEncodeH264SessionParametersCreateInfoEXT, VkVideoEncodeH264SessionParametersFeedbackInfoEXT, VkVideoEncodeH264SessionParametersGetInfoEXT, VkVideoEncodeH264StdFlagBitsEXT, VkVideoEncodeH264StdFlagsEXT
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.