2015-02-06 11:17:33 +00:00
|
|
|
#pragma once
|
|
|
|
|
2017-07-13 10:57:42 +00:00
|
|
|
#include <string>
|
|
|
|
|
2015-02-06 11:17:33 +00:00
|
|
|
class OBSBasic;
|
|
|
|
|
|
|
|
struct BasicOutputHandler {
|
2021-11-26 09:25:39 +00:00
|
|
|
OBSOutputAutoRelease fileOutput;
|
|
|
|
OBSOutputAutoRelease streamOutput;
|
|
|
|
OBSOutputAutoRelease replayBuffer;
|
|
|
|
OBSOutputAutoRelease virtualCam;
|
2015-09-06 23:07:45 +00:00
|
|
|
bool streamingActive = false;
|
|
|
|
bool recordingActive = false;
|
2015-09-06 23:19:53 +00:00
|
|
|
bool delayActive = false;
|
2016-12-09 22:40:04 +00:00
|
|
|
bool replayBufferActive = false;
|
2020-06-20 14:42:14 +00:00
|
|
|
bool virtualCamActive = false;
|
2015-02-06 11:17:33 +00:00
|
|
|
OBSBasic *main;
|
2019-06-23 05:13:45 +00:00
|
|
|
|
2017-07-13 10:57:42 +00:00
|
|
|
std::string outputType;
|
2018-12-12 23:20:48 +00:00
|
|
|
std::string lastError;
|
2019-06-23 05:13:45 +00:00
|
|
|
|
2020-09-26 15:19:27 +00:00
|
|
|
std::string lastRecordingPath;
|
|
|
|
|
2015-07-04 06:00:21 +00:00
|
|
|
OBSSignal startRecording;
|
|
|
|
OBSSignal stopRecording;
|
2016-12-09 22:40:04 +00:00
|
|
|
OBSSignal startReplayBuffer;
|
|
|
|
OBSSignal stopReplayBuffer;
|
2015-07-04 06:00:21 +00:00
|
|
|
OBSSignal startStreaming;
|
|
|
|
OBSSignal stopStreaming;
|
2020-06-20 14:42:14 +00:00
|
|
|
OBSSignal startVirtualCam;
|
|
|
|
OBSSignal stopVirtualCam;
|
2015-09-06 23:19:53 +00:00
|
|
|
OBSSignal streamDelayStarting;
|
2016-06-22 08:47:08 +00:00
|
|
|
OBSSignal streamStopping;
|
|
|
|
OBSSignal recordStopping;
|
2016-12-09 22:40:04 +00:00
|
|
|
OBSSignal replayBufferStopping;
|
2020-10-12 23:55:01 +00:00
|
|
|
OBSSignal replayBufferSaved;
|
2015-07-04 06:00:21 +00:00
|
|
|
|
2020-06-20 14:42:14 +00:00
|
|
|
inline BasicOutputHandler(OBSBasic *main_);
|
2015-02-06 11:17:33 +00:00
|
|
|
|
|
|
|
virtual ~BasicOutputHandler(){};
|
|
|
|
|
2020-09-17 05:20:02 +00:00
|
|
|
virtual bool SetupStreaming(obs_service_t *service) = 0;
|
2015-02-06 11:17:33 +00:00
|
|
|
virtual bool StartStreaming(obs_service_t *service) = 0;
|
|
|
|
virtual bool StartRecording() = 0;
|
2016-12-09 22:40:04 +00:00
|
|
|
virtual bool StartReplayBuffer() { return false; }
|
2021-03-11 02:05:00 +00:00
|
|
|
virtual void ConfigureReplayBuffer() = 0;
|
2020-06-20 14:42:14 +00:00
|
|
|
virtual bool StartVirtualCam();
|
2016-09-09 14:37:54 +00:00
|
|
|
virtual void StopStreaming(bool force = false) = 0;
|
|
|
|
virtual void StopRecording(bool force = false) = 0;
|
2016-12-09 22:40:04 +00:00
|
|
|
virtual void StopReplayBuffer(bool force = false) { (void)force; }
|
2020-06-20 14:42:14 +00:00
|
|
|
virtual void StopVirtualCam();
|
2015-02-06 11:17:33 +00:00
|
|
|
virtual bool StreamingActive() const = 0;
|
|
|
|
virtual bool RecordingActive() const = 0;
|
2016-12-09 22:40:04 +00:00
|
|
|
virtual bool ReplayBufferActive() const { return false; }
|
2020-06-20 14:42:14 +00:00
|
|
|
virtual bool VirtualCamActive() const;
|
2015-02-06 11:17:33 +00:00
|
|
|
|
|
|
|
virtual void Update() = 0;
|
2020-09-03 13:56:03 +00:00
|
|
|
virtual void SetupOutputs() = 0;
|
2015-02-06 11:17:33 +00:00
|
|
|
|
2020-09-03 13:56:03 +00:00
|
|
|
inline bool Active() const
|
2015-09-06 23:07:45 +00:00
|
|
|
{
|
2016-12-09 22:40:04 +00:00
|
|
|
return streamingActive || recordingActive || delayActive ||
|
2020-09-03 13:56:03 +00:00
|
|
|
replayBufferActive || virtualCamActive;
|
2015-09-06 23:07:45 +00:00
|
|
|
}
|
2020-09-26 15:19:27 +00:00
|
|
|
|
|
|
|
protected:
|
2021-02-04 12:01:35 +00:00
|
|
|
void SetupAutoRemux(const char *&ext);
|
2020-09-26 15:19:27 +00:00
|
|
|
std::string GetRecordingFilename(const char *path, const char *ext,
|
|
|
|
bool noSpace, bool overwrite,
|
|
|
|
const char *format, bool ffmpeg);
|
2015-02-06 11:17:33 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main);
|
2015-01-26 21:41:22 +00:00
|
|
|
BasicOutputHandler *CreateAdvancedOutputHandler(OBSBasic *main);
|