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-Oriented 圖片譯碼。 |
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-Oriented 圖片譯碼。
dwNumMBsInBuffer
指定緩衝區中數據的巨集區塊數目。 此計數包含略過的巨集區塊。 如果數據緩衝區屬於下列類型之一,則必須為零:圖片譯碼參數、反量化矩陣、AYUV、IA44/AI44、DPXD、Highlight 或 DCCMD。
dwNumMBsInBuffer 的值取決於所使用的數據緩衝區類型,如下表所示。
緩衝區類型 | dwNumMBsInBuffer |
---|---|
巨集區塊控件命令 | 必須等於 MBskipsFollowing 的所有值總和,新增至 macroblock 控制項命令緩衝區中的巨集區塊控件命令數目。 |
剩餘差異區塊 | 必須具有與對應巨集區塊控件命令緩衝區相同的值。 |
Slice-control 命令 | 必須等於配量控制緩衝區中 DXVA_SliceInfo 結構之 wNumberMBsInSlice 成員的值。 |
Bitstream | 必須具有與對應配量控制命令緩衝區相同的值。 |
dwWidth
將緩衝區中的數據寬度指定為下列數據類型的位數:AYUV(數據是以 32 位單位指定)、IA44/AI44(以 8 位單位指定數據)或 DPXD(數據以 2 位單位指定)。 如果數據緩衝區不在上述類型中,這個成員必須是零。
dwHeight
將緩衝區中的數據高度指定為下列數據類型的位數:AYUV(數據是以 32 位單位指定)、IA44/AI44(以 8 位單位指定數據)或 DPXD(數據是以 2 位單位指定)。如果數據緩衝區不在上述類型中,這個成員必須是零。
dwStride
將緩衝區中的數據步幅指定為下列數據類型的位單位數目:AYUV(數據是以 32 位單位指定)、IA44/AI44(以 8 位單位指定數據)或 DPXD (數據以 2 位單位指定)。 適用緩衝區類型的步幅取決於加速器所執行的緩衝區配置設定。 如果數據緩衝區不在上述類型中,這個成員必須是零。
dwReservedBits
用於封裝和對齊的保留位。 必須是零。
言論
DXVA_BufferDescription結構的陣列稱為緩衝區描述清單。 當一組緩衝區從主機譯碼器傳送到硬體加速器時,會傳送緩衝區描述清單來描述緩衝區。 緩衝區描述清單包含此集合中每個緩衝區的一個DXVA_BufferDescription結構。 緩衝區描述清單會以第一個類型之第一個緩衝區的DXVA_BufferDescription結構開始,後面接著相同類型之下一個緩衝區的DXVA_BufferDescription結構等等。 接著,緩衝區描述清單會繼續進行下一個類型之第一個緩衝區的DXVA_BufferDescription結構,依此類移。
要求
要求 | 價值 |
---|---|
標頭 | dxva.h (包括 Dxva.h) |