Structures

VkVideoEncodeH265PictureInfoKHR

Structure specifies H.265 encode frame parameters

The VkVideoEncodeH265PictureInfoKHR structure is defined as:

typedef struct VkVideoEncodeH265PictureInfoKHR {
    VkStructureType sType;
    const void* pNext;
    uint32_t naluSliceSegmentEntryCount;
    const VkVideoEncodeH265NaluSliceSegmentInfoKHR* pNaluSliceSegmentEntries;
    const StdVideoEncodeH265PictureInfo* pStdPictureInfo;
} VkVideoEncodeH265PictureInfoKHR;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • naluSliceSegmentEntryCount is the number of elements in pNaluSliceSegmentEntries.
  • pNaluSliceSegmentEntries is a pointer to an array of naluSliceSegmentEntryCount
    VkVideoEncodeH265NaluSliceSegmentInfoKHR structures specifying the parameters of the individual H.265 slice segments to encode for the input picture.
  • pStdPictureInfo is a pointer to a StdVideoEncodeH265PictureInfo structure specifying H.265 picture information.

This structure is specified in the pNext chain of the VkVideoEncodeInfoKHR structure passed to vkCmdEncodeVideoKHR to specify the codec-specific picture information for an H.265 encode operation.

Encode Input Picture Information

When this structure is specified in the pNext chain of the VkVideoEncodeInfoKHR structure passed to vkCmdEncodeVideoKHR, the information related to the encode input picture is defined as follows:

Std Picture Information

The members of the StdVideoEncodeH265PictureInfo structure pointed to by pStdPictureInfo are interpreted as follows:

  • flags.reserved and reserved1 are used only for padding purposes and are otherwise ignored;
  • flags.is_reference as defined in section 3.132 of the ITU-T H.265 Specification;
  • flags.IrapPicFlag as defined in section 3.73 of the ITU-T H.265 Specification;
  • flags.used_for_long_term_reference is used to indicate whether the picture is marked as used for long-term reference as defined in section 8.3.2 of the ITU-T H.265 Specification;
  • flags.discardable_flag and cross_layer_bla_flag as defined in section F.7.4.7.1 of the ITU-T H.265 Specification;
  • pic_type as defined in section 7.4.3.5 of the ITU-T H.265 Specification;
  • sps_video_parameter_set_id, pps_seq_parameter_set_id, and pps_pic_parameter_set_id are used to identify the active parameter sets, as described below;
  • PicOrderCntVal as defined in section 8.3.1 of the ITU-T H.265 Specification;
  • TemporalId as defined in section 7.4.2.2 of the ITU-T H.265 Specification;
  • if pRefLists is not NULL, then it is a pointer to a StdVideoEncodeH265ReferenceListsInfo structure that is interpreted as follows:
    • flags.reserved is used only for padding purposes and is otherwise ignored;
    • ref_pic_list_modification_flag_l0 and ref_pic_list_modification_flag_l1 as defined in section 7.4.7.2 of the ITU-T H.265 Specification;
    • num_ref_idx_l0_active_minus1 and num_ref_idx_l1_active_minus1 as defined in section 7.4.7.1 of the ITU-T H.265 Specification;
    • RefPicList0 and RefPicList1 as defined in section 8.3.4 of the ITU-T H.265 Specification where each element of these arrays either identifies an active reference picture using its DPB slot index or contains the value STD_VIDEO_H265_NO_REFERENCE_PICTURE to indicate no reference picture;
    • list_entry_l0 and list_entry_l1 as defined in section 7.4.7.2 of the ITU-T H.265 Specification;
  • if flags.short_term_ref_pic_set_sps_flag is set, then the StdVideoH265ShortTermRefPicSet structure pointed to by pShortTermRefPicSet is interpreted as defined for the elements of the pShortTermRefPicSet array specified in H.265 sequence parameter sets.
  • if flags.long_term_ref_pics_present_flag is set in the active SPS, then the StdVideoEncodeH265LongTermRefPics structure pointed to by pLongTermRefPics is interpreted as follows:
    • used_by_curr_pic_lt_flag is a bitmask where bit index i corresponds to used_by_curr_pic_lt_flag[i] as defined in section 7.4.7.1 of the ITU-T H.265 Specification;
    • all other members of StdVideoEncodeH265LongTermRefPics are interpreted as defined in section 7.4.7.1 of the ITU-T H.265 Specification;
  • all other members are interpreted as defined in section 7.4.7.1 of the ITU-T H.265 Specification.

Reference picture setup is controlled by the value of StdVideoEncodeH265PictureInfo::flags.is_reference. If it is set and a reconstructed picture is specified, then the latter is used as the target of picture reconstruction to activate the DPB slot specified in pEncodeInfo→pSetupReferenceSlot→slotIndex. If StdVideoEncodeH265PictureInfo::flags.is_reference is not set, but a reconstructed picture is specified, then the corresponding picture reference associated with the DPB slot is invalidated, as described in the DPB Slot States section.

Active Parameter Sets

The members of the StdVideoEncodeH265PictureInfo structure pointed to by pStdPictureInfo are used to select the active parameter sets to use from the bound video session parameters object, as follows:

  • The active VPS is the VPS identified by the key specified in StdVideoEncodeH265PictureInfo::sps_video_parameter_set_id.
  • The active SPS is the SPS identified by the key specified by the pair constructed from StdVideoEncodeH265PictureInfo::sps_video_parameter_set_id and StdVideoEncodeH265PictureInfo::pps_seq_parameter_set_id.
  • The active PPS is the PPS identified by the key specified by the triplet constructed from StdVideoEncodeH265PictureInfo::sps_video_parameter_set_id, StdVideoEncodeH265PictureInfo::pps_seq_parameter_set_id, and StdVideoEncodeH265PictureInfo::pps_pic_parameter_set_id.

H.265 encoding uses explicit weighted sample prediction for a slice segment, as defined in section 8.5.3.3.4 of the ITU-T H.265 Specification, if any of the following conditions are true for the active PPS and the pStdSliceSegmentHeader member of the corresponding element of pNaluSliceSegmentEntries:

  • pStdSliceSegmentHeader→slice_type is STD_VIDEO_H265_SLICE_TYPE_P and weighted_pred_flag is enabled in the active PPS.
  • pStdSliceSegmentHeader→slice_type is STD_VIDEO_H265_SLICE_TYPE_B and weighted_bipred_flag is enabled in the active PPS.

The number of H.265 tiles, as defined in section 3.174 of the ITU-T H.265 Specification, is derived from the num_tile_columns_minus1 and num_tile_rows_minus1 members of the active PPS as follows:

  • (num_tile_columns_minus1 + 1) × (num_tile_rows_minus1 + 1)

Valid Usage

VUID-VkVideoEncodeH265PictureInfoKHR-naluSliceSegmentEntryCount-08306

naluSliceSegmentEntryCount must be between 1 and VkVideoEncodeH265CapabilitiesKHR::maxSliceSegmentCount, inclusive, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile

VUID-VkVideoEncodeH265PictureInfoKHR-flags-08323

If VkVideoEncodeH265CapabilitiesKHR::flags, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile, does not include VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR, then naluSliceSegmentEntryCount must be greater than or equal to the number of H.265 tiles in the picture

VUID-VkVideoEncodeH265PictureInfoKHR-flags-08324

If VkVideoEncodeH265CapabilitiesKHR::flags, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile, does not include VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR, then naluSliceSegmentEntryCount must be less than or equal to the number of H.265 tiles in the picture

VUID-VkVideoEncodeH265PictureInfoKHR-flags-08316

If VkVideoEncodeH265CapabilitiesKHR::flags, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile, does not include VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR and the slice segment corresponding to any element of pNaluSliceSegmentEntries uses explicit weighted sample prediction, then VkVideoEncodeH265NaluSliceSegmentInfoKHR::pStdSliceSegmentHeader→pWeightTablemust not be NULL for that element of pNaluSliceSegmentEntries

VUID-VkVideoEncodeH265PictureInfoKHR-flags-08317

If VkVideoEncodeH265CapabilitiesKHR::flags, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile, does not include VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR, then VkVideoEncodeH265NaluSliceSegmentInfoKHR::pStdSliceSegmentHeader→slice_typemust be identical for all elements of pNaluSliceSegmentEntries

Valid Usage (Implicit)

VUID-VkVideoEncodeH265PictureInfoKHR-sType-sType

sType must be VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR

VUID-VkVideoEncodeH265PictureInfoKHR-pNaluSliceSegmentEntries-parameter

pNaluSliceSegmentEntries must be a valid pointer to an array of naluSliceSegmentEntryCount valid VkVideoEncodeH265NaluSliceSegmentInfoKHR structures

VUID-VkVideoEncodeH265PictureInfoKHR-pStdPictureInfo-parameter

pStdPictureInfo must be a valid pointer to a valid StdVideoEncodeH265PictureInfo value