#ifndef _SCREEN_CAPTURE_WGC_H_ #define _SCREEN_CAPTURE_WGC_H_ #include #include #include #include typedef struct { int left; int top; int right; int bottom; } RECORD_DESKTOP_RECT; typedef std::function cb_desktop_data; typedef std::function cb_desktop_error; class ScreenCaptureWgc { public: ScreenCaptureWgc(); ~ScreenCaptureWgc(); public: bool IsWgcSupported(); int Init(const RECORD_DESKTOP_RECT &rect, const int fps, cb_desktop_data cb); int Start(); int Pause(); int Resume(); int Stop(); void OnFrame(); protected: void CleanUp(); private: std::atomic_bool _running; std::atomic_bool _paused; std::atomic_bool _inited; std::thread _thread; std::string _device_name; RECORD_DESKTOP_RECT _rect; int _fps; cb_desktop_data _on_data; cb_desktop_error _on_error; }; #endif