虚拟驱动程序:如何强制进行调试

时间:2017-07-21 16:29:28

标签: c++ directshow video-capture

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

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

两个问题:

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

  2. 如何使用graphedt或任何其他工具强制执行特定分辨率的请求?

1 个答案:

答案 0 :(得分:1)

  

我正在寻找一个例子,但我找不到它,也许我在我的网络搜索中使用了错误的关键字

在这里: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;
  

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

真正的应用程序将(可能)选择可用的。

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

否则通常按照枚举顺序选择分辨率/媒体类型,因此我用上面的链接突出显示的第237行显示了临时覆盖的方式:

if (iIndex == 0) iIndex = 4;