怎么使用别人开发好的filter,如myfilter.ax
别人给我的filter,我怎么把它使用到自己的vc程序里呢?
me 是cai鸟.
问题点数:20、回复次数:9Top
1 楼zyyoung(倡导开源)回复于 2005-08-18 17:33:10 得分 0
upTop
2 楼javabean()回复于 2005-08-18 22:12:42 得分 0
首先要注册,regsvr32 C:\myfilter.ax (给出你的路径),然后就可以通过GraphEdit查看这个filter了。当然也可以在程序中创建这个filter。
取消注册:regsvr32 /u C:\myfilter.axTop
3 楼zyyoung(倡导开源)回复于 2005-08-19 12:21:23 得分 0
我想知道的就是如何在程序中,创建这个filter....Top
4 楼daizq()回复于 2005-08-20 21:58:40 得分 0
CoCreateInstance ... DirectShow Sample里有介绍Top
5 楼__Shakespeare(杀死比尔)回复于 2005-08-21 08:59:15 得分 0
你得事先知道他的接口啊,要不然你怎么用。Top
6 楼zyyoung(倡导开源)回复于 2005-08-21 09:35:10 得分 0
请达人在这里,给个例子吧~~~~
3xTop
7 楼zyyoung(倡导开源)回复于 2005-08-22 12:58:43 得分 0
请达人在这里,给个例子吧~~~~
Top
8 楼yyhzpk(zpk)回复于 2005-08-22 13:24:00 得分 20
const UUID IID_IMpegRec={0x1d6733eb, 0xeb35, 0x45d2, 0x97, 0xc7, 0x10, 0x67, 0xb9, 0x83, 0xf9, 0xd6};
const UUID CLSID_MpegRec={0xaa7a5c57, 0xc913, 0x44d7, 0x93, 0x9f, 0xc8, 0x83, 0xda, 0x50, 0x94, 0x2c};
//const UUID CLSID_FfXvid={0x04fe9017, 0xf873, 0x410e, 0x87, 0x1e, 0xab, 0x91, 0x66, 0x1a, 0x4e, 0xf7};
const UUID CLSID_FfXvid={0x64697678, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71};
const UUID CLSID_MJpeg ={0x301056d0, 0x6dff, 0x11d2, 0x9e, 0xeb, 0x00, 0x60, 0x08, 0x03, 0x9e, 0x37};
const UUID CLSID_ColSpace ={0x1643e180, 0x90f5, 0x11ce, 0x97, 0xd5, 0x00, 0xaa, 0x00, 0x55, 0x59, 0x5a};
INT g_nCount = 0;
BOOL CAV::MakeGraph()
{
if (m_pFg != NULL)
return TRUE;
HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (LPVOID *)&m_pFg);
return (hr == NOERROR) ? TRUE : FALSE;
}
BOOL CAV::Play(HWND m_Hwnd,INT x,INT y,INT width,INT height,CString strFormat)
{
HRESULT hr;
BOOL f;
USES_CONVERSION;
f = MakeGraph();
m_pFg->QueryInterface(IID_IMediaControl, (void **)&m_pMediaControl);
hr=CoCreateInstance(CLSID_MpegRec, NULL, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (LPVOID *)&m_pSouce);
m_pSouce->AddRef();
hr = m_pFg->AddFilter(m_pSouce,L"MpegRec");
hr = m_pSouce->QueryInterface(IID_IMpegRec, (void **)&m_pIRec);
m_pIRec->put_MpegRec (m_szUser,m_szPsd,m_szIP,m_nPort,m_nCamID,m_nSize,m_nRate);
hr = GetUnconnectedPin(m_pSouce,PINDIR_OUTPUT,&m_pSout);
hr=CoCreateInstance(CLSID_MJpeg, NULL, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (LPVOID *)&m_pDecode);
hr = m_pFg->AddFilter(m_pDecode,L"Decode");
hr = m_pFg->Render(m_pSout);
if(hr != NOERROR)
{
return FALSE;
}
hr = m_pFg->QueryInterface(IID_IVideoWindow, (void **)&m_pVW);
if (hr != NOERROR)
{
// TRACE("This graph cannot preview properly");
return FALSE;
}
else
{
m_pVW->put_Owner((long)m_Hwnd); // We own the window now
m_pVW->put_WindowStyle(WS_CHILD); // you are now a child
m_pVW->SetWindowPosition(x, y,width,height); // be this big
m_pVW->put_Visible(OATRUE);
}
hr = m_pMediaControl->Run();
return TRUE;Top
9 楼zhaojian999(香烟)回复于 2005-08-23 15:39:48 得分 0
上面的说得很好,不过你是初学的话可以看看陆其明第一本书,先搞好基础再来学怎么用Top




