DXVA_MBctrl_P_OffHostIDCT_1結構 (dxva.h)

主機解碼器會將每個宏區區塊轉送一次DXVA_MBctrl_P_OffHostIDCT_1結構給快速鍵,以使用離主機識別碼CT 為大部分非封鎖圖片指定 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 位址

wMBtype

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

描述
15 到 12 MvertFieldSel_3 (位 15 到MvertFieldSel_0 (位 12) 的最有效位)
指定宏區塊控制項命令稍後傳送之對應動作向量的垂直欄位選取範圍。 例如,對於具有框架圖片結構的框架式動作 (例如,針對 H.261 和 H.263) ,這些位都必須全部為零。 這些位的使用方式與針對 MPEG-2 第 6.3.17.2 節中對應的位所指定的位相同。
11 保留位
必須為零。
10 HostResidDiff
指定是否傳送空間網域剩餘差異解碼區塊,或是否針對目前宏區塊的離主機識別碼CT 傳送轉換係數。
如果 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 必須是下列其中一個值:
  • 位 6 為零,而 zigzag 掃描的位 7 為零, (MPEG-2 圖 7-2) 。
  • 位 6 是 1,而位 7 是替代垂直掃描的零。
  • 位 6 為零,而位 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 必須為零,而且如果宏區塊有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 宏區塊中的所有六個區塊,但其中一個點選落在區塊外部的區塊邊緣除外。 在這種情況下,篩選準則會變更為具有係數 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

指定要在目前宏區塊之後產生的略過宏區塊數目,並指出目前 macroblock 區塊的剩餘差異資料位置。 此成員包含兩個變數: MBskipsFollowing 在最顯著 8 位中,而 MBdataLocation 則為最小有效 24 位。 MBskipsFollowing 指出在目前的 macroblock 之後要產生的略過宏區塊數目。 MBdataLocation 是 IDCT 剩餘差異區塊資料緩衝區的索引。 此索引表示目前宏區塊的剩餘差異資料位置,以 32 位的倍數表示。

wPatternCode

指出是否針對 macroblock 中的每個區區塊轉送剩餘差異資料。

wPatternCode (的 bit (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 區塊,後面接著 4:2:2 區塊的 Cb,後面接著 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:4) 的較低位位置。

如果DXVA_ConfigPictureDecode 的 bConfigSpatialResidInterleaved 成員為 1,則會以符合使用中 YUV 像素格式的 chroma 交錯形式傳送主機型剩餘差異。 在此情況下,每個 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 格式,則會增加一般 macroblock 控制項命令的大小,超過重要的記憶體對齊界限。 因此,DXVA_TCoefSingle結構內的TCoefEOB位用於判斷非 4:2:0 案例中每個區塊中的係數數目。

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

MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]

陣列,包含宏區塊的動作向量 () 值,每個都使用 DXVA_MVvalue 結構表示。

備註

MBskipsFollowing所指定的每個略過宏區塊都必須以數學方式產生,相當於遞增wMBaddress的值,然後重複相同的宏區塊控制項命令。 任何具有 MBskipsFollowing 非零值的 macroblock 控制項命令,都會指定如何針對要略過的每個宏區塊執行動作補償預測,而且相當於 (,但 MBskipsFollowing) 為一系列已略過宏區塊第一個產生之明確非skip 規格的值除外。 因此,每當 MBskipsFollowing 不是零時,下列值都必須等於零: Motion4MVIntraMacroblockbNumCoef

MBdataLocation 是 IDCT 殘差區塊資料緩衝區的索引,表示目前宏區塊區塊的剩餘差異資料位置,以 32 位的倍數表示。 宏區塊控制項命令緩衝區中第一個宏區塊必須是零。 如果wPatternCode為零,MBdataLocation可能會包含任何值。 當 wPatternCode為零時,建議解碼器,但不需要將此值設定為零,或設定為與下一個 macroblock 控制項命令相同的值。

如需如何產生略過宏區塊的詳細資訊,請參閱 產生略過宏區塊

IntraMacroblockMotionForwardMotionBackwardMotionTypeMvertFieldSelMVector的有效組合會顯示在Macroblock 控制項命令結構的第一個部分的資料表中。

規格需求

   
標頭 dxva.h (包含 Dxva.h)

另請參閱

DXVA_ConfigPictureDecode

DXVA_MBctrl_P_HostResidDiff_1

DXVA_MVvalue

DXVA_PictureParameters

DXVA_TCoefSingle