2012-08-26 24 views
0

我已經寫了一個DirectShow源過濾 的OutPin和源過濾器的outpin連接到ffdshow的視頻解碼器過濾如何自動選擇解碼器濾波器我要爲我的DirectShow源過濾

它工作得很好GraphEdit,因爲我手動連接它們。

現在我試圖讓它在Windows Media Player中工作。而問題在於解碼器過濾器。

如何在我的源代碼過濾器中將解碼器過濾器限制爲「ffdshow Video Decoder」?從CheckMediaType?我想要「ffdshow Video Decoder」是唯一可以連接到OutPin的過濾器,並且它也可以自動連接到WMP中。如果未安裝此解碼器篩選器,則該圖不應起作用。

感謝您的幫助,我會回來,12小時後,檢查答案:)

回答

2

在你的輸出引腳類覆蓋IPin::Connect方法。在那裏,您將有IPin您正在連接的引腳接口。你希望這只是ffdshow視頻解碼器的輸入引腳,所以你在那裏做IPin::QueryPinInfo並獲得引腳的濾波器。在那裏你做IBaseFilter::GetClassID並比較獲得的CLSID與你所知道和期望的。你失敗返回失敗。

這是如何只連接到你想要的過濾器。另一件事是,應用程序甚至可能不會嘗試你需要的過濾器,在這種情況下,你可能想要實現IStreamBuilder來建議輸出引腳上的連接過濾器。

+0

^- ^,專業答案 –