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