减少捕获音视频时申请内存次数
减少音频视频捕获过程中频繁申请内存。
This commit is contained in:
@@ -12,18 +12,20 @@ CSampleGrabberCB mCB;
|
||||
|
||||
CCaptureVideo::CCaptureVideo()
|
||||
{
|
||||
if(FAILED(CoInitialize(NULL)))
|
||||
if(FAILED(CoInitialize(NULL)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_pCapture = NULL;
|
||||
m_pGB = NULL;
|
||||
m_pMC = NULL;
|
||||
m_pVW = NULL;
|
||||
m_pVW = NULL;
|
||||
m_bExit = FALSE;
|
||||
}
|
||||
|
||||
CCaptureVideo::~CCaptureVideo()
|
||||
{
|
||||
m_bExit = TRUE;
|
||||
if(m_pMC)m_pMC->StopWhenReady();
|
||||
if(m_pVW){
|
||||
m_pVW->put_Visible(OAFALSE);
|
||||
@@ -55,7 +57,7 @@ HRESULT CCaptureVideo::Open(int iDeviceID,int iPress)
|
||||
hResult = m_pGB->AddFilter(m_pBF, L"Capture Filter");
|
||||
|
||||
hResult = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,
|
||||
IID_ISampleGrabber, (void**)&m_pGrabber); //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
IID_ISampleGrabber, (void**)&m_pGrabber); //<2F><><EFBFBD><EFBFBD><EFBFBD>ڴ<EFBFBD>
|
||||
if(FAILED(hResult))
|
||||
break;
|
||||
|
||||
@@ -258,10 +260,9 @@ LPBYTE CCaptureVideo::GetDIB(DWORD& dwSize)
|
||||
{
|
||||
if (mCB.bStact==CMD_CAN_SEND) //<2F><><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1><EFBFBD>һ<EFBFBD>·<EFBFBD><C2B7>͵<EFBFBD>״̬
|
||||
{
|
||||
szBuffer = mCB.GetNextScreen(dwSize);//ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD>Ǽ<EFBFBD><C7BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
szBuffer = mCB.GetNextScreen(dwSize);
|
||||
}
|
||||
} while (szBuffer==NULL);
|
||||
|
||||
} while (szBuffer==NULL && !m_bExit);
|
||||
|
||||
return szBuffer;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user