📄 aec.cpp
字号:
// AEC.cpp : Defines the initialization routines for the DLL.
//
#include "AEC.h"
#include "factory.h"
//extern const CLSID CLSID_VAEC;
//extern const IID IID_VAEC;
HRESULT CFactory::CreateInstance(IUnknown* pUnknownOuter,
const IID& iid,
void** ppv)
{
if (pUnknownOuter != NULL && iid != CLSID_VAEC)
{
return CLASS_E_NOAGGREGATION ;
}
HRESULT hr;
CVAEC* pA = new CVAEC;
if (pA == NULL)
{
return E_OUTOFMEMORY ;
}
hr = pA->QueryInterface(iid, ppv) ;
if (FAILED(hr))
{
delete pA;
}
return hr;
}
HRESULT __stdcall CVAEC::QueryInterface(const IID& iid, void** ppv)
{
if ((iid == IID_IUnknown) || (iid == IID_VAEC))
{
*ppv = static_cast<CVAEC*>(this) ;
}
else
{
*ppv = NULL ;
return E_NOINTERFACE ;
}
reinterpret_cast<IUnknown*>(*ppv)->AddRef() ;
return S_OK ;
}
ULONG __stdcall CVAEC::AddRef()
{
return InterlockedIncrement(&m_cRef) ;
}
ULONG __stdcall CVAEC::Release()
{
if (InterlockedDecrement(&m_cRef) == 0)
{
delete this ;
return 0 ;
}
return m_cRef ;
}
CVAEC::CVAEC()
{
m_cRef=0;
InterlockedIncrement(&CFactory::m_nComObjsInUse);
m_pAEC=NULL;
}
CVAEC::~CVAEC()
{
InterlockedDecrement(&CFactory::m_nComObjsInUse);
if(CFactory::m_nComObjsInUse<=0)
{
CFactory::CloseServer();
}
}
/*
// {59EB9A9D-60FC-449f-8040-15D0F3B1ED7F}
const IID IID_VAEC = {
0x59eb9a9d, 0x60fc, 0x449f, { 0x80, 0x40, 0x15, 0xd0, 0xf3, 0xb1, 0xed, 0x7f}};
// {39302314-709D-48e3-B4B1-127DBA8A6690}
const CLSID CLSID_VAEC = {
0x39302314, 0x709d, 0x48e3, { 0xb4, 0xb1, 0x12, 0x7d, 0xba, 0x8a, 0x66, 0x90}};
*/
HRESULT CVAEC::Init()
{
if(m_pAEC)
{
m_pAEC->UnInit();
delete m_pAEC;
m_pAEC=NULL;
}
m_pAEC=new CSample;
if(!m_pAEC)
return E_FAIL;
return m_pAEC->Init();
}
HRESULT CVAEC::UnInit()//release all resource
{
/////////////////////////////
//destroy object
if(m_pAEC)
{
m_pAEC->UnInit();
delete m_pAEC;
m_pAEC=NULL;
}
return S_OK;
}
HRESULT CVAEC::ProcessOutEcho(short* pOutData,LONG nLen,BYTE* pMicData)//mic
{
if(m_pAEC)
return m_pAEC->EchoOutData(pOutData,nLen,pMicData);
return E_FAIL;
}
HRESULT CVAEC::ProcessInEcho(short* pInData,LONG nLen)//from remote
{
if(m_pAEC)
return m_pAEC->EchoInData(pInData,nLen);
return E_FAIL;
}
HRESULT CVAEC::ProcessOutEcho(short* pOutData,LONG nLen)//mic
{
if(m_pAEC)
return m_pAEC->EchoOutData(pOutData,nLen);
return E_FAIL;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -