当前位置:编程学习 > C#/ASP.NET >>

关于一个filter创建多个实例对象的问题!

 请教各位一个问题,最近在做一个TS流播放器,中间有用到一些demux 和 video decoder 的filter,比如mpg2splt.ax, 之前实现的功能是播放一道TS流里面的一套节目。现在项目要球能同时播放一个TS流里面的几套节目,这样之前我用到的每个filter我就要同时创建几个相应的对象!请问一个COM 组件如何同时多个对象!

以mpg2splt.ax为例

之前在我实现一道节目流解复用时,我demux filter的初始化和应用如下


CComPtr<IBaseFilter> m_MPEG2DEMUX;
IMpeg2Demultiplexer *pDemuxInte易做图ce;

hr = m_MPEG2DEMUX.CoCreateInstance(CLSID_Demux);  //创建一个Demux的对象
if (FAILED(hr))  
 {
   ShowError(L"创建对象失败");
 }
hr = m_MPEG2DEMUX ->QueryInte易做图ce( IID_IMpeg2Demultiplexer,(void **) &pDemuxInte易做图ce);   //通过IID_IMpeg2Demultiplexer获得一个mpeg2 demux 的流接口
if (FAILED(hr))  
 {
   ShowError(L"获得流接口失败");
 }

hr = m_pGraph->AddFilter(m_MPEG2DEMUX, L"MPEG2 Demux"); //把filter 对象添加到当前 filter graph中  
if (FAILED(hr))  
 {
   ShowError(L"添加mpg2 demux filter失败");
 }

现在我要能够实现同时播放一道TS流里面的几套节目,那么还是以mpg2splt.ax filter为例子,我如何创建多个实例对象??之前在网上查了下,说是用CoGetClassObject类厂的概念能实现一个组件同时创建多个对象,我试了一下如下代码,但是运行的时候却导致死机 ,请教各位我如何实例化一个组件的多个对象??谢谢 

IClassFactory* m_pDemuxClassFactory;
hr = ::CoGetClassObject(CLSID_Demux,CLSCTX_INPROC_SERVER,NULL,IID_IClassFactory,(void**)&m_pDemuxClassFactory);   //获得类厂对象
if (FAILED(hr))  
 {
   ShowError(L"获得类厂对象失败");
 }

hr = m_pDemuxClassFactory->CreateInstance(NULL,IID_IMpeg2Demultiplexer,(void**)&pDemuxInte易做图ce);
if (FAILED(hr))  
{
   ShowError(L"获得流接口失败");
}
--------------------编程问答-------------------- 自己顶一下 --------------------编程问答-------------------- 没有人过来看看么 --------------------编程问答-------------------- 没有人过来看看么
补充:.NET技术 ,  VC.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,