2012-06-27 84 views
0

媒體擴展示例 此示例演示如何使用媒體擴展將效果應用於視頻,解碼視頻以及使用配置處理程序創建媒體流。媒體擴展示例地鐵錯誤?

我只是調試示例。我選擇一個mpg文件,文件的持續時間是4分鐘。 SDK運行正常,顯示兩個重疊塊。但大約1分40秒後,sdk應用程序崩潰。 這樣的信息:「MediaExtensionsCPP.exe中的0x68A95B94(mfcore.dll)未處理的異常:0xC0000005:訪問衝突讀取位置0x68A26A38」。

我替換另一個文件,同樣的錯誤。 所以我認爲微軟的例子有一些錯誤。有人有同樣的問題嗎?可以分享我的解決方法。非常感謝你。

+0

我找到了這個問題的原因。地鐵的dllmain.cpp。該函數是這樣的:HRESULT WINAPI DllCanUnloadNow() { auto&module = Microsoft :: WRL :: Module :: GetModule(); return(module.Terminate())? S_OK:S_FALSE; } – ayuppie

回答

1

媒體團隊有一個修復程序,將在新版本的樣本中解決此問題。這些是修復當前示例的說明:

我們發現Media樣本中導致DLL卸載得太早的錯誤。同時,您可以將這些行添加到MSDN示例中源/流類的構造函數/析構函數中: 注意:對於從RuntimeClass <>(例如:方案處理程序)派生的類,這不是必需的。

構造函數: auto module = :: Microsoft :: WRL :: GetModuleBase(); if(module!= nullptr) { module-> IncrementObjectCount(); }

析構函數: auto module = :: Microsoft :: WRL :: GetModuleBase(); (module!= nullptr) { module-> DecrementObjectCount();如果(module!= nullptr) }