Enum
VkVideoEncodeH264CapabilityFlagBitsKHR
H.264 encode capability flags
Bits which may be set in
VkVideoEncodeH264CapabilitiesKHR::flags, indicating the H.264
encoding capabilities supported, are:
typedef enum VkVideoEncodeH264CapabilityFlagBitsKHR {
VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 0x00000001,
VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 0x00000002,
VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 0x00000004,
VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 0x00000008,
VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 0x00000010,
VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 0x00000020,
VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 0x00000040,
VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 0x00000080,
VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 0x00000100,
} VkVideoEncodeH264CapabilityFlagBitsKHR;
pub struct VideoEncodeH264CapabilityFlagBitsKHR(u32);
impl VideoEncodeH264CapabilityFlagBitsKHR {
pub const HRD_COMPLIANCE: Self = 0x00000001;
pub const PREDICTION_WEIGHT_TABLE_GENERATED: Self = 0x00000002;
pub const ROW_UNALIGNED_SLICE: Self = 0x00000004;
pub const DIFFERENT_SLICE_TYPE: Self = 0x00000008;
pub const B_FRAME_IN_L0_LIST: Self = 0x00000010;
pub const B_FRAME_IN_L1_LIST: Self = 0x00000020;
pub const PER_PICTURE_TYPE_MIN_MAX_QP: Self = 0x00000040;
pub const PER_SLICE_CONSTANT_QP: Self = 0x00000080;
pub const GENERATE_PREFIX_NALU: Self = 0x00000100;
}
VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHRspecifies whether the implementation may be able to generate HRD compliant bitstreams if any of thenal_hrd_parameters_present_flagorvcl_hrd_parameters_present_flagmembers ofStdVideoH264SpsVuiFlagsare set to1in the active SPS.VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHRspecifies that ifStdVideoH264PpsFlags::weighted_pred_flagis set to1orStdVideoH264PictureParameterSet::weighted_bipred_idcis set toSTD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICITin the active PPS when encoding a P picture or B picture, respectively, then the implementation is able to internally decide syntax forpred_weight_table, as defined in section 7.4.3.2 of the ITU-T H.264 Specification, and the application is not required to provide a weight table in the H.264 slice header parameters.VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHRspecifies 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). When a picture is encoded with intra refresh, encoding non-rectangular slices also requires: support for the VkVideoEncodeIntraRefreshCapabilitiesKHR::nonRectangularIntraRefreshRegionscapability.VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHRspecifies that when a frame is encoded with multiple slices, the implementation allows encoding each slice with a differentStdVideoEncodeH264SliceHeader::slice_typespecified in the H.264 slice header parameters. If not supported, all slices of the frame must be encoded with the sameslice_typewhich corresponds to the picture type of the frame. There is one exception to this rule: if the picture is encoded with the intra refresh modeVK_VIDEO_ENCODE_INTRA_REFRESH_MODE_PER_PICTURE_PARTITION_BIT_KHR, then the currently refreshed slice must specify theslice_typeSTD_VIDEO_H264_SLICE_TYPE_Iand can differ from theslice_typeof the other slices regardless of whetherVK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHRis supported.VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHRspecifies support for using a B frame as L0 reference, as specified inStdVideoEncodeH264ReferenceListsInfo::RefPicList0in the H.264 picture information.VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHRspecifies support for using a B frame as L1 reference, as specified inStdVideoEncodeH264ReferenceListsInfo::RefPicList1in the H.264 picture information.VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHRspecifies support for specifying different QP values in the members of VkVideoEncodeH264QpKHR.VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHRspecifies support for specifying different constant QP values for each slice.VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHRspecifies support for generating prefix NAL units by setting VkVideoEncodeH264PictureInfoKHR::generatePrefixNalutoVK_TRUE.VK_VIDEO_ENCODE_H264_CAPABILITY_MB_QP_DIFF_WRAPAROUND_BIT_KHRindicates support for wraparound during the calculation of the QP values of subsequently encoded macroblocks, as defined in equation 7-37 of the ITU-T H.264 Specification. If not supported, equation 7-37 of the ITU-T H.264 Specification is effectively reduced to the following:
QPY = QPY,PREV +mb_qp_deltaThe effect of this is that the maximum QP difference across subsequent macroblocks is limited to the [-(26 + QpBdOffsetY / 2), 25 + QpBdOffsetY / 2] range.VK_VIDEO_ENCODE_H264_CAPABILITY_B_PICTURE_INTRA_REFRESH_BIT_KHRindicates support for encoding B pictures with intra refresh enabled.
Parent
VK_KHR_video_encode_h264Type
Enum