DXVA_MBctrl_P_HostResidDiff_1結構 (dxva.h)
主機譯碼器會為每個巨集區塊傳送一次DXVA_MBctrl_P_HostResidDiff_1結構,以在使用 主機型 IDCT時,為大多數非內嵌圖片案例指定 macroblock 控件命令。
語法
typedef struct _DXVA_MBctrl_P_HostResidDiff_1 {
WORD wMBaddress;
WORD wMBtype;
DWORD dwMB_SNL;
WORD wPatternCode;
WORD wPC_Overflow;
DWORD dwReservedBits2;
DXVA_MVvalue MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off];
} DXVA_MBctrl_P_HostResidDiff_1;
成員
wMBaddress
以點陣掃描順序指定目前巨集區塊的巨集區塊位址。 如需巨集區塊位址的範例,請參閱 macroblock 位址。
wMBtype
指定要處理的巨集區塊類型。 下列位會定義 wMBtype 的內容。
位 | 描述 |
---|---|
15 到 12 | MvertFieldSel_3 (位元 15, 最大有效位) 到 MvertFieldSel_0 (位 12) 指定巨集區塊控件命令稍後傳送之對應動作向量的垂直字段選取範圍。 對於框架圖片結構的畫面型動作(例如,H.261 和 H.263),這些位都必須是零。 這些位的使用與針對 MPEG-2 區段 6.3.17.2 中對應位指定的位相同。 |
11 | 保留位。 必須是零。 |
10 |
HostResidDiff 指定是否傳送空間域剩餘差異譯碼區塊,或是否針對目前巨集區塊的異主機 IDCT 傳送轉換係數。 HostResidDif 旗標在此結構中一律等於 1。 如果 bConfigResidDiffHost 為零,此旗標必須是零。 如果 bConfigResidDiffAccelerator 為零,這個旗標必須是 1。 |
9 和 8 |
MotionType 指定圖片中的動作類型。 例如,對於具有框架圖片結構的畫面型動作(如 H.261),位 9 必須是 1,而位 8 必須是零。 當這些位出現在 MPEG-2 中的第 6.3.17.1 節和表格 6-17 和 6-18 的 MPEG-2 視訊中時,使用這些位會直接對應至使用 frame_motion_type 或 field_motion_type 位。 下列一節會進一步說明使用這些位。 |
7 和 6 |
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 指定目前巨集區塊預測是否使用 H.261 循環篩選條件(H.261 的 Section 3.2.3)。 H.261 循環篩選條件是可分隔的 1/4、1/2、1/4 篩選條件,同時水準和垂直套用至 H.261 巨集區塊中的所有六個區塊,但區塊邊緣除外,其中一個點選會落在區塊外。 在這種情況下,篩選條件會變更為具有係數 0、1、0。 在 2D 篩選程式的輸出中,完整算術精確度會以四捨五入為 8 位整數來保留(半整數或更高值四捨五入)。 |
3 |
Motion4MV 變數,表示如果MotionForward為零,則如果MotionForward為零,則正向運動會針對巨集區塊中四個亮度區塊中的每一個使用相異運動向量,如 H.263 附錄 F 和 J. Motion4MV 中所使用的,則如果 MotionForward 為零,或如果 DXVA_PictureParameters 的 bPic4MVallowed 成員為零,則為零。 |
2 |
MotionBackward 用於針對 MPEG-2 中對應macroblock_motion_backward變數指定的方式。 如果DXVA_PictureParameters的 bPicBackwardPrediction 成員為零,MotionBackward 必須是零。 下列一節會進一步說明此位的使用。 |
1 |
MotionForward 用於 MPEG-2 中對應的macroblock_motion_forward變數。 下列一節會進一步說明此位的使用。 |
0 |
IntraMacroblock 表示巨集區塊會編碼為內部,而且目前巨集區塊不會使用任何運動向量。 對應至 macroblock_intrain MPEG-2。 下列一節會進一步說明此位的使用。 |
dwMB_SNL
指定要在目前巨集區塊之後產生的略過巨集區塊數目,並指出目前巨集區塊的剩餘差異數據位置。 此成員包含兩個變數:在最大 8 位中 MBskipsFollowing,而最小有效 24 位 MBdataLocation。 MBskipsFollowing 表示在目前巨集區塊之後要產生的略過巨集區塊數目。 MBdataLocation 是剩餘差異區塊數據緩衝區的索引。 此索引表示目前巨集區塊的剩餘差異數據位置,以32位的倍數表示。
wPatternCode
指出是否針對目前巨集區塊中的每個區塊傳送 剩餘差異數據。
wPatternCode 的位 (11-i) 的位 (其中位零是最小有效位 ) 的位 (其中位零是最小有效位) 的位 (11- i, 其中 i 是巨集區塊的索引,如 MPEG-2 圖 6-10 中所指定, 6-11 和 6-12 (Y 的點陣掃描順序,後面接著 4:2:0 Cb 的點陣掃描順序, 接著是 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 的較低位位置)。
如果 bConfigSpatialResidInterleaved DXVA_ConfigPictureDecode 成員為 1,則會以符合使用中 YUV 像素格式的色度交錯形式傳送主機殘差。 在此情況下,每個 Cb 和空間對應的 Cr 區塊會被視為單一剩餘差異結構單位。 這不會改變 wPatternCode 的值或意義,但表示每當其中一個數據區塊 wPatternCode中設定對應的位時,都會傳送每對 Cb 和 Cr 數據區塊的兩個成員。 如果特定數據區塊 wPatternCode 中的位為零,則每當此配對需要傳送具有 wPattern Code wPatternCode 之區塊的剩餘差異數據區塊時,對應剩餘差異數據值必須傳送為零。
wPC_Overflow
指定巨集區塊使用溢位剩餘差異數據。
使用主機型殘差譯碼搭配 bPicOverflowBlocks 成員 DXVA_PictureParameters 等於 1,IntraMacroblock 等於零(8-8 溢位方法),wPC_Overflow 包含溢位區塊的模式代碼。 (模式程序代碼是以與 wPatternCode 相同的方式指定。編碼溢位區塊的數據(位為 11-i) 等於 1 的區塊,位於相同索引編製順序的剩餘編碼緩衝區中(增加 i)。
dwReservedBits2
用於封裝和對齊的保留位。 必須是零。
MVector[DXVA_NumMV_OBMC_off_BinPBwith4MV_off]
陣列,包含巨集區塊的動作向量值,每個運動向量都會以 DXVA_MVvalue 結構表示。
言論
MBskipsFollowing 所指定的每個略過巨集區塊,都必須以數學方式產生,相當於遞增 wMBaddress 值,然後重複相同的巨集區塊控件命令。
具有 MBskipsFollowing 非零值的巨集區塊控件命令內容相當於 MBskipsFollowing的值,與略過巨集區塊系列第一個的內容相同。 因此,每當 MBskipsFollowing 不是零時,下列結構成員和變數都必須全部等於零:Motion4MV、IntraMacroblock、wPatternCode和 wPC_Overflow。 接著會以與第一個相同的方式產生每個後續略過的巨集區塊,但會遞增 wMBaddress 的值。
MBdataLocation,巨集區塊控件命令緩衝區中的第一個巨集區塊必須是零。 對於巨集區塊控件命令緩衝區中第一個巨集區塊以外的巨集區塊,如果 wPatternCode 為零,MBdataLocation 可能包含任何 值。 當 wPatternCode 為零時,建議譯碼器,但不需要將此值設定為零,或設定為與下一個 macroblock 控件命令中相同的值。
如需如何產生略過巨集區塊的詳細資訊,請參閱 產生略過的巨集區塊。
IntraMacroblock、MotionForward、MotionBackward、MotionType、MvertFieldSel和 MVector 的有效組合會顯示在 Macroblock Control Command Structure 第一部分的數據表中。
要求
要求 | 價值 |
---|---|
標頭 | dxva.h (包括 Dxva.h) |