HRESULT GrabberCB::SampleCB(double SampleTime, IMediaSample *pSample)
{
//how to copy the pSample to memory for late use?
}
实际上我需要先将它存储到内存中,然后通过管道将其与其他应用程序共享。
我对此很新,有谁知道?
答案 0 :(得分:2)
您是否考虑使用BufferCB?这样您就可以立即访问缓冲区,而不必处理IMediaSample。
STDMETHODIMP BufferCB(double Time, BYTE *pBuffer, long BufferLen)
{
//copy pBuffer here
}
答案 1 :(得分:0)
与任何其他COM接口一样,您可以简单地获取引用,并且在释放对象之前不会释放该对象:
pSave = pSample;
pSave->AddRef();
然后,您可以在任意位置使用pSave
,然后在完成后调用pSave->Release()
。
更多地涉及与其他应用程序共享数据。您可以将数据仅发送到其他应用程序,或使用COM编组发送接口指针。