📄 cdxfilter.cpp
字号:
//
// CDXFilter.cpp
//
/*-----------------------------------------------------*\
HQ Tech, Make Technology Easy!
More information, please go to http://hqtech.nease.net.
/*-----------------------------------------------------*/
#include "stdafx.h"
#include "CDXFilter.h"
#include "UFilterUtils.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
////////////////////////////////////////////////////////////////////////////////
CDXFilter::CDXFilter(IGraphBuilder * inGraph, GUID inClsid, const char * inName)
{
mGraph = inGraph;
mClsid = inClsid;
mFilter = NULL;
if (inName)
{
MultiByteToWideChar(CP_ACP, 0, inName, -1, mName, 256);
}
else
{
wcscpy(mName, L"");
}
}
CDXFilter::~CDXFilter()
{
ReleaseFilter();
}
BOOL CDXFilter::CreateFilter(void)
{
if (!mFilter && mGraph)
{
if (SUCCEEDED(CoCreateInstance(mClsid, NULL, CLSCTX_INPROC_SERVER,
IID_IBaseFilter, (void **)&mFilter)))
{
if (SUCCEEDED(mGraph->AddFilter(mFilter, mName)))
{
return TRUE;
}
}
}
ReleaseFilter();
return FALSE;
}
BOOL CDXFilter::Attach(IBaseFilter * inFilter, const char * inName)
{
ReleaseFilter();
if (inName)
{
MultiByteToWideChar(CP_ACP, 0, inName, -1, mName, 256);
}
if (mGraph && inFilter)
{
if (SUCCEEDED(mGraph->AddFilter(inFilter, mName)))
{
mFilter = inFilter;
mFilter->AddRef(); // Add extra refercence count
return TRUE;
}
}
return FALSE;
}
void CDXFilter::Detach(void)
{
if (mFilter)
{
mFilter->Release();
mFilter = NULL;
}
}
BOOL CDXFilter::QueryInterface(REFIID inIID, LPVOID * outObj)
{
if (mFilter)
{
HRESULT hr = mFilter->QueryInterface(inIID, outObj);
return SUCCEEDED(hr);
}
return FALSE;
}
void CDXFilter::ReleaseFilter(void)
{
if (mFilter)
{
if (mGraph)
{
mGraph->RemoveFilter(mFilter);
}
mFilter->Release();
mFilter = NULL;
}
}
IBaseFilter * CDXFilter::GetFilter(void)
{
return mFilter;
}
IPin * CDXFilter::GetPin(BOOL inInput, const char * inPartialName)
{
return UFilterUtils::GetPin(mFilter, inInput, inPartialName);
}
BOOL CDXFilter::GetPinCount(int & outInputPin, int & outOutputPin)
{
return UFilterUtils::GetPinCount(mFilter, outInputPin, outOutputPin);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -