다음을 통해 공유


DXVA_MBctrl_P_OffHostIDCT_1 구조체(dxva.h)

DXVA_MBctrl_P_OffHostIDCT_1 구조체는 호스트 디코더에 의해 macroblock당 한 번 가속기로 전송되어 오프 호스트 IDCT를 사용하는 대부분의 비인트라 그림에 대해 macroblock 컨트롤 명령을 지정합니다.

통사론

typedef struct _DXVA_MBctrl_P_OffHostIDCT_1 {
  WORD         wMBaddress;
  WORD         wMBtype;
  DWORD        dwMB_SNL;
  WORD         wPatternCode;
  BYTE         bNumCoef[DXVA_NumBlocksPerMB_420];
  DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_OffHostIDCT_1;

회원

wMBaddress

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

wMBtype

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

비트 설명
15-12 MvertFieldSel_3(가장 중요한 비트 15비트)에서 MvertFieldSel_0(비트 12)
매크로 블록 컨트롤 명령의 뒷부분에서 보낸 해당 동작 벡터에 대한 세로 필드 선택을 지정합니다. 프레임 그림 구조가 있는 프레임 기반 동작(예: H.261 및 H.263)의 경우 이러한 비트는 모두 0이어야 합니다. 이러한 비트의 사용은 MPEG-2 섹션 6.3.17.2의 해당 비트에 대해 지정된 것과 동일합니다.
11 예약 비트
0이어야 합니다.
10 HostResidDiff
공간 도메인 잔차 디코딩된 블록을 보낼지 또는 현재 macroblock에 대해 호스트 외부 IDCT에 대해 변환 계수를 보낼지 여부를 지정합니다.
bConfigResidDiffHost가 0인 경우 이 플래그는 0이어야 합니다. bConfigResidDiffAccelerator가 0인 경우 이 플래그는 1이어야 합니다. 이 플래그는 항상 DXVA_MBctrl_P_OffHostIDCT_1 0과 같습니다.
9 및 8 MotionType
그림의 동작 유형을 지정합니다. 예를 들어 프레임 그림 구조가 있는 프레임 기반 동작의 경우(H.261에서와 같이) 비트 9는 1이어야 하고 비트 8은 0이어야 합니다.
이러한 비트의 사용은 이러한 비트가 MPEG-2에 있는 경우 MPEG-2에서 frame_motion_type 또는 field_motion_type 비트를 사용하는 것과 직접 일치합니다. 이러한 비트의 사용은 다음 설명 섹션에서 자세히 설명합니다.
7 및 6 MBscanMethod
사용할 검사 메서드를 지정합니다.
bPicScanFixed가 1이면 bPicScanMethod와 같아야 합니다.
bConfigHostInverseScan이 0이면 MBscanMethod는 다음 값 중 하나여야 합니다.
  • 비트 6은 0이고 비트 7은 지그재그 검사의 경우 0입니다(MPEG-2 그림 7-2).
  • 비트 6은 1이고 비트 7은 대체 세로 검사의 경우 0입니다.
  • 비트 6은 0이고 비트 7은 대체 가로 검사의 경우 1입니다.
bConfigHostInverseScan이 1이면 MBscanMethod는 다음 값과 같아야 합니다.
  • 비트 6은 1이고 비트 7은 절대 계수 주소를 사용하여 임의 검색에 대해 1입니다.
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
현재 매크로 블록 예측에 대해 H.261 루프 필터(H.261의 섹션 3.2.3)가 활성 상태인지 여부를 지정합니다. H.261 루프 필터는 분리 가능한 Â1/4, Â1/2, Â1/4 필터로 H.261 매크로 블록의 6개 블록 모두에 가로 및 세로로 적용됩니다. 단, 블록 가장자리에서는 탭 중 하나가 블록 밖으로 떨어집니다. 이러한 경우 필터는 계수 0, 1, 0으로 변경됩니다. 전체 산술 정밀도는 2차원 필터 프로세스의 출력에서 8비트 정수로 반올림하여 유지됩니다(반올림되는 반정수 이상 값).
3 Motion4MV
MotionForward가 0이거나 DXVA_PictureParameters bPic4MVallowed 멤버가 0인 경우 H.263 부록 F 및 J.Motion4MV에 사용된 것처럼 앞으로 이동이 매크로 블록의 네 가지 광원 블록 각각에 대해 고유 동작 벡터를 사용한다는 것을 나타냅니다.
2 MotionBackward
MPEG-2의 해당 macroblock_motion_backwardparameter 대해 지정된 대로 사용됩니다. DXVA_PictureParameters bPicBackwardPrediction 멤버가 0이면 MotionBackward는 0이어야 합니다. 이 비트의 사용은 다음 설명 섹션에서 자세히 설명합니다.
1 MotionForward
MPEG-2의 해당 macroblock_motion_forward 대해 지정된 대로 사용됩니다. 이 비트의 사용은 다음 설명 섹션에서 자세히 설명합니다.
0 IntraMacroblock
매크로 블록이 인트라로 코딩되고 현재 매크로 블록에 동작 벡터가 사용되지 않음을 나타냅니다. macroblock_intrain MPEG-2에 해당합니다. 이 비트의 사용은 다음 설명 섹션에서 자세히 설명합니다.

dwMB_SNL

현재 매크로 블록 다음에 생성할 건너뛴 매크로 블록 수를 지정하고 현재 매크로 블록 블록의 잔차 데이터 위치를 나타냅니다. 이 멤버에는 가장 중요한 8비트에서 MBskipsFollowing MBdataLocation 최소 24비트에서 두 개의 변수가 포함됩니다. MBskipsFollowing 현재 매크로 블록 다음에 생성될 건너뛴 매크로 블록의 수를 나타냅니다. MBdataLocation IDCT 잔차 블록 데이터 버퍼의 인덱스입니다. 이 인덱스는 32비트 배수로 표현된 현재 macroblock 블록의 잔차 데이터 위치를 나타냅니다.

wPatternCode

매크로 블록의 각 블록에 대해 잔차 데이터가 전송되는지 여부를 나타냅니다.

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

DXVA_ConfigPictureDecodebConfigSpatialResidInterleaved 멤버가 1이면 호스트 기반 잔차가 사용 중인 YUV 픽셀 형식과 일치하는 크로마 인터리브 형식으로 전송됩니다. 이 경우 각 Cb 및 공간적으로 해당하는 Cr 블록 쌍은 단일 잔차 데이터 구조 단위로 처리됩니다. 이렇게 하면 wPatternCode값이나 의미가 변경되지 않지만 이러한 데이터 블록 중 하나에 wPatternCode해당 비트 집합이 있을 때마다 Cb 및 Cr 데이터 블록 쌍의 각 멤버가 모두 전송됨을 의미합니다. 특정 데이터 블록에 대한 wPatternCode 비트가 0이면 이 페어링에서 wPatternCode 비트가 0인 블록에 대해 잔차 데이터 블록을 보내야 할 때마다 해당 잔차 데이터 값을 0으로 보내야 합니다.

bNumCoef[DXVA_NumBlocksPerMB_420]

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

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

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

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

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

매크로 블록의 동작 벡터 값을 포함하는 배열로, 각각 DXVA_MVvalue 구조를 사용하여 표현됩니다.

발언

MBskipsFollowing 지정한 건너뛴 각 매크로 블록은 wMBaddress 값을 증가시키고 동일한 macroblock 컨트롤 명령을 반복하는 것과 수학적으로 동일한 방식으로 생성되어야 합니다. MBskipsFollowing 대한 0이 아닌 값을 가진 모든 macroblock 컨트롤 명령은 각 매크로 블록에 대해 동작 보정 예측을 건너뛰는 방법을 지정하며 건너뛴 일련의 매크로 블록 중 첫 번째 생성에 대한 명시적 비스칩 사양에 해당합니다(MBskipsFollowing값 제외). 따라서 MBskipsFollowing 0이 아닐 때마다 Motion4MV, IntraMacroblock및 bNumCoef 값은 모두 0과 같아야 합니다.

MBdataLocation IDCT 잔차 블록 데이터 버퍼의 인덱스로, 32비트의 배수로 표현된 현재 macroblock 블록의 잔차 데이터 위치를 나타냅니다. macroblock 컨트롤 명령 버퍼의 첫 번째 macroblock에 대해 0이어야 합니다. wPatternCode 0인 경우 MBdataLocation 값이 포함될 수 있습니다. wPatternCode 경우 디코더가 권장되지만 이 값을 0으로 설정하거나 다음 macroblock 컨트롤 명령과 동일한 값으로 설정할 필요는 없습니다.

건너뛴 매크로 블록이 생성되는 방법에 대한 자세한 내용은 건너뛴 매크로 블록 생성참조하세요.

IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSelMVector 조합이 매크로 블록 제어 명령 구조 표에 표시됩니다.

요구 사항

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

참고 항목

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MVvalue

DXVA_PictureParameters

DXVA_TCoefSingle