我們對DS有一些過濾器。它的工作原理 - 使用標準的win dll。如何將DirectShow過濾器轉換爲C++ C#?
我們希望將該過濾器轉換爲某種不依賴於DS的程序。我們希望它以正確的順序調用dll,完成DS正在做的所有事情,但不能以任何方式依賴於DS - 僅在過濾器dll上。
所以...如何將DirectShow過濾器轉換爲C++ \ C#?
我們對DS有一些過濾器。它的工作原理 - 使用標準的win dll。如何將DirectShow過濾器轉換爲C++ C#?
我們希望將該過濾器轉換爲某種不依賴於DS的程序。我們希望它以正確的順序調用dll,完成DS正在做的所有事情,但不能以任何方式依賴於DS - 僅在過濾器dll上。
所以...如何將DirectShow過濾器轉換爲C++ \ C#?
更好的解決方案是在單用途圖形中使用過濾器,其中您有一個自定義源提供應用程序的過濾器,以及一個自定義接收器接收輸出並將其提供給應用程序。 www.gdcl.co.uk上有一個例子。我知道這不是你所要求的,但是你對dshow的依賴是非常有限的,很難看到過濾器二進制工作的環境,但dshow基礎知識不可用。
G
可以在不使用DirectShow的情況下使用DirectShow過濾器,但您需要編寫自己的Graph實現。
這意味着,你將不得不實行IFilterGraph
,IMemInputPin
和IMemOutputPin
接口,使DirectShow過濾器認爲它是運行在它的原生環境。
爲了通過過濾器傳遞的緩衝區,你可能需要實現IMemAllocator
和IMediaSample
緩衝區的傳球,尤其是不能在託管代碼實現。你可能可以用interop做到這一點,但我認爲這在C++中比在C#中更容易。我多年前做過這個。花了大約3個月的時間。