Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <string>
- using namespace std;
- class OBSBasic;
- struct BasicOutputHandler {
- OBSOutput fileOutput;
- OBSOutput streamOutput;
- bool streamingActive = false;
- bool recordingActive = false;
- bool delayActive = false;
- OBSBasic *main;
- OBSSignal startRecording;
- OBSSignal stopRecording;
- OBSSignal startStreaming;
- OBSSignal stopStreaming;
- OBSSignal streamDelayStarting;
- OBSSignal streamDelayStopping;
- inline BasicOutputHandler(OBSBasic *main_) : main(main_) {}
- virtual ~BasicOutputHandler() {};
- virtual bool StartStreaming(obs_service_t *service) = 0;
- virtual bool StartRecording() = 0;
- virtual void StopStreaming() = 0;
- virtual void ForceStopStreaming() = 0;
- virtual void StopRecording() = 0;
- virtual bool StreamingActive() const = 0;
- virtual bool RecordingActive() const = 0;
- virtual void Update() = 0;
- inline bool Active() const
- {
- return streamingActive || recordingActive || delayActive;
- }
- };
- struct SimpleOutput : BasicOutputHandler {
- OBSEncoder aacStreaming;
- OBSEncoder h264Streaming;
- OBSEncoder aacRecording;
- OBSEncoder h264Recording;
- string aacRecEncID;
- string aacStreamEncID;
- string videoEncoder;
- string videoQuality;
- bool usingRecordingPreset = false;
- bool ffmpegOutput = false;
- bool lowCPUx264 = false;
- SimpleOutput(OBSBasic *main_);
- int CalcCRF(int crf);
- void UpdateRecordingSettings_x264_crf(int crf);
- void UpdateRecordingSettings();
- void UpdateRecordingAudioSettings();
- virtual void Update() override;
- void SetupOutputs();
- int GetAudioBitrate() const;
- void LoadRecordingPreset_x264();
- void LoadRecordingPreset_Lossless();
- void LoadRecordingPreset();
- virtual bool StartStreaming(obs_service_t *service) override;
- virtual bool StartRecording() override;
- virtual void StopStreaming() override;
- virtual void ForceStopStreaming() override;
- virtual void StopRecording() override;
- virtual bool StreamingActive() const override;
- virtual bool RecordingActive() const override;
- };
- struct AdvancedOutput : BasicOutputHandler {
- OBSEncoder aacTrack[4];
- OBSEncoder h264Streaming;
- OBSEncoder h264Recording;
- bool ffmpegOutput;
- bool ffmpegRecording;
- bool useStreamEncoder;
- string aacEncoderID[4];
- AdvancedOutput(OBSBasic *main_);
- inline void UpdateStreamSettings();
- inline void UpdateRecordingSettings();
- inline void UpdateAudioSettings();
- virtual void Update() override;
- inline void SetupStreaming();
- inline void SetupRecording();
- inline void SetupFFmpeg();
- void SetupOutputs();
- int GetAudioBitrate(size_t i) const;
- virtual bool StartStreaming(obs_service_t *service) override;
- virtual bool StartRecording() override;
- virtual void StopStreaming() override;
- virtual void ForceStopStreaming() override;
- virtual void StopRecording() override;
- virtual bool StreamingActive() const override;
- virtual bool RecordingActive() const override;
- };
- BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main);
- BasicOutputHandler *CreateAdvancedOutputHandler(OBSBasic *main);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement