共用方式為


D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 結構 (d3d12video.h)

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

語法

typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS                                         Flags;
  D3D12_VIDEO_ENCODER_FRAME_TYPE_H264                                                               FrameType;
  UINT                                                                                              pic_parameter_set_id;
  UINT                                                                                              idr_pic_id;
  UINT                                                                                              PictureOrderCountNumber;
  UINT                                                                                              FrameDecodingOrderNumber;
  UINT                                                                                              TemporalLayerIndex;
  UINT                                                                                              List0ReferenceFramesCount;
  UINT                                                                                              *pList0ReferenceFrames;
  UINT                                                                                              List1ReferenceFramesCount;
  UINT                                                                                              *pList1ReferenceFrames;
  UINT                                                                                              ReferenceFramesReconPictureDescriptorsCount;
  D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264                                             *pReferenceFramesReconPictureDescriptors;
  UCHAR                                                                                             adaptive_ref_pic_marking_mode_flag;
  UINT                                                                                              RefPicMarkingOperationsCommandsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION           *pRefPicMarkingOperationsCommands;
  UINT                                                                                              List0RefPicModificationsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList0RefPicModifications;
  UINT                                                                                              List1RefPicModificationsCount;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION *pList1RefPicModifications;
  UINT                                                                                              QPMapValuesCount;
  INT8                                                                                              *pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;

成員

Flags

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

FrameType

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

pic_parameter_set_id

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

idr_pic_id

FrameType** D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME時, UINT 會指出要用於框架中所有配量標頭中之所有配量標頭的識別碼。

PictureOrderCountNumber

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

FrameDecodingOrderNumber

UINT,以語意指定框架解碼順序,如配量標頭所指示,frame_num每個參考圖片之後遞增的語法元素。

TemporalLayerIndex

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

List0ReferenceFramesCount

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

pList0ReferenceFrames

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

List1ReferenceFramesCount

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

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

adaptive_ref_pic_marking_mode_flag

定義框架參考處理的語意模式的 UCHAR

adaptive_ref_pic_marking_mode_flag值 指定的參考圖片標記模式
0 1
滑動視窗參考圖片標記模式:標記模式,提供短期參考圖片的先進先出機制。 自適性參考圖片標記模式:提供語法元素的參考圖片標記模式,可指定參考圖片標示為「未使用供參考」,並指派長期框架索引。

RefPicMarkingOperationsCommandsCount

UINT,指定與目前框架相關聯的參考圖片標記作業數目。 要求 adaptive_ref_pic_marking_mode_flag 設為 1。

pRefPicMarkingOperationsCommands

D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION 結構的陣列 指標,代表與目前框架相關聯的參考圖片標記作業清單。 此清單所描述的作業必須在編碼會話期間,反映在 DPB 描述元中。

List0RefPicModificationsCount

UINT,指定pList0RefPicModifications中的專案數。

pList0RefPicModifications

D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION 結構的陣列 指標,代表 pList0ReferenceFrames 清單的參考圖片清單修改作業清單清單。

List1RefPicModificationsCount

UINT,指定pList1RefPicModifications中的專案數。

pList1RefPicModifications

D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION 結構的陣列 指標,代表 pList1ReferenceFrames 清單的參考圖片清單修改作業清單清單。

QPMapValuesCount

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

pRateControlQPMap

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

備註

請注意,如果目前的框架標示為參照圖片,輸出必須包含重建的圖片以及主機的 bitstream,才能將它放在重建的圖片參考清單中的未來命令中。 請注意,某些框架類型可能會有標示為參考的限制,請在設定這些值之前先檢查功能支援。

下表列出 H264 編碼的預期 SPS 和 PPS 值。

H264 的Level_idc對應

D3D12 層級 預期level_idc 備註
D3D12_VIDEO_ENCODER_LEVELS_H264_1 10
D3D12_VIDEO_ENCODER_LEVELS_H264_1b 11 SPS.constraint_set3必須是 1
D3D12_VIDEO_ENCODER_LEVELS_H264_11 11
D3D12_VIDEO_ENCODER_LEVELS_H264_12 12
D3D12_VIDEO_ENCODER_LEVELS_H264_13 13
D3D12_VIDEO_ENCODER_LEVELS_H264_2 20
D3D12_VIDEO_ENCODER_LEVELS_H264_21 21
D3D12_VIDEO_ENCODER_LEVELS_H264_22 22
D3D12_VIDEO_ENCODER_LEVELS_H264_3 30
D3D12_VIDEO_ENCODER_LEVELS_H264_31 31
D3D12_VIDEO_ENCODER_LEVELS_H264_32 32
D3D12_VIDEO_ENCODER_LEVELS_H264_4 40
D3D12_VIDEO_ENCODER_LEVELS_H264_41 41
D3D12_VIDEO_ENCODER_LEVELS_H264_42 42
D3D12_VIDEO_ENCODER_LEVELS_H264_5 50
D3D12_VIDEO_ENCODER_LEVELS_H264_51 51
D3D12_VIDEO_ENCODER_LEVELS_H264_52 52
D3D12_VIDEO_ENCODER_LEVELS_H264_6 60
D3D12_VIDEO_ENCODER_LEVELS_H264_61 61
D3D12_VIDEO_ENCODER_LEVELS_H264_62 62

H264 時序參數集預期值

Syntax 元素 預期的預設值 備註
profile_idc H264_PROFILE_MAIN/H264_PROFILE_HIGH/H264_PROFILE_HIGH10 的列舉值
constraint_set0_flag 0
constraint_set1_flag 0
constraint_set2_flag 0
constraint_set3_flag 0 如果使用 D3D12_VIDEO_ENCODER_LEVELS_H264_1b,則為 1
constraint_set4_flag 0
constraint_set5_flag 0
reserved_zero_2bits 0
level_idc 如需 H264 層級,請參閱上表
seq_parameter_set_id 使用者特定
chroma_format_idc 1 僅適用于 P010 或 NV12 YUV 4.2.0 格式
bit_depth_luma_minus8 0 用於 NV12,P010 則為 2
qpprime_y_zero_transform_bypass_flag 0
seq_scaling_matrix_present_flag 0
log2_max_frame_num_minus4 與 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 相同
pic_order_cnt_type 與 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 相同 此 API 僅支援模式 0 和 2
log2_max_pic_order_cnt_lsb_minus4 與 D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 相同 只有當 pic_order_cnt_type == 0 時
max_num_ref_frames 編碼會話中使用的參考圖片數目上限
gaps_in_frame_num_value_allowed_flag 0
pic_width_in_mbs_minus1 std::ceil (sequenceTargetResolution.Width / 16.0) ) - 1;
pic_height_in_map_units_minus1 std::ceil (sequenceTargetResolution.Height / 16.0) ) - 1;
frame_mbs_only_flag 0 無交錯支援
direct_8x8_inference_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM
frame_cropping_flag 0 或 1,視編碼解析度為 16 對齊或不對齊而定
frame_cropping_rect_left_offset 0 只有在frame_cropping_flag = 1 時
frame_cropping_rect_right_offset ( (pic_width_in_mbs_minus1+1) * 16 - sequenceTargetResolution.Width) / 2 只有在frame_cropping_flag = 1 時
frame_cropping_rect_top_offset ( (pic_height_in_map_units_minus1+1) * 16 - sequenceTargetResolution.Height) / 2 只有在frame_cropping_flag = 1 時
frame_cropping_rect_bottom_offset 0 只有在frame_cropping_flag = 1 時
vui_paramenters_present_flag 0

H264 圖片參數集預期值

Syntax 元素 預期的預設值 備註
pic_parameter_set_id 使用者特定
seq_parameter_set_id 使用者特定
entropy_coding_mode_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_ENABLE_CABAC_ENCODING
pic_order_present_flag 0 僅支援 pic_cnt_type = 0,2
num_slice_groups_minus1 0
num_ref_idx_l1_active_minus1 std::max (static_cast < INT > (pictureControl.List0ReferenceFramesCount) - 1, 0)
num_ref_idx_l0_active_minus1 std::max (static_cast < INT > (pictureControl.List1ReferenceFramesCount) - 1, 0)
weighted_pred_flag 0
weighted_bipred_idc 0
pic_init_qp_minus26 0
pic_init_qs_minus26 0
chroma_qp_index_offset 0
deblocking_filter_control_present_flag 1
constrained_intra_pred_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_CONSTRAINED_INTRAPREDICTION
redundant_pic_cnt_present_flag 0
transform_8x8_mode_flag 根據D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_H264_FLAG_USE_ADAPTIVE_8x8_TRANSFORM 只有在使用高設定檔時
pic_scaling_matrix_present_flag 0
second_chroma_qp_index_offset 0

需求

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