DirectShow Graph Builder无法将视频文件源连接到VMR9 [英] DirectShow Graph Builder fails to connect video file source to VMR9

查看:90
本文介绍了DirectShow Graph Builder无法将视频文件源连接到VMR9的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个创建图形的应用程序,添加VMR9渲染器,然后使用"IFilterGraph2.renderFile"方法添加视频源并将PIN自动连接到渲染器.

智能连接"算法产生以下序列:

[文件源]-> [AVI Splitter]-> [MJPEG解压缩器]-> [色彩空间转换器]-> [VMR9]

在XP和Windows 7平台上,此方法均能正常工作-直到我在最新的目标笔记本电脑(也是Windows 7设备)上尝试使用.在那台机器上,VMR9渲染器将不会自动连接到任何文件源(但是其他渲染器将....)

我尝试使用"GraphStudioNext"和GSPOT验证建议的图形.尝试自动连接此图时,这些实用程序只会崩溃.

如果我将所有内容连接到颜色空间"滤镜,然后按规范将颜色空间滤镜连接到VMR9,则Graph Studio将运行整个图形.不幸的是,这不是我可以在应用程序代码本身中打开的选项.

有没有人解决过这种问题?关于在哪里寻找解决方案的任何建议?

I have an application which creates a graph, adds the VMR9 renderer, and then uses the "IFilterGraph2.renderFile" method to add a video source and automatically connect the PINs to renderer.

The "Intelligent Connect" algorithm produces the sequence:

[File Source] -> [AVI Splitter] -> [MJPEG Decompressor] -> [Color Space Converter]-> [VMR9]

This works fine on XP and on Windows 7 platforms - until I try it on a my newest target laptop (also a Windows 7 unit). On that one machine, the VMR9 renderer will not automatically connect to any file source (but the other renderes will....)

I have tried to verify the proposed graph using "GraphStudioNext" and GSPOT. Those utilities simply crash when trying to automatically connect this graph.

Graph Studio will run the entire graph if I connect everything up to the "Color Space" filter, and then connect the Color Space Filter to VMR9 by specification. Unfortunately that is not an option that I have open in the application code itself.

Has anyone out there solved this kind of problem? Any suggestions as to where to look for a solution?

推荐答案

(新)目标计算机上是否安装了所有必需的过滤器? 您是否尝试过在GraphEdit中创建图形文件并将其加载到代码中?
Are all required filters installed on the (new) target machine?
Have you tried creating a graph file in GraphEdit and load it in your code?


我收到了解决此问题的答案.谢谢TB !!


此问题是由安装在目标计算机上且具有MERIT_PREFERRED等级的第3方DirectShow过滤器(视频解压缩器)引起的.

通过调用IFilterGraph.SetLogFile(....)启用DirectShow日志文件,可以识别出发生故障的组件.文件的最后一行包含组件的GUID,因为它是第一次加载的.

然后使用SoftTella的DSFMgr实用程序识别并确认该组件.它们可以很好地显示所有DirectShow过滤器,可以通过GUID对其进行排序.

日志文件是使用"FILE_WRITE_THROUGH"创建的,因此将刷新每一行.这是必要的,因为崩溃没有留下任何跟踪信息,否则将无法保存日志文件.

有效的解决方案是将有问题的解压缩器的等级降低到MERIT_DO_NOT_USE.其中有几个,都是来自同一第三方供应商的.
I have received an answer which solves this problem. Thank you T.B.!


The problem was caused by a non-functional 3rd party DirectShow filter (a video decompressor) which had been installed on the target machine with a MERIT_PREFERRED rating.

The failing component was identified by enabling the DirectShow Logfile with a call to IFilterGraph.SetLogFile(.....). The very last line of the file included the GUID of the component as it was first loaded.

The component was then identified and confirmed using the DSFMgr utility from SoftTella. They have a very nice display of all the DirectShow filters which can be sorted by GUID.

The log file was created with "FILE_WRITE_THROUGH" so that every line would be flushed. This was necessary as the crash left no trace information and the log file would not otherwise be saved.

The effective solution was to reduce the rating of the offending Decompressors to MERIT_DO_NOT_USE. There were several of them, all from the same 3rd party vendor.


这篇关于DirectShow Graph Builder无法将视频文件源连接到VMR9的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆