调试媒体基础

本文关键字:媒体 调试 | 更新日期: 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选择文件时,StorageFileContentType(MIME Type)属性是一个空字符串。我可以以某种方式解决此问题,我应该解决此问题吗?

调试媒体基础

可以使用 MFTrace 工具(在 Windows SDK 中)从媒体基础获取事件日志。这应该可以帮助您弄清楚在故障点会发生什么。

http://msdn.microsoft.com/en-us/library/windows/desktop/ff685116(v=vs.85).aspx