*
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#ifndef WinMfImageGrabber_h__
|
||||
#define WinMfImageGrabber_h__
|
||||
|
||||
#include <mfidl.h>
|
||||
#include "../RawBuffer.h"
|
||||
#include "../Types.h"
|
||||
|
||||
namespace LifeCore {
|
||||
|
||||
class WebCamera;
|
||||
class WinMfImageGrabber : IMFSampleGrabberSinkCallback {
|
||||
public:
|
||||
WinMfImageGrabber(WebCamera* cam);
|
||||
~WinMfImageGrabber();
|
||||
HRESULT initImageGrabber(IMFMediaSource *pSource, GUID VideoFormat);
|
||||
HRESULT startGrabbing(void);
|
||||
void stopGrabbing();
|
||||
|
||||
// IUnknown methods
|
||||
STDMETHODIMP QueryInterface(REFIID iid, void** ppv);
|
||||
STDMETHODIMP_(ULONG) AddRef();
|
||||
STDMETHODIMP_(ULONG) Release();
|
||||
|
||||
// IMFClockStateSink methods
|
||||
STDMETHODIMP OnClockStart(MFTIME hnsSystemTime, LONGLONG llClockStartOffset);
|
||||
STDMETHODIMP OnClockStop(MFTIME hnsSystemTime);
|
||||
STDMETHODIMP OnClockPause(MFTIME hnsSystemTime);
|
||||
STDMETHODIMP OnClockRestart(MFTIME hnsSystemTime);
|
||||
STDMETHODIMP OnClockSetRate(MFTIME hnsSystemTime, float flRate);
|
||||
|
||||
// IMFSampleGrabberSinkCallback methods
|
||||
STDMETHODIMP OnSetPresentationClock(IMFPresentationClock* pClock);
|
||||
STDMETHODIMP OnProcessSample(REFGUID guidMajorMediaType, DWORD dwSampleFlags,
|
||||
LONGLONG llSampleTime, LONGLONG llSampleDuration, const BYTE * pSampleBuffer,
|
||||
DWORD dwSampleSize);
|
||||
STDMETHODIMP OnShutdown();
|
||||
bool processGrabbing();
|
||||
RawBuffer<uint8>* GetImage();
|
||||
private:
|
||||
WebCamera* camera;
|
||||
long m_cRef;
|
||||
//IMFMediaSource *ig_pSource;
|
||||
IMFMediaSession *ig_pSession;
|
||||
IMFTopology *ig_pTopology;
|
||||
RawBuffer<uint8>* buffer_first;
|
||||
RawBuffer<uint8>* buffer_second;
|
||||
RawBuffer<uint8>* buffer_active;
|
||||
|
||||
HRESULT CreateTopology(IMFMediaSource *pSource, IMFActivate *pSinkActivate, IMFTopology **ppTopo);
|
||||
HRESULT AddSourceNode(
|
||||
IMFTopology *pTopology,
|
||||
IMFMediaSource *pSource,
|
||||
IMFPresentationDescriptor *pPD,
|
||||
IMFStreamDescriptor *pSD,
|
||||
IMFTopologyNode **ppNode);
|
||||
|
||||
HRESULT AddOutputNode(
|
||||
IMFTopology *pTopology,
|
||||
IMFActivate *pActivate,
|
||||
DWORD dwId,
|
||||
IMFTopologyNode **ppNode);
|
||||
};
|
||||
|
||||
}
|
||||
#endif // WinMfImageGrabber_h__
|
||||
Reference in New Issue
Block a user