Macroblock 控制項命令結構的第一個部分
泛型 macroblock 控制項命令結構的前四個成員一律相同。 下表描述這個結構第一個部分的成員。
member | 描述 |
---|---|
wMBaddress |
指定目前正在處理之宏區塊的宏區塊位址。 |
wMBtype |
指定要處理的宏區塊類型。 此成員包含旗標,指出是否使用動作補償來預測宏區塊的值,以及傳送哪些類型的殘差差異資料。 |
dwMB_SNL |
包含前 8 位) 的兩個欄位 MBskipsFollowing (,以及下方 24 位) 中的 MBdataLocation (。 MBskipsFollowing 指定要在目前宏區塊之後產生的略過宏區塊數目。 MBdataLocation 是 IDCT 剩餘差異區塊資料緩衝區的索引,指出目前宏區塊區塊的剩餘差異資料位置。 |
wPatternCode |
指出是否針對宏區塊中的每個區區塊轉送剩餘差異資料。 |
wMBaddress
wMBaddress結構成員會以點陣掃描順序指定目前宏區塊的宏區塊位址。 下表顯示 macroblock 位址的範例。
Macroblock | 位址 |
---|---|
左上角 |
零個 |
右上方 |
wPicWidthInMBminus1 |
左下角 |
wPicHeightInMBminus1 x (wPicWidthInMBminus1+1) |
右下角 |
(wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1) - 1 |
wPicWidthInMBminus1和wPicHeightInMBminus1位址是DXVA_PictureParameters結構的成員。
wMBtype
wMBtype結構成員會指定要處理的宏區塊類型。 此成員包含一組位,定義處理宏區塊和動作向量的方式。 bPic4MVallowed、bPicScanMethod、bPicBackwardPrediction、bPicStructure和bPicScanFixed位址是DXVA_PictureParameters結構的成員。 bConfigHostInverseScan位址是DXVA_ConfigPictureDecode結構的成員。
Bits | 描述 |
---|---|
15 到 12 |
MvertFieldSel_3 (位 15,透過 MvertFieldSel_0 (位 12) 最重要的) 指定宏區塊控制項命令稍後傳送之對應動作向量的垂直欄位選取範圍,如下表所指定。 例如,對於具有框架圖片結構 (的框架式動作,例如 H.261 和 H.263) ,這些位都必須全部為零。 MvertFieldSel_0、MvertFieldSel_1、MvertFieldSel_2和MvertFieldSel_3中的位會對應至 MPEG-2 第 6.3.17.2 節中的motion_vertical_field_select[r][s] 位。 |
11 |
保留位。 必須為零。 |
10 |
HostResidDiff 指定是否傳送空間網域剩餘差異解碼區塊,或是否針對目前宏區塊的異地主機識別碼CT 傳送轉換係數。 如果 bConfigResidDiffHost 為零,則必須為零。 如果 bConfigResidDiffAccelerator 為零,則必須為 1。 |
9 和 8 |
MotionType 指定圖片中的動作類型。 例如,對於具有框架圖片結構 (的框架式動作,如 H.261) 所示,位 9 必須是 1,而位 8 必須是零。 當 MPEG-2 位出現在 MPEG-2 位串流時,這些位的使用會直接對應至 6.3.17.1 節和資料表 6-17 和 6-18 中的 frame_motion_type 或 field_motion_type 位的使用。 下表進一步說明使用這些位。 |
7 和 6 |
MBscanMethod 指定 macroblock 掃描方法。 如果bPicScanFixed為 1,這必須等於bPicScanMethod。 如果 HostResidDiff 為 1,這個變數就沒有意義,而且這些位應該設定為零。 如果 bConfigHostInverseScan 為零, MBscanMethod 必須是下列其中一個值:
如果 bConfigHostInverseScan 為 1, MBscanMethod 必須等於下列值:
|
5 |
FieldResidual 指出剩餘差異區塊是否使用 MPEG-2 中指定的欄位 IDCT 結構。 如果 bPicStructure 為 1 或 2,此旗標必須是 1 或 2。 如果 MPEG-2 語法中的 frame_pred_frame_DCT 旗標為 1,則當用於 MPEG-2 時,此旗標必須是零。 如果宏區塊有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 為零,或 bPic4MVallowed 為零,則必須為零。 |
2 |
MotionBackward 此變數會用於 MPEG-2 中對應 macroblock_motion_backward 參數的指定。 如果DXVA_PictureParameters結構的 bPicBackwardPrediction 成員為零, MotionBackward 必須是零。 |
1 |
MotionForward 此變數會做為 MPEG-2 中對應 macroblock_motion_forward 所指定。 下表後面的文字會進一步說明此位的使用方式。 |
0 |
IntraMacroblock 表示宏區塊會編碼為內部,而且目前宏區塊不會使用任何動作向量。 此變數會對應至 MPEG-2 中的 macroblock_intra 變數。 下表後面的文字會進一步說明此位的使用方式。 |
當宏區塊以預測方式編碼時,它們具有相關聯的動作向量值。 系統會根據宏區塊用於欄位編碼或框架編碼圖片來產生值。 對於任何實作而言,請務必適當考慮每個已使用宏區塊類型, (特別適用于現場結構化圖片或雙質動作) 。
本節中的下列兩個表格指出適用于框架編碼和欄位編碼圖片的有效 IntraMacroblock、 MotionForward、 MotionBackward、 MotionType、 MvertFieldSel和 MVector 的組合。 MVector 包含動作向量的水準和垂直元件。 其餘變數和旗標會指定動作向量作業。 這會根據處理的宏區塊類型,以及宏區塊是否用於框架編碼或欄位編碼圖片。
本節 (下清單格中顯示的值,) 發生下列情況:
H261LoopFilter、 Motion4MV和 bPicOBMC 為零。
除非bPicStructure是 2 (底部欄位) ,否則PicCurrentField旗標為零。 在此情況下, PicCurrentField 為 1。
MVector 是 DXVA_MBctrl_P_HostResidDiff_1 和 DXVA_MBctrl_P_OffHostIDCT_1 結構的成員。 IntraMacroblock、MotionForward、MotionBackward、MotionType、MvertFieldSel、H261LoopFilter和Motion4MV旗標和變數是包含在 DXVA_MBctrl_P_HostResidDiff_1 和 DXVA_MBctrl_P_OffHostIDCT_1 結構的wMBtype成員中的位欄位。 bPicOBMC 是 DXVA_PictureParameters 結構的成員。 PicCurrentField旗標衍生自 DXVA_PictureParameters 的bPicStructure成員。
在本節中檢閱下表時,適用下列考慮:
在數個位置中,MPEG-2 變數名稱 PMV 用來指出動作向量的值。 這個標記法是用來區別 MPEG-2 中所定義的 PMV 變數,也就是框架座標中,以及可能位於欄位座標中的動作向量 (,換句話說,在半垂直解析度) 。 在所有情況下, PMV 都會參考目前動作向量值更新 之後的 PMV 值, (如 MPEG-2 影片第 7.6.3.1 節) 所指定。
vector'[2][0] 和 vector'[3][0] 的定義可在 MPEG-2 第 7.6.3.6 節中找到。 顯示的左 - 移作業表示垂直元件已修改為框架座標。
在這兩個「無動作」案例中 (0,0,0) ,宏區塊參數都會模擬具有零值動作向量的向前預測宏區塊 (0,1,0) 。 (另請參閱 MPEG-2 7.6.3.5.)
以單引號顯示 MotionType 的值是二進位標記法, (第一個數位是位 9,而第二個則是位 8) 。
第一個資料表中的左移運算子只適用于顯示的第二個值。
框架結構化圖片
下表顯示當DXVA_PictureParameters結構的bPicStructure成員等於 3) 時,框架結構化圖片 (之元素設定的有效組合。
IntraMacroblock、MotionForward、MotionBackward | MotionType (意義取決於圖片類型) | MVector[0]MvertFieldSel_0 (1st, dir1) | MVector[1]MvertFieldSel_1 (1st, dir2) | MVector[2]MvertFieldSel_2 (2nd, dir1) | MVector[3]MvertFieldSel_3 (2nd, dir2) |
---|---|---|---|---|---|
1,0,0 (內部) |
內部) ('00' |
- - |
- - |
- - |
- - |
0,0,0 (沒有動作) |
'10' (沒有動作) |
0 - |
- - |
- - |
- - |
0,1,0 |
'10' (框架 MC) |
PMV[0][0] - |
- - |
- - |
- - |
0,0,1 |
'10' (框架 MC) |
- - |
PMV[0][1] - |
- - |
- - |
0,1,1 |
'10' (框架 MC) |
PMV[0][0] - |
PMV[0][1] - |
- - |
- - |
0,1,0 |
'01' (欄位 MC) |
PMV[0][0] sel[0][0] |
- - |
PMV[1][0] sel[1][0] |
- - |
0,0,1 |
'01' (欄位 MC) |
- - |
PMV[0][1] sel[0][1] |
- - |
PMV[1][1] sel[1][1] |
0,1,1 |
'01' (欄位 MC) |
PMV[0][0] sel[0][0] |
PMV[0][1] sel[0][1] |
PMV[1][0] sel[1][0] |
PMV[1][1] sel[1][1] |
0,1,0 |
'11' (雙質) |
PMV[0][0] 0 (頂端) |
vector'[2][0][0], 1 (底部) |
PMV[0][0] 1 |
vector'[3][0][0], 0 |
欄位結構化圖片
下表顯示當DXVA_PictureParameters結構的bPicStructure成員等於 1 或 2) 時,欄位結構化圖片的元素設定的有效組合 (。
IntraMacroblock、MotionForward、MotionBackward | MotionType (意義取決於圖片類型) | MVector[0]MvertFieldSel_0 (1st, dir1) | MVector[1]MvertFieldSel_1 (1st, dir2) | MVector[2]MvertFieldSel_2 (2nd, dir1) | MVector[3]MvertFieldSel_3 (2nd, dir2) |
---|---|---|---|---|---|
1,0,0 (內部) |
內部) ('00' |
- - |
- - |
- - |
- - |
0,0,0 (沒有動作) |
'01' (沒有動作) |
0 PicCurrentField |
- - |
- - |
- - |
0,1,0 |
'01' (欄位 MC) |
PMV[0][0] sel[0][0] |
- - |
- - |
- - |
0,0,1 |
'01' (欄位 MC) |
- - |
PMV[0][1] sel[0][1] |
- - |
- - |
0,1,1 |
'01' (欄位 MC) |
PMV[0][0] sel[0][0] |
PMV[0][1] sel[0][1] |
- - |
- - |
0,1,0 |
'10' (16x8 MC) |
PMV[0][0] sel[0][0] |
- - |
PMV[1][0] sel[1][0] |
- - |
0,0,1 |
'10' (16x8 MC) |
- - |
PMV[0][1] sel[0][1] |
- - |
PMV[1][1] sel[1][1] |
0,1,1 |
'10' (16x8 MC) |
PMV[0][0] sel[0][0] |
PMV[0][1] sel[0][1] |
PMV[1][0] sel[1][0] |
PMV[1][1] sel[1][1] |
0,1,0 |
'11' (雙質) |
PMV[0][0] PicCurrentField |
vector'[2][0] PicCurrentField |
- - |
- - |
欄位和框架圖片的其他有效元素設定
框架結構化和欄位結構化圖片的其餘允許案例如下。
值 | 描述 |
---|---|
H261LoopFilter = 1 bPicOBMC = 0 Motion4MV = 0 |
指出 MVector[0] 中傳送一個向前移動向量,而且 H.261 迴圈篩選在宏區塊中的向前預測作用中。 在此案例中,MotionForward必須是 1,而 IntraMacroblock和MotionBackward必須同時為零。 |
bPicOBMC = 0 Motion4MV = 1 |
指出 MVector[0] 透過 MVector[3] 傳送四個向前移動向量。 在此案例中,MotionForward必須為 1,且 IntraMacroblock必須為零。 如果 MotionBackward 為 1,則會在 MVector[4] 中傳送第五個動作向量以進行回溯預測。 |
bPicOBMC = 1 Motion4MV = 0 |
指出 10 個向前動作向量會透過 MVector[0] 傳送至 MVector[9] 以指定 OBMC 動作,而且前四個這類動作向量的值全都相等。 如果 MotionBackward 為 1,則會在 MVector[10] 中傳送第十一個動作向量以進行回溯預測。 |
bPicOBMC = 1 Motion4MV = 1 |
指出 10 個向前動作向量會透過 MVector[0] 傳送至 MVector[9] 以指定 OBMC 動作,而且前四個這類動作向量的值可能會彼此不同。 如果 MotionBackward 為 1,則會在 MVector[10] 中傳送第十一個動作向量以進行回溯預測。 |
注意 平均運算子在數學上相同 ( (s1+s2+1) 1) >> MPEG-1、MPEG-2 半樣本預測篩選、雙向平均和雙質相同同位合合。 H.263 雙向平均運算子不會在右移之前新增 +1 的位移。 DXVA_PictureParameters的bBidirectionalAveragingMode成員會決定使用這些方法的哪一個。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應