window-basic-main-outputs.hpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. #pragma once
  2. #include <string>
  3. class OBSBasic;
  4. struct BasicOutputHandler {
  5. OBSOutput fileOutput;
  6. OBSOutput streamOutput;
  7. OBSOutput replayBuffer;
  8. bool streamingActive = false;
  9. bool recordingActive = false;
  10. bool delayActive = false;
  11. bool replayBufferActive = false;
  12. OBSBasic *main;
  13. std::string outputType;
  14. OBSSignal startRecording;
  15. OBSSignal stopRecording;
  16. OBSSignal startReplayBuffer;
  17. OBSSignal stopReplayBuffer;
  18. OBSSignal startStreaming;
  19. OBSSignal stopStreaming;
  20. OBSSignal streamDelayStarting;
  21. OBSSignal streamStopping;
  22. OBSSignal recordStopping;
  23. OBSSignal replayBufferStopping;
  24. inline BasicOutputHandler(OBSBasic *main_) : main(main_) {}
  25. virtual ~BasicOutputHandler() {};
  26. virtual bool StartStreaming(obs_service_t *service) = 0;
  27. virtual bool StartRecording() = 0;
  28. virtual bool StartReplayBuffer() {return false;}
  29. virtual void StopStreaming(bool force = false) = 0;
  30. virtual void StopRecording(bool force = false) = 0;
  31. virtual void StopReplayBuffer(bool force = false) {(void)force;}
  32. virtual bool StreamingActive() const = 0;
  33. virtual bool RecordingActive() const = 0;
  34. virtual bool ReplayBufferActive() const {return false;}
  35. virtual void Update() = 0;
  36. inline bool Active() const
  37. {
  38. return streamingActive || recordingActive || delayActive ||
  39. replayBufferActive;
  40. }
  41. };
  42. BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main);
  43. BasicOutputHandler *CreateAdvancedOutputHandler(OBSBasic *main);