- 1、本文档共36页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vc关于视频捕捉.
1关于视频捕捉(about video capture in dshow)1视频捕捉graph的构建一个能够捕捉音频或者视频的graph图都称之为捕捉graph图。捕捉graph图比一般的文件回放graph图要复杂许多,dshow提供了一个capture graph builder com组件使得捕捉graph图的生成更加简单。capture graph builder提供了一个icapturegraphbuilder2接口,这个接口提供了一些方法用来构建和控制捕捉graph。首先创建一个capture graph builder对象和一个graph manger对象,然后用filter graph manager 作参数,调用icapturegraphbuilder2::setfiltergraph来初始化capture graph builder。看下面的代码把
hresult initcapturegraphbuilder(
igraphbuilder **ppgraph, // receives the pointer.
icapturegraphbuilder2 **ppbuild // receives the pointer.
)
{
if (!ppgraph || !ppbuild)
{
return e_pointer;
}
igraphbuilder *pgraph = null;
icapturegraphbuilder2 *pbuild = null;
// create the capture graph builder.
hresult hr = cocreateinstance(clsid_capturegraphbuilder2, null,
clsctx_inproc_server, iid_icapturegraphbuilder2, (void**)pgraph);
if (succeeded(hr))
{
// create the filter graph manager.
hr = cocreateinstance(clsid_filtergraph, 0, clsctx_inproc_server,
iid_igraphbuilder, (void**)pgraph);
if (succeeded(hr))
{
// initialize the capture graph builder.
pbuild-setfiltergraph(pgraph);
// return both interface pointers to the caller.
*ppbuild = pbuild;
*ppgraph = pgraph; // the caller must release both interfaces.
return s_ok;
}
else
{
pbuild-release();
}
}
return hr; // failed
}
2视频捕捉的设备现在许多新的视频捕捉设备都采用的是wdm驱动方法,在wdm机制中,微软提供了一个独立于硬件设备的驱动,称为类驱动程序。驱动程序的供应商提供的驱动程序称为minidrivers。minidrivers提供了直接和硬件打交道的函数,在这些函数中调用了类驱动。在directshow的filter图表中,任何一个wdm捕捉设备都是做为一个wdm video capture过滤器(filter)出现。wdm video capture过滤器根据驱动程序的特征构建自己的filter
下面是陆其明的一篇有关于dshow和硬件的文章,可以拿来参考一下
//陆文章开始
大家知道,为了提高系统的稳定性,windows操作系统对硬件操作进行了隔离;应用程序一般不能直接访问硬件。directshow filter工作在用户模式(user mode,操作系统特权级别为ring 3),而硬件工作在内核模式(kernel mode,操作系统特权级别为ring 0),那么它们之间怎么协同工作呢?
directshow解决的方法是,为这些硬件设计包装filter;这种filter能够工作在用户模式下,外观、控制方法跟普通filter一样,而包装filter内部完成与硬件驱动程序的交互。这样的设计,使得编写directshow应用程序的开发人员,从为支持硬件而需做出的特殊处理中解脱出来。directshow已经集成的包装filter,包括audio capture filter(q
文档评论(0)