首先,执行
hr = m_pReader->ReadSample(
(DWORD)MF_SOURCE_READER_FIRST_VIDEO_STREAM,
0,
NULL, // actual
NULL, // flags
NULL, // timestamp
NULL // sample
);
然后,在下面的开头,此过程使用的内存大约增加了3M:
HRESULT CCapture::OnReadSample(
HRESULT hrStatus,
DWORD /*dwStreamIndex*/,
DWORD /*dwStreamFlags*/,
LONGLONG llTimeStamp,
IMFSample *pSample // Can be NULL
)
{
.....
}
答案 0 :(得分:1)
您没有指定源阅读器创建方法,但是从您的ReadSample
代码看起来您在异步模式下工作(因为除dwStreamIndex
之外的所有参数都是NULL)。因此,当调用OnReadSample
回调时,您将获得准备好的帧 - 这需要3 MB的内存。所以它看起来像预期的行为
请参阅MSDN中ReadSample
函数的备注部分。