DXVA_BufferDescription 結構 (dxva.h)
DXVA_BufferDescription結構是由主機譯碼器傳送至加速器,以提供目前從主機傳遞至加速器之緩衝區的相關信息。
語法
typedef struct _DXVA_BufferDescription {
DWORD dwTypeIndex;
DWORD dwBufferIndex;
DWORD dwDataOffset;
DWORD dwDataSize;
DWORD dwFirstMBaddress;
DWORD dwNumMBsInBuffer;
DWORD dwWidth;
DWORD dwHeight;
DWORD dwStride;
DWORD dwReservedBits;
} DXVA_BufferDescription, *LPDXVA_BufferDescription;
成員
dwTypeIndex
識別傳遞至加速器的緩衝區類型。 下表列出數值標識碼和相關聯的緩衝區類型。
值 | 緩衝區類型 |
---|---|
1 | 圖片譯碼參數緩衝區。 |
2 | 宏區塊控制命令緩衝區 (緊密關聯,並具有與剩餘差異區塊數據緩衝區) 的 1 對 1 對應。 |
3 | 剩餘差異區塊數據緩衝區。 如需詳細資訊,請參閱 Macroblock 導向圖片譯 碼。 |
4 | (篩選控制件命令緩衝區 (封鎖篩選) 的效果沒有限制。 |
5 | 反向量子化矩陣緩衝區 (只搭配非主機 VLD 處理) 使用。 |
6 | 配量控制緩衝區 (緊密關聯,且具有與位數據流數據緩衝區) 的 1 對 1 對應。 |
7 | Bitstream 數據緩衝區。 |
8 | AYUV Alpha 混合範例緩衝區。 |
9 | IA44/AI44 Alpha 混合表面緩衝區。 |
10 | DPXD Alpha 混合表面緩衝區。 |
11 | 醒目提示數據緩衝區。 |
12 | DCCMD 數據緩衝區。 |
13 | Alpha 混合組合緩衝區。 |
14 | 圖片重新取樣控件緩衝區。 |
15 | 包含命令的讀寫命令緩衝區,可讀取結果圖片的宏區塊回到主機。 |
dwBufferIndex
指定在相同緩衝區 描述清單中傳遞之相同類型之緩衝區內的緩衝區序號。
dwDataOffset
以位元組為單位指定緩衝區開頭的相關數據位移。 此成員的使用目前限制為零值。
dwDataSize
指定緩衝區中以位元組為單位的相關數據量。 緩衝區中最後一個字節內容的位置是 dwDataOffset,加上 dwDataSize 減 1。
dwFirstMBaddress
指定傳遞至加速器之緩衝區中第一個宏區塊的macroblock位址。 宏區塊位址會以點陣掃描順序提供。 位址是由 DXVA_PictureParameters的成員決定。 宏區塊位址的范例如下所示。
Macroblock | 位址 |
---|---|
左上角 | 零 |
右上方 | wPicWidthInMBminus1 |
左下角 | wPicHeightInMBminus1 x (wPicWidthInMBminus1+1) |
右下角 | (wPicHeightInMBminus1+1) x (wPicWidthInMBminus1+1) -1 |
如果數據緩衝區屬於下列類型,則此成員必須是零:圖片譯碼參數、反向量子化矩陣、配量控制、位數據流數據、AYUV、IA44/AI44、DPXD、Highlight 和 DCCMD。
如果數據緩衝區是剩餘差異區塊數據緩衝區, dwFirstMBaddress 必須具有與對應宏區塊控制命令緩衝區相同的值。 如需詳細資訊,請參閱 Macroblock 導向圖片譯 碼。
dwNumMBsInBuffer
指定緩衝區中數據的宏區塊數目。 此計數包括略過宏區塊。 如果數據緩衝區位於下列類型中,則必須為零:圖片譯碼參數、反向量子化矩陣、AYUV、IA44/AI44、DPXD、Highlight 或 DCCMD。
dwNumMBsInBuffer 的值取決於所使用的數據緩衝區類型,如下表所示。
緩衝區類型 | dwNumMBsInBuffer 的值 |
---|---|
Macroblock 控制項命令 | 必須等於 MBskipsFollowing 的所有值總和,並新增至 macroblock 控件命令緩衝區中的宏區塊控件命令數目。 |
剩餘差異區塊 | 必須具有與對應宏區塊控件命令緩衝區相同的值。 |
Slice-control 命令 | 必須等於配量控制緩衝區中 DXVA_SliceInfo 結構的 wNumberMBsInSlice 成員值。 |
Bitstream | 必須具有與對應配量控制命令緩衝區相同的值。 |
dwWidth
將緩衝區中的數據寬度指定為下列數據類型的位單位數:AYUV (數據是以 32 位單位指定) 、IA44/AI44 (數據是以 8 位單位) 指定,或以 2 位單位) 指定 DPXD (數據。 如果數據緩衝區不在上述類型中,這個成員就必須是零。
dwHeight
指定緩衝區中數據的高度做為下列數據類型的位單位數:AYUV (數據是以 32 位單位) 指定,IA44/AI44 (數據是以 8 位單位) 指定,或以 2 位單位) 指定 DPXD (數據。如果數據緩衝區不在上述類型中,這個成員就必須是零。
dwStride
指定緩衝區中數據的進階,做為下列數據類型的位單位數:AYUV (數據是以 32 位單位) 、IA44/AI44 (數據以 8 位單位) 指定,或以 2 位單位) 指定 DPXD (數據。 適用緩衝區類型的步幅取決於加速器所執行的緩衝區配置設定。 如果數據緩衝區不在上述類型中,這個成員就必須是零。
dwReservedBits
用於封裝和對齊的保留位。 必須為零。
備註
DXVA_BufferDescription 結構的陣列稱為緩衝區描述清單。 當一組緩衝區從主機譯碼器傳送到硬體加速器時,會傳送緩衝區描述清單來描述緩衝區。 緩衝區描述清單包含此集合中每個緩衝區的一個DXVA_BufferDescription結構。 緩衝區描述清單會從第一個類型之第一個緩衝區的DXVA_BufferDescription結構開始,後面接著相同類型的下一個緩衝區的DXVA_BufferDescription結構,依此類傳。 然後,緩衝區描述清單會繼續進行下一個類型之第一個緩衝區的DXVA_BufferDescription結構,依此類故。
規格需求
需求 | 值 |
---|---|
標頭 | dxva.h (包含 Dxva.h) |