mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 20:25:34 +08:00
61 lines
1.1 KiB
C++
61 lines
1.1 KiB
C++
#ifndef _SCREEN_CAPTURE_WGC_H_
|
|
#define _SCREEN_CAPTURE_WGC_H_
|
|
|
|
#include <atomic>
|
|
#include <functional>
|
|
#include <string>
|
|
#include <thread>
|
|
|
|
#include "wgc_session.h"
|
|
#include "wgc_session_impl.h"
|
|
|
|
typedef struct {
|
|
int left;
|
|
int top;
|
|
int right;
|
|
int bottom;
|
|
} RECORD_DESKTOP_RECT;
|
|
|
|
typedef std::function<void(unsigned char *, int, int, int)> cb_desktop_data;
|
|
typedef std::function<void(int)> cb_desktop_error;
|
|
|
|
class ScreenCaptureWgc : public WgcSession::wgc_session_observer {
|
|
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(const WgcSession::wgc_session_frame &frame);
|
|
|
|
protected:
|
|
void CleanUp();
|
|
|
|
private:
|
|
WgcSession *session_ = nullptr;
|
|
|
|
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 |