Class EXTVideoEncodeH265
- java.lang.Object
-
- org.lwjgl.vulkan.EXTVideoEncodeH265
-
public final class EXTVideoEncodeH265 extends java.lang.ObjectThis extension allows applications to compress a raw video sequence by using the H.265/HEVC video compression standard.VK_EXT_video_encode_h265
- Name String
VK_EXT_video_encode_h265- Extension Type
- Device extension
- Registered Extension Number
- 40
- 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
- George Hao, AMD
- Jake Beju, AMD
- Chunbo Chen, Intel
- Ping Liu, Intel
- Srinath Kumarapuram, NVIDIA
- Tony Zlatinski, NVIDIA
-
-
Field Summary
-
-
-
Field Detail
-
VK_EXT_VIDEO_ENCODE_H265_SPEC_VERSION
The extension specification version.
-
VK_EXT_VIDEO_ENCODE_H265_EXTENSION_NAME
The extension name.
-
VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXT, VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT
ExtendsVkStructureType.Enum values:
STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_VCL_FRAME_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_EMIT_PICTURE_PARAMETERS_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_REFERENCE_LISTS_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_EXTSTRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_EXT
-
VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT
ExtendsVkVideoCodecOperationFlagBitsKHR.
-
VK_VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXT, VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXT
VkVideoEncodeH265CapabilityFlagBitsEXT - Video encode H.265 capability flagsDescription
VIDEO_ENCODE_H265_CAPABILITY_SEPARATE_COLOUR_PLANE_BIT_EXTreports if enabling separate_colour_plane_flag in StdVideoH265SpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_SCALING_LISTS_BIT_EXTreports if enabling scaling_list_enabled_flag and sps_scaling_list_data_present_flag in StdVideoH265SpsFlags, or enabling pps_scaling_list_data_present_flag in StdVideoH265PpsFlags are supproted.VIDEO_ENCODE_H265_CAPABILITY_SAMPLE_ADAPTIVE_OFFSET_ENABLED_BIT_EXTreports if enabling sample_adaptive_offset_enabled_flag in StdVideoH265SpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_PCM_ENABLE_BIT_EXTreports if enabling pcm_enable_flag in StdVideoH265SpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_SPS_TEMPORAL_MVP_ENABLED_BIT_EXTreports if enabling sps_temporal_mvp_enabled_flag in StdVideoH265SpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_EXTreports if the implementation guarantees generating a HRD compliant bitstream if nal_hrd_parameters_present_flag, vcl_hrd_parameters_present_flag, or sub_pic_hrd_params_present_flag are enabled in StdVideoH265HrdFlags, or vui_hrd_parameters_present_flag is enabled in StdVideoH265SpsVuiFlags.VIDEO_ENCODE_H265_CAPABILITY_INIT_QP_MINUS26_BIT_EXTreports if setting non-zero init_qp_minus26 in StdVideoH265PictureParameterSet is supported.VIDEO_ENCODE_H265_CAPABILITY_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_EXTreports if setting non-zero value for log2_parallel_merge_level_minus2 in StdVideoH265PictureParameterSet is supported.VIDEO_ENCODE_H265_CAPABILITY_SIGN_DATA_HIDING_ENABLED_BIT_EXTreports if enabling sign_data_hiding_enabled_flag in StdVideoH265PpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_TRANSFORM_SKIP_ENABLED_BIT_EXTreports if enabling transform_skip_enabled_flag in StdVideoH265PpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_BIT_EXTreports if enabling pps_slice_chroma_qp_offsets_present_flag in StdVideoH265PpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_BIT_EXTreports if enabling weighted_pred_flag in StdVideoH265PpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_BIPRED_BIT_EXTreports if enabling weighted_bipred_flag in StdVideoH265PpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_WEIGHTED_PRED_NO_TABLE_BIT_EXTreports that when weighted_pred_flag or weighted_bipred_flag in StdVideoH265PpsFlags are enabled, the implementation is able to internally decide syntax for pred_weight_table.VIDEO_ENCODE_H265_CAPABILITY_TRANSQUANT_BYPASS_ENABLED_BIT_EXTreports if enabling transquant_bypass_enabled_flag in StdVideoH265PpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_ENTROPY_CODING_SYNC_ENABLED_BIT_EXTreports if enabling entropy_coding_sync_enabled_flag in StdVideoH265PpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_DEBLOCKING_FILTER_OVERRIDE_ENABLED_BIT_EXTreports if enabling deblocking_filter_override_enabled_flag in StdVideoH265PpsFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_FRAME_BIT_EXTreports if encoding multiple tiles per frame is supported. If not set, the implementation is only able to encode a single tile for each frame.VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXTreports if encoding multiple slices per tile is supported. If not set, the implementation is only able to encode a single slice for each tile.VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILE_PER_SLICE_BIT_EXTreports if encoding multiple tiles per slice is supported. If not set, the implementation is only able to encode a single tile for each slice.VIDEO_ENCODE_H265_CAPABILITY_SLICE_SEGMENT_CTB_COUNT_BIT_EXTreports support for configuringVkVideoEncodeH265NaluSliceSegmentEXT::ctbCountand slice_segment_address in StdVideoEncodeH265SliceSegmentHeader for each slice segment in a frame with multiple slice segments. If not supported, the implementation decides the number of CTBs in each slice segment based onVkVideoEncodeH265VclFrameInfoEXT::naluSliceSegmentEntryCount.VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_EXTreports that each slice segment in a frame with a single or multiple tiles per slice may begin or finish at any offset in a CTB row. If not supported, all slice segments in such a frame must begin at the start of a CTB row (and hence each slice segment must finish at the end of a CTB row). Also reports that each slice segment in a frame with multiple slices per tile may begin or finish at any offset within the enclosing tile’s CTB row. If not supported, slice segments in such a frame must begin at the start of the enclosing tile’s CTB row (and hence each slice segment must finish at the end of the enclosing tile’s CTB row).VIDEO_ENCODE_H265_CAPABILITY_DEPENDENT_SLICE_SEGMENT_BIT_EXTreports if enabling dependent_slice_segment_flag in StdVideoEncodeH265SliceHeaderFlags is supported.VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_EXTreports that whenVIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_PER_TILE_BIT_EXTis supported and a frame is encoded with multiple slices, the implementation allows encoding each slice segment with a differentStdVideoEncodeH265SliceSegmentHeader::slice_type. If not supported, all slice segments of the frame must be encoded with the sameslice_typewhich corresponds to the picture type of the frame. For example, all slice segments of a P-frame would be encoded as P-slices.
-
VK_VIDEO_ENCODE_H265_INPUT_MODE_FRAME_BIT_EXT, VK_VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT, VK_VIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXT
VkVideoEncodeH265InputModeFlagBitsEXT - Video encode H.265 input modesDescription
VIDEO_ENCODE_H265_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_H265_INPUT_MODE_NON_VCL_BIT_EXTis not supported.VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXTindicates that a single command buffer must at least encode a single slice segment. Any non-VCL NALUs must be encoded using the same command buffer as the first slice segment of the frame ifVIDEO_ENCODE_H265_INPUT_MODE_NON_VCL_BIT_EXTis not supported.VIDEO_ENCODE_H265_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_H265_INPUT_MODE_FRAME_BIT_EXTorVIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXT.If
VIDEO_ENCODE_H265_INPUT_MODE_SLICE_SEGMENT_BIT_EXTis not supported, the following two additional restrictions apply for frames encoded with multiple slice segments. First, all frame slice segments must have the same pReferenceFinalLists. Second, the order in which slice segments appear inVkVideoEncodeH265VclFrameInfoEXT::pNaluSliceSegmentEntriesor in the command buffer must match the placement order of the slice segments in the frame.
-
VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT, VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT, VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT
VkVideoEncodeH265OutputModeFlagBitsEXT - Video encode H.265 output modesDescription
VIDEO_ENCODE_H265_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_H265_OUTPUT_MODE_NON_VCL_BIT_EXTis not supported.VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXTindicates that each begin/end pair must encode at least one slice segment. Any non-VCL NALUs must be encoded within the same begin/end pair as the first slice segment of the frame ifVIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXTis not supported.VIDEO_ENCODE_H265_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_H265_OUTPUT_MODE_FRAME_BIT_EXTorVIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_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.265 standard).
The supported input modes must be coarser or equal to the supported output modes. For example, it is illegal to report slice segment 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 Segment
- Input: Frame, Output: Slice Segment and Non-VCL
- Input: Slice Segment, Output: Slice Segment
- Input: Slice Segment, Output: Slice Segment and Non-VCL
- Input: Frame and Non-VCL, Output: Frame and Non-VCL
- Input: Frame and Non-VCL, Output: Slice Segment and Non-VCL
- Input: Slice Segment and Non-VCL, Output: Slice Segment and Non-VCL
-
VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXT, VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXT, VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXT
VkVideoEncodeH265CtbSizeFlagBitsEXT - Supported CTB sizes for H.265 video encodeDescription
VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_EXTspecifies that a CTB size of 16x16 is supported.VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_EXTspecifies that a CTB size of 32x32 is supported.VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_EXTspecifies that a CTB size of 64x64 is supported.
-
VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXT, VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXT, VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXT, VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXT
VkVideoEncodeH265TransformBlockSizeFlagBitsEXT - Supported transform block sizes for H.265 video encodeDescription
VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_EXTspecifies that a transform block size of 4x4 is supported.VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_EXTspecifies that a transform block size of 8x8 is supported.VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_EXTspecifies that a transform block size of 16x16 is supported.VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_EXTspecifies that a transform block size of 32x32 is supported.
-
VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXT, VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXT, VK_VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXT
VkVideoEncodeH265RateControlStructureFlagBitsEXT - Video encode H.265 rate control structure flagsDescription
VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_UNKNOWN_EXTis 0, and specifies a reference structure unknown at the time of stream rate control configuration.VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_FLAT_BIT_EXTspecifies a flat reference structure.VIDEO_ENCODE_H265_RATE_CONTROL_STRUCTURE_DYADIC_BIT_EXTspecifies a dyadic reference structure.
See Also
-
-