控制 DirectShow 中的宽高比(全屏模式)

发布于 2024-11-25 04:20:56 字数 292 浏览 1 评论 0原文

我通过简单的方法(IGraphBuilder RenderFile)使用 DirectShow,并尝试通过查询补充接口来控制其他一切。

有问题的选项是纵横比。我以为它是默认维护的,但实际上同一个程序在不同的机器上(可能是 DirectX 的版本)表现不同。对于窗口中的视频来说这不是一个大问题,因为我可以自己维护窗口的宽高比(基于视频大小),但对于全屏模式我不明白如何控制。

我发现至少有两个复杂的选项:用于 VMR 视频和添加叠加混合器,但是是否有已知的方法可以为 IGraphBuilder 的 RenderFile 视频执行此操作?

I'm using DirectShow with a simple approach (IGraphBuilder RenderFile) and try to control everything else with querying supplemental interfaces.

The option in question is aspect ratio. I thought that it is maintained by default, but actually the same program behaves differently on different machines (maybe versions of DirectX). This is not a huge problem for a video in a window, because I can maintain the aspect ratio of my window by myself (based on the video size), but for full-screen mode I can not understand how can I control.

I found that there are at least two complex options: for VMR video and with adding overlay mixer, but is there a known way for doing this for IGraphBuilder' RenderFile video?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌酱 2024-12-02 04:20:56

当您执行 IGraphBuilder::RenderFile 时,它​​会在内部向图形添加视频渲染器过滤器。它通常是 VMR-7 视频渲染过滤器< /a>:

在 Windows XP 及更高版本中,视频混合渲染器 7 (VMR-7) 是
默认视频渲染器。它被称为 VMR-7,因为其内部
使用 DirectDraw 7。

此时,您可以枚举图形的过滤器、找到 VMR-7 并使用其接口,例如 IVMRAspectRatioControl 指定感兴趣的模式。

When you do IGraphBuilder::RenderFile, it internally adds a video renderer filter to the graph. It is typically a VMR-7 Video Renderer Filter:

In Windows XP and later, the Video Mixing Renderer 7 (VMR-7) is the
default video renderer. It is called the VMR-7 because internally it
uses DirectDraw 7.

At this point you can enumerate graph's filters, locate VMR-7 and use its interfaces such as IVMRAspectRatioControl to specify mode of interest.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文