Advertisement
Guest User

Untitled

a guest
Oct 4th, 2015
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.46 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. class OBSBasic;
  8.  
  9. struct BasicOutputHandler {
  10.     OBSOutput              fileOutput;
  11.     OBSOutput              streamOutput;
  12.     bool                   streamingActive = false;
  13.     bool                   recordingActive = false;
  14.     bool                   delayActive = false;
  15.     OBSBasic               *main;
  16.  
  17.     OBSSignal              startRecording;
  18.     OBSSignal              stopRecording;
  19.     OBSSignal              startStreaming;
  20.     OBSSignal              stopStreaming;
  21.     OBSSignal              streamDelayStarting;
  22.     OBSSignal              streamDelayStopping;
  23.  
  24.     inline BasicOutputHandler(OBSBasic *main_) : main(main_) {}
  25.  
  26.     virtual ~BasicOutputHandler() {};
  27.  
  28.     virtual bool StartStreaming(obs_service_t *service) = 0;
  29.     virtual bool StartRecording() = 0;
  30.     virtual void StopStreaming() = 0;
  31.     virtual void ForceStopStreaming() = 0;
  32.     virtual void StopRecording() = 0;
  33.     virtual bool StreamingActive() const = 0;
  34.     virtual bool RecordingActive() const = 0;
  35.  
  36.     virtual void Update() = 0;
  37.  
  38.     inline bool Active() const
  39.     {
  40.         return streamingActive || recordingActive || delayActive;
  41.     }
  42. };
  43.  
  44. struct SimpleOutput : BasicOutputHandler {
  45.     OBSEncoder             aacStreaming;
  46.     OBSEncoder             h264Streaming;
  47.     OBSEncoder             aacRecording;
  48.     OBSEncoder             h264Recording;
  49.  
  50.     string                 aacRecEncID;
  51.     string                 aacStreamEncID;
  52.  
  53.     string                 videoEncoder;
  54.     string                 videoQuality;
  55.     bool                   usingRecordingPreset = false;
  56.     bool                   ffmpegOutput = false;
  57.     bool                   lowCPUx264 = false;
  58.  
  59.     SimpleOutput(OBSBasic *main_);
  60.  
  61.     int CalcCRF(int crf);
  62.  
  63.     void UpdateRecordingSettings_x264_crf(int crf);
  64.     void UpdateRecordingSettings();
  65.     void UpdateRecordingAudioSettings();
  66.     virtual void Update() override;
  67.  
  68.     void SetupOutputs();
  69.     int GetAudioBitrate() const;
  70.  
  71.     void LoadRecordingPreset_x264();
  72.     void LoadRecordingPreset_Lossless();
  73.     void LoadRecordingPreset();
  74.  
  75.     virtual bool StartStreaming(obs_service_t *service) override;
  76.     virtual bool StartRecording() override;
  77.     virtual void StopStreaming() override;
  78.     virtual void ForceStopStreaming() override;
  79.     virtual void StopRecording() override;
  80.     virtual bool StreamingActive() const override;
  81.     virtual bool RecordingActive() const override;
  82. };
  83.  
  84. struct AdvancedOutput : BasicOutputHandler {
  85.     OBSEncoder             aacTrack[4];
  86.     OBSEncoder             h264Streaming;
  87.     OBSEncoder             h264Recording;
  88.  
  89.     bool                   ffmpegOutput;
  90.     bool                   ffmpegRecording;
  91.     bool                   useStreamEncoder;
  92.  
  93.     string                 aacEncoderID[4];
  94.  
  95.     AdvancedOutput(OBSBasic *main_);
  96.  
  97.     inline void UpdateStreamSettings();
  98.     inline void UpdateRecordingSettings();
  99.     inline void UpdateAudioSettings();
  100.     virtual void Update() override;
  101.  
  102.     inline void SetupStreaming();
  103.     inline void SetupRecording();
  104.     inline void SetupFFmpeg();
  105.     void SetupOutputs();
  106.     int GetAudioBitrate(size_t i) const;
  107.  
  108.     virtual bool StartStreaming(obs_service_t *service) override;
  109.     virtual bool StartRecording() override;
  110.     virtual void StopStreaming() override;
  111.     virtual void ForceStopStreaming() override;
  112.     virtual void StopRecording() override;
  113.     virtual bool StreamingActive() const override;
  114.     virtual bool RecordingActive() const override;
  115. };
  116.  
  117. BasicOutputHandler *CreateSimpleOutputHandler(OBSBasic *main);
  118. BasicOutputHandler *CreateAdvancedOutputHandler(OBSBasic *main);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement