共用方式為


解碼影片

Microsoft Direct3D 執行時間會呼叫使用者模式顯示驅動程式的 DecodeBeginFrameDecodeEndFrame 函式,以指出使用者模式顯示驅動程式可以解碼視訊的這些函式呼叫之間的時間週期。 在使用者模式顯示驅動程式可執行任何視訊解碼作業之前,Microsoft Direct3D 執行時間必須呼叫使用者模式顯示驅動程式的 SetDecodeRenderTarget 函式,以設定這些解碼作業的轉譯目標介面。 不過, 對 SetDecodeRenderTarget 的呼叫只能在開始畫面和結束時間週期之外發生。

在受保護模式中,以及呼叫DecodeBeginFrame時,Direct3D 執行時間會在D3DDDIARG_DECODEBEGINFRAME結構的pPVPSetKey成員所指向的變數中設定或變更 DirectX VA 內容金鑰。 解碼裝置會針對此和後續畫面使用此金鑰來保護壓縮 DirectX VA 緩衝區的傳輸。

注意 Direct3D 執行時間只會設定 pPVPSetKey 指標來變更或設定金鑰。 若要讓先前設定的索引鍵保持使用中,執行時間會將指標設定為 Null ,以避免重載相同索引鍵可能很耗時。 驅動程式不會排除備援設定。 解碼器應用程式必須避免備援設定。

設定解碼作業的轉譯目標介面之後,使用者模式顯示驅動程式可以接收其 DecodeExecute 函式的呼叫,以在開始畫面與結束畫面時間週期之間執行視訊解碼作業。

對 DecodeExecute的呼叫中,不是D3DDDIARG_DECODEEXECUTE之hDecode成員所指定之pCompressedBuffers 陣列之 pCompressedBuffersD3DDDIARG_DECODEEXECUTE陣列之DXVADDI_DECODEBUFFERDESC結構成員中指定的所有緩衝區類型。 例如,配量控制 (D3DDDIFMT_SLICECONTROLDATA) 、反向量化 (D3DDDIFMT_INVERSEQUANTIZATIONDATA) 和位資料流程 (D3DDDIFMT_BITSTREAMDATA) 緩衝區只需要可變長度解碼 (VLD) 處理,而且 MPEG-2 完全不會使用解除封鎖控制緩衝區 (D3DDDIFMT_DEBLOCKINGDATA) 。

在受保護的模式中,使用內容金鑰為受保護傳輸加密的緩衝區包含緩衝區描述 (元中初始計數器值的指標,也就是DXVADDI_DECODEBUFFERDESC結構的 pCipherCounter 成員指向 ) 變數。 每次呼叫使用者模式顯示器驅動程式的 DecodeExecute 函式都必須在 碼作業中使用緩衝區的資料之前,先對本機視訊記憶體執行這類緩衝區的受保護傳輸。 不過,沒有任何計畫可以加密差異差異 (D3DDDIFMT_RESIDUALDIFFERENCEDATA) 和位資料流程 (D3DDDIFMT_BITSTREAMDATA) 類型以外的 DirectX VA 壓縮緩衝區。