1

我编写了一个 DirectShow 视频转换过滤器,它插入在视频解码器和视频渲染过滤器之间。它将在输入图片周围添加一个相框。因此输出图片的大小和纵横比与输入图片不同。

不幸的是,我发现视频渲染会保持原来的纵横比,所以显示的带有相框的图片被拉伸了。在 GraphEdit 中,我找到了带有名为“保持纵横比”复选框的视频渲染过滤器。取消选中它,输出的图片将不会被拉伸。这就是我想要的。但我不知道如何在我的代码中做到这一点。我查询了接口 IVideoWindow 但发现它无法设置纵横比。所以我在这里寻求帮助。

谢谢。


谢谢你,耶利米莫里尔。是的,IVMRAspectRatioControl7/9 就是我想要的。但似乎,要获得接口,我必须首先获得过滤器 Video Mixing Renderer Filter 7/9。我想在“Video Renderer”过滤器而不是“Video Mixing Renderer Filter 9”上设置纵横比。

我不需要动态地改变格式。我的过滤器图是

Source -> Demux -> Decoder -> MyFilter -> VideoRenderer

无论解码器输出的分辨率如何,MyFilter 的输出分辨率始终与桌面屏幕相同。我发现,如果我使用智能连接,我会遇到我描述的问题。但是如果我手动将 MyFilter 连接到 VideoRenderer,则视频分辨率是正确的,即与屏幕相同。

4

1 回答 1

3

也许您正在寻找 IVMRAspectRatioControl7/9 接口(从 VMR 渲染器中查询)?

另外,你所描述的听起来很奇怪。设置输入引脚媒体类型后,您的输出引脚是否在媒体类型中提供正确的视频尺寸?此外,如果您在连接引脚后更改分辨率,您可能需要阅读有关动态格式更改的信息。

于 2009-10-22T06:32:18.283 回答