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位址的範例,請參閱 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 控制項命令的 scan 方法。 如果 bPicScanFixed 為 1,這必須等於 bPicScanMethod。 如果 bConfigHostInverseScan 為零,MBscanMethod 是下列其中一個值:
|
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
指出是否針對macroblock中的每個區塊傳送剩餘差異數據。 在內圖片中,會針對macroblock中的每個區塊傳送剩餘差異數據。 參考目前宏區塊之 wPatternCode 中的位必須是 1 中的DXVA_MBctrl_I_OffHostIDCT_1。
wPatternCode (bit (11-i) ,其中 bit 0 是最小有效位) 指出是否針對區塊 i 傳送剩餘差異數據, 其中 i 是 MPEG-2 圖 6-10、6-11 和 6-1 (2 中宏區塊的索引,後面接著 4:2:0 Cb 的點陣掃描順序, 後面接著 Cr 的 4:2:0 區塊,後面接著 4:2:2 區塊,後面接著 4:2:2 區塊,後面接著 4:4:4 區塊的 Cb,後面接著 4:4:4:4 區塊的 Cr) 。 編碼區塊的數據 (這些區塊的位 (11-i) 等於 1) ,可在增加 i) (的剩餘編碼緩衝區中找到。 對於 4:2:0 MPEG-2 數據, wPatternCode 的值會對應到將 CBP (編碼區塊模式的譯碼值,) 左移六個位位置, (用於 4:2:2 和 4:4:4:4 色碼格式) 。
bNumCoef[DXVA_NumBlocksPerMB_420]
bNumCoef 陣列中的每個值都會指出宏區塊 i 之剩餘差異數據緩衝區中的係數數目。
陣組下標 i 是宏區塊內區塊的索引,如 MPEG-2 影片圖 6-10、6-11 和 6-12 (Y 點陣掃描順序,後面接著 Cb,後面接著 Cr) 。
只有當 wMBtype) 中的 HostResidDiff 旗標 (位 10 為零,bChromaFormat 為 1 (4:2:0) 時,才會使用此成員。 如果用於 4:2:2 或 4:4:4 格式,則會增加一般 macroblock 控制項命令的大小,超過重要的記憶體對齊界限。 因此,DXVA_TCoefSingle 結構內的 TCoefEOB 位用於判斷非 4:2:0 案例中每個區塊中的係數數目。
bNumCoef 的目的是表示剩餘差異數據緩衝區中每個區塊的數據數量,以存在的係數數目表示。 當DXVA_ConfigPictureDecode結構的 bConfig4GroupedCoefs 成員為 1 時,bNumCoef 可能包含針對區塊傳送的實際係數數目,或將該值四捨五入為四的倍數。 這些係數的數據會以相同順序在剩餘差異緩衝區中找到。
備註
略過的宏區塊不會由圖片內部使用,因此 MBskipsFollowing 變數必須是零。 MBdataLocation 變數必須是macroblock控件命令緩衝區中第一個宏區塊的零。 如需如何產生略過宏區塊的詳細資訊,請參閱 產生略過的宏區塊。
規格需求
需求 | 值 |
---|---|
標頭 | dxva.h (包含 Dxva.h) |