共用方式為


DXVA_MBctrl_I_OffHostIDCT_1結構 (dxva.h)

主機譯碼器會針對每個巨集區塊傳送一次DXVA_MBctrl_I_OffHostIDCT_1結構,以在使用離主機 IDCT 時指定 4:2:0 內圖片的巨集區塊控制命令。

語法

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 位址。

wMBtype

指定要處理的巨集區塊類型。 下列位會定義 macroblock 處理。

描述
15 到 12 MvertFieldSel_3 (位元 15, 最大有效位) 到 MvertFieldSel_0 (位 12)
必須是零。
11 保留位
必須是零。
10 HostResidDiff
指定是否傳送空間域剩餘差異譯碼區塊,或是否針對目前巨集區塊的異主機 IDCT 傳送轉換係數。
HostResidDiff 旗標在此結構中一律等於零。 如果 bConfigResidDiffHost 為零,此旗標必須是零。 如果 bConfigResidDiffAccelerator 為零,這個旗標必須是 1。 bConfigResidDiffHost 和 bConfigResidDiffAccelerator 成員包含在 DXVA_ConfigPictureDecode 結構中。
9 和 8 MotionType
這不適用於圖片內部。 這兩個位都必須是零。
7 和 6 MBscanMethod
指定 macroblock 控制項命令的掃描方法。 如果 bPicScanFixed 為 1,這必須等於 bPicScanMethod。
如果 bConfigHostInverseScan 為零,MBscanMethod 就是下列其中一個值:
  • 零 âˆ' 曲折掃描 (MPEG-2 圖 7-2)
  • 1 âˆ' alternate-vertical scan (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 必須是零,如果巨集區塊有dct_type,則必須等於 MPEG-2 語法的 dct_type 元素。
4 H261LoopFilter
必須是零。
3 Motion4MV
必須是零。
2 MotionBackward
必須是零。
1 MotionForward
必須是零。
0 IntraMacroblock
必須是 1。

dwMB_SNL

wPatternCode

指出是否針對巨集區塊中的每個區塊傳送剩餘差異數據。 在圖片中,會針對巨集區塊中的每個區塊傳送剩餘差異數據。 wPatternCode 中參考目前巨集區塊之所有區塊的位必須在 DXVA_MBctrl_I_OffHostIDCT_1 中為 1。

wPatternCode 的 bit (11-i) 的 bit (其中 bit 0 是最小有效位 ) 的 bit (其中 bit 0 是最小有效位) 的 bit (i, 其中 i 是 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 區塊,其次是 Cb 的 4:4:4 區塊,其次是 Cr 的 4:4:4 區塊。 編碼區塊的數據(具有位 (11-i) 等於 1 的區塊,位於相同索引編製順序的剩餘編碼緩衝區中(增加 i)。 對於 4:2:0 MPEG-2 數據,wPatternCode 的值 會對應到將 CBP 譯碼值(編碼區塊模式)移轉至左邊的六個位位置(用於 4:2:2 和 4:4:4 的低位位置)。

bNumCoef[DXVA_NumBlocksPerMB_420]

bNumCoef 陣列中的每個值都會指出巨集區塊 i i 之剩餘差異數據緩衝區中的係數數目。

陣列下標 i 是巨集區塊內的索引,如 MPEG-2 影片圖 6-10、6-11 和 6-12 所指定(Y 的點陣掃描順序,後面接著 Cb,後面接著 Cr)。

只有當 HostResidDiff 旗標 (wMBtype 中的位 10 位為零,而 bChromaFormat 為 1(4:2:0)時,才會使用此成員。 如果用於 4:2:2 或 4:4:4 格式,則會增加超過重要記憶體對齊界限的典型巨集區塊控件命令大小。 因此,DXVA_TCoefSingle 結構內的 TCoefEOB 位用於判斷非 4:2:0 案例中每個區塊中的係數數目。

bNumCoef 的目的是指出剩餘差異數據緩衝區中每個區塊的數據數量,以係數數目表示。 當 DXVA_ConfigPictureDecode 結構的 bConfig4GroupedCoefs 成員為 1 時,bNumCoef 可能包含針對區塊傳送的實際係數數目,或將該值四捨五入為四分之一的倍數。 這些係數的數據會以相同順序在剩餘差異緩衝區中找到。

言論

略過的巨集區塊不會由圖片內部使用,因此 MBskipsFollowing 變數必須是零。 MBdataLocation 變數必須是macroblock控制項命令緩衝區中第一個巨集區塊的零。 如需如何產生略過巨集區塊的詳細資訊,請參閱 產生略過的巨集區塊

要求

要求 價值
標頭 dxva.h (包括 Dxva.h)

另請參閱

DXVA_ConfigPictureDecode

DXVA_MBctrl_I_HostResidDiff_1

DXVA_PictureParameters

DXVA_TCoefSingle