2014-09-13 60 views
0

我目前正試圖實現我自己的源過濾器,以解碼給出的MOV文件作爲輸入。 我一直在關注網上和WinSDK 7.1樣本中提供的各種實例文件夾,我結束了以下內容:問題與CSource篩選器

  1. 一個CSource子類,實現的CreateInstance

  2. 一個CSourceStream子該uimplements如下:

    • DecideBufferSize
    • GetMediaType
    • 通知我目前沒有實施任何形式尋求處理的
    • FillBuffer

注意。

目前我的過濾器可以通過graphstudio實例化並公開1個視頻輸出引腳。我能夠通過VMR7完成整個過程。

我點擊播放時出現問題。我的FillBuffer方法被調用一次,並且graphstudio無法在[email protected] 317:ASSERT(!ThreadExists())內報告聲明失敗。

有人能告訴我我在做什麼錯嗎?它似乎有一些問題與基地針的:: Active()方法,但我不知道到底是什麼。

如果需要,我很樂意提供更詳細的源代碼。

在此先感謝。

回答

1

好吧,我終於搞定了。

如果有人遇到同樣的問題,這來自CSource過濾器的引腳註冊。 我正在使用AddPin方法註冊我的引腳。這不知何故導致CSource內部狀態以某種方式失敗。在directshow示例中直接訪問m_paStreams數組解決了我的問題。

0

該問題可能是由您覆蓋基類方法引起的。

聲明失敗表明執行到達了一個地方,直到過濾器停止然後再次重新啓動爲止。我會說它應該返回更高的幾行(第303行),但由於某種原因它沒有。 IsActive的錯誤值並不表示該方法本身是錯誤的,相反,它可能是一個覆蓋。