blob: b0b394f01dd88b930104ed25ed3c95e28ee479d2 [file] [log] [blame]
// Copyright 2018-2021 The Khronos Group Inc.
//
// SPDX-License-Identifier: CC-BY-4.0
[[encode-h265]]
== Encode H.265
This extension adds H.265 codec-specific structures/types needed to support
H.265 video encoding.
Unless otherwise noted, all references to the H.265 specification are to the
2013 edition published by the ITU-T, dated April 2013.
This specification is available at http://www.itu.int/rec/T-REC-H.265.
=== H.265 encode profile
An H.265 encode profile is specified by including the
slink:VkVideoEncodeH265ProfileEXT structure in the pname:pNext chain of the
slink:VkVideoProfileKHR structure when
slink:VkVideoProfileKHR::pname:videoCodecOperation is
ename:VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT.
[open,refpage='VkVideoEncodeH265ProfileEXT',desc='Structure specifying H.265 encode profile',type='structs']
--
The sname:VkVideoEncodeH265ProfileEXT structure is defined as:
include::{generated}/api/structs/VkVideoEncodeH265ProfileEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:stdProfileIdc is a code:StdVideoH265ProfileIdc value specifying
the H.265 codec profile IDC.
include::{generated}/validity/structs/VkVideoEncodeH265ProfileEXT.txt[]
--
=== Capabilities
[open,refpage='VkVideoEncodeH265CapabilitiesEXT',desc='Structure specifying H.265 encode capabilities',type='structs']
--
When calling flink:vkGetPhysicalDeviceVideoCapabilitiesKHR with
pname:pVideoProfile->videoCodecOperation specified as
ename:VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, the
slink:VkVideoEncodeH265CapabilitiesEXT structure must: be included in the
pname:pNext chain of the slink:VkVideoCapabilitiesKHR structure to retrieve
H.265-specific capabilities for video encoding.
The sname:VkVideoEncodeH265CapabilitiesEXT structure is defined as:
include::{generated}/api/structs/VkVideoEncodeH265CapabilitiesEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:flags is reserved for future use.
* pname:inputModeFlags is a bitmask of
elink:VkVideoEncodeH265InputModeFlagBitsEXT describing the command
buffer input granularities/modes supported by the implementation.
* pname:outputModeFlags is a bitmask of
elink:VkVideoEncodeH265OutputModeFlagBitsEXT describing the output
(bitstream size reporting) granularities/modes supported by the
implementation.
* pname:ctbSizes is a bitmask of elink:VkVideoEncodeH265CtbSizeFlagBitsEXT
describing the supported CTB sizes.
* pname:inputImageDataAlignment reports the alignment, in pixels, for the
width and height of the picture data within the images used in video
encoding.
* pname:maxNumL0ReferenceForP reports the maximum number of reference
pictures the implementation supports in the reference list L0 for P
pictures.
* pname:maxNumL0ReferenceForB reports the maximum number of reference
pictures the implementation supports in the reference list L0 for B
pictures.
The reported value is `0` if encoding of B pictures is not supported.
* pname:maxNumL1Reference reports the maximum number of reference pictures
the implementation supports in the reference list L1 if encoding of B
pictures is supported.
The reported value is `0` if encoding of B pictures is not supported.
* pname:maxNumSubLayers reports the maximum number of sublayers.
* pname:qualityLevelCount is the number of quality levels supported.
* pname:stdExtensionVersion is a slink:VkExtensionProperties structure in
which the H.265 extension name and version supported by the
implementation are returned.
include::{generated}/validity/structs/VkVideoEncodeH265CapabilitiesEXT.txt[]
--
[open,refpage='VkVideoEncodeH265CapabilityFlagsEXT',desc='Reserved for future use',type='flags']
--
include::{generated}/api/flags/VkVideoEncodeH265CapabilityFlagsEXT.txt[]
tname:VkVideoEncodeH265CapabilityFlagsEXT is a bitmask type for setting a
mask, but is currently reserved for future use.
// ... a mask of zero or more elink:VkVideoEncodeH265CapabilityFlagBitsEXT.
--
[open,refpage='VkVideoEncodeH265InputModeFlagsEXT',desc='Bitmask of VkVideoEncodeH265InputModeFlagBitsEXT',type='flags']
--
include::{generated}/api/flags/VkVideoEncodeH265InputModeFlagsEXT.txt[]
tname:VkVideoEncodeH265InputModeFlagsEXT is a bitmask type for setting a
mask of zero or more elink:VkVideoEncodeH265InputModeFlagBitsEXT.
--
[open,refpage='VkVideoEncodeH265InputModeFlagBitsEXT',desc='Video encode H.265 input modes',type='enums']
--
Bits which may: be set in
slink:VkVideoEncodeH265CapabilitiesEXT::pname:inputModeFlags, indicating the
commmand buffer input granularities supported by the implementation, are:
include::{generated}/api/enums/VkVideoEncodeH265InputModeFlagBitsEXT.txt[]
* ename:VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT indicates that a
single command buffer must: at least encode an entire frame.
Any non-VCL NALUs must: be encoded using the same command buffer as the
frame if ename:VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT is not
supported.
* ename:VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT indicates that a
single command buffer must: at least encode a single slice.
Any non-VCL NALUs must: be encoded using the same command buffer as the
first slice of the frame if
ename:VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT is not supported.
* ename:VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT indicates that a
single command buffer may: encode a non-VCL NALU by itself.
An implementation must: support at least one of
ename:VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT or
ename:VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_BIT_EXT.
--
[open,refpage='VkVideoEncodeH265OutputModeFlagsEXT',desc='Bitmask of VkVideoEncodeH265OutputModeFlagBitsEXT',type='flags']
--
include::{generated}/api/flags/VkVideoEncodeH265OutputModeFlagsEXT.txt[]
tname:VkVideoEncodeH265OutputModeFlagsEXT is a bitmask type for setting a
mask of zero or more elink:VkVideoEncodeH265OutputModeFlagBitsEXT.
--
[open,refpage='VkVideoEncodeH265OutputModeFlagBitsEXT',desc='Video encode H.265 output modes',type='enums']
--
Bits which may: be set in
slink:VkVideoEncodeH265CapabilitiesEXT::pname:outputModeFlags, indicating
the minimum bitstream generation commands that must: be included between
each flink:vkCmdBeginVideoCodingKHR and flink:vkCmdEndVideoCodingKHR pair
(henceforth simply begin/end pair), are:
include::{generated}/api/enums/VkVideoEncodeH265OutputModeFlagBitsEXT.txt[]
* ename:VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT indicates that
calls to generate all NALUs of a frame must: be included within a single
begin/end pair.
Any non-VCL NALUs must: be encoded within the same begin/end pair if
ename:VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT is not supported.
* ename:VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT indicates that each
begin/end pair must: encode at least one slice.
Any non-VCL NALUs must: be encoded within the same begin/end pair as the
first slice of the frame if
ename:VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT is not supported.
* ename:VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT indicates that
each begin/end pair may: encode only a non-VCL NALU by itself.
An implementation must: support at least one of
ename:VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT or
ename:VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_BIT_EXT.
A single begin/end pair must: not encode more than a single frame.
The bitstreams of NALUs generated within a single begin/end pair are written
continuously into the same bitstream buffer (any padding between the NALUs
must: be compliant to the H.265 standard).
The supported input modes must: be coarser or equal to the supported output
modes.
For example, it is illegal to report slice input is supported but only frame
output is supported.
An implementation must: report one of the following combinations of
input/output modes:
* Input: Frame, Output: Frame
* Input: Frame, Output: Frame and Non-VCL
* Input: Frame, Output: Slice
* Input: Frame, Output: Slice and Non-VCL
* Input: Slice, Output: Slice
* Input: Slice, Output: Slice and Non-VCL
* Input: Frame and Non-VCL, Output: Frame and Non-VCL
* Input: Frame and Non-VCL, Output: Slice and Non-VCL
* Input: Slice and Non-VCL, Output: Slice and Non-VCL
--
[open,refpage='VkVideoEncodeH265CtbSizeFlagsEXT',desc='Bitmask of VkVideoEncodeH265CtbSizeFlagBitsEXT',type='flags']
--
include::{generated}/api/flags/VkVideoEncodeH265CtbSizeFlagsEXT.txt[]
tname:VkVideoEncodeH265CtbSizeFlagsEXT is a bitmask type for setting a mask
of zero or more elink:VkVideoEncodeH265CtbSizeFlagBitsEXT.
--
[open,refpage='VkVideoEncodeH265CtbSizeFlagBitsEXT',desc='Supported CTB sizes for H.265 video encode',type='enums']
--
Bits which may: be set in
slink:VkVideoEncodeH265CapabilitiesEXT::pname:ctbSizes, indicating the CTB
sizes supported by the implementation, are:
include::{generated}/api/enums/VkVideoEncodeH265CtbSizeFlagBitsEXT.txt[]
* ename:VK_VIDEO_ENCODE_H265_CTB_SIZE_8_BIT_EXT specifies that a CTB size
of 8x8 is supported.
* ename:VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT specifies that a CTB size
of 16x16 is supported.
* ename:VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT specifies that a CTB size
of 32x32 is supported.
* ename:VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT specifies that a CTB size
of 64x64 is supported.
--
=== Create Information
[open,refpage='VkVideoEncodeH265SessionCreateInfoEXT', desc='Structure specifies H.265 encoder creation parameters', type='structs']
--
When creating a Video Session object with
slink:VkVideoSessionCreateInfoKHR::pname:pVideoProfile->videoCodecOperation
specified as ename:VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT, add a
slink:VkVideoEncodeH265SessionCreateInfoEXT structure to the pname:pNext
chain of the slink:VkVideoSessionCreateInfoKHR structure passed to
flink:vkCreateVideoSessionKHR in order to specify the H.265-specific video
encoder session creation parameters.
The sname:VkVideoEncodeH265SessionCreateInfoEXT structure is defined as:
include::{generated}/api/structs/VkVideoEncodeH265SessionCreateInfoEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:flags is reserved for future use.
* pname:pStdExtensionVersion is a pointer to a slink:VkExtensionProperties
structure specifying the H.265 codec extension version.
include::{generated}/validity/structs/VkVideoEncodeH265SessionCreateInfoEXT.txt[]
--
[open,refpage='VkVideoEncodeH265CreateFlagsEXT',desc='Reserved for future use',type='flags']
--
include::{generated}/api/flags/VkVideoEncodeH265CreateFlagsEXT.txt[]
tname:VkVideoEncodeH265CreateFlagsEXT is a bitmask type for setting a mask,
but is currently reserved for future use.
--
=== Encoder H.265 Video Session Parameters Object
When creating a Video Session Parameters object, add a
slink:VkVideoEncodeH265SessionParametersCreateInfoEXT structure to the
pname:pNext chain of the slink:VkVideoSessionParametersCreateInfoKHR
structure passed to flink:vkCreateVideoSessionParametersKHR in order to
specify the H.265-specific video encoder session parameters.
[open,refpage='VkVideoEncodeH265SessionParametersCreateInfoEXT',desc='Structure specifies H.265 encoder parameter set info',type='structs']
--
The sname:VkVideoEncodeH265SessionParametersCreateInfoEXT structure is
defined as:
include::{generated}/api/structs/VkVideoEncodeH265SessionParametersCreateInfoEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:maxVpsStdCount is the maximum number of entries of type
code:StdVideoH265VideoParameterSet within
sname:VkVideoSessionParametersKHR.
* pname:maxSpsStdCount is the maximum number of entries of type
code:StdVideoH265SequenceParameterSet within
sname:VkVideoSessionParametersKHR.
* pname:maxPpsStdCount is the maximum number of entries of type
code:StdVideoH265PictureParameterSet within
sname:VkVideoSessionParametersKHR.
* pname:pParametersAddInfo is `NULL` or a pointer to a
slink:VkVideoEncodeH265SessionParametersAddInfoEXT structure specifying
the video session parameters to add upon creation of this object.
When a slink:VkVideoSessionParametersKHR object contains
pname:maxVpsStdCount code:StdVideoH265VideoParameterSet entries, no
additional code:StdVideoH265VideoParameterSet entries can be added to it,
and ename:VK_ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made
to add these entries.
When a slink:VkVideoSessionParametersKHR object contains
pname:maxSpsStdCount code:StdVideoH265SequenceParameterSet entries, no
additional code:StdVideoH265SequenceParameterSet entries can be added to it,
and ename:VK_ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made
to add these entries.
When a slink:VkVideoSessionParametersKHR object contains
pname:maxPpsStdCount code:StdVideoH265PictureParameterSet entries, no
additional code:StdVideoH265PictureParameterSet entries can be added to it,
and ename:VK_ERROR_TOO_MANY_OBJECTS will be returned if an attempt is made
to add these entries.
include::{generated}/validity/structs/VkVideoEncodeH265SessionParametersCreateInfoEXT.txt[]
--
[open,refpage='VkVideoEncodeH265SessionParametersAddInfoEXT',desc='Structure specifies H.265 encoder parameter set info',type='structs']
--
The sname:VkVideoEncodeH265SessionParametersAddInfoEXT structure is defined
as:
include::{generated}/api/structs/VkVideoEncodeH265SessionParametersAddInfoEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:vpsStdCount is the number of VPS elements in pname:pVpsStd.
* pname:pVpsStd is a pointer to an array of pname:vpsStdCount
code:StdVideoH265VideoParameterSet structures representing H.265 video
parameter sets.
* pname:spsStdCount is the number of SPS elements in pname:pSpsStd.
* pname:pSpsStd is a pointer to an array of pname:spsStdCount
code:StdVideoH265SequenceParameterSet structures representing H.265
sequence parameter sets.
* pname:ppsStdCount is the number of PPS elements in pname:pPpsStd.
* pname:pPpsStd is a pointer to an array of pname:ppsStdCount
code:StdVideoH265PictureParameterSet structures representing H.265
picture parameter sets.
include::{generated}/validity/structs/VkVideoEncodeH265SessionParametersAddInfoEXT.txt[]
.Valid Usage
****
* [[VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-vpsStdCount-06438]]
The values of pname:vpsStdCount, pname:spsStdCount and pname:ppsStdCount
must: be less than or equal to the values of
slink:VkVideoEncodeH265SessionParametersCreateInfoEXT::pname:maxVpsStdCount,
slink:VkVideoEncodeH265SessionParametersCreateInfoEXT:pname:maxSpsStdCount,
and
slink:VkVideoEncodeH265SessionParametersCreateInfoEXT:pname:maxPpsStdCount,
respectively
* [[VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pVpsStd-06439]]
Each code:StdVideoH265VideoParameterSet entry in pname:pVpsStd must:
have a unique H.265 VPS ID
* [[VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pSpsStd-06440]]
Each code:StdVideoH265SequenceParameterSet entry in pname:pSpsStd must:
have a unique H.265 VPS-SPS ID pair
* [[VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-pPpsStd-06441]]
Each code:StdVideoH265PictureParameterSet entry in pname:pPpsStd must:
have a unique H.265 VPS-SPS-PPS ID tuple
* [[VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-None-06442]]
Each entry to be added must: have a unique, to the rest of the parameter
array entries and the existing parameters in the Video Session
Parameters Object that is being updated, VPS-SPS-PPS IDs
* [[VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-None-06443]]
Parameter entries that already exist in Video Session Parameters object
with a particular VPS-SPS-PPS IDs must: not be replaced nor updated
* [[VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-None-06444]]
When creating a new object using a Video Session Parameters as a
template, the array's parameters with the same VPS-SPS-PPS IDs as the
ones from the template take precedence
* [[VUID-VkVideoEncodeH265SessionParametersAddInfoEXT-None-06445]]
VPS/SPS/PPS parameters must: comply with the limits specified in
slink:VkVideoSessionCreateInfoKHR during Video Session creation
****
--
=== Frame Encoding
In order to encode a frame, add a slink:VkVideoEncodeH265VclFrameInfoEXT
structure to the pname:pNext chain of the slink:VkVideoEncodeInfoKHR
structure passed to the flink:vkCmdEncodeVideoKHR command.
[open,refpage='VkVideoEncodeH265VclFrameInfoEXT',desc='Structure specifies H.265 encode frame parameters',type='structs']
--
The structure slink:VkVideoEncodeH265VclFrameInfoEXT representing a frame
encode operation is defined as:
include::{generated}/api/structs/VkVideoEncodeH265VclFrameInfoEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:pReferenceFinalLists is `NULL` or a pointer to a
slink:VkVideoEncodeH265ReferenceListsEXT structure specifying the
reference lists to be used for the current picture.
* pname:naluSliceEntryCount is the number of slice NALUs in the frame.
* pname:pNaluSliceEntries is a pointer to an array of
slink:VkVideoEncodeH265NaluSliceEXT structures specifying the division
of the current picture into slices and the properties of these slices.
* pname:pCurrentPictureInfo is a pointer to a
code:StdVideoEncodeH265PictureInfo structure specifying the syntax and
other codec-specific information from the H.265 specification,
associated with this picture.
include::{generated}/validity/structs/VkVideoEncodeH265VclFrameInfoEXT.txt[]
--
[open,refpage='VkVideoEncodeH265NaluSliceEXT',desc='Structure specifies H.265 encode slice NALU parameters',type='structs']
--
The structure slink:VkVideoEncodeH265NaluSliceEXT representing a slice is
defined as:
include::{generated}/api/structs/VkVideoEncodeH265NaluSliceEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:ctbCount is the number of CTBs in this slice.
* pname:pReferenceFinalLists is `NULL` or a pointer to a
slink:VkVideoEncodeH265ReferenceListsEXT structure specifying the
reference lists to be used for the current slice.
If pname:pReferenceFinalLists is not `NULL`, these reference lists
override the reference lists provided in
slink:VkVideoEncodeH265VclFrameInfoEXT::pname:pReferenceFinalLists.
* pname:pSliceHeaderStd is a pointer to a
code:StdVideoEncodeH265SliceHeader structure specifying the slice header
for the current slice.
include::{generated}/validity/structs/VkVideoEncodeH265NaluSliceEXT.txt[]
--
[open,refpage='VkVideoEncodeH265DpbSlotInfoEXT',desc='Structure specifies H.265 encode decoded pic info',type='structs']
--
The structure slink:VkVideoEncodeH265DpbSlotInfoEXT, representing a
reconstructed picture that is being used as a reference picture, is defined
as:
include::{generated}/api/structs/VkVideoEncodeH265DpbSlotInfoEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:slotIndex is the <<dpb-slot, DPB Slot>> index for this picture.
* pname:pStdReferenceInfo is a pointer to a
code:StdVideoEncodeH265ReferenceInfo structure specifying the syntax and
other codec-specific information from the H.265 specification,
associated with this reference picture.
include::{generated}/validity/structs/VkVideoEncodeH265DpbSlotInfoEXT.txt[]
--
[open,refpage='VkVideoEncodeH265ReferenceListsEXT',desc='Structure specifies H.265 reference frame lists',type='structs']
--
The structure slink:VkVideoEncodeH265ReferenceListsEXT representing
reference lists is defined as:
include::{generated}/api/structs/VkVideoEncodeH265ReferenceListsEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:referenceList0EntryCount is the number of reference pictures in
reference list L0 and is identical to
code:StdVideoEncodeH265SliceHeader::pname:num_ref_idx_l0_active_minus1 + 1.
* pname:pReferenceList0Entries is a pointer to an array of
pname:referenceList0EntryCount slink:VkVideoEncodeH265DpbSlotInfoEXT
structures specifying the reference list L0 entries for the current
picture.
* pname:referenceList1EntryCount is the number of reference pictures in
reference list L1 and is identical to
code:StdVideoEncodeH265SliceHeader::pname:num_ref_idx_l1_active_minus1 + 1.
* pname:pReferenceList1Entries is a pointer to an array of
pname:referenceList1EntryCount slink:VkVideoEncodeH265DpbSlotInfoEXT
structures specifying the reference list L1 entries for the current
picture.
* pname:pReferenceModifications is a pointer to a
code:StdVideoEncodeH265ReferenceModifications structure specifying
reference list modifications.
include::{generated}/validity/structs/VkVideoEncodeH265ReferenceListsEXT.txt[]
--
[open,refpage='VkVideoEncodeH265EmitPictureParametersEXT',desc='Structure specifies H.265 encode VPS NALU insertion parameters',type='structs']
--
The structure slink:VkVideoEncodeH265EmitPictureParametersEXT is defined as:
include::{generated}/api/structs/VkVideoEncodeH265EmitPictureParametersEXT.txt[]
* pname:sType is the type of this structure.
* pname:pNext is `NULL` or a pointer to a structure extending this
structure.
* pname:vpsId is the H.265 VPS ID for the H.265 VPS to insert in the
bitstream.
The VPS ID must: match the VPS provided in pname:vpsStd of
slink:VkVideoEncodeH265SessionParametersCreateInfoEXT.
This is retrieved from the slink:VkVideoSessionParametersKHR object
provided in slink:VkVideoBeginCodingInfoKHR.
* pname:spsId is the H.265 SPS ID for the H.265 SPS to insert in the
bitstream.
The SPS ID must: match one of the IDs of the SPS(s) provided in
pname:pSpsStd of slink:VkVideoEncodeH265SessionParametersCreateInfoEXT
to identify the SPS parameter set to insert in the bitstream.
This is retrieved from the slink:VkVideoSessionParametersKHR object
provided in slink:VkVideoBeginCodingInfoKHR.
* pname:emitVpsEnable enables the emitting of the VPS structure with id of
pname:vpsId.
* pname:emitSpsEnable enables the emitting of the SPS structure with id of
pname:spsId.
* pname:ppsIdEntryCount is the number of entries in the
pname:ppsIdEntries.
If this parameter is `0` then no pps entries are going to be emitted in
the bitstream.
* pname:ppsIdEntries is the H.265 PPS IDs for the H.265 PPS to insert in
the bitstream.
The PPS IDs must: match one of the IDs of the PPS(s) provided in
pname:pPpsStd of slink:VkVideoEncodeH265SessionParametersCreateInfoEXT
to identify the PPS parameter set to insert in the bitstream.
This is retrieved from the slink:VkVideoSessionParametersKHR object
provided in slink:VkVideoBeginCodingInfoKHR.
include::{generated}/validity/structs/VkVideoEncodeH265EmitPictureParametersEXT.txt[]
--