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. pList0ReferenceFrames 및 pList1ReferenceFrames는 과거/미래 참조에서 이 설명자 배열로 인덱스 맵을 나열합니다.
이 설명자 배열은 이 프레임에 대한 참조 그림을 재구성된 그림 배열 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 |