看dx里dshow的例子和别人的程序,用IFilterGraph::AddFilter()这个API添加filter到Graph的时候,第二个参数是一个设备友好名称;

我看有的填的是通过IPropertyBag:read方法得到的FriendlyName参数,这个好理解;但是有的则直接填入诸如"Capture

Video","Source"之类的字符串,实在无法理解,因为这些根本不是设备的FriendlyName,这可以是一个in输入参数啊?

     包括陆其明的书和dshow的例子都没有对这个问题阐述过,只是随便填的。

    后来查到MSDN才了解,翻译了一下:

           第二个参数filter的名称可以是NULL,在这种情况下filter graph manager将产生一个名字。

           如果该参数不为NULL,且不是唯一的,AddFilter函数将修改这个(你填入的)名字,且尝试产生一个唯一的名字;如果成功,

返回VFW_S_DUPLICATE_NAME,否则返回VFW_E_DUPLICATE_NAME。

 

      上面的粗体字说明了, 填入"Capture Video","Source"之类是没用的;实际修改playcap的例子,改为AddFilter(pSrcFilter, L"XXX");

,应用程序也不会有任何变化。

 

http://blog.csdn.net/cosmoslife/article/details/8031504

posted on 2017-11-22 15:26  瓦楞球  阅读(386)  评论(0编辑  收藏  举报