共用方式為


D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC 結構 (d3d12video.h)

表示 HEVC 編碼之相關聯 EncodeFrame 命令的圖片層級控制項專案。

語法

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC {
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
  D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC                       FrameType;
  UINT                                                      slice_pic_parameter_set_id;
  UINT                                                      PictureOrderCountNumber;
  UINT                                                      TemporalLayerIndex;
  UINT                                                      List0ReferenceFramesCount;
  UINT                                                      *pList0ReferenceFrames;
  UINT                                                      List1ReferenceFramesCount;
  UINT                                                      *pList1ReferenceFrames;
  UINT                                                      ReferenceFramesReconPictureDescriptorsCount;
  D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC     *pReferenceFramesReconPictureDescriptors;
  UINT                                                      List0RefPicModificationsCount;
  UINT                                                      *pList0RefPicModifications;
  UINT                                                      List1RefPicModificationsCount;
  UINT                                                      *pList1RefPicModifications;
  UINT                                                      QPMapValuesCount;
  INT8                                                      *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC;

成員

Flags

D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS 列舉中 值的位元組 OR 組合,指定所編碼框架的組態旗標。

FrameType

指定圖片類型的 D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC 列舉值。 請確定編解碼器特定的旗標支援指定的類型。 此選取專案必須與主機所設定的 GOP 結構組態保持同步。 請注意,GOP 是以顯示順序定義,而且此圖片類型選取專案必須遵循 GOP,但以編碼順序定義。

slice_pic_parameter_set_id

UINT,指定要在目前框架的配量標頭中使用的值,以參考 PPS。

PictureOrderCountNumber

指定目前框架顯示順序的 UINT

TemporalLayerIndex

指定時態階層中圖片圖層編號的 UINT 。 檢查 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC中的圖層數目上限。

List0ReferenceFramesCount

UINT,指定要用於此框架的過去框架參考數目。 此值應該與 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC中公開的內容一致。

pList0ReferenceFrames

UINT陣列的指標,指定要用於此框架的過去框架參考框架清單。 此陣列中的每個整數值都會索引到 pReferenceFramesReconPictureDescriptors ,以參考 DPB 中保留的圖片。

List1ReferenceFramesCount

UINT,指定要用於此框架的未來框架參考數目。 此值應該與 D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC中公開的內容一致。

pList1ReferenceFrames

UINT陣列的指標,指定要用於此框架的未來框架參考框架清單。 此陣列中的每個整數值都會索引到 pReferenceFramesReconPictureDescriptors ,以參考 DPB 中保留的圖片。

ReferenceFramesReconPictureDescriptorsCount

指定pReferenceFramesReconPictureDescriptors中專案數目的UINT

pReferenceFramesReconPictureDescriptors

UINT陣列的指標,描述保留在D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC中 DPB 緩衝區的目前狀態。ReferenceFramespList0ReferenceFramespList1ReferenceFrames會列出來自過去/未來參考的索引對應至這個描述元陣列。

這個描述元陣列接著會將此畫面的參考圖片對應至重建的圖片陣列中的資源索引 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC。ReferenceFrames。 此外,針對每個參考圖片,它會指出編碼和顯示順序編號,以及它是否為長期參考。

此陣列的大小一律符合D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC。相關聯 EncodeFrame 命令的 ReferenceFrames.NumTextures

List0RefPicModificationsCount

UINT,指定pList0RefPicModifications中的專案數。

pList0RefPicModifications

UINT陣列的指標,其中包含 L0 清單的修改命令。

List1RefPicModificationsCount

UINT,指定pList1RefPicModifications中的專案數。

pList1RefPicModifications

UINT陣列的指標,其中包含 L1 清單的修改命令。

QPMapValuesCount

UINT,指定pRateControlQPMap中存在的元素數目。 這應該符合框架中的編碼區塊數目,將畫面解析度四捨五入到最接近對齊的值。

pRateControlQPMap

Int8陣列的指標,其中包含此框架的每個平方區域所要使用的 QP 對應值,以資料列/資料行掃描順序表示。 您可以使用目前的解析度和D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS來計算 QP 地圖維度 。QPMapRegionPixelsSize 會傳達平方區域大小。

備註

下表列出 HEVC 編碼的預期 VPS、SPS 和 PPS 值。

HEVC 的Level_idc對應

D3D12 層級 預期general_level_idc 備註
D3D12_VIDEO_ENCODER_LEVELS_HEVC_1 30 對應至 3 * 列舉層級 2 位數尾碼 (10)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_2 60 對應至 3 * 列舉層級 2 位數尾碼 (20)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_21 63 對應至 3 * 列舉層級 2 位數尾碼 (21)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_3 90 對應至 3 * 列舉層級 2 位數尾碼 (30)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_31 93 對應至 3 * 列舉層級 2 位數尾碼 (31)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_4 1 20 對應至 3 * 列舉層級 2 位數尾碼 (40)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_41 1 23 對應至 3 * 列舉層級 2 位數尾碼 (41)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_5 1 50 對應至 3 * 列舉層級 2 位數尾碼 (50)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_51 1 53 對應至 3 * 列舉層級 2 位數尾碼 (51)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_52 1 56 對應至 3 * 列舉層級 2 位數尾碼 (52)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_6 1 80 對應至 3 * 列舉層級 2 位數尾碼 (60)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_61 1 83 對應至 3 * 列舉層級 2 位數尾碼 (61)
D3D12_VIDEO_ENCODER_LEVELS_HEVC_62 1 86 對應至 3 * 列舉層級 2 位數尾碼 (62)

HEVC 影片參數設定預期值

Syntax 元素 預期的預設值 備註
vps_video_parameter_set_id 使用者特定
vps_base_layer_internal_flag 0
vps_base_layer_available_flag 0
vps_max_layers_minus1 0
vps_max_sub_layers_minus1 0
vps_temporal_id_nesting_flag 1
vps_reserved_ffff_16bits 0xFFFF
general_profile_space 0
general_tier_flag 高層 1,主要層則為 0
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC列舉值 + 1
general_profile_compatibility_flag[general_profile_space] 1
general_progressive_source_flag 1
general_interlaced_source_flag 0
general_non_packed_constraint_flag 1
general_frame_only_constraint_flag 1
general_reserved_zero_44bits 44 位零
general_level_idc 請參閱上表
vps_sub_layer_ordering_info_present_flag 0
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/先前的參考框架/ + 1 /其他目前的框架偵察圖片/) - 1/*減 1 用於標頭/;
vps_max_num_reorder_pics[0] 如果沒有 B 框架,則為 0。 否則vps_max_dec_pic_buffering_minus1。
vps_max_latency_increase_plus1[0] 1
vps_max_layer_id 0
vps_num_layer_sets_minus1 0
vps_timing_info_present_flag 0
vps_extension_flag 0

HEVC 時序參數集預期值

Syntax 元素 預期的預設值 備註
sps_video_parameter_set_id 使用者特定
sps_max_sub_layers_minus1 與相關聯的 VPS 相同
sps_temporal_id_nesting_flag 與相關聯的 VPS 相同
general_profile_space 0
general_tier_flag 高層 1,主要層則為 0
general_profile_idc D3D12_VIDEO_ENCODER_PROFILE_HEVC列舉值 + 1
general_profile_compatibility_flag[general_profile_space] 1
general_progressive_source_flag 1
general_interlaced_source_flag 0
general_non_packed_constraint_flag 1
general_frame_only_constraint_flag 1
general_reserved_zero_44bits 44 位零
general_level_idc 請參閱上表
chroma_format_idc 1 適用于 NV12 和 P010 的 4.2.0
pic_width_in_luma_samples std::ceil (sequenceTargetResolution.Width / ResellerBlockPixelsSize) ) * 一般BlockPixelsSize 針對D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS使用目前的畫面解析度。一個子區塊PixelsSize
pic_height_in_luma_samples std::ceil (sequenceTargetResolution.Height / ResellerBlockPixelsSize) ) * 一般BlockPixelsSize 針對D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS使用目前的畫面解析度。一個子區塊PixelsSize
conformance_window_flag 0 如果解析度對齊一致于一起,則為 1,否則為 1
conf_win_left_offset 0 只有在conformance_windows_flag = 1 時
conf_win_right_offset (sps.pic_width_in_luma_samples - encodeResolution.Width) >> 1 只有在conformance_windows_flag = 1 時
conf_win_top_offset 0 只有在conformance_windows_flag = 1 時
conf_win_bottom_offset (sps.pic_height_in_luma_samples - encodeResolution.Height) >> 1 只有在conformance_windows_flag = 1 時
bit_depth_luma_minus8 0 用於 NV12,P010 則為 2
bit_depth_luma_minus8 0 用於 NV12,P010 則為 2
log2_max_pic_order_cnt_lsb_minus4 根據D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_HEVC
sps_sub_layer_ordering_info_present_flag 與相關聯的 VPS 相同
sps_max_dec_pic_buffering_minus1 與相關聯的 VPS 相同
sps_max_num_reorder_pics 與相關聯的 VPS 相同
sps_max_latency_increase_plus1 與相關聯的 VPS 相同
log2_min_luma_coding_block_size_minus3 std::log2 (minCuSize) - 3) 例如,D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8的 MinCUSize=8
log2_diff_max_min_luma_coding_block_size std::log2 (maxCuSize) - std::log2 (minCuSize) ) 例如,D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16的 MaxCUSize=16
log2_min_transform_block_size_minus2 std::log2 (minTuSize) - 2) 例如 MinTuSize=4 for D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_4x4
log2_diff_max_min_transform_block_size std::log2 (maxTuSize) - std::log2 (minTuSize) ) 例如,D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16的 MaxTuSize=16
max_transform_hierarchy_depth_inter 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
max_transform_hierarchy_depth_inter 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC
scaling_list_enabled_flag 0
amp_enabled_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_ASYMETRIC_MOTION_PARTITION
sample_adaptive_offset_enabled_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_SAO_FILTER
pcm_enabled_flag 0
num_short_term_ref_pic_sets 0
long_term_ref_pics_present_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_LONG_TERM_REFERENCES
num_long_term_ref_pics_sps 0
sps_temporal_mvp_enabled_flag 0
strong_intra_smoothing_enabled_flag 0
vui_parameters_present_flag 0
sps_extension_flag 0

HEVC 圖片參數設定預期值

Syntax 元素 預期的預設值 備註
pps_pic_parameter_set_id 使用者特定
pps_seq_parameter_set_id 使用者特定
dependent_slice_segments_enabled_flag 0
output_flag_present_flag 0
num_extra_slice_header_bits 0
sign_data_hiding_enabled_flag 0
cabac_init_present_flag 1
num_ref_idx_lx_default_active_minus1[0] std::max (static_cast < INT > (pictureControl.List0ReferenceFramesCount) - 1, 0) )
num_ref_idx_lx_default_active_minus1[1] std::max (static_cast < INT > (pictureControl.List1ReferenceFramesCount) - 1, 0) )
init_qp_minus26 0
constrained_intra_pred_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_USE_CONSTRAINED_INTRAPREDICTION
transform_skip_enabled_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_ENABLE_TRANSFORM_SKIPPING
cu_qp_delta_enabled_flag 1
diff_cu_qp_delta_depth 0
pps_cb_qp_offset 0
pps_cr_qp_offset 0
pps_slice_chroma_qp_offsets_present_flag 1
weighted_pred_flag 0 不支援 API 中的加權預測
weighted_bipred_flag 0 不支援 API 中的加權預測
transquant_bypass_enabled_flag 0
tiles_enabled_flag 0
entropy_coding_sync_enabled_flag 0
pps_loop_filter_across_slices_enabled_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_FLAG_DISABLE_LOOP_FILTER_ACROSS_SLICES
deblocking_filter_control_present_flag 1
deblocking_filter_override_enabled_flag 0
pps_deblocking_filter_disabled_flag 0
pps_Beta_offset_div2 0
pps_tc_offset_div2 0
pps_scaling_list_data_present_flag 0
lists_modification_present_flag 如果關閉D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC清單修改,則為 1。 否則,請將 設定為 0。
log2_parallel_merge_level_minus2 0
slice_segment_header_extension_present_flag 0
pps_extension_flag 0

需求

   
最低支援的用戶端 Windows 組建 22000
最低支援的伺服器 Windows 組建 22000
標頭 d3d12video.h