我負責修改使用DirectShow進行視頻渲染的應用程序。舊的應用程序工作正常,但它開始顯示年齡。DirectShow,Media Foundation,DXVA,什麼?
由於我有一個遊戲背景,我想我應該這樣做。在使用不同的技術製作了一堆原型之後,我很確定我可以從視頻到紋理的渲染,並使用DirectX來滿足他所有的客戶請求。
不過,我現在在我要挑一個技術一起去,我不能更失去了點...
- 的DirectShow
- 媒體基金會
- 媒體會話(<的Windows 8)
- 媒體引擎(> Windows 8中)
- DXVA1
- DXVA2
- DXVA-HD
DirectShow是明顯的最古老的,但仍然非常有效,可用的編解碼器的巨量也主要是因爲。
Media Foundation已經與Windows Vista一起推出,並且在Windows 8之前有一些名爲「媒體會話」的內容,之後他們推出了「媒體引擎」。 如果我是正確的編解碼器被稱爲MFTs?實際上有哪些網站可以像free-codecs.com那樣獲得?
除了這兩種技術之外,還有DXVA,它允許您將視頻解碼卸載到GPU。目前,我遇到了3種不同的類型。 DXVA1是自XP以來的一個實現,DXVA2是更新的API。 但什麼是DXVA-HD?它是否比DXVA2更新還是它是一個相同的名稱?
我真的想要邁向媒體基金會,開箱即用的編解碼器可以很好地與客戶端使用的格式一起工作。我所關心的是爲它獲取編解碼器是多麼容易...... Windows 8+默認媒體播放器是否仍具有DirectShow和MF渲染路徑,並且即時交換它們,或者微軟是否完全停止DirectShow?
我也不能完全理解DXVA應該如何工作。鑑於我想基本渲染遊戲中的視頻,只有在GPU上實現所有渲染並將應用程序邏輯保存在CPU上纔有意義,但我無法找到任何有關如何使用Media基礎。這主要是由於我不知道DXVA2和DXVA-HD之間的區別。 Windows 7 SDK附帶了所有3種實現的示例...
如果有人能以粗體回答我的問題,請糾正我的錯誤信息,並指出我正確使用示例的方向(DirectX + Media Foundation + DXVA-無論如何),我會很感激!它可以像「將Windows 7 SDK的這三個示例組合起來以獲得所需內容」一樣簡單。
整個任務的目標是再次獲得拔尖的形式應用程序,我想絕對相信我挑,將持續在未來十年一樣的DirectShow已經擁有的技術:P
首先,感謝您的廣泛答覆,真的很有幫助! 「然而,他們都隱藏了所有的複雜性,並在幕後自動利用DXVA解碼。」 >我是否還需要告訴MediaEngine或其他什麼才能真正使用它,或者當解碼器支持它時它是否會自動發生(如果是這樣,很好奇,我怎麼能告訴它禁用它 - 我很難找到它) ?至於你最後的評論:你是否建議堅持使用DirectShow,並只是給予渲染到紋理處理,還是繼續移動到MF上? –
'1'它是自動的;使用DirectShow在解碼器上使用ICodecAPI將其禁用,如[文檔](此處)(https://msdn.microsoft.com/en-us/library/windows/desktop/dd390679)和媒體基金會那裏記錄的那樣, (https://msdn.microsoft.com/en-us/library/windows/desktop/dd797815)'2'在硬件解碼器的幫助下將H.264渲染到紋理中我將採用Media Foundation。 –
我的印象是,它也有可能在設備上設置一些創建參數,以便完全禁用(或啓用)DXVA--相關應用程序必須呈現大量類型,從H.264 MP4到WMV以及我不提前知道的AVI? –