WEB开发网
开发学院软件开发VC 利用 DirectShow 开发自己的 Filter 阅读

利用 DirectShow 开发自己的 Filter

 2006-07-23 11:33:58 来源:WEB开发网   
核心提示: CFactoryTemplate g_Templates[1] ={{L"my filter",// Name&CLSID_MYFilter, // CLSIDCMyFilter::CreateInstance, // Method to create an insta

CFactoryTemplate g_Templates[1] =
{
  {
   L"my filter",        // Name
   &CLSID_MYFilter,       // CLSID
   CMyFilter::CreateInstance,  // Method to create an instance of MyComponent
   NULL,              // Initialization function
   &sudInfTee              // Set-up information (for filters)
  }
};
int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]); 

如果在这个com组件中你要支持多个filter,你可以在这个数组中继续添加就是了。

四、如何实现自己的 Filter

在这里就要讲如何创建自己的Filter了,下面我们以写一个CTransformFilter为例:

1、选择一个基类,声明自己的类。

创建filter很简单,你只要根据自己的需要选择不同的基类Filter派生出自己的Filter,它就已经支持com特性了。

从逻辑上考虑,在写Filter之前,选择一个合适的Filter基类是至关重要的。为此,你必须对几个Filter的基类有相当的了解。在实际应用中,Filter的基类并不总是选择CBaseFilter的。相反,因为我们绝大部分写的都是中间的传输Filter(Transform Filter),所以基类选择CTransformFilter和CTransInPlaceFilter的居多。如果我们写的是源Filter,我们可以选择CSource作为基类;如果是Renderer Filter,可以选择CBaseRenderer或CBaseVideoRenderer等。

总之,选择好Filter的基类是很重要的。当然,选择Filter的基类也是很灵活的,没有绝对的标准。能够通过CTransformFilter实现的Filter当然也能从CBaseFilter一步一步实现。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:利用 DirectShow 开发

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接