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의 macroblock 주소를 래스터 스캔 순서로 지정합니다. 매크로 블록 주소의 예는 macroblock 주소를 참조하세요.
wMBtype
처리 중인 macroblock의 형식을 지정합니다. 다음 비트는 macroblock 처리를 정의합니다.
Bits | 설명 |
---|---|
15-12 | MvertFieldSel_3(가장 중요한 비트 15비트)에서 MvertFieldSel_0(비트 12) 나중에 macroblock 컨트롤 명령에서 보낸 해당 동작 벡터에 대한 세로 필드 선택을 지정합니다. 프레임 그림 구조가 있는 프레임 기반 동작(예: H.261 및 H.263)의 경우 이러한 비트는 모두 0이어야 합니다. 이러한 비트의 사용은 MPEG-2 섹션 6.3.17.2의 해당 비트에 대해 지정된 것과 동일합니다. |
11 | 예약 비트 0이어야 합니다. |
10 | HostResidDiff 공간 도메인 잔차 디코딩 블록이 전송되는지 또는 현재 매크로 블록에 대해 오프 호스트 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는 다음 값 중 하나여야 합니다.
|
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 앞으로 이동은 H.263 부속서 F 및 J.Motion4MV에서 사용되는 것처럼 매크로 블록의 4개 광도 블록 각각에 대해 고유한 동작 벡터를 사용한다는 것을 나타냅니다. MotionForward가 0이거나 DXVA_PictureParameters bPic4MVallowed 멤버가 0인 경우 0이어야 합니다. |
2 | MotionBackward MPEG-2의 해당 macroblock_motion_backwardparameter 대해 지정된 대로 사용됩니다. DXVA_PictureParameters bPicBackwardPrediction 멤버가 0이면 MotionBackward는 0이어야 합니다. 이 비트의 사용은 다음 설명 섹션에서 자세히 설명합니다. |
1 | MotionForward MPEG-2의 해당 macroblock_motion_forward 대해 지정된 대로 사용됩니다. 이 비트의 사용은 다음 설명 섹션에서 자세히 설명합니다. |
0 | IntraMacroblock macroblock이 인트라로 코딩되고 현재 매크로 블록에 사용되는 동작 벡터가 없음을 나타냅니다. macroblock_intrain MPEG-2에 해당합니다. 이 비트의 사용은 다음 설명 섹션에서 자세히 설명합니다. |
dwMB_SNL
현재 매크로 블록 다음에 생성할 건너뛴 매크로 블록 수를 지정하고 현재 매크로 블록 블록에 대한 잔차 데이터의 위치를 나타냅니다. 이 멤버에는 가장 중요한 8 비트에서 MBskipsFollowing , 가장 중요한 24비트에서 MBdataLocation 이라는 두 가지 변수가 포함되어 있습니다. MBskipsFollowing 은 현재 매크로 블록 다음에 생성될 건너뛴 매크로 블록 수를 나타냅니다. MBdataLocation 은 IDCT 잔차 블록 데이터 버퍼에 대한 인덱스입니다. 이 인덱스는 32비트 배수로 표현된 현재 macroblock 블록의 잔차 데이터 위치를 나타냅니다.
wPatternCode
macroblock의 각 블록에 대해 잔차 데이터가 전송되는지 여부를 나타냅니다.
wPatternCode의 비트(11-i)(여기서 는 macroblock 내 블록의 인덱스이고 비트 0은 가장 중요한 비트를 나타냄)는 잔차 데이터가 블록 i에 대해 전송되는지 여부를 나타냅니다(자세한 내용은 Macroblock 지향 그림 디코딩 참조). 값 i는 MPEG-2 그림 6-10에 지정된 대로 macroblock 내 블록의 인덱스입니다. 6-11, 6-12(Y의 래스터 스캔 순서, 래스터 스캔 순서로 Cb 4:2:0 블록, Cr의 4:2:0 블록, Cb의 4:2:2 블록, 4:2:2 블록, 그 다음 4:4:4:4 블록, Cb, 뒤에 Cr의 4:4:4 블록이 잇습니다. 코딩된 블록의 데이터(비트(11-i)가 1과 같은 블록)은 동일한 인덱싱 순서(i 증가)의 잔차 코딩 버퍼에 있습니다. 4:2:0 MPEG-2 데이터의 경우 wPatternCode 값은 CBP의 디코딩된 값을 6비트 위치(4:2:2 및 4:4:4 크로마 형식에 사용되는 하위 비트 위치)로 왼쪽으로 이동하는 데 해당합니다.
DXVA_ConfigPictureDecodebConfigSpatialResidInterleaved 멤버가 1이면 호스트 기반 잔차가 사용 중인 YUV 픽셀 형식과 일치하는 chroma 인터리브 형식으로 전송됩니다. 이 경우 각 Cb 및 공간적으로 해당하는 Cr 블록 쌍은 단일 잔차 데이터 구조 단위로 처리됩니다. 이는 wPatternCode의 값이나 의미를 변경하지는 않지만 이러한 데이터 블록 중 하나에 wPatternCode에 해당 비트 집합이 있을 때마다 각 Cb 및 Cr 데이터 블록 쌍의 멤버가 모두 전송됨을 의미합니다. 특정 데이터 블록에 대한 wPatternCode 의 비트가 0이면 wPatternCode 비트가 0인 블록에 대해 잔차 데이터 블록을 보내야 할 때마다 해당 잔차 데이터 값을 0으로 보내야 합니다.
bNumCoef[DXVA_NumBlocksPerMB_420]
bNumCoef 배열의 각 값은 macroblock의 각 블록 i에 대한 잔차 데이터 버퍼의 계수 수를 나타냅니다.
배열 아래 첨자 i 는 MPEG-2 비디오 그림 6-10, 6-11 및 6-12(Y에 대한 래스터 스캔 순서, Cb, Cr 다음에 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의 배수로 반올림된 값이 포함될 수 있습니다. 이러한 계수에 대한 데이터는 동일한 순서로 잔차 버퍼에 있습니다.
MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]
매크로 블록의 동작 벡터 값을 포함하는 배열로, 각각 DXVA_MVvalue 구조체를 사용하여 표시됩니다.
설명
MBskipsFollowing에서 지정한 건너뛴 각 macroblock은 wMBaddress 값을 증분한 다음 동일한 macroblock 컨트롤 명령을 반복하는 것과 수학적으로 동일한 방식으로 생성되어야 합니다. MBskipsFollowing에 대해 0이 아닌 값을 가진 모든 macroblock 컨트롤 명령은 각 매크로 블록에 대해 동작 보정 예측을 수행하는 방법을 지정하며 건너뛴 매크로 블록 시리즈 중 첫 번째 생성의 명시적 비스칩 사양에 해당합니다(MBskipsFollowing 값 제외). 따라서 MBskipsFollowing 이 0이 아닐 때마다 Motion4MV, IntraMacroblock 및 bNumCoef 값은 모두 0과 같아야 합니다.
MBdataLocation 은 IDCT 잔차 블록 데이터 버퍼에 대한 인덱스로, 32비트의 배수로 표현되는 현재 macroblock 블록의 잔차 데이터 위치를 나타냅니다. macroblock 컨트롤 명령 버퍼의 첫 번째 macroblock에 대해 0이어야 합니다. wPatternCode가 0인 경우 MBdataLocation에 값이 포함될 수 있습니다. wPatternCode가 0이면 디코더가 권장되지만 이 값을 0으로 설정하거나 다음 macroblock 컨트롤 명령과 동일한 값으로 설정할 필요는 없습니다.
건너뛴 매크로 블록이 생성되는 방법에 대한 자세한 내용은 건너뛴 매크로 블록 생성을 참조하세요.
IntraMacroblock, MotionForward, MotionBackward, MotionType, MvertFieldSel 및 MVector의 유효한 조합은 Macroblock 컨트롤 명령 구조의 첫 번째 부분에 있는 표에 표시됩니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | dxva.h(Dxva.h 포함) |