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 緩衝區的目前狀態。ReferenceFrames。 pList0ReferenceFrames和pList1ReferenceFrames會列出來自過去/未來參考的索引對應至這個描述元陣列。
這個描述元陣列接著會將此畫面的參考圖片對應至重建的圖片陣列中的資源索引 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 |