引用:
作者小建
謝謝提醒, 再麻煩您分享補充囉~ 
|
以Elephant's Dream做為一個例子..
Default的情況下使用MPC Video Decoder...
以DXVA Checker來查看目前GPU的DXVA Profiles...

已確定在運作的過程中確實呼叫DXVA加速...

不過得到的畫面是蠻悽慘的...

這時改用相容性較好的微軟WMVideo Decoder DMO..

得到的畫面是正常的...
但是發現一個問題...

DXVA沒有得到正確的啟動..
這時我們再以DXVA Checker來確認問題...

我們發現了一個實際上的問題...
透過dxva2.dll來調用GPU上的硬線加速功能...
從DXVA Checker再次得到的訊息顯示...
以DXVA2來呼叫GPU上的硬線加速功能...
必須是新式的Media Foundation架構應用程式才可以正確呼叫DXVA進行GPU加速...
但是MF只能使用EVR輸出.....
基本上MPC-HC依然只是一個DS架構的應用程式...
所以在這個情況下以MF為主的WMVideo Decoder MFT自然就不能得到應用...
而DS架構的WMVideo Decoder DMO顯示出確實可以使用DXVA進行GPU加速...
但是使用EVR輸出的時候發現無法以DXVA調用GPU上的硬線設計功能...
不過透過另一個訊息顯示WMVideo Decoder DMO是調用DXVA 1 API...
也許我的猜測結果是EVR無法面向DXVA 1的接口(Interface;IAMVideoAccelerator實現)...
這時候反向而行使用之前的VMR來輸出...
因為根據微軟的TechNet記載...
VMR可以調用IAMVideoAccelerator介面實現...

Ok...既然如此..
馬上調用VMR9-Renderless輸出...

得到的畫面結果是正常的...
而且我們還發現一個情況...

DXVA確實得到正確的啟用了...
不過我們也發現一個情況...
雖然原本就已經知道了...
微軟的WMVideo Decoder DMO目前只設計到支持IDCT加速功能...
對於VLD目前尚無實現...
最後最終的結論是:
這不僅還很麻煩...
而且ISV要負絕大部份的責任....
只能期望MPC-HC趕快把VC-1的bug修修掉...