window-basic-main-outputs.hpp 1.7 KB

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