Macroblock 컨트롤 명령 구조의 두 번째 부분
제네릭 macroblock 컨트롤 명령 구조의 두 번째 부분에는 그림 디코딩 프로세스의 구성에 따라 세 가지 변형이 포함됩니다.
HostResidDiff(wMBtype 멤버의 비트 11)가 1과 같으면 macroblock 컨트롤 명령의 다음 요소가 wPC_Overflow. wPC_Overflow 멤버가 사용되는 경우 오버플로 잔차 데이터를 사용하는 macroblock 블록을 지정합니다. wPC_Overflow 뒤에 0과 같은 DWORD가 잇습니다.
HostResidDiff(wMBtype 멤버의 비트 11)가 0이고 DXVA_PictureParametersbChromaFormat 멤버가 1과 같으면 macroblock 컨트롤 명령의 다음 요소는 6개 요소의 바이트 배열인 bNumCoef입니다. bNumCoef 멤버는 매크로 블록의 각 블록에 대한 잔차 데이터 버퍼의 계수 수를 나타냅니다.
HostResidDiff(wMBtype 요소의 비트 11)가 0이고 DXVA_PictureParameters bChromaFormat 멤버가 1과 같지 않은 경우 macroblock 컨트롤 명령의 다음 요소는 wTotalNumCoef입니다. 그 다음에는 DWORD가 0과 같습니다.
wPC_Overflow
wPC_Overflow 구조체 멤버는 오버플로 잔차 데이터를 사용하는 macroblock 블록을 지정합니다.
DXVA_PictureParameters bPicOverflowBlocks 멤버가 1이고 IntraMacroblock이 0(8-8 오버플로 메서드)인 호스트 기반 잔차 디코딩(HostResidDiff가 1인 경우)을 사용하는 경우 wPC_OverflowwPatternCode와 동일한 방식으로 지정된 오버플로 블록의 패턴 코드를 포함합니다. 코딩된 오버플로 블록의 데이터(비트 11에서 i 1을 뺀 값)는 동일한 인덱싱 순서 (i 증가)의 잔차 코딩 버퍼에서 찾을 수 있습니다.
bNumCoef
bNumCoef 구조체 멤버는 6개 요소의 배열입니다. bNumCoef 배열의 ith 요소는 macroblock의 각 블록 i에 대한 잔차 데이터 버퍼의 계수 수를 포함하며, 여기서 i는 MPEG-2 비디오 그림 6-10, 6-11 및 6-12(Y에 대한 래스터 스캔 순서, Cb, Cr 순)에 지정된 대로 매크로 블록 내 블록의 인덱스입니다. bNumCoef는 HostResidDiff가 0이고 DXVA_PictureParametersbChromaFormat 멤버가 1(4:2:0)인 경우에만 사용됩니다. 4:2:2 또는 4:4:4 형식으로 사용되는 경우 중요한 메모리 맞춤 경계를 지나 일반적인 매크로 블록 컨트롤 명령의 크기가 증가하므로 변환 계수 구조 내의 EOB만 4:2:0이 아닌 경우 각 블록의 계수 수를 결정하는 데 사용됩니다. bNumCoef의 목적은 존재하는 계수 수로 표현된 잔차 차이 데이터 버퍼의 각 블록에 대해 존재하는 데이터의 양을 나타내는 것입니다. DXVA_ConfigPictureDecodebConfig4GroupedCoefs 멤버가 1이면 bNumCoef는 블록에 대해 전송된 실제 계수 수 또는 4의 배수로 반올림된 값 중 하나를 포함할 수 있습니다. 이러한 계수에 대한 데이터는 동일한 순서로 잔차 버퍼에 있습니다.
wTotalNumCoef
wTotalNumCoef 구조체 멤버는 전체 매크로 블록에 대한 잔차 차이 데이터 버퍼의 총 계수 수를 나타냅니다. 이 멤버는 HostResidDiff가 0이고 DXVA_PictureParametersbChromaFormat 멤버가 1(4:2:0)과 같지 않은 경우에만 사용됩니다.