IMFTopoLoader ::加载失败,带有通用E_FAIL

时间:2016-06-28 20:55:40

标签: c++ windows video video-capture ms-media-foundation

这是一个很长的镜头,但也许有人在那之前遇到过这个问题?

我正在构建一个拓扑结构,它在源和渲染器之间有多个接收器和一些变换(目前只有视频)。源是捕获设备(网络摄像头)。

对于未压缩的视频源,一切正常。但是,当我将源格式更改为MJPEG并在拓扑中添加相应的解码器时,我得到了E_FAIL方法的通用MFTopoLoader::Load()响应,而我似乎无法解析。< / p>

所有渲染器接收器都正确绑定到输出窗口(此拓扑中没有接收器编写器),源激活/配置,没有设置中间IMFMediaType&#(我期望{{1执行此操作)。

我添加解码器的方式如下(快乐路径):

  1. 创建Load()
  2. 列出视频格式的可用解码器,并选择一个(用户选择,但无论如何系统上只有一个可用于MJPEG)
  3. MF_TOPOLOGY_TRANSFORM_NODE包含解码器CoCreateInstance()CLSID上下文
  4. CLSCTX_INPROC_SERVER存储解码器MFT
    1. GetAttributes()从解码器MFT进入节点
  5. CopyAllItems()解码节点上的MFT
  6. 将节点添加到拓扑
  7. 连接解码器
  8. 上述步骤成功,只有SetObject()失败。

    再次 - 管道工作正常,只要其中没有解码器(因此仅适用于未压缩的视频),但是一旦添加解码器,相同的代码就会失败。

    我在Windows 10上运行

0 个答案:

没有答案