【发布时间】: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);
}
'''
【问题讨论】: