DXVA_TCoefSingle 結構 (dxva.h)
DXVA_TCoefSingle 結構是由主機譯碼器傳送至加速器,以指定 IDCT 係數值。
語法
typedef struct _DXVA_TCoefSingle {
WORD wIndexWithEOB;
SHORT TCoefValue;
} DXVA_TCoefSingle, *LPDXVA_TCoefSingle;
成員
wIndexWithEOB
此成員包含兩個字段: TCoefIDX 和 TCoefEOB。
TCoefIDX
指定區塊中係數的掃描索引,如DXVA_ConfigPictureDecode 結構的 bConfigHostInverseScan 成員所決定。 此欄位位於 wIndexWithEOB 成員的 15 個最大有效位中。
有兩種方式可以使用 TCoefIDX :
- 執行長度排序: 當 bConfigHostInverseScan 為零時,macroblock 控件命令的 MBscanMethod 元素表示 zigzag、alternate-vertical 或替代水準反向掃描。 這些 macroblock 控制項命令定義於下列結構中: DXVA_MBctrl_I_OffHostIDCT_1 或 DXVA_MBctrl_P_OffHostIDCT_1。 在此情況下, TCoefIDX 會包含指定掃描順序中目前係數前面的零值係數數目,之後會接著區塊的最後一個傳輸係數 (或相對於區塊的開頭,如果沒有在區塊之前) 。 反向掃描順序中最後一個傳送係數之後的任何剩餘係數都會隱含為零值。
- 任意排序: 當 bConfigHostInverseScan 為 1 時,macroblock 控件命令的 MBscanMethod 元素表示任意順序。 這些 macroblock 控制項命令定義於下列結構中: DXVA_MBctrl_I_OffHostIDCT_1 和 DXVA_MBctrl_P_OffHostIDCT_1。 在此情況下, TCoefIDX 只會在區塊內包含係數的點陣索引, (TCoefIDX = u + 8 * v,其中您和 v 是轉換網域的水準和垂直頻率座標) ,而且未傳送的任何係數都隱含為具有值 0。
TCoefEOB
指出目前的係數是否為與目前轉換係數區塊相關聯的最後一個係數。 值為 1 表示目前的係數是區塊的最後一個係數,而值為零表示它不是。 此欄位位於 wIndexWithEOB 成員的最小有效位。
TCoefValue
表示區塊中係數的值。 TCoefValue 必須依主機在將係數值傳遞至 IDCT 作業的加速器之前,由主機指定的適當範圍裁剪為適當的範圍。 如有必要,MPEG-2 不符控制也是主機的責任,而不是加速器。 (這可能需要建立額外的「虛設」非零係數。)
備註
每當 DXVA_MBctrl_P_OffHostIDCT_1 或 DXVA_MBctrl_I_OffHostIDCT_1結構的wMBtype 成員中的 HostResidDiff 旗標 (位 10,) 為 1,且 DXVA_ConfigPictureDecode 結構的 bConfig4GroupedCoefs 成員為零時,就會使用DXVA_TCoefSingle結構。
規格需求
需求 | 值 |
---|---|
標頭 | dxva.h (包含 Dxva.h) |