bool CMFVedioCapture::Capture()
{
DWORD index = 0;
DWORD flag = 0;
LONGLONG ts = 34090040;
CComPtr<IMFSample> sample; HRESULT hr = m_reader->ReadSample(
MF_SOURCE_READER_FIRST_VIDEO_STREAM,
0,
&index, &flag, &ts, &sample);
if (SUCCEEDED(hr) && sample != nullptr)
{
CComPtr<IMFMediaBuffer> buffer;
MFCreateMemoryBuffer(m_sampleSize, &buffer);
sample->CopyToBuffer(buffer); DWORD maxlen, curlen;
buffer->GetMaxLength(&maxlen);
buffer->GetCurrentLength(&curlen); BYTE* datas = nullptr;
buffer->Lock(&datas, &maxlen, &curlen); (*m_convertFunc)(datas, m_rgbbuff, m_captureInfo.width, m_captureInfo.height); buffer->Unlock(); PlasmaStatus::Instance()->Analyse(m_rgbbuff, m_captureInfo.width, m_captureInfo.height); return true;
} return false;
}调试的时候发现第二次运行到ReadSample的时候阻塞了