我目前正在尝试编写一个ByteStreamHandler和一个音频decoder,以添加对windows商店应用程序中不受支持的编解码器的支持。
我遵循了this MPEG1 sample,并根据需要对其进行了调整。
然而,我不确定它是否被正确加载,因为我总是在HRESULT E_FAIL中得到错误MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED。
我已经将值添加到我在代码中使用的所有E_FAIL结果中,以找出它发生在哪里。不幸的是,它似乎没有出现在我的代码中。
现在,我想知道是否有任何方法可以确定包含ActivatableClasses的动态链接库是否正确加载,以及如何调试动态链接库中的代码。
更多信息:我通过将以下内容添加到我的package.appxmanifest中,将dll添加到项目中
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>MyDecoder.Windows.dll</Path>
<ActivatableClass ActivatableClassId="MyDecoder.MyDecoder" ThreadingModel="both"/>
</InProcessServer>
</Extension>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>MyDecoder.Windows.dll</Path>
<ActivatableClass ActivatableClassId="MyDecoder.MyByteStreamHandler" ThreadingModel="both"/>
</InProcessServer>
</Extension>
</Extensions>我在MainPage中创建了MediaExtensionManager作为私有类变量
MediaExtensionManager mediaExtensionManager = new MediaExtensionManager();我在OnNavigatedTo中注册了处理程序和解码器
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
mediaExtensionManager.RegisterByteStreamHandler("MyDecoder.MyByteStreamHandler", FILE_TYPE, MIME_TYPE);
mediaExtensionManager.RegisterAudioDecoder("MyDecoder.MyDecoder", MF_SUBTYPE, Guid.Empty);
mediaElement.MediaFailed += mediaElement_MediaFailed;
}ByteStreamHandler和解码器在一个项目中。
附带问题:当我通过FileOpenPicker选择文件时,StorageFile的ContentType (MIME类型)属性是一个空字符串。我能以某种方式修复这个问题吗?我应该解决这个问题吗?
发布于 2015-01-15 15:49:38
您可以使用MFTrace工具(在Windows SDK中)从Media Foundation获取事件日志。这应该可以帮助您弄清楚在故障点发生了什么。
http://msdn.microsoft.com/en-us/library/windows/desktop/ff685116(v=vs.85).aspx
https://stackoverflow.com/questions/27810299
复制相似问题