DXVA_MBctrl_P_OffHostIDCT_1結構 (dxva.h)
主機譯碼器會將每個宏區塊傳送一次DXVA_MBctrl_P_OffHostIDCT_1結構,以使用非主機 IDCT 指定大部分非封鎖圖片的宏區塊控制命令。
語法
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
指定要處理的宏區塊類型。 下列位會定義宏區塊處理。
位 | 描述 |
---|---|
15 到 12 | MvertFieldSel_3 (位 15 到MvertFieldSel_0 (位 12 位) ) 指定宏區塊控件命令稍後傳送之對應動作向量的垂直欄位選取範圍。 例如,對於具有框架圖片結構 (的框架式動作,例如 H.261 和 H.263) ,這些位都必須全部為零。 這些位的使用方式與針對 MPEG-2 第 6.3.17.2 節中對應的位所指定的位相同。 |
11 | 保留位 必須為零。 |
10 | HostResidDiff 指定是否傳送空間網域剩餘差異譯碼區塊,或是否針對目前宏區塊的離主機 IDCT 傳送轉換係數。 如果 bConfigResidDiffHost 為零,此旗標必須為零。 如果 bConfigResidDiffAccelerator 為零,此旗標必須是 1。 此旗標在 DXVA_MBctrl_P_OffHostIDCT_1 中一律等於零。 |
9 和 8 | MotionType 指定圖片中的動作類型。 例如,對於具有框架圖片結構 (的框架式動作,如 H.261) 所示,位 9 必須是 1,而位 8 必須是零。 當 MPEG-2 中存在這些位時,使用這些位會直接對應至使用 MPEG-2 中的frame_motion_type或field_motion_type位。 下列一節會進一步說明使用這些位。 |
7 和 6 | MBscanMethod 指定要使用的掃描方法。 如果 bPicScanFixed 為 1,這必須等於 bPicScanMethod。 如果 bConfigHostInverseScan 為零,MBscanMethod 必須是下列其中一個值:
|
5 | FieldResidual 指出剩餘差異區塊是否使用 MPEG-2 中指定的欄位 IDCT 結構。 如果 DXVA_PictureParameters 的 bPicStructure 成員為 1 或 2,則此旗標必須是 1 或 2。 當用於 MPEG-2 時,如果 MPEG-2 語法中的frame_pred_frame_DCT旗標為 1,則 FieldResidual 必須等於 MPEG-2 語法的dct_type元素,如果宏區塊有dct_type。 |
4 | H261LoopFilter 指定 H.261 循環篩選 (H.261 第 3.2.3 節) 目前宏區塊預測是否作用中。 H.261 循環篩選是可分隔的 Â1/4、Â1/2、Â1/4 篩選條件,同時水準和垂直套用至 H.261 宏區塊中的所有六個區塊,但其中一個點選落在區塊外部的區塊邊緣除外。 在這種情況下,篩選條件會變更為具有係數 0、1、0。 完整算術有效位數會保留在 2D 篩選程式的輸出中四捨五入為 8 位的整數, (半整數或較高的值四捨五入) 。 |
3 | Motion4MV 表示向前動作會針對宏區塊中的四個亮度區塊使用相異的動作向量,如 H.263 附錄 F 和 J.Motion4MV 所使用,如果 MotionForward 為零,或如果 DXVA_PictureParameters 的 bPic4MVallowed 成員為零,則必須為零。 |
2 | MotionBackward 用於 MPEG-2 中對應macroblock_motion_backwardparameter的 指定。 如果 DXVA_PictureParameters 的 bPicBackwardPrediction 成員為零,MotionBackward 必須是零。 下列一節會進一步說明此位的使用方式。 |
1 | MotionForward 用於 MPEG-2 中對應macroblock_motion_forward的 指定。 下列一節會進一步說明此位的使用方式。 |
0 | IntraMacroblock 表示宏區塊會編碼為內部,而且目前宏區塊不會使用任何動作向量。 對應至 macroblock_intrain MPEG-2。 下列一節會進一步說明此位的使用方式。 |
dwMB_SNL
指定要在目前宏區塊之後產生的略過宏區塊數目,並指出目前宏區塊之剩餘差異數據的位置。 此成員包含兩個變數: MBskipsFollowing 在最顯著的 8 位中,而 MBdataLocation 在最小有效 24 位中。 MBskipsFollowing 指出在目前宏區塊之後產生的略過宏區塊數目。 MBdataLocation 是 IDCT 剩餘差異區塊數據緩衝區的索引。 此索引表示目前宏區塊的剩餘差異數據位置,以32位的倍數表示。
wPatternCode
指出是否針對宏區塊中的每個區塊傳送剩餘差異數據。
wPatternCode (的位 (11-i) ,其中 i 是 macroblock 內區塊的索引,而 bit 0 代表最小有效位) 表示是否針對區塊 i (請參閱 Macroblock 導向圖片譯碼,以取得詳細資訊) 。值 i 是宏區塊內區塊的索引,如 MPEG-2 圖 6-10 中所指定, 6-11 和 6-12 (Y 的點陣掃描順序,後面接著 4:2:0 區塊的 Cb,後面接著 4:2:0 區塊 Cr,後面接著 4:2:2 區塊的 Cb,後面接著 4:2:2 區塊,後面接著 4:4:4 區塊的 Cb, 後面接著 4:4:4 區塊的 Cr) 。 編碼區塊 (區塊的數據,其位 (11-i) 等於 1) ,可在相同索引編製順序的剩餘編碼緩衝區中找到, (增加 i) 。 若為 4:2:0 MPEG-2 數據, wPatternCode 的值會對應至 CBP 的譯碼值,以將 CBP 的譯碼值移到左邊, (用於 4:2:2 和 4:4:4 色度格式的較低位位置) 。
如果 DXVA_ConfigPictureDecode 的 bConfigSpatialResidInterleaved 成員為 1,則會以與使用中 YUV 像素格式相符的 chroma-interleaved 格式傳送主機型剩餘差異。 在此情況下,每個 Cb 和空間對應的 Cr 區塊都會被視為單一殘差差異數據結構單位。 這不會改變 wPatternCode 的值或意義,但表示每組 Cb 和 Cr 數據區塊的成員都會在 wPatternCode 中設定對應的位時傳送。 如果特定數據區塊 的 wPatternCode 位為零,每當此配對需要傳送 wPatternCode 位等於零的區塊時,對應的剩餘差異數據值必須傳送為零。
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 格式,則會增加超過重要記憶體對齊界限的典型宏區塊控件命令大小。 因此,DXVA_TCoefSingle 結構內的 TCoefEOB 位用於判斷非 4:2:0 案例中每個區塊中的係數數目。
bNumCoef 的目的是表示剩餘差異數據緩衝區中每個區塊的數據數量,以係數的數目表示。 當 DXVA_ConfigPictureDecode 結構的 bConfig4GroupedCoefs 成員為 1 時,bNumCoef 可能包含為區塊傳送的實際係數數目,或該值四捨五入為四的倍數。 這些係數的數據會以相同順序在剩餘差異緩衝區中找到。
MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]
陣列,其中包含宏區塊的動作向量值 (s) ,每個陣列都是使用 DXVA_MVvalue 結構表示。
備註
MBskipsFollowing 所指定的每個略過宏區塊,都必須以數學方式產生,相當於遞增 wMBaddress 的值,然後重複相同的宏區塊控件命令。 任何具有 MBskipsFollowing 非零值的宏區塊控件命令,會指定要針對每個要略過之宏區塊執行動作補償預測的方式,而且對等 (,除了 MBskipsFollowing) 到第一個略過宏區塊系列之產生之明確非skip 規格的值之外,也是相等的。 因此,每當 MBskipsFollowing 不是零時,下列值都必須等於零: Motion4MV、 IntraMacroblock 和 bNumCoef。
MBdataLocation 是 IDCT 殘差區塊數據緩衝區的索引,表示目前宏區塊區塊的剩餘差異數據位置,以 32 位的倍數表示。 宏區塊控件命令緩衝區中第一個宏區塊必須是零。 如果 wPatternCode 為零,MBdataLocation 可能會包含任何值。 當 wPatternCode 為零時,建議譯碼器,但不需要將此值設定為零,或設定為與下一個 macroblock 控制項命令相同的值。
如需如何產生略過宏區塊的詳細資訊,請參閱 產生略過宏區塊。
IntraMacroblock、MotionForward、MotionBackward、MotionType、MvertFieldSel 和 MVector 的有效組合會顯示在 Macroblock 控件命令結構的第一個部分的數據表中。
規格需求
需求 | 值 |
---|---|
標頭 | dxva.h (包含 Dxva.h) |