12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- #pragma once
- #include <string>
- class OBSBasic;
- struct BasicOutputHandler {
- OBSOutputAutoRelease fileOutput;
- OBSOutputAutoRelease streamOutput;
- OBSOutputAutoRelease replayBuffer;
- OBSOutputAutoRelease virtualCam;
- bool streamingActive = false;
- bool recordingActive = false;
- bool delayActive = false;
- bool replayBufferActive = false;
- bool virtualCamActive = false;
- OBSBasic *main;
- obs_view_t *virtualCamView = nullptr;
- video_t *virtualCamVideo = nullptr;
- obs_scene_t *vCamSourceScene = nullptr;
- obs_sceneitem_t *vCamSourceSceneItem = nullptr;
- std::string outputType;
- std::string lastError;
- std::string lastRecordingPath;
- OBSSignal startRecording;
- OBSSignal stopRecording;
- OBSSignal startReplayBuffer;
- OBSSignal stopReplayBuffer;
- OBSSignal startStreaming;
- OBSSignal stopStreaming;
- OBSSignal startVirtualCam;
- OBSSignal stopVirtualCam;
- OBSSignal deactivateVirtualCam;
- OBSSignal streamDelayStarting;
- OBSSignal streamStopping;
- OBSSignal recordStopping;
- OBSSignal recordFileChanged;
- OBSSignal replayBufferStopping;
- OBSSignal replayBufferSaved;
- inline BasicOutputHandler(OBSBasic *main_);
- virtual ~BasicOutputHandler(){};
- virtual bool SetupStreaming(obs_service_t *service) = 0;
- virtual bool StartStreaming(obs_service_t *service) = 0;
- virtual bool StartRecording() = 0;
- virtual bool StartReplayBuffer() { return false; }
- virtual bool StartVirtualCam();
- virtual void StopStreaming(bool force = false) = 0;
- virtual void StopRecording(bool force = false) = 0;
- virtual void StopReplayBuffer(bool force = false) { (void)force; }
- virtual void StopVirtualCam();
- virtual bool StreamingActive() const = 0;
- virtual bool RecordingActive() const = 0;
- virtual bool ReplayBufferActive() const { return false; }
- virtual bool VirtualCamActive() const;
- virtual void Update() = 0;
- virtual void SetupOutputs() = 0;
- virtual void UpdateVirtualCamOutputSource();
- virtual void DestroyVirtualCamView();
- virtual void DestroyVirtualCameraScene();
- inline bool Active() const
- {
- return streamingActive || recordingActive || delayActive ||
- replayBufferActive || virtualCamActive;
- }
- protected:
- void SetupAutoRemux(const char *&container);
- std::string GetRecordingFilename(const char *path,
- const char *container, bool noSpace,
- bool overwrite, const char *format,
- bool ffmpeg);
- };
- BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main);
- BasicOutputHandler *CreateAdvancedOutputHandler(OBSBasic *main);
|