다음을 통해 공유


DXVA_ConfigPictureDecode 구조체(dxva.h)

DXVA_ConfigPictureDecode 구조체는 압축된 그림 디코딩에 대한 구성을 설정하기 위해 호스트 디코더에 의해 가속기로 전송됩니다.

구문

typedef struct _DXVA_ConfigPictureDecode {
  DXVA_ConfigQueryOrReplyFunc dwFunction;
  DWORD                       dwReservedBits[3];
  GUID                        guidConfigBitstreamEncryption;
  GUID                        guidConfigMBcontrolEncryption;
  GUID                        guidConfigResidDiffEncryption;
  BYTE                        bConfigBitstreamRaw;
  BYTE                        bConfigMBcontrolRasterOrder;
  BYTE                        bConfigResidDiffHost;
  BYTE                        bConfigSpatialResid8;
  BYTE                        bConfigResid8Subtraction;
  BYTE                        bConfigSpatialHost8or9Clipping;
  BYTE                        bConfigSpatialResidInterleaved;
  BYTE                        bConfigIntraResidUnsigned;
  BYTE                        bConfigResidDiffAccelerator;
  BYTE                        bConfigHostInverseScan;
  BYTE                        bConfigSpecificIDCT;
  BYTE                        bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode, *LPDXVA_ConfigPictureDecode;

멤버

dwFunction

검색 및 잠금 명령을 사용할 때 쿼리 또는 응답의 유형을 나타냅니다. 가장 중요한 24비 트 dwFunctionDXVA_ConfigQueryOrReplyFlag 변수입니다.

가장 중요한 4비트 DXVA_ConfigQueryOrReplyFlag 변수에는 수행 중인 쿼리 또는 응답에 대한 상태 표시기가 포함됩니다.

가장 중요한 8비 트 dwFunction 은 이 경우 1과 같은 bDXVA_Func 변수 입니다.

dwReservedBits[3]

압축 및 맞춤에 사용되는 예약된 비트입니다. 이러한 비트는 0입니다.

guidConfigBitstreamEncryption

비트스트림 데이터 버퍼의 암호화 프로토콜 형식과 연결된 GUID를 나타냅니다. DXVA_NoEncrypt 값( dxva.h에 정의된 GUID 이름)은 암호화가 적용되지 않음을 나타냅니다. bConfigBitstreamRaw가 0이면 DXVA_NoEncrypt.

guidConfigMBcontrolEncryption

macroblock 컨트롤 버퍼에 대한 암호화 프로토콜 형식과 연결된 GUID를 나타냅니다. DXVA_NoEncrypt 값( dxva.h에 정의된 GUID 이름)은 암호화가 적용되지 않음을 나타냅니다. bConfigBitstreamRaw가 1이면 DXVA_NoEncrypt.

guidConfigResidDiffEncryption

데이터 버퍼를 디코딩하는 잔차(공간 도메인 데이터를 포함하는 버퍼 또는 가속기 기반 IDCT에 대한 변환 도메인 계수 집합)에 대한 암호화 프로토콜 형식과 연결된 GUID를 나타냅니다. bConfigBitstreamRaw가 1이면 DXVA_NoEncrypt. (DXVA_NoEncrypt 암호화가 적용되지 않음을 나타내는 dxva.h 에 정의된 GUID입니다.

bConfigBitstreamRaw

비트 스트림 처리 표시기를 포함합니다. 값 1은 그림 데이터가 비트스트림 버퍼에서 원시 비트스트림 콘텐츠로 전송되도록 지정합니다. 값이 0이면 매크로 블록 컨트롤 명령 버퍼를 사용하여 그림 데이터가 전송되도록 지정합니다.

bConfigResidDiffHost가 1이거나 bConfigResidDiffAccelerator가 1인 경우 0입니다. 값 0은 기본 지원 수준으로 간주됩니다. 수준 1의 추가 지원이 선호됩니다.

bConfigMBcontrolRasterOrder

macroblock 컨트롤 명령이 래스터 검사 순서인지 또는 임의 순서인지를 지정합니다. 값 1은 각 macroblock 컨트롤 명령 버퍼 내의 macroblock 컨트롤 명령이 래스터 검사 순서로 지정되고 값이 0이면 임의의 순서를 나타냅니다. 현재 드라이버는 래스터 스캔 순서에 대한 지원을 제한할 수 있습니다. 그러나 드라이버는 임의 및 래스터 스캔 순서를 모두 지원해야 합니다.

bConfigResidDiffHost

호스트 잔차 구성을 포함합니다(자세한 내용은 Macroblock 지향 그림 디코딩 참조). 값 1은 일부 잔차 디코딩 데이터를 호스트에서 공간 도메인의 블록으로 보낼 수 있음을 지정합니다. 값이 0이면 공간 도메인 데이터가 전송되지 않습니다. bConfigBitstreamRaw가 1인 경우 이 멤버는 0입니다. 가속기가 0과 1을 모두 지원하는 것이 좋습니다.

bConfigSpatialResid8

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

bConfigSpatialResid8이 1이고 bConfigResidDiffHost가 1인 경우 호스트는 다음과 같이 bConfigIntraResidUnsigned 형식으로 예측된(비인트라) 그림의 인트라 매크로 블록과 비인트라 매크로 블록의 경우 잔차 공간 도메인 블록을 보냅니다.

  • bConfigIntraResidUnsigned가 0이면 매크로블록 내 공간 도메인 블록은 상수 참조 값 128을 기준으로 8비트 부호 있는 정수 값으로 전송됩니다.
  • bConfigIntraResidUnsigned가 1이면 매크로 블록 내의 공간 도메인 블록은 상수 참조 값 0을 기준으로 8비트 부호 없는 정수 값으로 전송됩니다.
bConfigSpatialResid8이 0이고 bConfigResidDiffHost가 1인 경우 호스트는 다음과 같이 bConfigIntraResidUnsigned에 따라 16비트 부호 있는 샘플을 사용하는 비인트라 매크로 블록 및 예측된(비인트라) 그림의 인트라 매크로 블록에 대해 잔차 공간 도메인 데이터 블록을 보냅니다.
  • bConfigIntraResidUnsigned가 0이면 매크로블록 내 공간 도메인 블록은 상수 참조 값 2(BPP-1)를 기준으로 16비트 부호 있는 정수 값으로 전송됩니다. 여기서 BPP는 압축되지 않은 비디오의 샘플당 비트 수(일반적으로 값 8)입니다.
  • bConfigIntraResidUnsigned가 1이면 매크로 블록 내 공간 도메인 블록은 상수 참조 값 0을 기준으로 16비트 부호 없는 정수 값으로 전송됩니다.
bConfigResidDiffHost가 0인 경우 bConfigSpatialResid8 멤버는 0이어야 합니다. bConfigResidDiffHost가 1인 경우 bConfigSpatialResid8의 특정 값에 대한 기본 설정은 없습니다.
참고BPP가 8인 인트라 그림의 경우 8비트 샘플을 사용하여 공간 도메인 블록을 보내야 합니다. BPP가 8보다 큰 인트라 그림의 경우 16비트 샘플을 사용하여 공간 도메인 블록을 보내야 합니다. (BPP 변수는 압축되지 않은 비디오의 샘플당 비트 수이며 일반적으로 값은 8입니다.)

bConfigIntraResidUnsigned가 0이면 이러한 샘플은 상수 참조 값 2(BPP-1)를 기준으로 부호 있는 정수 값으로 전송됩니다. bConfigIntraResidUnsigned가 1이면 이러한 샘플은 상수 참조 값 0을 기준으로 부호 없는 정수 값으로 전송됩니다.

 

bConfigResid8Subtraction

1과 같으면 8비트 차이 오버플로 블록이 추가되지 않고 뺍니다. bConfigSpatialResid8이 1이 아니면 0이어야 합니다. bConfigSpatialResid8이 1인 경우 지원하도록 가속기에서 기본 설정 값은 1입니다. 차이를 추가하는 대신 빼는 기능을 사용하면 8비트 차이 디코딩이 비디오 디코더 사양에 필요한 전체 +/-255 값 범위를 완전히 준수할 수 있습니다. 이는 +255를 두 개의 부호 있는 8비트 숫자의 추가로 나타낼 수 없지만 범위 +/-255의 모든 숫자를 두 개의 부호 있는 8비트 숫자 사이의 차이로 나타낼 수 있기 때문입니다(+255는 +127에서 128을 뺀 값과 같음).

bConfigSpatialHost8or9Clipping

1과 같으면 인트라 매크로 블록에 대한 공간 도메인 블록이 호스트의 8비트 범위로 잘리고 비인트라 매크로 블록의 공간 도메인 블록이 호스트의 9비트 범위로 잘리고 있음을 나타냅니다. 값이 0이면 호스트가 이러한 클리핑을 수행하지 않음을 나타냅니다. bConfigSpatialResid8이 0이고 bConfigResidDiffHost가 1인 경우가 아니면 0이어야 합니다. 지원할 액셀러레이터의 기본 설정 값은 0입니다.

bConfigSpatialResidInterleaved

1과 같으면 모든 공간 도메인 잔차 데이터가 YUV 형식의 색차 인터리빙 패턴과 일치하는 색차 인터리브 형식으로 전송됨을 나타냅니다. bConfigResidDiffHost가 1이고 YUV 형식이 NV12 또는 NV21이 아니면 0이어야 합니다. 지원할 액셀러레이터의 기본 설정 값은 0입니다.

bConfigIntraResidUnsigned

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

bConfigIntraResidUnsigned가 0이고 bConfigResidDiffHost가 1과 같으면 인트라 매크로 블록에 대한 공간 도메인 잔차 데이터 블록이 다음과 같이 전송됩니다.

  • 비인트라 그림에서 bConfigSpatialResid8 이 0이면 인트라 매크로블록에 대한 공간 도메인 잔차 데이터 블록은 상수 참조 값 2(BPP-1)를 기준으로 16비트 부호 있는 정수 값으로 전송됩니다. 여기서 BPP 는 압축되지 않은 비디오의 샘플당 비트 수(일반적으로 값 8)입니다.
  • bConfigSpatialResid8이 1이고 BPP가 8인 경우(bConfigSpatialResid8 값에 관계없이) 인트라 그림에서 매크로블록 내의 공간 도메인 잔차 데이터 블록은 상수 참조 값 128을 기준으로 8비트 부호 있는 정수 값으로 전송됩니다.
bConfigIntraResidUnsigned가 1이고 bConfigResidDiffHost가 1과 같으면 인트라 매크로 블록에 대한 공간 도메인 잔차 데이터 블록이 다음과 같이 전송됩니다.
  • bConfigSpatialResid8이 0이면 인트라 그림에서 매크로블록 내의 공간 도메인 잔차 데이터 블록은 상수 참조 값 0을 기준으로 16비트 부호 없는 정수 값으로 전송됩니다.
  • bConfigSpatialResid8이 1이고 BPP가 8인 경우(bConfigSpatialResid8 값에 관계없이) 인트라 그림에서 매크로블록 내의 공간 도메인 잔차 데이터 블록은 상수 참조 값 0을 기준으로 8비트 부호 없는 정수 값으로 전송됩니다.
bConfigResidDiffHost가 1이 아니면 bConfigIntraResidUnsigned 멤버는 0이어야 합니다.

bConfigIntraResidUnsigned에서 지원할 가속기 기본 설정 값은 0입니다.

bConfigResidDiffAccelerator

액셀러레이터 잔차 구성을 포함합니다. 값 1은 계수 데이터의 변환 도메인 블록이 가속기 기반 IDCT를 위해 호스트에서 전송될 수 있음을 나타냅니다. 값이 0이면 액셀러레이터 기반 IDCT가 사용되지 않도록 지정합니다. bConfigResidDiffHostbConfigResidDiffAccelerator가 모두 1이면 macroblock 수준 컨트롤 명령에 표시된 대로 호스트 및 가속기에서 일부 잔차 디코딩이 수행됩니다. bConfigBitstreamRaw가 1인 경우 이 멤버는 0이어야 합니다.

지원되는 액셀러레이터의 기본값은 bConfigResidDiffAccelerator의 경우 1입니다.

bConfigResidDiffAcceleratorbConfigResidDiffHost가 1과 같으면 매크로 블록 기준으로 호스트와 가속기 간에 잔차 디코딩을 공유할 수 있습니다. 이는 bConfigResidDiffAccelerator 가 1이고 bConfigResidDiffHost 가 0인 경우보다 훨씬 높은 수준의 가속기 기능으로 간주됩니다.

bConfigHostInverseScan

호스트 또는 가속기에서 변환 도메인 블록 처리에 대한 역 검색이 수행되는지 여부를 나타냅니다. 값 1은 변환 도메인 블록 처리에 대한 역 검색이 호스트에서 수행되고 변환 계수 대신 절대 인덱스가 전송됨을 나타냅니다. 값이 0이면 역 검사가 가속기에서 수행됨을 나타냅니다. bConfigResidDiffAccelerator가 0이거나 bConfig4GroupedCoefs가 1인 경우 이 멤버는 0이어야 합니다.

bConfigResidDiffAccelerator가 1인 경우 지원할 가속기의 기본값은 1입니다.

bConfigSpecificIDCT

오프 호스트 IDCT에 특정 IDCT 메서드의 사용을 나타냅니다. 값 1은 ITU-T Recommendation H.263의 부록 W에 지정된 IDCT의 사용을 나타냅니다. 값이 0이면 모든 규격 IDCT를 오프 호스트 IDCT에 사용할 수 있음을 나타냅니다. (0과 1 이외의 값은 나중에 사용할 수 있습니다.)

bConfigResidDiffAccelerator가 0이면 이 멤버가 0이어야 합니다(단순히 호스트 기반 잔차 디코딩을 나타낸다).

참고 ITU-T 권장 사항 H.263의 부록 W는 MPEG-2 corrigendum 2의 IDCT 요구 사항을 준수하지 않으므로 bConfigSpecificIDCT 는 MPEG-2 비디오에서 사용할 수 없습니다.
 

bConfig4GroupedCoefs

값 1은 오프 호스트 IDCT에 대한 변환 계수가 DXVA_TCoefSingle 구조가 아닌 DXVA_TCoef4Group 구조를 사용하여 전송됨을 나타냅니다. bConfigResidDiffAccelerator가 0이거나 bConfigHostInverseScan이 1이면 0입니다.

bConfigResidDiffAccelerator가 1인 경우 지원할 가속기의 기본 설정 값은 0입니다.

설명

일부 비트스트림 형식의 경우 각 macroblock 컨트롤 명령 버퍼 내의 macroblock 컨트롤 명령이 래스터 순서로 적용되면 처리해야 하는 필수 버퍼 수가 크게 증가하거나 컨트롤 정보의 호스트 순서를 다시 지정해야 합니다. 따라서 임의의 순서를 지원하는 것이 디코딩 프로세스에 유리할 수 있습니다. 예를 들어 각 버퍼 내에서 래스터 스캔 순서가 필요한 경우 H.261 CIF 해상도 디코딩에는 그림당 36개의 매크로 블록 컨트롤 버퍼가 필요할 수 있습니다(H.263 부록 K의 임의 조각 순서 및 직사각형 조각 모드는 매우 많은 수의 버퍼가 필요할 수 있음).

요구 사항

요구 사항
헤더 dxva.h(Dxva.h 포함)

추가 정보

DXVA_MBctrl_I_HostResidDiff_1

DXVA_MBctrl_I_OffHostIDCT_1

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MBctrl_P_OffHostIDCT_1

DXVA_TCoef4Group

DXVA_TCoefSingle