#ifndef WebCamera_h__ #define WebCamera_h__ #include "../ICamera.h" #include "../IImage.h" #include #include #include #include #include "WinMfImageGrabber.h" #include #pragma comment(lib, "mf.lib") #pragma comment(lib, "mfplat.lib") #pragma comment(lib, "mfuuid.lib") #pragma comment(lib, "shlwapi.lib") #include #include #include "../Delegate.h" namespace LifeCore { class WebCameraDescription { public: virtual ~WebCameraDescription() {} virtual std::wstring GetName() = 0; }; typedef std::shared_ptr webcam_desc_ptr; class WebCamera : public ICamera, public IImage { public: Delegate*> Event_ImageCapture; WebCamera(webcam_desc_ptr desc); int2 GetSize(); int32 GetBpp(); bool Read(int2 size, uint8* buffer); static std::vector GetConnectedDevices(); bool Open(); void Close(); void OnImageGrabbed(WinMfImageGrabber* grabber, RawBuffer* image); void OnCaptureEvent(IMFMediaEvent* pEvent); void Update(); RawBuffer* GetImage(); int FrameNumber; private: webcam_desc_ptr description; WinMfImageGrabber* grabber; IMFMediaSource *pSource; void* callback; }; } #endif // WebCamera_h__