DXVA_MBctrl_I_OffHostIDCT_1 구조체(dxva.h)

DXVA_MBctrl_I_OffHostIDCT_1 구조체는 호스트 디코더에 의해 macroblock당 한 번 가속기로 전송되어 오프 호스트 IDCT를 사용할 때 4:2:0 인트라 그림에 대한 macroblock 컨트롤 명령을 지정합니다.

구문

typedef struct _DXVA_MBctrl_I_OffHostIDCT_1 {
  WORD  wMBaddress;
  WORD  wMBtype;
  DWORD dwMB_SNL;
  WORD  wPatternCode;
  BYTE  bNumCoef[DXVA_NumBlocksPerMB_420];
} DXVA_MBctrl_I_OffHostIDCT_1;

멤버

wMBaddress

현재 macroblock의 macroblock 주소를 래스터 스캔 순서로 지정합니다. 매크로 블록 주소의 예는 macroblock 주소를 참조하세요.

wMBtype

처리 중인 macroblock의 형식을 지정합니다. 다음 비트는 macroblock 처리를 정의합니다.

Bits 설명
15~12 MvertFieldSel_3(비트 15, 가장 중요한 비트)에서 MvertFieldSel_0(비트 12)
0이어야 합니다.
11 예약 비트
0이어야 합니다.
10 HostResidDiff
공간 도메인 잔차 디코딩된 블록을 보낼지 또는 현재 매크로 블록에 대해 호스트 외부 IDCT에 대해 변환 계수를 보낼지 여부를 지정합니다.
HostResidDiff 플래그는 이 구조체에서 항상 0과 같습니다. bConfigResidDiffHost가 0인 경우 이 플래그는 0이어야 합니다. bConfigResidDiffAccelerator가 0인 경우 이 플래그는 1이어야 합니다. bConfigResidDiffHost 및 bConfigResidDiffAccelerator 멤버는 DXVA_ConfigPictureDecode 구조체에 포함됩니다.
9 및 8 MotionType
이는 인트라 그림에는 적용되지 않습니다. 두 비트는 모두 0이어야 합니다.
7 및 6 MBscanMethod
macroblock 컨트롤 명령의 scan 메서드를 지정합니다. bPicScanFixed가 1인 경우 bPicScanMethod와 같아야 합니다.
bConfigHostInverseScan이 0이면 MBscanMethod는 다음 값 중 하나입니다.
  • 제로 â' 지그재그 스캔 (MPEG-2 그림 7-2)
  • 1 ' 대체 수직 검사 (MPEG-2 그림 7-3)
  • 2 ' 대체 수평 스캔 (H.263 그림 I.2 파트 a)
bConfigHostInverseScan이 1이면 MBscanMethod는 3과 같으며 이는 절대 계수 주소가 있는 임의 검사입니다. bPicScanMethod 및 bPicScanFixed는 DXVA_PictureParameters 멤버입니다. bConfigHostInverseScan은 DXVA_ConfigPictureDecode 멤버입니다.
5 FieldResidual
잔차 블록이 MPEG-2에 지정된 필드 IDCT 구조를 사용하는지 여부를 나타냅니다.
DXVA_PictureParameters bPicStructure 멤버가 1 또는 2인 경우 1이어야 합니다. MPEG-2에 사용되는 경우 MPEG-2 구문의 frame_pred_frame_DCT 플래그가 1인 경우 FieldResidual은 0이어야 하며 매크로 블록에 dct_type 있는 경우 MPEG-2 구문의 dct_type 요소와 동일해야 합니다.
4 H261LoopFilter
0이어야 합니다.
3 Motion4MV
0이어야 합니다.
2 MotionBackward
0이어야 합니다.
1 MotionForward
0이어야 합니다.
0 IntraMacroblock
1이어야 합니다.

dwMB_SNL

wPatternCode

macroblock의 각 블록에 대해 잔차 데이터가 전송되는지 여부를 나타냅니다. 인트라 그림에서 매크로 블록의 모든 블록에 대해 잔차 데이터가 전송됩니다. 현재 macroblock의 모든 블록을 참조하는 wPatternCode 의 비트는 DXVA_MBctrl_I_OffHostIDCT_1 1이어야 합니다.

wPatternCode의 비트(11-i)(여기서 비트 0은 가장 중요한 비트)는 블록 i에 대해 잔차 데이터가 전송되는지 여부를 나타냅니다. 여기서 i는 MPEG-2 그림 6-10, 6-11 및 6-12에 지정된 매크로 블록 내 블록의 인덱스입니다(Y에 대한 래스터 스캔 순서, 래스터 스캔 순서에서 Cb의 4:2:0 블록, 그 뒤에 4:2:0 Cr 블록, 4:2:2 Cb 블록, 4:2:2 블록, Cb 4:4:4 블록, Cr 4:4:4 블록이 뒤따릅니다. 코딩된 블록(비트(11-i)이 1과 같은 블록)에 대한 데이터는 동일한 인덱싱 순서(i 증가)의 잔차 코딩 버퍼에서 찾을 수 있습니다. 4:2:0 MPEG-2 데이터의 경우 wPatternCode 값은 CBP의 디코딩된 값(코딩된 블록 패턴)을 6비트 위치(4:2:2 및 4:4:4 크로마 형식에 사용되는 하위 비트 위치)로 왼쪽으로 이동하는 데 해당합니다.

bNumCoef[DXVA_NumBlocksPerMB_420]

bNumCoef 배열의 각 값은 macroblock의 각 블록 i에 대한 잔차 데이터 버퍼의 계수 수를 나타냅니다.

배열 아래 첨자 i 는 MPEG-2 비디오 그림 6-10, 6-11 및 6-12(Y에 대한 래스터 스캔 순서, Cb, Cr 순)에 지정된 대로 macroblock 내 블록의 인덱스입니다.

이 멤버는 HostResidDiff 플래그( wMBtype의 비트 10)가 0이고 bChromaFormat 이 1(4:2:0)인 경우에만 사용됩니다. 4:2:2 또는 4:4:4 형식으로 사용되는 경우 중요한 메모리 맞춤 경계를 지나 일반적인 macroblock 컨트롤 명령의 크기가 증가합니다. 결과적으로 DXVA_TCoefSingle 구조 내의 TCoefEOB 비트는 4:2:0이 아닌 경우 각 블록의 계수 수를 결정하는 데 사용됩니다.

bNumCoef의 목적은 존재하는 계수 수로 표현되는 잔차 데이터 버퍼의 각 블록에 대해 존재하는 데이터의 양을 나타내는 것입니다. DXVA_ConfigPictureDecode 구조체의 bConfig4GroupedCoefs 멤버가 1이면 bNumCoef에 블록에 대해 전송된 실제 계수 수 또는 4의 배수로 반올림된 값이 포함될 수 있습니다. 이러한 계수에 대한 데이터는 동일한 순서로 잔차 버퍼에서 찾을 수 있습니다.

설명

건너뛴 매크로 블록은 인트라 그림에서 사용되지 않으므로 MBskipsFollowing 변수는 0이어야 합니다. MBdataLocation 변수는 macroblock 컨트롤 명령 버퍼의 첫 번째 macroblock에 대해 0이어야 합니다. 건너뛴 매크로 블록이 생성되는 방법에 대한 자세한 내용은 건너뛴 매크로 블록 생성을 참조하세요.

요구 사항

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

추가 정보

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle