다음을 통해 공유


D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC 구조체(d3d12video.h)

시퀀스 수준에서 비디오 인코딩 작업의 입력에 대한 매개 변수를 나타냅니다.

구문

typedef struct D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC {
  D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS                 Flags;
  D3D12_VIDEO_ENCODER_INTRA_REFRESH                          IntraRefreshConfig;
  D3D12_VIDEO_ENCODER_RATE_CONTROL                           RateControl;
  D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC                PictureTargetResolution;
  D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE            SelectedLayoutMode;
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA FrameSubregionsLayoutData;
  D3D12_VIDEO_ENCODER_SEQUENCE_GOP_STRUCTURE                 CodecGopSequence;
} D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_DESC;

멤버

Flags

현재 작업에 대한 시퀀스 컨트롤 설명자 플래그를 지정하는 D3D12_VIDEO_ENCODER_SEQUENCE_CONTROL_FLAGS 열거형의 값의 비트 OR 조합입니다.

IntraRefreshConfig

새로 고침 내 세션을 트리거할 때 사용해야 하는 새로 고침 내 모드에 대한 매개 변수를 지정하는 D3D12_VIDEO_ENCODER_INTRA_REFRESH 구조체입니다.

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

무한 새로 고침의 사용은 각 새로 고침이 완료된 후 주기적으로 새로 고침 내의 새 물결을 요청하여 가능합니다.

N 프레임의 기간 내 새로 고침을 시작할 때 호스트는 해당 그림 컨트롤 플래그를 새로 고침 내로 시작하고 그림 컨트롤 구조에서 [0..N) 사이의 프레임 인덱스를 제어하여 드라이버에게 인트라 새로 고침 세션에 대한 진행 상황을 암시합니다.

기간 N 프레임으로 인트라 새로 고침 웨이브를 명시적으로 요청할 때 예상되는 동작:

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

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

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

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

RateControl

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

D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RATE_CONTROL_RECONFIGURATION_AVAILABLE 속도 제어 동적 재구성에 대한 지원을 확인합니다. RateControl을 수정하여 속도 제어 동적 재구성이 허용되는 경우 연결된 EncodeFrame 실행부터 시작하는 새 구성으로 속도 제어 알고리즘이 다시 시작됩니다. 그렇지 않으면 인코딩 세션의 시작 부분에 설정해야 하며 이후에 변경되지 않아야 합니다.

PictureTargetResolution

이 프레임을 인코딩할 때 사용할 해상도를 설명하는 D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC 구조체입니다.

D3D12_VIDEO_ENCODER_SUPPORT_FLAG_RESOLUTION_RECONFIGURATION_AVAILABLE 동적 재구성 해결에 대한 지원을 확인합니다. 이에 대한 지원이 제공되지 않으면 PictureTargetResolution 은 전체 인코딩 세션의 대상 해상도를 나타내며 인코딩 세션 중에 변경해서는 안 됩니다. 그렇지 않으면 연결된 EncodeFrame 명령에 사용되는 해상도를 나타냅니다.

대상은 이 작업에 대해 연결된 인코더 힙을 만들 때 지정된 해상도 목록에 따라 설정해야 합니다.

일부 코덱의 경우 인코딩 세션 중간에 해상도가 변경되면 잠재적인 IDR/키 프레임 요청으로 GOP를 다시 설정해야 할 수 있으며 DPB 버퍼/프레임 관리 알고리즘을 다시 설정해야 할 수도 있습니다.

SelectedLayoutMode

사용 중인 레이아웃 모드와 pFrameSubregionsLayoutData에서 사용할 공용 구조체 멤버를 지정하는 D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE 열거형의 값입니다.

[D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SUBREGION_LAYOUT_RECONFIGURATION_AVAILABLE]((ne-d3d12video-d3d12_video_encoder_support_flags.md)에서 하위 리소스 동적 재구성에 대한 지원을 확인합니다. 이에 대한 지원이 제공되지 않으면 전체 인코딩 세션의 대상 하위 리소스 모드를 나타내며 인코딩 세션 중에 변경해서는 안 됩니다. 그렇지 않으면 연결된 EncodeFrame 명령에 사용되는 하위 분할 모드를 나타냅니다.

FrameSubregionsLayoutData

그림 하위 리소스 레이아웃 선택적 코덱별 데이터를 지정하는 D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA 구조체입니다. 지정된 SelectedLayoutMode 값이 하위 리소스가 없음을 나타내는 경우 null이 필요합니다.

CodecGopSequence

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

D3D12_VIDEO_ENCODER_SUPPORT_FLAG_SEQUENCE_GOP_RECONFIGURATION_AVAILABLE GOP 동적 재구성에 대한 지원을 확인합니다. 이에 대한 지원이 제공되지 않으면 CodecGopSequence 는 전체 인코딩 세션의 대상 GOP 패턴(표시 순서)을 나타내며 인코딩 세션 중에 변경해서는 안 됩니다. 그렇지 않으면 연결된 EncodeFrame 명령에서 시작하는 데 사용되는 새 GOP 하위 변경 모드를 나타냅니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Build 22000
지원되는 최소 서버 Windows Build 22000
머리글 d3d12video.h