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

利用 DirectShow 开发自己的 Filter

 2006-07-23 11:33:58 来源:WEB开发网   
核心提示: 类厂对象是用来生成Filter对象的,用的模板类定义了一个全局的模板类对象数组,利用 DirectShow 开发自己的 Filter(9),一般格式如下:CFactoryTemplate g_Templates[1] ={{L"my filter",// Name&CL

类厂对象是用来生成Filter对象的,用的模板类定义了一个全局的模板类对象数组,一般格式如下:

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]); 

4、关于你自己定义的Filter以及Pin的信息

这些是一个全局的结构变量,用于描述你的Filter和你定义的pin,在注册Filter的时候会用到,如下:

AMOVIESETUP_FILTER 描述一个Filter
AMOVIESETUP_PIN 描述pin
AMOVIESETUP_MEDIATYPE 描述数据类型

下面的代码描述了一个Filter带有一个output PIN:

static const WCHAR g_wszName[] = L"Some Filter";
AMOVIESETUP_MEDIATYPE sudMediaTypes[] = {
  { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB24 },
  { &MEDIATYPE_Video, &MEDIASUBTYPE_RGB32 },
};
AMOVIESETUP_PIN sudOutputPin = {
  L"",      // Obsolete, not used.
  FALSE,     // Is this pin rendered?
  TRUE,      // Is it an output pin?
  FALSE,     // Can the filter create zero instances?
  FALSE,     // Does the filter create multiple instances?
  &GUID_NULL,   // Obsolete.
  NULL,      // Obsolete.
  2,       // Number of media types.
  sudMediaTypes  // Pointer to media types.
};
AMOVIESETUP_FILTER sudFilterReg = {
  &CLSID_SomeFilter,   // Filter CLSID.
  g_wszName,       // Filter name.
  MERIT_NORMAL,      // Merit.
  1,           // Number of pin types.
  &sudOutputPin      // Pointer to pin information.
};

最后如果你还是调试通不过,看看你是否包含了下面的头文件:

#include <streams.h>
#include <initguid.h>
#include <tchar.h>
#include <stdio.h>

智慧的鱼 aoosang 2004-09-01

上一页  4 5 6 7 8 9 

Tags:利用 DirectShow 开发

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