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
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
-
-
Revision 13, 2023-09-04 (Daniel Rakos)
-
Change extension from
EXT
toKHR
-
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.