DXVA_PictureParameters結構 (dxva.h)
主機譯碼器會將DXVA_PictureParameters結構傳送至快捷鍵,以提供壓縮圖片的圖片層級參數,以在快捷鍵上進行譯碼。
語法
typedef struct _DXVA_PictureParameters {
WORD wDecodedPictureIndex;
WORD wDeblockedPictureIndex;
WORD wForwardRefPictureIndex;
WORD wBackwardRefPictureIndex;
WORD wPicWidthInMBminus1;
WORD wPicHeightInMBminus1;
BYTE bMacroblockWidthMinus1;
BYTE bMacroblockHeightMinus1;
BYTE bBlockWidthMinus1;
BYTE bBlockHeightMinus1;
BYTE bBPPminus1;
BYTE bPicStructure;
BYTE bSecondField;
BYTE bPicIntra;
BYTE bPicBackwardPrediction;
BYTE bBidirectionalAveragingMode;
BYTE bMVprecisionAndChromaRelation;
BYTE bChromaFormat;
BYTE bPicScanFixed;
BYTE bPicScanMethod;
BYTE bPicReadbackRequests;
BYTE bRcontrol;
BYTE bPicSpatialResid8;
BYTE bPicOverflowBlocks;
BYTE bPicExtrapolation;
BYTE bPicDeblocked;
BYTE bPicDeblockConfined;
BYTE bPic4MVallowed;
BYTE bPicOBMC;
BYTE bPicBinPB;
BYTE bMV_RPS;
BYTE bReservedBits;
WORD wBitstreamFcodes;
WORD wBitstreamPCEelements;
BYTE bBitstreamConcealmentNeed;
BYTE bBitstreamConcealmentMethod;
} DXVA_PictureParameters, *LPDXVA_PictureParameters;
成員
wDecodedPictureIndex
指定已譯碼宏區塊的目的框架緩衝區。
wDeblockedPictureIndex
指定 當 bPicDeblocked 為 1 時,已解除封鎖輸出圖片的目的畫面緩衝區。 這個成員沒有意義,而且如果 bPicDeblocked 為零,則必須為零。 此成員可能與 wDecodedPictureIndex 相同。
wForwardRefPictureIndex
指定要做為目前圖片向前預測之圖片的參考圖片的框架緩衝區索引。 不得與 wDecodedPictureIndex 相同。 如果 bPicIntra 為 1,則必須0xFFFF這個成員。
wBackwardRefPictureIndex
指定要做為參考圖片的圖片框架緩衝區索引,以便進行目前圖片的回溯預測。 如果使用回溯參考動作預測,這個成員不得與 wDecodedPictureIndex 相同。 如果 bPicBackwardPrediction 為零,則必須0xFFFF這個成員。
wPicWidthInMBminus1
以宏區塊為單位指定目前圖片的寬度,減 1。 macroblocks 中圖片的寬度是藉由將 1 新增至 wPicWidthInMBminus1 來衍生。
wPicHeightInMBminus1
以宏區塊為單位指定目前圖片的高度,減 1。 macroblocks 中的圖片高度是藉由將 1 新增至 wPicHeightInMBminus1 來衍生。
bMacroblockWidthMinus1
指定宏區塊的目的地亮度樣本寬度減 1。 這等於 MPEG-1、MPEG-2、H.263 和 MPEG-4 的 15。
bMacroblockHeightMinus1
指定宏區塊的目的地亮度樣本高度減 1。 這等於 MPEG-1、MPEG-2、H.261、H.263 和 MPEG-4 的 15。
bBlockWidthMinus1
指定剩餘差異區塊減 1 的區塊寬度。 這等於 MPEG-1、MPEG-2、H.261、H.263 和 MPEG-4 的 7。 如果DXVA_ConfigPictureDecode結構的 bConfig4GroupedCoefs 成員為 1,則為 7。 宏區塊內的剩餘差異區塊會依 MPEG-2 圖 6-10 中指定的順序傳送, 6-11 和 6-12 (Y 點陣掃描順序,後面接著 Y 的所有 4:2:0 Cb 區塊,後面接著 4:2:0 區塊,後面接著 4:2:2 區塊,後面接著 4:2:2 區塊,後面接著 4:4:4:4:4 區塊的 Cb, 後面接著Cr) 的4:4:4:4區塊。 名為 WT 的衍生詞彙是由將 1 新增至 bBlockWidthMinus1 所形成。
bBlockHeightMinus1
指定剩餘差異區塊的區塊高度減 1。 這等於 MPEG-1、MPEG-2、H.261、H.263 和 MPEG-4 的 7。 如果 bConfig4GroupedCoefs 為 1,則為 7。 名為 HT 的衍生詞彙是由將 1 新增至 bBlockHeightMinus1 所形成。
bBPPminus1
指定視訊樣本值每圖元的位數減 1。 這是至少 7 個 (表示 8 位像素) 。 這等於 MPEG-1、MPEG-2、H.261 和 H.263 的 7。 MPEG-4 的某些作業模式支援每個圖元的較大位數。 名為 BPP 的衍生詞彙是由將 1 新增至 bBPPminus1 所形成。
bPicStructure
指出目前的圖片是頂端圖片, (值為 1) 、底域圖片 (值為 2) ,還是圖文框圖片 (值 3) 。 在漸進式掃描框架結構化編碼中,例如 H.261 中的 bPicStructure 為 3。 除非 bPicStructure 為 2 (底端字段) ,否則衍生值 PicCurrentField 會定義為零。 在此情況下,它是 1。 此成員的意義與 MPEG-2 (H.262) 第 6.3.10 節和表 6-14 中所定義的picture_structure變數相同。
bSecondField
指出當 bPicStructure 為 1 或 2) 時,如果欄位結構化編碼 (,目前字段是否為圖片的第二個字段。 這可用來判斷做為相對同位線的相對同位線參考,以進行動作補償預測是否為參照圖片的相反同位字段或目前圖片的相反同位字段。 如果 bSecondField 為 1,則目前字段是圖片的第二個字段,而做為動作補償相反同位線參考的字段是目前圖片的相反同位線。 (在這兩種情況下,做為相同同位線動作補償參考的字段是參照圖片的同位線。) 否則 ,bSecondField 為零。
bPicIntra
指出此圖片是否需要動作補償預測。 如果 bPicIntra 為 1,則會使用 DXVA_MBctrl_I_OffHostIDCT_1 或 DXVA_MBctrl_I_HostResidDiff_1 macroblock 控制項命令結構傳送所有 macroblock,其中 IntraMacroblock 旗標等於 1 。 也就是說,不會針對圖片執行動作補償預測。 否則,圖片的某些宏區塊可能會有macroblock控件命令的 IntraMacroblock 參數等於零,而macroblock控件命令結構會使用 DXVA_MBctrl_P_HostResidDiff_1 結構或 DXVA_MBctrl_P_OffHostIDCT_1 結構。
bPicBackwardPrediction
指出目前圖片的任何宏區塊是否可能包含回溯預測。 如果 bPicIntra 為 1,bPicBackwardPrediction 必須為零。 如果 bPicBackwardPrediction 為零,則每個DXVA_MBctrl_I_HostResidDiff_1、DXVA_MBctrl_I_OffHostIDCT_1、DXVA_MBctrl_P_HostResidDiff_1或DXVA_MBctrl_P_OffHostIDCT_1結構) 內 (圖片的所有宏塊控件命令中 ,MotionBackward 都必須為零。 如果 bPicBackwardPrediction 為 1,圖片的某些宏區塊 可能等於 1 。
bBidirectionalAveragingMode
指出用於 B 圖片和雙質動作) 的雙向動作補償中結合預測平面的四捨五入方法 (。 值零表示 MPEG-1 和 MPEG-2 四捨五入的平均值 (其中兩個整數之間的值四捨五入到下一個較高的整數) ,而值 1 表示 H.263 會以平均方式截斷 (,其中兩個整數之間的值會向下四捨五入到下一個較低的整數) 。 如果不需要雙向平均,bBidirectionalAveragingMode 必須為零。
bMVprecisionAndChromaRelation
這個成員指出亮度動作向量的有效位數,以及 Chrominance 動作向量如何衍生自亮度動作向量。
下表列出具有指定亮度動作向量精確度的這個成員值,以及如何衍生 Chrominance 動作向量的描述。
值 | 描述 |
---|---|
0 | 亮度動作向量具有半樣本精確度。 Chrominance 動作向量是根據 MPEG-2 (H.262) 衍生自亮度動作向量。 |
1 | 亮度動作向量具有半樣本精確度。 Chrominance 動作向量衍生自亮度動作向量,根據 H.263 。 |
2 | 亮度動作向量具有完整樣本精確度。 Chrominance 動作向量衍生自亮度動作向量,根據 H.261 (除以 2,並截斷為零到完整樣本值) 。 |
3 | 保留的。 |
bChromaFormat
影響加速器預期的預測錯誤區塊數目。 此變數定義於 MPEG-2 (H.262) 中。 針對 MPEG-1、MPEG-2 主要配置檔、H.261 和 H.263 位數據流,此值必須一律設定為 1,表示 4:2:0 格式。 如果值為 2,則表示 4:2:2,如果值為 3,則表示 4:4:4 取樣。 如果 DXVA_ConfigPictureDecode 的 bConfig4GroupedCoefs 成員為 1 (,則此成員必須等於 1,因為 bConfig4GroupedCoefs 作業不包含係數數據中 4:2:2 和 4:4:4 格式) 所需的 EOB 指示。
注意
水準色度在 H.261、H.263 和 MPEG-1 與 MPEG-2 和 MPEG-4 之間稍有不同。 此差異假設小到足以忽略。
bPicScanFixed
使用以快捷鍵為基礎的 IDCT 處理剩餘差異區塊時,此旗標的值為 1,表示圖片中所有宏區塊的反向掃描方法都相同。 值為零表示它不是。 如果 bConfigHostInverseScan 成員為 1,或 bConfigResidDiffAccelerator 成員在 DXVA_ConfigPictureDecode 中為零,則此成員必須為 1。
bPicScanMethod
指出 bPicScanFixed 為 1 時圖片的固定反向掃描方法。 當 bPicScanFixed 為零時,這個成員沒有意義,而且必須有零的值。
如果 DXVA_ConfigPictureDecode 的 bConfigHostInverseScan 成員為零,則此成員所定義的掃描方法可以是下列其中一項。
bPicScanMethod | Scan 方法 |
---|---|
0 | (MPEG-2) 的 Zigzag 掃描 |
1 | 替代垂直掃描 (MPEG-2) |
2 | H.263 (替代水平掃描) |
如果 DXVA_ConfigPictureDecode 的 bConfigHostInverseScan 成員為 1,則 bPicScanMethod 所定義的掃描方法必須設定如下。
bPicScanMethod | Scan 方法 |
---|---|
3 | 具有絕對係數位址的任意掃描。 |
bPicReadbackRequests
指出是否發出目前圖片的回讀控制要求。 值為 1 表示有回讀要求,而零的值則表示它們不是。 讀取回要求表示當解除封鎖套用 wDeblockedPictureIndex 等於 wDecodedPictureIndex) 時,宏區塊的值會在最終譯碼和解除封鎖的圖片 (。
bRcontrol
定義用於半樣本動作補償的四捨五入方法。 此變數定義於 H.263 第 6.1.2 節中。 值為零表示在 MPEG-1、MPEG-2 和第一版 H.263 中找到的半樣本捨入方法。 值為 1 表示捨入方法,其中包含可在 H.263 和 MPEG-4 的某些選擇性模式中選取的向下平均偏差。 H.261 沒有意義,因為 H.261 沒有半樣本動作補償。 所有 MPEG-1 和 MPEG-2 位數據流都必須設定為零,才能符合這些標準所定義的捨入運算符。
bPicSpatialResid8
指出空間網域差異區塊如何從主機傳送至加速器。 值為 1 表示可以使用 8 位樣本傳送主機型殘差譯碼的空間領域差異區塊,而零的值表示它們無法傳送。
如果 DXVA_ConfigPictureDecode 的 bConfigResidDiffHost 成員為零,或 BPP 大於 8,則此成員必須為零。 如果 BPP 為 8,bPicIntra 為 1,且 bConfigResidDiffHost 為 1,則此成員必須為 1。 如果 DXVA_ConfigPictureDecode 的 bConfigSpatialResid8 成員為 1,則此成員必須為 1。
如果這個成員等於 1,空間定義域內部宏區塊會以 8 位值傳送, (帶正負號或未帶正負號,如 DXVA_ConfigPictureDecode) 的 bConfigIntraResidUnsigned 成員所決定,而空間定義域非宏區塊差異會傳送為相對於某些動作補償預測的帶正負號的 8 位差異值。
bPicSpatialResid8 成員與 DXVA_ConfigPictureDecode 的 bConfigSpatialResid8 成員不同,因為它是特定圖片的指示,而不是整個視訊序列的全域指示。 在某些情況下,例如在 BPP 等於 8 的內部圖片中,bPicSpatialResid8 將會是 1,即使 bConfigSpatialResid8 可能為零。
bPicOverflowBlocks
指出空間網域差異區塊是否使用溢位區塊從主機傳送至加速器。 值為 1 表示使用溢位區塊傳送圖片之主機型剩餘差異譯碼的空間領域差異區塊。 值為零表示空間定義域差異區塊不會使用溢位區塊傳送。 如果 bConfigResidDiffHost 為零或 bConfigSpatialResid8 為零,或 BPP 大於 8,則此成員必須為零。 參數 bConfigResidDiffHost 和 bConfigSpatialResid8 是 DXVA_ConfigPictureDecode 的成員。 bPicOverflowBlocks 指出特定圖片是否有任何溢位區塊。 在 BPP 等於 8 的內部圖片 中,bPicOverflowBlocks 必須是零,因為在此情況下不需要溢位區塊。
bPicExtrapolation
指出是否允許透過圖片界限的動作向量,如 H.263 附錄 D 和 MPEG-4 所指定。 這需要配置兩個宏塊較寬的圖片平面, (左邊有一個額外的宏區塊,另一個位於右邊) 另一個宏區塊,而兩個宏區塊在頂端 (一) 個額外的宏區塊,另一個宏區塊位於最上層,另一個宏區塊位於已譯碼的圖片大小之外,或裁剪每個個別圖元在圖片界限記憶體取的位址。 此規格中的 Macroblock 位址適用於圖片內部的 macroblock,不包括邊框間距。
bPicDeblocked
指出是否要為此圖片傳送解除封鎖命令,以建立已解除封鎖的輸出圖片。 解除封鎖的輸出圖片會放在 wDeblockedPictureIndex 所指示的圖片緩衝區中。 如果 bPicDeblocked 為 1,則會傳送解除封鎖命令,併產生已解除封鎖的畫面。 如果 bPicDeblocked 為零,則不會傳送任何解除封鎖命令,也不會產生已解除封鎖的圖片。
bPicDeblockConfined
指出解除封鎖篩選命令緩衝區是否將解除封鎖篩選作業的效果限製為解除封鎖篩選命令緩衝區中包含的一組宏區塊。
bPic4MVallowed
指定是否允許每個宏區塊四個向前參考動作向量,如 H.263 附錄 F 和 J 中所示。
bPicOBMC
指定目前圖片的動作補償是否使用重疊的區塊動作補償 (OBMC) 如 H.263 附錄 F 所指定。如果 bPic4MVallowed 為零,則必須為零。
bPicBinPB
指定圖片中的雙向預測宏區塊是否使用 PB 畫面格動作補償中的 B-picture。 這會將每個宏區塊的雙向預測區域限製為回溯參考圖片中對應宏區塊的區域,如 H.263 的附錄 G 和 M 中所指定。
bMV_RPS
指定使用動作向量參考圖片選取。 如果 bMV_RPS 為 1,這表示會針對每個動作向量傳送參考圖片索引,而不是只針對整個圖片傳送向前和可能向後動畫索引。 如果bMV_RPS為 1,wForwardRefPictureIndex 和 wBackwardRefPictureIndex 成員就沒有意義,而且必須是零。
bReservedBits
這是保留用於封裝和對齊。 必須為零。
wBitstreamFcodes
指出在 MPEG-2 中所定義的動作向量 f_code 值,以進行原始位流處理。 每個 f_code 值都需要 4 位。 這些值會封裝成 16 位字,如下所示。
Bits | Description |
---|---|
12 到 15 (最重要的位) | f_code[0][0]:正向水準f_code |
8 到 11 | f_code[0][1]:正向垂直f_code |
4 到 7 | f_code[1][0]:向後水準f_code |
0 到 3 (最小有效位) | f_code[1][1]:向後垂直f_code |
當DXVA_ConfigPictureDecode結構的 bConfigBitstreamRaw 成員為 1 時,wBitstreamFcodes 會包含四個動作向量f_code值。 如果 bConfigBitstreamRaw 為 1,而且四個 f_code 值中的任何一個都不需要或無關,因為 bitstream 數據的結構或 f_code值在 H.261 或 H.263) 等相關視訊編碼 bitstream 語法中不需要 (值,則每個不相關的f_code值都會0xF。
如果DXVA_ConfigPictureDecode結構的 bConfigBitstreamRaw 成員為零,則會將 wBitstreamFcodes 設定為 0xFFFF (所有f_code值都設定為 0xF) 。
注意
MPEG-1 位數據流會以不同形式提供這項資訊。 因此,針對 MPEG-1 位數據流,f_code[0][0] 和 f_code[0][1] 等於 MPEG-1 的forward_f_code,而 f_code[1][0] 和 f_code[1][1] 等於 MPEG-1 的backward_f_code。
wBitstreamPCEelements
當 DXVA_ConfigPictureDecode 的 bConfigBitstreamRaw 成員為 1 時,此成員會包含 MPEG-2 視訊的 bitstream 譯碼程式所需的一組旗標。 它不會使用,而且當 bConfigBitstreamRaw 為零且非 MPEG-2 視訊時必須為零。 此成員中的位是由其與 MPEG-2 圖片編碼延伸模組之 bitstream 元素的對應所定義,如下所示。
Bits | Description |
---|---|
14 和 15 | IntraDCprecision 等於 intra_dc_precision。 |
12 和 13 | AnotherPicStructure 等於 picture_structure。 這必須等於這個 結構的 bPicStructure 成員。 |
11 | TopFieldFirst 等於 top_field_first。 |
10 | FrameDCTprediction 等於 frame_pred_frame_dct。 |
9 | 隱藏MV 等於concealment_motion_vectors。 |
8 | QuantScaleType 等於 q_scale_type。 |
7 | IntraVLCformat 等於 intra_vlc_format。 |
6 | AlternateScan 等於 alternate_scan。 |
5 | RepeatFirstField 等於快捷鍵) 不需要repeat_first_field (。 |
4 | Chroma420type 等於快捷鍵不需要chroma_420_type (,且受 MPEG-2 限制為等於progressive_frame) 。 |
3 | ProgressiveFrame 等於 progressive_frame。 |
0、1 與 2 | 保留的位。 這些是最小有效位。 |
bBitstreamConcealmentNeed
指出當 DXVA_ConfigPictureDecode 結構的 bConfigBitstreamRaw 成員為 1 時,bitstream 數據中發生錯誤的可能性。 如果 bConfigBitstreamRaw 為零,則必須為零。
無論提供給影片加速器的內容為何,都必須設計成不故障或鎖定。 因此,視訊加速器可能會有説明,以取得主機評估語法錯誤可能性的相關信息。 這是為了判斷是否需要叫用更複雜的錯誤隱藏演算法,這可能會使 bitstream 譯碼程式變慢。 此成員允許的值如下所示, (所有其他值都會保留) 。
值 | 意義 |
---|---|
0 | bitstream 不太可能在其語法格式中包含任何大量的錯誤。 |
1 | bitstream 可能包含一些錯誤。 例如,這些錯誤可能不常 (,) 每小時發生一次或兩次錯誤。 |
2 | bitstream 可能包含一些錯誤。 例如,這些錯誤可能會因為可能影響用戶體驗 (的頻率而發生,例如每五到十分鐘) 一次錯誤。 |
3 | bitstream 可能包含相對顯著、嚴重且頻繁的語法格式錯誤 (,例如,每分鐘) 一或多個錯誤。 |
bBitstreamConcealmentMethod
指定當DXVA_ConfigPictureDecode 結構的 bConfigBitstreamRaw 成員為 1 時,錯誤隱藏處理的慣用預設方法。 如果 bConfigBitstreamRaw 為零,則必須為零。 此成員允許的值如下所示, (所有其他值都會保留) 。
值 | 錯誤隱藏方法 |
---|---|
0 | 未知或未指定。 |
1 | 圖片內的空間內隱藏。 |
2 | 適用於圖片間隱藏 (的正向動作參照圖片,在 P 圖片 或 B 圖片 中,比回溯動作參考圖片更接近其反向動作參考圖片) 使用。 |
3 | 適用於圖片間隱藏 (的回溯動作參考圖片,在較接近其回溯動作參考圖片的 B 圖片中,較接近其向前移動參考圖片) 使用。 |
備註
這個結構的某些成員會受限於使用 DXVA_ConfigPictureDecode 結構所建立的組態的特定值。 使用DXVA_PictureParameters來傳達圖片層級參數之後,圖片譯碼程式主要是由使用DXVA_MBctrl_I_HostResidDiff_1、DXVA_MBctrl_I_OffHostIDCT_1、DXVA_MBctrl_P_HostResidDiff_1或DXVA_MBctrl_P_OffHostIDCT_1 結構所構成的宏區塊控件命令所控管。
規格需求
需求 | 值 |
---|---|
標頭 | dxva.h (包含 Dxva.h) |