Structures

VkVideoEncodeH264RateControlLayerInfoKHR

Structure describing H.264 per-layer rate control parameters

The VkVideoEncodeH264RateControlLayerInfoKHR structure is defined as:

typedef struct VkVideoEncodeH264RateControlLayerInfoKHR {
    VkStructureType sType;
    const void* pNext;
    VkBool32 useMinQp;
    VkVideoEncodeH264QpKHR minQp;
    VkBool32 useMaxQp;
    VkVideoEncodeH264QpKHR maxQp;
    VkBool32 useMaxFrameSize;
    VkVideoEncodeH264FrameSizeKHR maxFrameSize;
} VkVideoEncodeH264RateControlLayerInfoKHR;
  • sType is a VkStructureType value identifying this structure.
  • pNext is NULL or a pointer to a structure extending this structure.
  • useMinQp indicates whether the QP values determined by rate control will be clamped to the lower bounds on the QP values specified in minQp.
  • minQp specifies the lower bounds on the QP values, for each picture type, that the implementation’s rate control algorithm will use when useMinQp is set to VK_TRUE.
  • useMaxQp indicates whether the QP values determined by rate control will be clamped to the upper bounds on the QP values specified in maxQp.
  • maxQp specifies the upper bounds on the QP values, for each picture type, that the implementation’s rate control algorithm will use when useMaxQp is set to VK_TRUE.
  • useMaxFrameSize indicates whether the implementation’s rate control algorithm should use the values specified in maxFrameSize as the upper bounds on the encoded frame size for each picture type.
  • maxFrameSize specifies the upper bounds on the encoded frame size, for each picture type, when useMaxFrameSize is set to VK_TRUE.

When used, the values in minQp and maxQp guarantee that the effective QP values used by the implementation will respect those lower and upper bounds, respectively. However, limiting the range of QP values that the implementation is able to use will also limit the capabilities of the implementation’s rate control algorithm to comply to other constraints. In particular, the implementation may not be able to comply to the following:

  • The average and/or peak bitrate values to be used for the encoded bitstream specified in the averageBitrate and maxBitrate members of the VkVideoEncodeRateControlLayerInfoKHR structure.
  • The upper bounds on the encoded frame size, for each picture type, specified in the maxFrameSize member of VkVideoEncodeH264RateControlLayerInfoKHR.

In general, applications need to configure rate control parameters appropriately in order to be able to get the desired rate control behavior, as described in the Video Encode Rate Control section.

When an instance of this structure is included in the pNext chain of a VkVideoEncodeRateControlLayerInfoKHR structure specified in one of the elements of the pLayers array member of the VkVideoEncodeRateControlInfoKHR structure passed to the vkCmdControlVideoCodingKHR command, VkVideoCodingControlInfoKHR::flags includes VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR, and the bound video session was created with the video codec operation VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR, it specifies the H.264-specific rate control parameters of the rate control layer corresponding to that element of pLayers.

Valid Usage

VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMinQp-08286

If useMinQp is VK_TRUE, then the qpI, qpP, and qpB members of minQp must all be between VkVideoEncodeH264CapabilitiesKHR::minQp and VkVideoEncodeH264CapabilitiesKHR::maxQp, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile

VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMaxQp-08287

If useMaxQp is VK_TRUE, then the qpI, qpP, and qpB members of maxQp must all be between VkVideoEncodeH264CapabilitiesKHR::minQp and VkVideoEncodeH264CapabilitiesKHR::maxQp, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile

VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMinQp-08288

If useMinQp is VK_TRUE and VkVideoEncodeH264CapabilitiesKHR::flags, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile, does not include VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR, then the qpI, qpP, and qpB members of minQpmust all specify the same value

VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMaxQp-08289

If useMaxQp is VK_TRUE and VkVideoEncodeH264CapabilitiesKHR::flags, as returned by vkGetPhysicalDeviceVideoCapabilitiesKHR for the used video profile, does not include VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR, then the qpI, qpP, and qpB members of maxQpmust all specify the same value

VUID-VkVideoEncodeH264RateControlLayerInfoKHR-useMinQp-08374

If useMinQp and useMaxQp are both VK_TRUE, then the qpI, qpP, and qpB members of minQp must all be less than or equal to the respective members of maxQp