VkVideoEncodeH264CapabilityFlagBitsEXT(3)

# VkVideoEncodeH264CapabilityFlagBitsEXT(3) Manual Page

## Name

VkVideoEncodeH264CapabilityFlagBitsEXT - Video encode H.264 capability flags

Loading… please wait.

## C Specification

Bits which may be set in VkVideoEncodeH264CapabilitiesEXT::`flags`, indicating the supported H.264 encoding capabilities, are:

    // Provided by VK_EXT_video_encode_h264
    typedef enum VkVideoEncodeH264CapabilityFlagBitsEXT {
        VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT = 0x00000001,
        VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT = 0x00000002,
        VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT = 0x00000004,
        VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT = 0x00000008,
        VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT = 0x00000010,
        VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT = 0x00000020,
        VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT = 0x00000040,
        VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_EXT = 0x00000080,
        VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXT = 0x00000100,
    } VkVideoEncodeH264CapabilityFlagBitsEXT;

## Description

- `VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT` indicates if the implementation guarantees generating a HRD compliant bitstream if `nal_hrd_parameters_present_flag` or `vcl_hrd_parameters_present_flag` are enabled in `StdVideoH264SpsVuiFlags`.

- `VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_EXT` indicates that when `weighted_pred_flag` is enabled or `STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT` from `StdVideoH264WeightedBipredIdc` is used, the implementation is able to internally decide syntax for `pred_weight_table`.

- `VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT` indicates that each slice in a frame with multiple slices may begin or finish at any offset in a macroblock row. If not supported, all slices in the frame must begin at the start of a macroblock row (and hence each slice must finish at the end of a macroblock row).

- `VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT` indicates that when a frame is encoded with multiple slices, the implementation allows encoding each slice with a different `StdVideoEncodeH264SliceHeader`::`slice_type`. If not supported, all slices of the frame must be encoded with the same `slice_type` which corresponds to the picture type of the frame. For example, all slices of a P-frame would be encoded as P-slices.

- `VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_EXT` indicates support for using a B frame as L0 reference.

- `VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_EXT` indicates support for using a B frame as L1 reference.

- `VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_EXT` indicates support for specifying different QP values in the members of VkVideoEncodeH264QpEXT.

- `VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_EXT` indicates support for specifying different constant QP values for each slice.

- `VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_EXT` indicates support for generating prefix NALUs by setting VkVideoEncodeH264PictureInfoEXT::`generatePrefixNalu` to `VK_TRUE`.

## See Also

VK_EXT_video_encode_h264, VkVideoEncodeH264CapabilityFlagsEXT

## Document Notes

For more information, see the Vulkan Specification

This page is extracted from the Vulkan Specification. Fixes and changes should be made to the Specification, not directly.

## Copyright

Copyright 2014-2023 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0