2011-09-22 113 views
0

我想創建一個DirectX「過濾器」,它可以提供單聲道音頻。我見過Platform SDK示例項目,但缺點是那些需要ATL庫。如何編寫DirectX音頻推送源

有沒有辦法創建DirectX過濾器沒有訴諸ATL或MFC?也就是說,只使用gcc(例如MinGW)和其他實際上免費的工具?

回答

0

如果我理解正確,過濾器必須是COM組件。如果需要的話,你可以編寫大多數編譯器的代碼。

然而,這將涉及到樣板會不可思議,我有一個18kloc代碼庫變成25kloc時變成COM組件(最終重新打開它,只是因爲有比小插件的實際代碼更多的樣板COM )。

MFC是沒有必要或總是參與編寫COM組件,我所知道的。

ATL有助於簡化,極大地,通過提供模板和函數來處理在編譯時有很多的細節。你可能能夠使用它從海灣合作委員會,但我不知道會發生什麼;我懷疑它會奏效,儘管它可能會奏效。

沒有ATL,你需要MIDL並生成從那裏的代碼。這是免費工具的可能性,它在Wine項目的幾個地方完成;你可以在那裏檢查代碼和工具鏈。

無論你在哪裏做的事情,這將是一個痛苦,嚴重的疼痛,如果你堅持要用「其實免費」工具,它(因爲他們沒有特別的設計與COM工作)。

+0

是啊我意識到我在這個遊戲上反對當前,DirectX就是這樣。我活在希望中。 – JustJeff

+0

它確實有效,你可以用免費工具來做到這一點,但這是一種皇室般的痛苦。葡萄酒將是第一個尋找例子的地方;有很好的機會有代碼來做到這一點。 – ssube

0

如果你腦子裏想的DirectShow過濾器,最好的起點是PushSource Windows SDK Sample,生成的視頻並使其產生聲音。

還要注意的是DirectShow的基地班是最早的COM基地之一,他們不使用ATL/MFC。基本類別本身也包含在Windows SDK中。

+0

在我的平臺SDK中,我嘗試過的三個示例項目都窒息尋找atls.lib,奇怪的是,他們試圖在Platform SDK目錄本身中找到它。有問題的PSDK是2003版本。是不是期望有人將PSDK「安裝」到MSVC中,以便MSVC可以將必要的文件添加到PSDK中? – JustJeff

+0

我檢查了更早的一組 - [DirectX 9.0 SDK更新(2005年2月)Extras](http://www.microsoft.com/download/en/details.aspx?id=12518),它也有這個PushSource示例。 atlbase.h被提及一次,通過我不記得它在哪裏被使用,並且一些基本的ATL內容被重複在代碼中,所以我認爲不需要使用ATL就可以鏈接它。 –