Windows 8上的DirectShow SmartTee行为

火花

我想做什么

我正在尝试使用VS2008使用VC ++语言的DirectShow框架创建示例USB相机流应用程序(或多或少像amcap的剥离版本)。以下是我用来构建的过滤器图表信息。

筛选图

网络摄像头(捕获引脚)-智能三通(预览引脚)-转换将单色Y8转换为YUY2的滤镜-视频混合渲染。

附加信息

  • 网络摄像头以640x480,Y8 @ 30FPS的速度播放。
  • 在Windows 7 Professional上经过测试,Intel i3-正常,能够以30FPS的速率流VGA。
  • 视频捕获过滤器中没有可用的预览图钉。

问题

使用相同的过滤器图形设置,我在Windows 8 Intel i3 PC上遇到问题。但是,如果我用Microsoft SDK中提供的Infinte Tee示例替换Smart Tee过滤器,则效果很好。为什么在Windows 8中无法使用智能T型过滤器?

编辑:问题是我无法在Windows 8上将视频捕获过滤器连接到智能三通过滤器,但在Windows 7上却可以连接。我尝试了graphedit工具。Windows 8试图为Y8媒体子类型(YUY2正常工作)形成以下图形。

网络摄像头(捕获引脚)-将单色Y8转换为YUY2的转换滤镜-智能三通(预览引脚)-视频混合渲染。

当我运行图形时,graphedit会异常关闭。

如果我没有注册转换过滤器,则在将Capture过滤器与smart tee连接时会收到此错误。这些过滤器无法就连接达成共识。验证输入和输出引脚的类型兼容性。找不到中间过滤器的组合来建立连接。(返回码= 0x80040217)'

另外,如果我使用Infinte tee过滤器,则每隔几分钟就会有帧速率下降。Windows 7和Windows 8上的智能三通过滤器有什么区别?什么可以用作智能三通的替代品?

在此先感谢您的帮助。

罗曼·R。

Smart Tee筛选器不太可能不太好-与Windows 7几乎没有什么不同。相反,可能出现此问题的地方特别是相机驱动程序和Y8格式。我会在这种媒体类型中寻找会导致连接问题的问题,或者您可能希望通过IAMStreamConfig::SetFormat或通过属性页选择更流行的格式,例如YUY2 / YV12,或者有问题的Y8格式是交错的VIDOINFOHEADER2并由tee所定义或者,您可能只需要更新相机硬件的驱动程序即可。

Inf Tee过滤器的速率下降问题再次表明您需要检查相机驱动程序。

Smart Tee与Infinite Pin Tee

两者都是分离器,这是一个典型的问题,当一个分离器出现问题时,是否真的有可能用另一个分离器进行替换。

两个过滤器都执行一个非常简单的任务,并且两个过滤器都故意实现了自己的把戏。Smart Tee过滤器会剥离时间戳,以将实时供稿转换为良好的预览效果。出于捕获目的,通常只要流完整性完好且帧彼此之间相对良好,您就不会在乎延迟。出于演示目的,通常需要将时间戳与时钟进行匹配,并且不需要在实时预览中使用它,因为您想要的只是尽快获得帧。这是适用于Smart Tee的地方,对其他任何方面都没有好处。

相反,Infinite Pin Tee滤波器无需修改即可复制输入提要。因此,它无法像您预期的那样进行实时视频预览,而直接将一个过滤器替换为另一个过滤器并不能完成预期的工作。过滤器甚至无法复制/复制数据,因此,它在其输出引脚之间共享内存分配器,这可能会产生许多问题。但是,它可以完成重复的工作,并增加了最小的开销。

此外,类似Inf Pin Tee的过滤器可作为Windows SDK示例在源代码中获得\Samples\multimedia\directshow\filters\inftee

用Inf Pin Tee过滤器快速替换Smart Tee过滤器是这样的:

捕获-> Inf T恤-> Sample Grabber-> ...

将Sample Grabber设置为SampleCB叫的地方,您的回调将从视频帧中删除时间戳。通过这种方式,您可以将一个T恤替换为另一个T恤,以进行实时预览。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章