window-basic-main-outputs.hpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. std::string lastError;
  15. OBSSignal startRecording;
  16. OBSSignal stopRecording;
  17. OBSSignal startReplayBuffer;
  18. OBSSignal stopReplayBuffer;
  19. OBSSignal startStreaming;
  20. OBSSignal stopStreaming;
  21. OBSSignal streamDelayStarting;
  22. OBSSignal streamStopping;
  23. OBSSignal recordStopping;
  24. OBSSignal replayBufferStopping;
  25. inline BasicOutputHandler(OBSBasic *main_) : main(main_) {}
  26. virtual ~BasicOutputHandler(){};
  27. virtual bool StartStreaming(obs_service_t *service) = 0;
  28. virtual bool StartRecording() = 0;
  29. virtual bool StartReplayBuffer() { return false; }
  30. virtual void StopStreaming(bool force = false) = 0;
  31. virtual void StopRecording(bool force = false) = 0;
  32. virtual void StopReplayBuffer(bool force = false) { (void)force; }
  33. virtual bool StreamingActive() const = 0;
  34. virtual bool RecordingActive() const = 0;
  35. virtual bool ReplayBufferActive() const { return false; }
  36. virtual void Update() = 0;
  37. inline bool Active() const
  38. {
  39. return streamingActive || recordingActive || delayActive ||
  40. replayBufferActive;
  41. }
  42. };
  43. BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main);
  44. BasicOutputHandler *CreateAdvancedOutputHandler(OBSBasic *main);