⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 directshow 学习笔记(二)filter - hanyufeng的专栏 - csdnblog.htm

📁 directshow的开发过程的详细介绍
💻 HTM
📖 第 1 页 / 共 3 页
字号:
style="FONT-SIZE: 12pt; COLOR: blue">原理——对硬件的支持</SPAN></STRONG></DIV>
<DIV><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
</SPAN>为了提高系统的稳定性,Windows对硬件操作进行了隔离,应用程序一般不能直接访问硬件。DirectShowFilter工作在用户模式下,而硬件工作在内核模式下,它们之间如何协同工作呢?DirectShow的解决方案是为这些硬件提供包装(Wrapper)Filter,这种Filter能够工作在用户模式下,其外观和控制方法与普通Filter一样,而包装Filter在内部完成与硬件功能的交互。</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">21</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">、</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">Filter</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">原理——</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">VMR-9</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">的发布</SPAN></STRONG></DIV>
<DIV><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VMR</SPAN>(Video Mixing 
Renderer)是DirectShow的新一代Video Renderer。VMR有两个版本:VMR-7和VMR-9。前者采用了DirectDraw 
7技术,仅仅在Windows XP操作系统下可以获得,并且是XP上默认的用于视频显示的Renderer(代替传统的Video 
Renderer);后者采用了Direct3D 9的技术,是随DirectX9.0一起发布的,但任何时候都不是默认的Renderer。</DIV>
<DIV><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </SPAN>安装了DirectX9.0以后,就有4个Video 
Renderer可供选择使用:传统的Video Renderer、Overlay Mixer、VMR-7和CMR-9。</DIV>
<DIV><SPAN>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
VMR</SPAN>主要利用了显卡专有的图形处理能力(VMR做视频的合成和显示时并不占用系统的CPU资源),它能够表现的性能对于硬件的依赖性很高。</DIV>
<DIV>&nbsp;</DIV>
<DIV><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">22</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">、</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">Filter</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">原理——</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">Filter Graph</SPAN></STRONG><STRONG><SPAN 
style="FONT-SIZE: 12pt; COLOR: blue">的构建方法</SPAN></STRONG></DIV>
<DIV>(1)IFilterGraph::AddFilter:该参数提供一个Filter对象,将其加入到Filter Graph中。</DIV>
<DIV>(2)IFilterGraph::ConnectDirect:该参数提供输出Pin、输入Pin以及媒体类型,进行直接的连接。</DIV>
<DIV>(3)IGraphBuilder::AddSourceFilter:该参数提供源文件名,自动将一个Source Filter加载到Filter 
Graph中。</DIV>
<DIV>(4)IGraphBuilder::Connect:该参数提供输出Pin和输入Pin进行连接,如果连接失败,自动尝试在中间插入必要的格式转换Filter。</DIV>
<DIV>(5)IGraphBuilder::Render:该参数提供输出Pin,自动加入必要的Filter完成剩下部分Filter 
Graph的构建(直到连接到Rendering Filter)。</DIV>
<DIV>(6)IGraphBuilder::RnderFile:该参数提供源文件名,自动加入必要的Filter完成这个文件的回放Filter 
Graph的构建。</DIV><SPAN style="FONT-SIZE: 10.5pt">Filter</SPAN><SPAN 
style="FONT-SIZE: 10.5pt">通过</SPAN><SPAN 
style="FONT-SIZE: 10.5pt">Pin</SPAN><SPAN 
style="FONT-SIZE: 10.5pt">这样的连接,就能“串联”起来,从而构建完整的</SPAN><SPAN 
style="FONT-SIZE: 10.5pt">Filter Graph</SPAN><SPAN 
style="FONT-SIZE: 10.5pt">。后四种构建方法都有“自动”的功能,这种机制称为智能连接(</SPAN><SPAN 
style="FONT-SIZE: 10.5pt">Intelligent Connect</SPAN><SPAN 
style="FONT-SIZE: 10.5pt">)。</SPAN>&nbsp;&nbsp;<BR><BR>
<P id=TBPingURL>Trackback: 
http://tb.blog.csdn.net/TrackBack.aspx?PostId=1336645</P><BR></DIV>
<DIV class=postFoot>
<SCRIPT src=""></SCRIPT>
[<A title=功能强大的网络收藏夹,一秒钟操作就可以轻松实现保存带来的价值、分享带来的快乐 
href="javascript:d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(saveit=window.open('http://wz.csdn.net/storeit.aspx?t='+escape(d.title)+'&amp;u='+escape(d.location.href)+'&amp;c='+escape(t),'keyit','scrollbars=no,width=590,height=300,left=75,top=20,status=no,resizable=yes'));saveit.focus();">收藏到我的网摘</A>]&nbsp;&nbsp; 
hanyufeng发表于 2006年10月16日 13:45:00 </DIV></DIV><LINK 
href="http://blog.csdn.net/hanyufeng/Services/Pingback.aspx" rel=pingback><!--<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"xmlns:dc="http://purl.org/dc/elements/1.1/"xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"><rdf:Descriptionrdf:about="http://blog.csdn.net/hanyufeng/archive/2006/10/16/1336645.aspx"dc:identifier="http://blog.csdn.net/hanyufeng/archive/2006/10/16/1336645.aspx"dc:title="DirectShow 学习笔记(二)Filter"trackback:ping="http://tb.blog.csdn.net/TrackBack.aspx?PostId=1336645" /></rdf:RDF>-->
<SCRIPT>function hide(){showComment();}</SCRIPT>
<BR><BR><BR><BR>
<DIV class=post id=csdn_zhaig_ad_yahoo></DIV>
<SCRIPT type=text/javascript>document.write("<img src=http://counter.csdn.net/pv.aspx?id=24 border=0 width=0 height=0>");</SCRIPT>
<SPAN class=PreAndNext id=viewpost.ascx_PreviousAndNextEntriesDown>
<DIV align=center><A 
href="http://blog.csdn.net/hanyufeng/archive/2006/10/16/1336648.aspx">上一篇:&nbsp;DirectShow 
媒体文件回放总结</A>&nbsp;|&nbsp;<A 
href="http://blog.csdn.net/hanyufeng/archive/2006/10/16/1336638.aspx">下一篇:&nbsp;DirectShow 
学习笔记(1)</A></DIV></SPAN><SPAN id=Anthem_Comments.ascx_ltlComments__><SPAN 
id=Comments.ascx_ltlComments><BR>
<DIV id=comments>
<H3>����</H3>没有评论。 </DIV></SPAN></SPAN>
<SCRIPT language=javascript>
ad_width=468;
ad_height=60;
adcss=2;
unionuser=19;
ad_type='j';
count=5; 
</SCRIPT>

<DIV>
<SCRIPT language=javascript 
src="DirectShow 学习笔记(二)Filter - hanyufeng的专栏 - CSDNBlog.files/showads.js" 
type=text/javascript></SCRIPT>

<SCRIPT language=javascript 
src="DirectShow 学习笔记(二)Filter - hanyufeng的专栏 - CSDNBlog.files/showgm.js" 
type=text/javascript></SCRIPT>
</DIV>
<DIV class=CommentForm id=commentform>
<H3>发表评论 </H3>
<DIV id=Anthem_PostComment.ascx_CommentUpdatePanel__>
<DIV id=PostComment.ascx_CommentUpdatePanel>
<TABLE class=CommentForm>
  <TBODY>
  <TR>
    <TD width=69 height=0></TD>
    <TD></TD></TR>
  <TR>
    <TD width=70>大名:</TD>
    <TD align=left><INPUT id=PostComment.ascx_tbName style="WIDTH: 300px" 
      disabled maxLength=32 size=40 name=PostComment.ascx:tbName> <SPAN 
      id=PostComment.ascx_RequiredFieldValidator2 
      style="DISPLAY: none; COLOR: red" initialvalue="" 
      evaluationfunction="RequiredFieldValidatorEvaluateIsValid" 
      display="Dynamic" errormessage="<br>请输入尊姓大名" 
      controltovalidate="PostComment.ascx_tbName"><BR>请输入尊姓大名</SPAN> </TD></TR>
  <TR>
    <TD width=70>网址:</TD>
    <TD align=left><INPUT id=PostComment.ascx_tbUrl style="WIDTH: 300px" 
      disabled maxLength=256 size=40 name=PostComment.ascx:tbUrl> </TD></TR>
  <TR>
    <TD colSpan=3>评论&nbsp; <SPAN id=PostComment.ascx_RequiredFieldValidator3 
      style="DISPLAY: none; COLOR: red" initialvalue="" 
      evaluationfunction="RequiredFieldValidatorEvaluateIsValid" 
      display="Dynamic" errormessage="<br>请输入评论" 
      controltovalidate="PostComment.ascx_tbComment"><BR>请输入评论</SPAN> <BR><TEXTAREA id=PostComment.ascx_tbComment style="WIDTH: 381px; HEIGHT: 193px" disabled name=PostComment.ascx:tbComment rows=10 cols=50></TEXTAREA> 
    </TD></TR>
  <TR>
    <TD colSpan=3><SPAN 
      id=Anthem_PostComment.ascx_btnSubmit__></SPAN>&nbsp;&nbsp;&nbsp; </TD></TR>
  <TR>
    <TD colSpan=3><SPAN id=PostComment.ascx_Message 
      style="COLOR: red">当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击<A 
      href="http://passport.csdn.net/member/UserLogin.aspx?from=http://blog.csdn.net/hanyufeng/archive/2006/10/16/1336645.aspx">登录</A></SPAN> 
    </TD></TR></TBODY></TABLE></DIV></DIV></DIV></DIV>
<P id=footer>Powered by: <BR><A id=Footer1_Hyperlink2 
href="http://scottwater.com/blog" name=Hyperlink1><IMG 
src="DirectShow 学习笔记(二)Filter - hanyufeng的专栏 - CSDNBlog.files/100x30_Logo.gif" 
border=0></A> <A id=Footer1_Hyperlink3 href="http://asp.net/" 
name=Hyperlink1><IMG 
src="DirectShow 学习笔记(二)Filter - hanyufeng的专栏 - CSDNBlog.files/PoweredByAsp.Net.gif" 
border=0></A> <BR>Copyright © hanyufeng </P>
<SCRIPT 
src="DirectShow 学习笔记(二)Filter - hanyufeng的专栏 - CSDNBlog.files/counter.js"></SCRIPT>

<SCRIPT type=text/javascript>
<!--
var Page_Validators =  new Array(document.getElementById("PostComment.ascx_RequiredFieldValidator2"), document.getElementById("PostComment.ascx_RequiredFieldValidator3"));
// -->
</SCRIPT>
<INPUT id=__EVENTVALIDATION type=hidden 
value=/wEWBAL+raDpAgKqtOi0AwLAsuLbDAKi687YCUWrxnz0m3jdiWVy2TbKBUr9QAYR 
name=__EVENTVALIDATION>
<SCRIPT type=text/javascript>
<!--
var Page_ValidationActive = false;
if (typeof(ValidatorOnLoad) == "function") {
    ValidatorOnLoad();
}

function ValidatorOnSubmit() {
    if (Page_ValidationActive) {
        return ValidatorCommonOnSubmit();
    }
    else {
        return true;
    }
}
// -->
</SCRIPT>
 </FORM>
<SCRIPT language=javascript type=text/javascript>
	<!--
	    try
        {
	        hide();
        }
        catch(e){}
	//-->
    </SCRIPT>
</BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -