2012-06-27 44 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) }