D3D11_1DDI_VIDEO_DECODER_CONFIG 구조체(d3d10umddi.h)

Microsoft DXVA(DirectX Video Acceleration)용 Microsoft Direct3D 11 디코더 디바이스의 구성에 대해 설명합니다.

구문

typedef struct D3D11_1DDI_VIDEO_DECODER_CONFIG {
  GUID   guidConfigBitstreamEncryption;
  GUID   guidConfigMBcontrolEncryption;
  GUID   guidConfigResidDiffEncryption;
  UINT   ConfigBitstreamRaw;
  UINT   ConfigMBcontrolRasterOrder;
  UINT   ConfigResidDiffHost;
  UINT   ConfigSpatialResid8;
  UINT   ConfigResid8Subtraction;
  UINT   ConfigSpatialHost8or9Clipping;
  UINT   ConfigSpatialResidInterleaved;
  UINT   ConfigIntraResidUnsigned;
  UINT   ConfigResidDiffAccelerator;
  UINT   ConfigHostInverseScan;
  UINT   ConfigSpecificIDCT;
  UINT   Config4GroupedCoefs;
  USHORT ConfigMinRenderTargetBuffCount;
  USHORT ConfigDecoderSpecific;
} D3D11_1DDI_VIDEO_DECODER_CONFIG;

멤버

guidConfigBitstreamEncryption

비트 스트림 데이터 버퍼에 대한 암호화 프로토콜 유형을 정의합니다. 암호화가 적용되지 않으면 값이 DXVA_NoEncrypt (Dxva.h에 정의된 GUID 이름). ConfigBitstreamRaw가 0이면 값이 DXVA_NoEncrypt 합니다.

D3DWDDM2_0DDI_DECODER_ENCRYPTION_HW_CENC 설정하면 다음 매개 변수가 VideoDecoderBeginFrame 호출에 전달됨을 나타냅니다.

의미
pContentKey 프레임의 암호를 해독하는 데 사용되는 CryptoSession 및 키 정보를 나타내는 D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION 구조체에 대한 포인터입니다.
ContentKeySize D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION 구조체의 크기로 설정합니다.

guidConfigMBcontrolEncryption

매크로 블록 제어 데이터 버퍼에 대한 암호화 프로토콜 형식을 정의합니다. 암호화가 적용되지 않으면 값이 DXVA_NoEncrypt (Dxva.h에 정의된 GUID 이름). ConfigBitstreamRaw가 1이면 값이 DXVA_NoEncrypt 합니다.

guidConfigResidDiffEncryption

데이터 버퍼(공간 도메인 데이터를 포함하는 버퍼 또는 가속기 기반 역 불연속 코사인 변환 [IDCT]에 대한 변환 도메인 계수 집합)에 대한 암호화 프로토콜 유형을 정의합니다. 암호화가 적용되지 않으면 값이 DXVA_NoEncrypt (Dxva.h에 정의된 GUID 이름). ConfigBitstreamRaw가 1이면 값이 DXVA_NoEncrypt 합니다.

ConfigBitstreamRaw

호스트 디코더가 원시 비트 스트림 데이터를 보내는지 여부를 나타냅니다. 값이 1이면 그림의 데이터가 비트 스트림 버퍼에서 원시 비트 스트림 콘텐츠로 전송됩니다. 값이 0이면 매크로 블록 컨트롤 명령 버퍼를 사용하여 그림 데이터가 전송됩니다. ConfigResidDiffHost 또는 ConfigResidDiffAccelerator가 1이면 값은 0이어야 합니다.

ConfigMBcontrolRasterOrder

macroblock 컨트롤 명령이 래스터 검사 순서인지 또는 임의 순서인지를 지정합니다. 값이 1이면 각 macroblock 컨트롤 명령 버퍼 내의 macroblock 컨트롤 명령이 래스터 스캔 순서로 표시됩니다. 값이 0이면 순서가 임의입니다. 일부 비트 스트림 형식의 경우 래스터 순서를 강제로 적용하면 처리해야 하는 필수 macroblock 컨트롤 버퍼 수가 크게 증가하거나 컨트롤 정보의 호스트 순서를 다시 지정해야 합니다. 따라서 임의 순서를 지원하는 것이 더 효율적일 수 있습니다.

ConfigResidDiffHost

호스트 잔차 구성을 포함합니다. 값이 1이면 일부 잔차 디코딩 데이터가 호스트에서 공간 도메인의 블록으로 전송될 수 있습니다. 값이 0이면 공간 도메인 데이터가 전송되지 않습니다.

ConfigSpatialResid8

호스트 기반 잔차 디코딩을 사용할 때 예측된(인트라가 아닌) 그림의 잔차 공간 도메인 블록을 나타내는 데 사용되는 단어 크기를 나타냅니다.

ConfigResidDiffHost가 1이고 ConfigSpatialResid8이 1인 경우 호스트는 8비트 부호 있는 샘플을 사용하는 비인트라 매크로 블록에 대한 잔차 공간 도메인 블록과 ConfigIntraResidUnsigned의 값에 따라 달라지는 형식으로 예측된(인트라가 아닌) 그림의 인트라 매크로 블록에 대해 잔차 공간 도메인 블록을 보냅니다.

  • ConfigIntraResidUnsigned가 0이면 매크로 블록 내의 공간 도메인 블록은 상수 참조 값 2^(BPP–1)을 기준으로 8비트 부호 있는 정수 값으로 전송됩니다.
  • ConfigIntraResidUnsigned가 1이면 매크로 블록 내 공간 도메인 블록은 상수 참조 값 0을 기준으로 8비트 부호 없는 정수 값으로 전송됩니다.

ConfigResidDiffHost가 1이고 ConfigSpatialResid8이 0이면 호스트는 16비트 부호 있는 샘플을 사용하는 비인트라 매크로 블록에 대한 잔차 공간 도메인 블록과 ConfigIntraResidUnsigned의 값에 따라 달라지는 형식으로 예측된(인트라가 아닌) 그림의 인트라 매크로 블록에 대해 잔차 공간 도메인 블록을 보냅니다.

  • ConfigIntraResidUnsigned가 0이면 매크로 블록 내 공간 도메인 블록은 상수 참조 값 2^(BPP–1)를 기준으로 16비트 부호 있는 정수 값으로 전송됩니다.
  • ConfigIntraResidUnsigned가 1이면 매크로 블록 내 공간 도메인 블록은 상수 참조 값 0을 기준으로 16비트 부호 없는 정수 값으로 전송됩니다.
  • ConfigResidDiffHost가 0이면 ConfigSpatialResid8은 0이어야 합니다.

인트라 그림의 경우 BPP(픽셀당 비트)가 8인 경우 8비트 샘플을 사용하고 BPP 8인 경우 > 16비트 샘플을 사용하여 공간 도메인 블록을 보내야 합니다. ConfigIntraResidUnsigned가 0이면 이러한 샘플은 상수 참조 값 2^(BPP–1)를 기준으로 부호 있는 정수 값으로 전송되고 ConfigIntraResidUnsigned가 1이면 이러한 샘플은 상수 참조 값 0을 기준으로 부호 없는 정수 값으로 전송됩니다.

ConfigResid8Subtraction

값이 1이면 8비트 차이 오버플로 블록이 추가되지 않고 빼집니다. ConfigSpatialResid8이 1이 아니면 값은 0이어야 합니다.

차이를 추가하는 대신 빼는 기능을 사용하면 8비트 차이 디코딩이 비디오 디코더 사양에 필요한 전체 ±255 범위의 값을 완전히 준수할 수 있습니다. +255는 부호 있는 8비트 숫자 2개를 추가하는 것으로 나타낼 수 없지만 범위 ±255의 모든 숫자를 두 개의 부호 있는 8비트 숫자 사이의 차이로 나타낼 수 있기 때문입니다(+255 = +127 - -128).

ConfigSpatialHost8or9Clipping

값이 1이면 매크로 블록 내의 공간 도메인 블록을 호스트의 8비트 범위로 잘려야 하며, 호스트에서 인트라 매크로 블록이 아닌 매크로 블록의 공간 도메인 블록을 호스트의 9비트 범위로 잘려야 합니다. 값이 0이면 호스트에서 이러한 클리핑이 필요하지 않습니다.

ConfigSpatialResid8이 0이고 ConfigResidDiffHost가 1이 아니면 값은 0이어야 합니다.

ConfigSpatialResidInterleaved

값이 1이면 모든 공간 도메인 잔차 데이터가 YUV 형식의 색차 인터리빙 패턴과 일치하는 색차 인터리브 형식으로 전송되어야 합니다. ConfigResidDiffHost가 1이고 YUV 형식이 NV12 또는 NV21이 아니면 값은 0이어야 합니다.

ConfigIntraResidUnsigned

호스트 기반 차이 디코딩을 사용할 때 인트라 블록에 대한 잔차 데이터의 공간 도메인 블록을 나타내는 방법을 나타냅니다.

ConfigResidDiffHost가 1이고 ConfigIntraResidUnsigned가 0인 경우 인트라 매크로 블록에 대한 공간 도메인 잔차 데이터 블록은 다음과 같이 전송되어야 합니다.

  • 비인트라 그림에서 ConfigSpatialResid8이 0이면 매크로블록 내의 공간 도메인 잔차 데이터 블록은 상수 참조 값 2^(BPP–1)를 기준으로 16비트 부호 있는 정수 값으로 전송됩니다.
  • 인트라가 아닌 그림에서 ConfigSpatialResid8이 1이면 매크로블록 내의 공간 도메인 잔차 데이터 블록은 상수 참조 값 2^(BPP–1)을 기준으로 8비트 부호 있는 정수 값으로 전송됩니다.
  • 인트라 그림에서 BPP가 8이면 ConfigSpatialResid8 값에 관계없이 상수 참조 값 2^(BPP–1)에 상대적인 8비트 부호 있는 정수 값으로 인트라 매크로 블록의 공간 도메인 잔차 데이터 블록이 전송됩니다.

ConfigResidDiffHost가 1이고 ConfigIntraResidUnsigned가 1인 경우 인트라 매크로 블록에 대한 공간 도메인 잔차 데이터 블록은 다음과 같이 전송되어야 합니다.

  • 인트라가 아닌 그림에서 ConfigSpatialResid8이 0이면 매크로블록 내의 공간 도메인 잔차 데이터 블록은 상수 참조 값 0을 기준으로 16비트 부호 없는 정수 값으로 전송되어야 합니다.
  • 인트라가 아닌 그림에서 ConfigSpatialResid8이 1이면 매크로 블록 내의 공간 도메인 잔차 데이터 블록이 상수 참조 값 0을 기준으로 8비트 부호 없는 정수 값으로 전송됩니다.
  • 인트라 그림에서 BPP가 8이면 ConfigSpatialResid8 값에 관계없이 매크로 블록 내의 공간 도메인 잔차 데이터 블록이 상수 참조 값 0을 기준으로 8비트 부호 없는 정수 값으로 전송됩니다.

ConfigResidDiffHost가 1이 아니면 멤버의 값은 0이어야 합니다.

ConfigResidDiffAccelerator

값이 1이면 가속기 기반 IDCT를 위해 계수 데이터의 변환 도메인 블록을 호스트에서 보낼 수 있습니다. 값이 0이면 가속기 기반 IDCT가 사용되지 않습니다. ConfigResidDiffHostConfigResidDiffAccelerator가 모두 1인 경우 매크로 블록 수준 컨트롤 명령으로 표시된 대로 호스트 및 가속기에서 일부 잔차 디코딩이 수행됨을 나타냅니다.

ConfigBitstreamRaw가 1인 경우 값은 0이어야 합니다.

ConfigHostInverseScan

값이 1이면 변환 도메인 블록 처리에 대한 역 검색이 호스트에서 수행되고 변환 계수에 대한 절대 인덱스가 대신 전송됩니다. 값이 0이면 액셀러레이터에서 역 검사가 수행됩니다.

ConfigResidDiffAccelerator가 0이거나 Config4GroupedCoefs가 1인 경우 값은 0이어야 합니다.

ConfigSpecificIDCT

값이 1이면 ITU-T Recommendation H.263의 부록 W에 지정된 IDCT가 사용됩니다. 값이 0이면 모든 규격 IDCT를 오프 호스트 IDCT에 사용할 수 있습니다.

H.263 부속서는 MPEG-2 corrigendum 2의 IDCT 요구 사항을 준수하지 않으므로 MPEG-2 비디오에 사용하기 위해 값이 1이 아니어야 합니다.

ConfigResidDiffAccelerator가 0이면 값은 0이어야 하며, 이는 순전히 호스트 기반 잔차 디코딩을 나타냅니다.

Config4GroupedCoefs

값이 1이면 오프 호스트 IDCT에 대한 변환 계수가 DXVA_TCoef4Group 구조를 사용하여 전송됩니다. 값이 0이면 DXVA_TCoefSingle 구조체가 사용됩니다. ConfigResidDiffAccelerator가 0이거나 ConfigHostInverseScan이 1인 경우 값은 0이어야 합니다.

ConfigMinRenderTargetBuffCount

디코더 디바이스가 한 번에 처리하는 프레임 수를 지정합니다.

ConfigDecoderSpecific

디코더 관련 구성 정보를 포함합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 8
지원되는 최소 서버 Windows Server 2012
머리글 d3d10umddi.h(D3d10umddi.h 포함)

추가 정보

D3DWDDM2_0DDI_VIDEO_DECODER_BEGIN_FRAME_CRYPTO_SESSION

DXVA_TCoef4Group

DXVA_TCoefSingle