WinCE DirectShow Filter 注册
2010-03-03 11:42
267 查看
WinCE DirectShow Filter 注册
by hdh 2009 03 03
Wince系统Filter的注册,代码如下:
STDAPI DllRegisterServer()
{
HRESULT hr= AMovieDllRegisterServer2(TRUE);
return hr;
}
通过这个注册,COm的信息注册进去了,可以在程序里面创建Com 接口。但是pin 的信息没有注册进去,智能链接的时候没效。
通过查看 Directshow 的AMovieDllRegisterServer2代码发现确实只是注册了com信息,没有注册pin信息。解决方法:
一、自己创建注册表文件,然后用注册表导入工具经信息导入。
有点麻烦,需要对filter的注册信息了解,需要做注册表导入工具。
二、使用Directshow的CLSID_FilterMapper 来导入pin信息,代码如下:
STDAPI DllRegisterServer()
{
HRESULT hr= AMovieDllRegisterServer2(TRUE);
RegisterAllPin();
return hr;
}
BOOL RegisterAllPin()
{
CoInitialize(NULL);
HRESULT hr=E_FAIL;
IFilterMapper *pIFM = 0;
hr = CoCreateInstance(
CLSID_FilterMapper,
NULL,
CLSCTX_INPROC_SERVER,
IID_IFilterMapper,
(void **)&pIFM);
if(FAILED(hr))
{
printf("Get FilterMapper fail/r/n");
return FALSE;
}
printf("Get FilterMapper Success/r/n");
for( int i = 0; i < g_cTemplates; i++ )
{
// get i'th template
//
const CFactoryTemplate *pT = &g_Templates[i];
if( NULL != pT->m_pAMovieSetup_Filter )
{
hr = AMovieSetupRegisterFilter( pT->m_pAMovieSetup_Filter, pIFM, TRUE );
printf("Get AMovieSetupRegisterFilter /r/n");
}
// check final error for this pass
// and break loop if we failed
//
if( FAILED(hr) )
break;
}
CoUninitialize();
return TRUE;
}
这样以后就可以把pin的信息导入到注册表里面去了,可以实现filter的智能链接了。
by hdh 2009 03 03
Wince系统Filter的注册,代码如下:
STDAPI DllRegisterServer()
{
HRESULT hr= AMovieDllRegisterServer2(TRUE);
return hr;
}
通过这个注册,COm的信息注册进去了,可以在程序里面创建Com 接口。但是pin 的信息没有注册进去,智能链接的时候没效。
通过查看 Directshow 的AMovieDllRegisterServer2代码发现确实只是注册了com信息,没有注册pin信息。解决方法:
一、自己创建注册表文件,然后用注册表导入工具经信息导入。
有点麻烦,需要对filter的注册信息了解,需要做注册表导入工具。
二、使用Directshow的CLSID_FilterMapper 来导入pin信息,代码如下:
STDAPI DllRegisterServer()
{
HRESULT hr= AMovieDllRegisterServer2(TRUE);
RegisterAllPin();
return hr;
}
BOOL RegisterAllPin()
{
CoInitialize(NULL);
HRESULT hr=E_FAIL;
IFilterMapper *pIFM = 0;
hr = CoCreateInstance(
CLSID_FilterMapper,
NULL,
CLSCTX_INPROC_SERVER,
IID_IFilterMapper,
(void **)&pIFM);
if(FAILED(hr))
{
printf("Get FilterMapper fail/r/n");
return FALSE;
}
printf("Get FilterMapper Success/r/n");
for( int i = 0; i < g_cTemplates; i++ )
{
// get i'th template
//
const CFactoryTemplate *pT = &g_Templates[i];
if( NULL != pT->m_pAMovieSetup_Filter )
{
hr = AMovieSetupRegisterFilter( pT->m_pAMovieSetup_Filter, pIFM, TRUE );
printf("Get AMovieSetupRegisterFilter /r/n");
}
// check final error for this pass
// and break loop if we failed
//
if( FAILED(hr) )
break;
}
CoUninitialize();
return TRUE;
}
这样以后就可以把pin的信息导入到注册表里面去了,可以实现filter的智能链接了。
相关文章推荐
- WinCE DirectShow Filter 注册
- WinCE DirectShow Filter 注册
- WinCE DirectShow Filter 注册
- directshow写的transform filter,不能注册ax文件,提示没有找到DllRegisterServer输入点
- directshow 与 ffmpeg 联合使用时filter注册不成功的问题
- directshow 不注册使用filter
- DirectShow 注册 filter
- Directshow 注册 source filter
- directshow 不注册使用filter
- 自建DirectShow Filter Graph的流程
- Directshow注册
- RTSP/RTMP/HTTP DirectShow Source Filter
- 【嵌入式WinCE平台B/S应用】为嵌入式IE注册ActiveX控件。
- 基于DirectShow的WinCE多媒体编程
- DirectShow基础编程 最简单transform filter 编写步骤
- 基于FFmpeg的RTSP directshow filter
- 深入浅出DirectShow Filter
- 利用DirectShow开发自己的Filter
- DirectShow 学习(七) CTransInPlaceFilter及相关联Pin类的源代码解析
- Filter的注册2