【问题标题】:IMFStreamSink::ProcessSample not called -- custom media sinkIMFStreamSink::ProcessSample 未调用——自定义媒体接收器
【发布时间】:2021-05-14 08:55:16
【问题描述】:

我编写了一个自定义媒体接收器(用于控制硬件视频输出板)。在一年的大部分时间里,这一直在按预期工作。当我重新编译接收器时,事情停止了。我注意到 Media Foundation 库和 dll 在重新编译前几周已更新。 MFTrace 显示拓扑具有预期的块连接在预期的拓扑中。 MediaTypes 也是正确的。当演示时钟启动时,我发送一个 MEStreamSinkStarted 事件,然后是一个 MEStreamSinkRequestSample 事件。正在读取这两个事件,但从未调用 ProcessSample。视频文件正在播放;音频流正常处理。我可以通过 TopoEdit 将视频文件成功播放到 EVR。问题发生在重新编译之后,而不是在 Windows 更新建议(对我而言)某种接口更改之后——也许现在需要以前的可选功能——但我没有找到任何对更改的引用。我几乎没有想法了。

这是对示例请求进行排队的函数:

HRESULT BmDstream::OnStarted(void)
{

    OutputDebugString(_T("BmDstream::OnStarted()"));
    FAIL_RETURN(QueueEvent(MEStreamSinkStarted, GUID_NULL, S_OK, NULL));
    OutputDebugString(_T("BmDstream  -- Requesting sample"));
    FAIL_RETURN(QueueEvent(MEStreamSinkRequestSample, GUID_NULL, S_OK, NULL));

    return (S_OK);
}
'''

【问题讨论】:

    标签: ms-media-foundation


    【解决方案1】:

    过失(一如既往)。在重新编译sink的同时,我又做了一个我也怀疑的更改,但是检查了3次没有发现错误。我无意中将源实例化了两次。一个实例用于音频,另一个用于视频。显然,视频源从未启动。与接收器、Windows 更新或除我之外的任何事物无关。啊!

    【讨论】:

      猜你喜欢
      • 2021-03-16
      • 2021-12-10
      • 2014-04-26
      • 2020-12-12
      • 2014-10-15
      • 2015-01-10
      • 1970-01-01
      • 2019-02-15
      • 1970-01-01
      相关资源
      最近更新 更多