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는 다음 값 중 하나입니다.
|
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 포함) |