D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 구조체(d3d12umddi.h)

D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 구조에는 비디오 인코딩 작업의 입력에 대한 시퀀스 수준 매개 변수가 포함되어 있습니다.

구문

typedef struct D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0 {
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0                 Flags;
  D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080                            IntraRefreshConfig;
  D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2                           RateControl;
  D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080                  PictureTargetResolution;
  D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080              SelectedLayoutMode;
  D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 FrameSubregionsLayoutData;
  D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0                 CodecGopSequence;
} D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC_0082_0;

멤버

Flags

현재 인코딩 프레임 작업에 대한 시퀀스 컨트롤 설명자 플래그를 나타내는 D3D12DDI_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS_0082_0 값입니다.

IntraRefreshConfig

새로 고침 내 세션을 트리거할 때 사용해야 하는 새로 고침 내 모드에 대한 매개 변수를 지정하는 D3D12DDI_VIDEO_ENCODER_INTRA_REFRESH_0080 구조체입니다. 프레시 내 사용에 대한 자세한 내용은 설명을 참조하세요.

RateControl

속도 제어 구성을 지정하는 D3D12DDI_VIDEO_ENCODER_RATE_CONTROL_0080_2 구조체입니다.

D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RATE_CONTROL_RECONFIGURATION_AVAILABLE 플래그를 확인하여 속도 제어의 동적 재구성이 지원되는지 확인합니다.

  • 지원되는 경우 수정된 RateControl 을 사용하면 연결된 EncodeFrame 명령의 실행부터 시작하는 새 구성으로 속도 제어 알고리즘이 다시 시작됩니다.
  • 지원되지 않는 경우 RateControl 은 인코딩 세션의 시작 부분에 설정되어야 하며 세션 중에 변경되지 않아야 합니다.

PictureTargetResolution

이 프레임을 인코딩할 때 사용할 해상도를 설명하는 D3D12DDI_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC_0080 구조체입니다. 이 작업에 연결된 인코더 힙을 만들 때 지정된 해상도 목록에 따라 대상 해상도를 설정해야 합니다.

D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_RESOLUTION_RECONFIGURATION_AVAILABLE 플래그를 확인하여 확인을 위한 동적 재구성이 지원되는지 확인합니다.

  • 지원되는 경우 PictureTargetResolution 은 연결된 EncodeFrame 명령에 사용할 해상도를 나타냅니다. 일부 코덱에서 인코딩 세션 중간에 해상도가 변경되면 잠재적인 IDR/키 프레임 요청으로 GOP를 다시 설정해야 할 수 있으며 디코딩된 DPB(그림 버퍼) 버퍼 및 프레임 관리 알고리즘도 다시 설정됩니다.
  • 지원되지 않는 경우 PictureTargetResolution 은 전체 인코딩 세션에 대한 대상 해상도를 나타내며 세션 중에 변경해서는 안 됩니다.

SelectedLayoutMode

사용 중인 레이아웃 모드 및 FrameSubregionsLayoutData에서 사용할 공용 구조체 멤버를 나타내는 D3D12DDI_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE_0080 값입니다.

D3D12_VIDEO_ENCODER_SUPPORT_FLAG_0083_0_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE 플래그를 확인하여 하위 구성 동적 재구성이 지원되는지 확인합니다.

  • 지원되는 경우 SelectedLayoutMode 는 연결된 EncodeFrame 명령에 사용되는 하위 분할 모드를 나타냅니다.
  • 지원되지 않는 경우 *SelectedLayoutMode 는 전체 인코딩 세션의 대상 하위 구성 모드를 나타내며 인코딩 세션 중에 변경해서는 안 됩니다.

FrameSubregionsLayoutData

그림 하위 리소스 레이아웃 선택적 코덱별 데이터를 포함하는 D3D12DDI_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA_0080_2 구조체입니다. SelectedLayoutMode가 하위 리소스가 없음을 나타내는 경우 이 멤버는 NULL이어야 합니다.

CodecGopSequence

비디오 시퀀스에 사용되는 현재 GOP를 표시 순서대로 지정하는 D3D12DDI_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE_0082_0 구조체입니다. EncodeFrame에 대한 호출은 B-Frames 다시 정렬 후 순서대로 이 GOP를 따라야 합니다.

D3D12_VIDEO_ENCODER_SUPPORT_FLAG__0083_0_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE 플래그를 확인하여 GOP 동적 재구성이 지원되는지 확인합니다.

  • 지원되는 경우 CodecGopSequence 는 연결된 EncodeFrame 명령에서 시작하는 데 사용되는 새 GOP 하위 리소스 모드를 나타냅니다.
  • 지원되지 않는 경우 CodecGopSequence 는 전체 인코딩 세션의 대상 GOP 패턴을 표시 순서대로 나타내며 인코딩 세션 중에 변경해서는 안 됩니다.

설명

일반 정보는 D3D12 비디오 인코딩을 참조하세요.

새로 고침 내 사용

양방향 참조 프레임(B 프레임)의 사용은 새로 고침 내와 함께 사용할 수 없습니다. 호출자는 새로 고침 내부 모드가 활성화된 경우 CodecGopSequence의 구조에 B 프레임이 포함되지 않는지 검사 합니다. D3D12_VIDEO_ENCODER_INTRA_REFRESH_MODE_NONE 이외의 새로 고침 모드로 D3D12DDICAPS_VIDEO_ENCODER_SUPPORT_DATA 쿼리할 때 CodecGopSequence 집합에는 B 프레임이 포함되어서는 안 되며 쿼리는 지원을 반환하지 않습니다.

새로 고침 내 각 작업이 완료된 후 새로 고침 내의 새 웨이브를 주기적으로 요청하여 무한 새로 고침을 사용할 수 있습니다.

N 프레임의 새로 고침을 시작할 때 호스트는 다음을 수행합니다.

  • 새로 고침 내를 시작하도록 해당 그림 컨트롤 플래그를 설정합니다.
  • 그림 컨트롤 구조에서 [0..N) 사이의 프레임 인덱스를 제어하여 드라이버에 인트라 새로 고침 세션의 진행률을 암시합니다.

N 프레임 기간이 있는 새로 고침 내 웨이브를 명시적으로 요청할 때 예상되는 동작은 다음과 같습니다.

  • GOP 시작 부분에서 새로 고침 내 요청이 발생하면 N 프레임에 대해 새로 고침 내가 발생하고 새 GOP가 I 프레임으로 시작됩니다.

  • GOP 중간에 새로 고침 내 요청이 발생하면 사진 그룹은 마지막으로 제출된 EncodeFrame 명령까지 종료되고 I 프레임으로 시작하는 새 GOP를 사용하여 새로 고침 내 세션 후에 다시 시작됩니다. 예를 들어 GOP가 IPPPP인 경우... IPPPP..., GOP의 "IPP" 부분 제출에서 새로 고침 내부 시작이 요청되면 해당 GOP의 마지막 두 P 프레임이 무시되고, 새로 고침 내 세션이 N개의 다음 프레임에 대해 실행되고 GOP 구조를 다시 시작하는 새 키 프레임이 필요합니다.

행 기반 새로 고침 내의 경우:

  • 구성된 GOP 구조를 무한 IPPP로 다시 구성해야 합니다... P... 새로 고침 내 세션 기간 동안 GOP(GOPLength = 0u 및 PPicturePeriod = 1u) 그런 다음, 새로 고침 내 웨이브가 완료된 후 다시 구성할 수 있습니다.

  • 구성된 하위 분할 모드는 N EncodeFrame 명령 기간 동안 프레임당 N개의 균일한 조각 분할에 해당하도록 다시 구성됩니다. 이는 부분 분할이 새로 고침 내 요구 사항과 호환되지 않는 모드로 설정된 경우에 특히 중요합니다. 예를 들어 조각의 인트라 코딩된 단위 행이 조각당 바이트로 설정된 제한 사항을 방해할 때 특히 중요합니다. 행 기반 인트라-새로 고침에 대한 기대는 결과 프레임에 I 조각이어야 하는 현재 새로 고침 내 행 조각을 제외한 모든 P 조각인 N개의 조각이 포함되어 있다는 것입니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 11(WDDM 3.0)
머리글 d3d12umddi.h

추가 정보

D3D12DDI_VIDEO_ENCODER_ENCODEFRAME_INPUT_STREAM_ARGUMENTS_0082_0

D3D12DDI_VIDEO_ENCODER_SUPPORT_FLAGS_0083_0

PFND3D12DDI_VIDEO_ENCODE_FRAME_0082_0

PFND3D12DDI_CREATEVIDEOENCODERHEAP_0080_2