2009-10-22 28 views
1

我已经写了一个DirectShow视频转换过滤器,它插在视频解码器和视频渲染过滤器之间。它会在输入图片周围添加一个相框。所以输出picutre的尺寸和长宽比与输入的不一样。如何使渲染过滤器不保持纵横比?

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

谢谢。


谢谢你,耶利米莫里尔。是的,IVMRAspectRatioControl7/9是我想要的。但看起来,为了获得界面,我必须首先获得过滤器Video Mixing Renderer Filter 7/9。我想在“视频渲染器”过滤器而不是“视频混合渲染器过滤器9”上设置高宽比。

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

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

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

回答

2

也许您在寻找IVMRAspectRatioControl7/9界面(查询VMR渲染器)?

另外,你所描述的听起来很奇怪。输入引脚介质类型设置后,您的输出引脚是否在介质类型中提供了正确的视频尺寸?此外,如果您在连接引脚后更改分辨率,则可能需要阅读dynamic format changes

+1

谢谢。是的,IVMRAspectRatioControl7/9可以做我想做的。但我的问题是如何在“Video Renderer”过滤器上设置宽高比,因为我可以在GraphEdit上进行设置。 –

相关问题