#ifndef SCREEN_RECORDER_OBS_MANAGER_HPP #define SCREEN_RECORDER_OBS_MANAGER_HPP #include "settings-manager.hpp" #include #include #include #include #include using namespace std; class OBSManager { public: OBSManager(); virtual ~OBSManager(); string GetVersion(); void LoadSettings(SettingsManager *settings); void Initialize(Gdk::Rectangle rect); void StartPreview(XID wid, Display *wdisplay); void StopPreview(); void StartRecording(); void StopRecording(); bool IsRecording(); void Cleanup(); OBSSource CreateScreenSource(); OBSSource CreateWebcamSource(); OBSSource CreateAudioSource(); const int PreviewWidth = 1280; const int PreviewHeight = 720; // Signals sigc::signal sigStartPreview; sigc::signal sigStopPreview; sigc::signal sigStartRecording; sigc::signal sigStopRecording; sigc::signal sigCleanup; private: void printTypes(); bool isInitialized = false; bool isRecording = false; int mScreenWidth = 0; int mScreenHeight = 0; bool mScreenEnabled = false; bool mWebcamEnabled = false; bool mAudioEnabled = false; string mPluginDir; string mOutputDir; string mWebcamDeviceID; string mAudioDeviceID; OBSDisplay mDisplay; OBSOutput mOutput; OBSSignal obsStartRecording; OBSSignal obsStopRecording; // Plugins void loadPlugin(string name); void loadPlugins(); list mPlugins; }; #endif