다음을 통해 공유


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

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

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

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입니다.

List0RefPicModificationsCount

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

pList0RefPicModifications

L0 목록에 대한 수정 명령이 포함된 UINT 배열에 대한 포인터입니다.

List1RefPicModificationsCount

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

pList1RefPicModifications

L1 목록에 대한 수정 명령이 포함된 UINT 배열에 대한 포인터입니다.

QPMapValuesCount

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

pRateControlQPMap

이 프레임의 각 제곱 영역에 사용할 QP 맵 값을 행/열 스캔 순서로 포함하는 Int8 배열에 대한 포인터입니다. QP 맵 차원은 현재 해상도 및 D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS 사용하여 계산할 수 있습니다 . 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 비디오 매개 변수 집합 예상 값

구문 요소 예상 기본값 참고
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비트 0 없음
general_level_idc 위의 표를 참조하세요. 없음
vps_sub_layer_ordering_info_present_flag 0 없음
vps_max_dec_pic_buffering_minus1[0] (MaxReferenceFramesInDPB/이전 참조 프레임/ + 1 /추가 현재 프레임 recon pic/) - 헤더의 경우 1/*minus1/; 없음
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 시퀀스 매개 변수 집합 예상 값

구문 요소 예상 기본값 참고
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비트 0 없음
general_level_idc 위의 표를 참조하세요. 없음
chroma_format_idc 1 NV12 및 P010의 경우 4.2.0
pic_width_in_luma_samples std::ceil(sequenceTargetResolution.Width / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS 현재 프레임 해상도를 사용합니다. SubregionBlockPixelsSize
pic_height_in_luma_samples std::ceil(sequenceTargetResolution.Height / SubregionBlockPixelsSize)) * SubregionBlockPixelsSize D3D12_FEATURE_DATA_VIDEO_ENCODER_RESOLUTION_SUPPORT_LIMITS 현재 프레임 해상도를 사용합니다. SubregionBlockPixelsSize
conformance_window_flag 해상도가 SubregionBlockPixelsSize에 맞으면 0이고, 그렇지 않으면 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 NV12의 경우 0, P010의 경우 2 없음
bit_depth_luma_minus8 NV12의 경우 0, 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) 예를 들어 minCUSize=8 for D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_8x8
log2_diff_max_min_luma_coding_block_size std::log2(maxCuSize) - std::log2(minCuSize)) 예를 들어 maxCUSize=16 for D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE_16x16
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)) 예를 들어 maxTuSize=16 for D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE_16x16
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 그림 매개 변수 집합 예상 값

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