我需要將多達16個通道的PCM音頻流分成幾個立體聲流。 因爲我還沒有找到任何能夠做到的事情,所以我試圖編寫我的第一個directshow過濾器。能夠分裂音頻如何分割音頻或在directshow中寫入分路器濾波器?
任何將非常歡迎,但我假設,所以有我做了什麼我必須這樣做:
起初,我試圖創建一個基於ITransformFilter的過濾器。但是,它似乎只考慮了只有一個輸入引腳和一個輸出引腳的濾波器。因爲我需要幾個輸出引腳,所以我忽略了它,但也許它可以比我想象的更容易調整,所以任何建議都非常感謝。
然後,我開始基於IBaseFilter。我設法做了一些事情。當輸入引腳連接時,我創建必要的輸出引腳,並在輸入斷開連接時銷燬它們。但是,當我將任何輸出引腳連接到ACM Wrapper(僅用於測試它)時,輸入會嘗試重新連接,破壞所有輸出引腳。 我試圖只是不摧毀他們,但後來我檢查了我的輸入引腳的媒體類型,它已經改變爲立體聲流。我沒有從我的代碼中調用QueryAccept。
我怎樣才能避免重新連接,或者什麼是正確的方法來做分路器濾波器?
編輯2010-07-09: 我已經回到ITransformFilter,但我正在創建必要的引腳。但是我遇到了與IBaseFilter相同的問題:當我將輸出引腳連接到ACM Wrapper時,輸入引腳將其媒體類型更改爲2個通道。 不知道現在該怎麼做......
非常感謝!我會看看它。 – raven 2010-07-13 16:50:36
我不確定這是我需要的。看來輸出引腳必須預先聲明。能夠實時創建它們會很好,因爲我不知道在輸入連接之前有多少頻道。如果沒有人在一兩天內回答,你會選擇你的答案。 – raven 2010-07-13 17:28:56
您可以創建16個輸出引腳,並只使用所需的引腳。 – wimh 2010-07-15 06:02:27