window-basic-main-outputs.hpp 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #pragma once
  2. #include <string>
  3. class OBSBasic;
  4. struct BasicOutputHandler {
  5. OBSOutputAutoRelease fileOutput;
  6. OBSOutputAutoRelease streamOutput;
  7. OBSOutputAutoRelease replayBuffer;
  8. OBSOutputAutoRelease 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. std::string lastRecordingPath;
  18. OBSSignal startRecording;
  19. OBSSignal stopRecording;
  20. OBSSignal startReplayBuffer;
  21. OBSSignal stopReplayBuffer;
  22. OBSSignal startStreaming;
  23. OBSSignal stopStreaming;
  24. OBSSignal startVirtualCam;
  25. OBSSignal stopVirtualCam;
  26. OBSSignal streamDelayStarting;
  27. OBSSignal streamStopping;
  28. OBSSignal recordStopping;
  29. OBSSignal replayBufferStopping;
  30. OBSSignal replayBufferSaved;
  31. inline BasicOutputHandler(OBSBasic *main_);
  32. virtual ~BasicOutputHandler(){};
  33. virtual bool SetupStreaming(obs_service_t *service) = 0;
  34. virtual bool StartStreaming(obs_service_t *service) = 0;
  35. virtual bool StartRecording() = 0;
  36. virtual bool StartReplayBuffer() { return false; }
  37. virtual bool StartVirtualCam();
  38. virtual void StopStreaming(bool force = false) = 0;
  39. virtual void StopRecording(bool force = false) = 0;
  40. virtual void StopReplayBuffer(bool force = false) { (void)force; }
  41. virtual void StopVirtualCam();
  42. virtual bool StreamingActive() const = 0;
  43. virtual bool RecordingActive() const = 0;
  44. virtual bool ReplayBufferActive() const { return false; }
  45. virtual bool VirtualCamActive() const;
  46. virtual void Update() = 0;
  47. virtual void SetupOutputs() = 0;
  48. inline bool Active() const
  49. {
  50. return streamingActive || recordingActive || delayActive ||
  51. replayBufferActive || virtualCamActive;
  52. }
  53. protected:
  54. void SetupAutoRemux(const char *&ext);
  55. std::string GetRecordingFilename(const char *path, const char *ext,
  56. bool noSpace, bool overwrite,
  57. const char *format, bool ffmpeg);
  58. };
  59. BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main);
  60. BasicOutputHandler *CreateAdvancedOutputHandler(OBSBasic *main);