window-basic-main-outputs.hpp 1.6 KB

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