gpt4 book ai didi

c++ - 两个过滤器之间是否自动添加了解码器?

转载 作者:行者123 更新时间:2023-11-28 07:27:44 24 4
gpt4 key购买 nike

我创建了一个 c++ dll,它使用 DirectShow API 在面板句柄上显示相机实时流。我的相机是罗技 c920 网络摄像头。我的相机在第 3 个输出引脚上提供 H264 编解码器。

当我使用 graphEdit 时,如果我将 Logitech Webcam 3rd output Pin 连接到 Video Mixing Render 9 1st input pin,它会自动在两者之间添加 DTV-DVD 微软解码器这样的连接:

Logitech HD Pro Webcam C920 [Capturer] => [VMR Input0] Video Mixing Renderer 9

(连接时变为)

Logitech HD Pro Webcam C920 [Capturer] => [video Input1] Microsoft DTV-DVD Video Decoder [video Output 1] => [VMR Input0 ] 视频混合渲染器9

质量非常好,我在事件电影窗口上的视频流速度很快。

这是它变得不正确的地方。在我的代码中,我直接将捕获源的第 3 个引脚连接到 vmr7 输入引脚(没有添加 dt-dvd 解码器)。我还使用 IAMStreamConfig 将视频设置为 1600x896 和 H264 Mediatype。

我在 msdn 上读到(如果我理解正确的话)directshow 会自动在两个连接的引脚之间放置必要的过滤器。它正在工作,但视频质量很糟糕。看起来有很多像素混合或损坏。我也没有任何证据表明已添加过滤器。是因为我没有以编程方式将解码器放在它们之间吗?如果可以的话,我该如何添加这个过滤器?

提前致谢,抱歉英文。

最佳答案

问题出在这里:

if I connect the Logitech Webcam 3rd output Pin to Video Mixing Render 9

对比

I have directly connected the 3rd pin of capture source to vmr7 input pin

VMR-9 与 VMR-7。前者由 Direct3D 表面支持,帧由硬件平滑缩放。后者则相反,使用DirectDraw表面,自Windows Vista以来不支持缩放,画面质量很差。

使用 EVR 作为视频渲染器(或 VMR-9)以获得最佳图像质量。

关于c++ - 两个过滤器之间是否自动添加了解码器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18411015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com