C Specification

Bits which may be set in VkVideoEncodeH265CapabilitiesEXT::outputModeFlags, indicating the minimum bitstream generation commands that must be included between each vkCmdBeginVideoCodingKHR and vkCmdEndVideoCodingKHR pair (henceforth simply begin/end pair), are:

// Provided by VK_EXT_video_encode_h265
typedef enum VkVideoEncodeH265OutputModeFlagBitsEXT {
    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT = 0x00000001,
    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT = 0x00000002,
    VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT = 0x00000004,
} VkVideoEncodeH265OutputModeFlagBitsEXT;

Description

  • VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT indicates 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 if VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT is not supported.

  • VK_VIDEO_ENCODE_H265_OUTPUT_MODE_SLICE_SEGMENT_BIT_EXT indicates 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 if VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT is not supported.

  • VK_VIDEO_ENCODE_H265_OUTPUT_MODE_NON_VCL_BIT_EXT indicates that each begin/end pair may encode only a non-VCL NALU by itself. An implementation must support at least one of VK_VIDEO_ENCODE_H265_OUTPUT_MODE_FRAME_BIT_EXT or VK_VIDEO_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

See Also

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 2014-2022 The Khronos Group Inc.

SPDX-License-Identifier: CC-BY-4.0