2014-10-27 72 views
1

鏈接Walkthrough: Creating a Windows Store app using WRL and Media Foundation如何使用WRL內的可激活類ID字符串訪問自定義MFT?

提供了自定義MFT創建並將其用作可激活類的示例。裏面的C#代碼的MFT使用激活類ID字符串這樣

mediaCapture.AddEffectAsync(MediaStreamType.Photo, "GrayscaleTransform.GrayscaleEffect", null); 

的MediaCapture知道以字符串"GrayscaleTransform.GrayscaleEffect"的MFT引用。 MediaCapture如何僅使用此字符串引用MFT?

我需要知道該過程,因爲我正在處理一個項目,該項目需要從圖像(使用WRL)創建視頻,因此我遵循此Developing a WinRT component to create a video file using Media Foundation。但我寫IMFSampleSinkWriter之前,我需要它通過自定義激活MFT類通過。如果我將可激活的類ID從C#傳遞到WRL類,我將能夠引用自定義MFT嗎? Basic MFT Processing Model描述了使用CLSID引用MFT。但是,是否有可能提取任何CLSID與可激活的classID字符串?

所以總結一下,如何使用自定義的MFT使用側的WRL可激活的classID字符串處理一個IMFSample

回答

2

我們使用內部AddEffectAsync在Windows ::基金會:: ActivateInstance函數來創建對象MOCOM的新實例。

由於要使用媒體基礎拓撲的MFT以外,你需要將它配置來處理數據。這從獲取流標識符,設置媒體類型和獲取緩衝區要求開始。一旦MFT設置正確,您就可以開始處理樣品。

順便MFTS被專門設計爲框架不可知的。回到DirectShow的日子裏,沒有簡單的方法可以在濾鏡之外使用DirectShow濾鏡。我們專門設計了MFT架構(基於源自DSound團隊的DMO技術),使其易於獨立於拓撲管理器進行設置和使用。

ActivateInstance Function

Basic MFT Processing Model

我希望這有助於

詹姆斯

+0

我用下面的代碼。 HSTRING hst; WindowsCreateString(L「SomeEffectsMFT.Effects」,22,&hst); ComPtr MFT; ComPtr inspectable; HRESULT hr = ActivateInstance(hst,&inspectable);這樣我就可以看到實現IMFTransform的類名「視察」。現在,你能告訴我怎麼辦我引用一個實現的定製MFT,這樣我可以按照「基本MFT加工模式」? – croc 2014-10-28 10:47:56

+1

我已經能夠用這部分來訪問自定義MFT類。ComPtr MFT; HRESULT hr = inspectable.As(&MFT);使用變量MFT我可以調用自定義MFT的函數。 – croc 2014-10-28 12:43:42