虚拟驱动程序:如何强制调试分辨率

Virtual Driver: how to force resolutions for debugging

我正在开发虚拟驱动程序(Directshow 过滤器),我正在使用 graphedt 来测试和调试过滤器。

目前我的代码仅支持 320x240 像素的分辨率(硬编码)。 据我了解,我需要处理 GetMediaType 和 GetStreamCaps 函数以支持其他分辨率。

两个问题:

  1. 我正在为此寻找示例,但找不到,也许我在网络搜索中使用了错误的关键字

  2. 如何强制请求特定分辨率以便使用 graphedt 或任何其他工具测试我的代码?

I'm looking for an example for this but I cannot find it, perhaps I'm using wrong keywords in my websearch

给你:https://github.com/rdp/open-source-directshow-video-capture-demo-filter/blob/master/vcam_vs_2010_demo_video_capture_project/vcam_vs_2010/Filters.cpp#L237

八项决议:

if(iPosition < 0) return E_INVALIDARG;
if(iPosition > 8) return VFW_S_NO_MORE_ITEMS;

[...]

pvi->bmiHeader.biWidth      = 80 * iPosition;
pvi->bmiHeader.biHeight     = 60 * iPosition;

how to force a request for a specific resolution in order to test my code using graphedt or any other tool?

真正的应用程序将(可能)在可用中进行选择。

GraphStudioNext 在连接时提供 Ctrl+Shift+M 选项供选择。

否则通常会按枚举顺序选择 resolutions/media 类型,因此我在上面用 link 突出显示的第 237 行向您展示了临时覆盖的方法:

if (iIndex == 0) iIndex = 4;