다음을 통해 공유


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

PPS를 참조하기 위해 현재 프레임의 조각 헤더에 사용할 값을 지정하는 UINT 입니다.

idr_pic_id

FrameType**이 D3D12_VIDEO_ENCODER_FRAME_TYPE_H264_IDR_FRAME 경우 프레임에 있는 모든 조각 헤더에 사용할 IDR 프레임의 식별자를 나타내는 UINT입니다.

PictureOrderCountNumber

현재 프레임 표시 순서를 지정하는 UINT 입니다.

FrameDecodingOrderNumber

각 참조 그림 다음에 증가되는 구문 요소 frame_num 조각 머리글에 표시된 대로 의미 체계를 사용하여 프레임 디코딩 순서를 지정하는 UINT 입니다.

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

D3D12_VIDEO_ENCODER_PICTURE_CONTROL_DESC 유지되는 DPB 버퍼의 현재 상태를 설명하는 UINT 배열에 대한 포인터입니다. ReferenceFrames. pList0ReferenceFramespList1ReferenceFrames는 과거/미래 참조에서 이 설명자 배열로 인덱스 맵을 나열합니다.

이 설명자 배열은 이 프레임에 대한 참조 그림을 재구성된 그림 배열 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

pList0RefPicModifications의 항목 수를 지정하는 UINT입니다.

pList0RefPicModifications

pList0ReferenceFrames 목록에 대한 참조 그림 목록 수정 작업 목록을 나타내는 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION 구조체 배열에 대한 포인터입니다.

List1RefPicModificationsCount

pList1RefPicModifications의 항목 수를 지정하는 UINT입니다.

pList1RefPicModifications

pList1ReferenceFrames 목록에 대한 참조 그림 목록 수정 작업 목록을 나타내는 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION 구조체 배열에 대한 포인터입니다.

QPMapValuesCount

pRateControlQPMap에 있는 요소 수를 지정하는 UINT입니다. 프레임 해상도를 가장 가까운 정렬 값으로 반올림하여 프레임의 코딩 블록 수와 일치해야 합니다.

pRateControlQPMap

이 프레임의 각 제곱 영역에 사용할 QP 맵 값을 행/열 스캔 순서로 포함하는 Int8 배열에 대한 포인터입니다. QP 맵 차원은 현재 해상도 및 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS 사용하여 계산할 수 있습니다 . QPMapRegionPixelsSize 제곱 지역 크기를 전달합니다.

설명

현재 프레임이 참조 그림으로 표시된 경우 재구성된 그림 참조 목록의 이후 명령에 배치하려면 호스트의 비트스트림과 함께 재구성된 그림이 출력에 포함되어야 합니다. 이러한 값을 설정하기 전에 일부 프레임 형식을 참조로 표시하고 기능 지원을 검사 제한 사항이 있을 수 있습니다.

다음 표에는 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 시퀀스 매개 변수 집합 예상 값

구문 요소 예상 기본값 참고
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 NV12의 경우 0, P010의 경우 2 없음
qpprime_y_zero_transform_bypass_flag 0 없음
seq_scaling_matrix_present_flag 0 없음
log2_max_frame_num_minus4 Same as in D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 없음
pic_order_cnt_type Same as in D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_H264 이 API에서 지원되는 모드 0 및 2만
log2_max_pic_order_cnt_lsb_minus4 Same as in 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 그림 매개 변수 집합 예상 값

구문 요소 예상 기본값 참고
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