文件系统驱动编程基础篇之6-DirectShow.docVIP

文件系统驱动编程基础篇之6-DirectShow.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、前略 /document/viewdoc/?id=1483) 阅读基础:少量的COM编程的基础知识,了解如何调用COM组件的方法,最好掌握哪怕一丁点的ATL。 本章目的:了解DirectX组件架构,学习编写简单的DirectShow程序。 二、DirectX与DirectShow ????首先看下面两段关于DirectX和DirectShow相关内容的摘要: ????Windows系统的架构下,我们不能如Dos般随心所欲的控制硬件,而希望游戏、影像开发人员对内核的理解都达到驱动编程人员的水平,是一件苛求的事情,但是为此将失去广大市场的关键问题必然要产生解决的办法,因此,DirectX或其他不同名的相同技术的出现是件必然的。 ????有些读者可能会对驱动编程的基础文章涉及DirectX的必要性有所疑问,确实,DirectX并不是学习驱动编程的一个障碍,笔者在初次的学习中也从未意识过要了解这方面的内容。但是换一个角度,如果你看到鸡窝里的五个鸡蛋,我们是不是很有理由猜测这是由五只母鸡组成的五好家庭?因此我们可很牵强的认为DirectX如同内核的外部据点,如果我们拔除了,必然有更大的把握向内核发动总攻。 ????笔者把DirectX加入本系列文章的另一个重要原因是——DirectX确实有值得炫耀的资本。对于编程人员来说,它的COM接口简直可用“优雅”来评价,当你用着如苦瓜般的IMarshal接口时,不妨来看看什么样的接口值得这样的评价。我挑选了DirectX里一个很有意思的部分——DirecShow来作为突破口,讲述如何“Direct”——直接的控制视频设备。 ????学习的进阶大略上可分为四个部分:学习调用组件、捕获和编辑影像、学习编写过滤器、掌握媒体格式的高阶部分。限于能力,只介绍前两个部分。读者不要满足于学会使用DirctShow,而是通过DirctShow的具体功能猜测系统驱动的功能,甚至设备的构成,减轻将来主攻驱动时的负担,此即由外而内的学习方法。 ????笔者将掠人之美,使用参考资料1提供的示例阐明编程的基本思路。三、DirectShow基础和GraphEdit ????在Windows系统中,DirectShow以COM组件的形式存在,下图描绘了DirectShow组件、硬件以及系统组件的关系(Leagcy为传统或遗留,旧的之意)。 ????现在我们只需了解DirectShow里包含了两大类型的对象:三类“Filter”(源、转换、渲染过滤器),以及由这些过滤器集组成提供特定功能的“Filter Graph”,这个Graph不妨看成是包含Filter的一个容器。 ????为了从可视化的角度理解DirectShow工作的方式,我们可使用SDK附带的GraphEdit工具。它最基本的功能是利用系统里已经安装的解码器,使用DirectShow组件来播放媒体文件,并直观的显示播放流程。下面演示一下如何播放一个媒体文件。 ????GraphEdit的界面如图: ? ????从菜单文件——渲染媒体文件…里选择你要播放的文件,这里我们选择一个微软支持的avi格式文件ff8-full-ending.avi,则界面上出现: ????每一个DirectShow组件都以矩形框表示,Input、Output针(pin)作为每个过滤器的输入或输出。通常情况下,源(左上角的ffi_full_ending.avi)、渲染过滤器(Video Renderer和Default DirectSound Device)是必须的,转换过滤器根据实际情况可选。从菜单图表——插入过滤器…可以看到所有可用的过滤器。 ????上图隐含了DirctShow的“智能选择”功能,即如果你提供了任何两个逻辑关联的渲染器(如MPC – Avi Splitter和Video Renderer),DirectShow会自动查找之间的可用组件,形成一个正常的播放流程。读者如果想真正掌握DirectShow,应该学会手工添加、连接合适的过滤器而不仅仅依赖于“智能选择”功能。 ????由图可知,avi文件被播放前,经过分离器的分离,形成视频和音频两个部分,它们再选择合适的解码器,最后分别送到系统默认的渲染过滤器上进行渲染,影像就显现于屏幕上了。 ????点一下界面上绿色三角的播放键,则可以欣赏我们的影片了。 ????这一切出乎意料的简单,这使我们不由产生了这么一个想法——DirctShow的初级应用也是非常简单的,事实正是如此。在进价的第一部分,我们学习如何通过调用组件,完成一个媒体文件的播放。 四、进价之一——组件的调用 ????本篇将要接触到下表组件的调用,详细的信息可参考Msdn上的说明,这些基础工作留给有心的读者来完成吧: IID CREATE CLSI

您可能关注的文档

文档评论(0)

shaoye348 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档