| // 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[] |
| -- |