调试媒体基础
本文关键字:媒体 调试 | 更新日期: 2023-09-27 18:36:42
我目前正在尝试编写ByteStreamHandler
和音频decoder
,以在Windows应用商店应用程序中添加对不受支持的编解码器的支持。
遵循了这个 MPEG1 样本并根据我的需求对其进行了调整。
但是我不确定它是否正确加载,因为我总是MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED
HRESULT
E_FAIL
收到错误。
我已经为我在代码中使用的所有结果添加了值E_FAIL
以找出它发生的位置,不幸的是它似乎没有在我的代码中发生。
现在我想知道是否有任何方法可以找出包含 ActivatableClasses 的 dll 是否正确加载,以及如何调试 dll 中的代码。
更多信息:我通过将 dll 添加到我的包中来将 dll 添加到项目中.appxmanifest
<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>
我在主页中创建了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 和 Decoder 在一个项目中。
附带问题:当我通过FileOpenPicker
选择文件时,StorageFile
的ContentType
(MIME Type)属性是一个空字符串。我可以以某种方式解决此问题,我应该解决此问题吗?
可以使用 MFTrace 工具(在 Windows SDK 中)从媒体基础获取事件日志。这应该可以帮助您弄清楚在故障点会发生什么。
http://msdn.microsoft.com/en-us/library/windows/desktop/ff685116(v=vs.85).aspx