#pragma once #include class OBSBasic; struct BasicOutputHandler { OBSOutput fileOutput; OBSOutput streamOutput; OBSOutput replayBuffer; bool streamingActive = false; bool recordingActive = false; bool delayActive = false; bool replayBufferActive = false; OBSBasic *main; std::string outputType; std::string lastError; OBSSignal startRecording; OBSSignal stopRecording; OBSSignal startReplayBuffer; OBSSignal stopReplayBuffer; OBSSignal startStreaming; OBSSignal stopStreaming; OBSSignal streamDelayStarting; OBSSignal streamStopping; OBSSignal recordStopping; OBSSignal replayBufferStopping; inline BasicOutputHandler(OBSBasic *main_) : main(main_) {} virtual ~BasicOutputHandler(){}; virtual bool StartStreaming(obs_service_t *service) = 0; virtual bool StartRecording() = 0; virtual bool StartReplayBuffer() { return false; } virtual void StopStreaming(bool force = false) = 0; virtual void StopRecording(bool force = false) = 0; virtual void StopReplayBuffer(bool force = false) { (void)force; } virtual bool StreamingActive() const = 0; virtual bool RecordingActive() const = 0; virtual bool ReplayBufferActive() const { return false; } virtual void Update() = 0; inline bool Active() const { return streamingActive || recordingActive || delayActive || replayBufferActive; } }; BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main); BasicOutputHandler *CreateAdvancedOutputHandler(OBSBasic *main);