Class EXTVideoEncodeH264
- java.lang.Object
-
- org.lwjgl.vulkan.EXTVideoEncodeH264
-
public final class EXTVideoEncodeH264 extends java.lang.ObjectThis extension allows applications to compress a raw video sequence by using the H.264/AVC video compression standard.VK_EXT_video_encode_h264
- Name String
VK_EXT_video_encode_h264- Extension Type
- Device extension
- Registered Extension Number
- 39
- Revision
- 5
- Extension and Version Dependencies
- Requires Vulkan 1.0
- Requires
VK_KHR_video_encode_queue - This is a provisional extension and must be used with caution. See the description of provisional header files for enablement and stability details.
- Contact
- Ahmed Abdelkhalek aabdelkh
Other Extension Metadata
- Last Modified Date
- 2022-02-10
- IP Status
- No known IP claims.
- Contributors
- Ahmed Abdelkhalek, AMD
- Daniel Rakos, AMD
- George Hao, AMD
- Jake Beju, AMD
- Peter Fang, AMD
- Ping Liu, Intel
- Srinath Kumarapuram, NVIDIA
- Tony Zlatinski, NVIDIA
- Yang Liu, AMD
-
-
Field Summary
-
-
-
Field Detail
-
VK_EXT_VIDEO_ENCODE_H264_SPEC_VERSION
The extension specification version.
-
VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME
The extension name.
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT
ExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_VCL_FRAME_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_EMIT_PICTURE_PARAMETERS_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H264_REFERENCE_LISTS_EXT
-
VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT
ExtendsVkVideoCodecOperationFlagBitsKHR.
-
VK_VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXT, VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT
VkVideoEncodeH264CapabilityFlagBitsEXT - Video encode H.264 capability flagsDescription
VIDEO_ENCODE_H264_CAPABILITY_DIRECT_8X8_INFERENCE_BIT_EXTreports if enabling direct_8x8_inference_flag in StdVideoH264SpsFlags is supported.VIDEO_ENCODE_H264_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXTreports if enabling separate_colour_plane_flag in StdVideoH264SpsFlags is supported.VIDEO_ENCODE_H264_CAPABILITY_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_BIT_EXTreports if enabling qpprime_y_zero_transform_bypass_flag in StdVideoH264SpsFlags is supported.VIDEO_ENCODE_H264_CAPABILITY_SCALING_LISTS_BIT_EXTreports if enabling seq_scaling_matrix_present_flag in StdVideoH264SpsFlags or pic_scaling_matrix_present_flag in StdVideoH264PpsFlags are supported.VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_EXTreports 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.VIDEO_ENCODE_H264_CAPABILITY_CHROMA_QP_OFFSET_BIT_EXTreports if setting non-zero chroma_qp_index_offset in StdVideoH264PictureParameterSet is supported.VIDEO_ENCODE_H264_CAPABILITY_SECOND_CHROMA_QP_OFFSET_BIT_EXTreports if setting non-zero second_chroma_qp_index_offset in StdVideoH264PictureParameterSet is supported.VIDEO_ENCODE_H264_CAPABILITY_PIC_INIT_QP_MINUS26_BIT_EXTreports if setting non-zero pic_init_qp_minus26 in StdVideoH264PictureParameterSet is supported.VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_BIT_EXTreports if enabling weighted_pred_flag in StdVideoH264PpsFlags is supported.VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_EXPLICIT_BIT_EXTreports if using STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_EXPLICIT from StdVideoH264WeightedBipredIdc is supported.VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_BIPRED_IMPLICIT_BIT_EXTreports if using STD_VIDEO_H264_WEIGHTED_BIPRED_IDC_IMPLICIT from StdVideoH264WeightedBipredIdc is supported.VIDEO_ENCODE_H264_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXTreports 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.VIDEO_ENCODE_H264_CAPABILITY_TRANSFORM_8X8_BIT_EXTreports if enabling transform_8x8_mode_flag in StdVideoH264PpsFlags is supported.VIDEO_ENCODE_H264_CAPABILITY_CABAC_BIT_EXTreports if CABAC entropy coding is supported.VIDEO_ENCODE_H264_CAPABILITY_CAVLC_BIT_EXTreports if CAVLC entropy coding is supported. An implementation must support at least one entropy coding mode.VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_DISABLED_BIT_EXTreports if using STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_DISABLED from StdVideoH264DisableDeblockingFilterIdc is supported.VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_ENABLED_BIT_EXTreports if using STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_ENABLED from StdVideoH264DisableDeblockingFilterIdc is supported.VIDEO_ENCODE_H264_CAPABILITY_DEBLOCKING_FILTER_PARTIAL_BIT_EXTreports if using STD_VIDEO_H264_DISABLE_DEBLOCKING_FILTER_IDC_PARTIAL from StdVideoH264DisableDeblockingFilterIdc is supported. An implementation must support at least one deblocking filter mode.VIDEO_ENCODE_H264_CAPABILITY_DISABLE_DIRECT_SPATIAL_MV_PRED_BIT_EXTreports if disablingStdVideoEncodeH264SliceHeaderFlags::direct_spatial_mv_pred_flag is supported when it is present in the slice header.VIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXTreports if encoding multiple slices per frame is supported. If not set, the implementation is only able to encode a single slice for the entire frame.VIDEO_ENCODE_H264_CAPABILITY_SLICE_MB_COUNT_BIT_EXTreports support for configuringVkVideoEncodeH264NaluSliceEXT::mbCountand first_mb_in_slice in StdVideoEncodeH264SliceHeader for each slice in a frame with multiple slices. If not supported, the implementation decides the number of macroblocks in each slice based onVkVideoEncodeH264VclFrameInfoEXT::naluSliceEntryCount.VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_EXTreports 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).VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXTreports that whenVIDEO_ENCODE_H264_CAPABILITY_MULTIPLE_SLICE_PER_FRAME_BIT_EXTis supported and a frame is encoded with multiple slices, the implementation allows encoding each slice with a differentStdVideoEncodeH264SliceHeader::slice_type. If not supported, all slices of the frame must be encoded with the sameslice_typewhich 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_INPUT_MODE_FRAME_BIT_EXT, VK_VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT, VK_VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXT
VkVideoEncodeH264InputModeFlagBitsEXT - Video encode H.264 input modesDescription
VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXTindicates 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 ifVIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXTis not supported.VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXTindicates 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 ifVIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXTis not supported.VIDEO_ENCODE_H264_INPUT_MODE_NON_VCL_BIT_EXTindicates that a single command buffer may encode a non-VCL NALU by itself.
An implementation must support at least one of
VIDEO_ENCODE_H264_INPUT_MODE_FRAME_BIT_EXTorVIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXT.If
VIDEO_ENCODE_H264_INPUT_MODE_SLICE_BIT_EXTis not supported, the following two additional restrictions apply for frames encoded with multiple slices. First, all frame slices must have the same pRefList0ModOperations and the same pRefList1ModOperations. Second, the order in which slices appear inVkVideoEncodeH264VclFrameInfoEXT::pNaluSliceEntriesor in the command buffer must match the placement order of the slices in the frame.
-
VK_VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXT, VK_VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXT, VK_VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXT
VkVideoEncodeH264OutputModeFlagBitsEXT - Video encode H.264 output modesDescription
VIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXTindicates 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 ifVIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXTis not supported.VIDEO_ENCODE_H264_OUTPUT_MODE_SLICE_BIT_EXTindicates 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 ifVIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXTis not supported.VIDEO_ENCODE_H264_OUTPUT_MODE_NON_VCL_BIT_EXTindicates that each begin/end pair may encode only a non-VCL NALU by itself. An implementation must support at least one ofVIDEO_ENCODE_H264_OUTPUT_MODE_FRAME_BIT_EXTorVIDEO_ENCODE_H264_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.264 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
-
VK_VIDEO_ENCODE_H264_CREATE_DEFAULT_EXT, VK_VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXT
VkVideoEncodeH264CreateFlagBitsEXT - Video encode session creation flagsDescription
VIDEO_ENCODE_H264_CREATE_DEFAULT_EXTis 0, and specifies no additional creation flags.VIDEO_ENCODE_H264_CREATE_RESERVED_0_BIT_EXTThe current version of the specification has reserved this value for future use.
-
VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT, VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT, VK_VIDEO_ENCODE_H264_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT
VkVideoEncodeH264RateControlStructureFlagBitsEXT - Video encode H.264 rate control structure flagsDescription
specifies a dyadic reference structure.
See Also
VkVideoEncodeH264RateControlInfoEXTEnum values:
-
-