diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp index e8eb6f7c4..989a19055 100644 --- a/UI/window-basic-main-outputs.cpp +++ b/UI/window-basic-main-outputs.cpp @@ -1,6 +1,5 @@ #include #include -#include #include #include "qt-wrappers.hpp" #include "audio-encoders.hpp" @@ -295,7 +294,6 @@ struct SimpleOutput : BasicOutputHandler { virtual bool StartStreaming(obs_service_t *service) override; virtual bool StartRecording() override; virtual bool StartReplayBuffer() override; - virtual void ConfigureReplayBuffer() override; virtual void StopStreaming(bool force) override; virtual void StopRecording(bool force) override; virtual void StopReplayBuffer(bool force) override; @@ -988,13 +986,6 @@ bool SimpleOutput::ConfigureRecording(bool updateReplayBuffer) strPath = GetOutputFilename(path, ffmpegOutput ? "avi" : format, noSpace, overwriteIfExists, f.c_str()); - - QFileInfo fileInfo(QString::fromStdString(strPath)); - QString fileName(fileInfo.completeBaseName()); - - if (!fileName.isEmpty()) - f = fileName.toStdString(); - obs_data_set_string(settings, "directory", path); obs_data_set_string(settings, "format", f.c_str()); obs_data_set_string(settings, "extension", format); @@ -1057,11 +1048,6 @@ bool SimpleOutput::StartReplayBuffer() return true; } -void SimpleOutput::ConfigureReplayBuffer() -{ - ConfigureRecording(true); -} - void SimpleOutput::StopStreaming(bool force) { if (force) @@ -1136,7 +1122,6 @@ struct AdvancedOutput : BasicOutputHandler { virtual bool StartStreaming(obs_service_t *service) override; virtual bool StartRecording() override; virtual bool StartReplayBuffer() override; - virtual void ConfigureReplayBuffer() override; virtual void StopStreaming(bool force) override; virtual void StopRecording(bool force) override; virtual void StopReplayBuffer(bool force) override; @@ -1894,6 +1879,16 @@ bool AdvancedOutput::StartRecording() bool AdvancedOutput::StartReplayBuffer() { + const char *path; + const char *recFormat; + const char *filenameFormat; + bool noSpace = false; + bool overwriteIfExists = false; + const char *rbPrefix; + const char *rbSuffix; + int rbTime; + int rbSize; + if (!useStreamEncoder) { if (!ffmpegOutput) UpdateRecordingSettings(); @@ -1906,7 +1901,44 @@ bool AdvancedOutput::StartReplayBuffer() if (!Active()) SetupOutputs(); - ConfigureReplayBuffer(); + if (!ffmpegOutput || ffmpegRecording) { + path = config_get_string(main->Config(), "AdvOut", + ffmpegRecording ? "FFFilePath" + : "RecFilePath"); + recFormat = config_get_string(main->Config(), "AdvOut", + ffmpegRecording ? "FFExtension" + : "RecFormat"); + filenameFormat = config_get_string(main->Config(), "Output", + "FilenameFormatting"); + overwriteIfExists = config_get_bool(main->Config(), "Output", + "OverwriteIfExists"); + noSpace = config_get_bool(main->Config(), "AdvOut", + ffmpegRecording + ? "FFFileNameWithoutSpace" + : "RecFileNameWithoutSpace"); + rbPrefix = config_get_string(main->Config(), "SimpleOutput", + "RecRBPrefix"); + rbSuffix = config_get_string(main->Config(), "SimpleOutput", + "RecRBSuffix"); + rbTime = config_get_int(main->Config(), "AdvOut", "RecRBTime"); + rbSize = config_get_int(main->Config(), "AdvOut", "RecRBSize"); + + string f = GetFormatString(filenameFormat, rbPrefix, rbSuffix); + string strPath = GetOutputFilename( + path, recFormat, noSpace, overwriteIfExists, f.c_str()); + + OBSDataAutoRelease settings = obs_data_create(); + + obs_data_set_string(settings, "directory", path); + obs_data_set_string(settings, "format", f.c_str()); + obs_data_set_string(settings, "extension", recFormat); + obs_data_set_bool(settings, "allow_spaces", !noSpace); + obs_data_set_int(settings, "max_time_sec", rbTime); + obs_data_set_int(settings, "max_size_mb", + usesBitrate ? 0 : rbSize); + + obs_output_update(replayBuffer, settings); + } if (!obs_output_start(replayBuffer)) { QString error_reason; @@ -1924,53 +1956,6 @@ bool AdvancedOutput::StartReplayBuffer() return true; } -void AdvancedOutput::ConfigureReplayBuffer() -{ - if (ffmpegOutput && !ffmpegRecording) - return; - - const char *path = config_get_string(main->Config(), "AdvOut", - ffmpegRecording ? "FFFilePath" - : "RecFilePath"); - const char *recFormat = config_get_string( - main->Config(), "AdvOut", - ffmpegRecording ? "FFExtension" : "RecFormat"); - const char *filenameFormat = config_get_string(main->Config(), "Output", - "FilenameFormatting"); - bool overwriteIfExists = - config_get_bool(main->Config(), "Output", "OverwriteIfExists"); - bool noSpace = config_get_bool(main->Config(), "AdvOut", - ffmpegRecording - ? "FFFileNameWithoutSpace" - : "RecFileNameWithoutSpace"); - const char *rbPrefix = config_get_string(main->Config(), "SimpleOutput", - "RecRBPrefix"); - const char *rbSuffix = config_get_string(main->Config(), "SimpleOutput", - "RecRBSuffix"); - int rbTime = config_get_int(main->Config(), "AdvOut", "RecRBTime"); - int rbSize = config_get_int(main->Config(), "AdvOut", "RecRBSize"); - - string f = GetFormatString(filenameFormat, rbPrefix, rbSuffix); - string strPath = GetOutputFilename(path, recFormat, noSpace, - overwriteIfExists, f.c_str()); - QFileInfo fileInfo(QString::fromStdString(strPath)); - QString fileName(fileInfo.completeBaseName()); - - if (!fileName.isEmpty()) - f = fileName.toStdString(); - - OBSDataAutoRelease settings = obs_data_create(); - - obs_data_set_string(settings, "directory", path); - obs_data_set_string(settings, "format", f.c_str()); - obs_data_set_string(settings, "extension", recFormat); - obs_data_set_bool(settings, "allow_spaces", !noSpace); - obs_data_set_int(settings, "max_time_sec", rbTime); - obs_data_set_int(settings, "max_size_mb", usesBitrate ? 0 : rbSize); - - obs_output_update(replayBuffer, settings); -} - void AdvancedOutput::StopStreaming(bool force) { if (force) diff --git a/UI/window-basic-main-outputs.hpp b/UI/window-basic-main-outputs.hpp index 242b26434..2393d38d4 100644 --- a/UI/window-basic-main-outputs.hpp +++ b/UI/window-basic-main-outputs.hpp @@ -43,7 +43,6 @@ struct BasicOutputHandler { virtual bool StartStreaming(obs_service_t *service) = 0; virtual bool StartRecording() = 0; virtual bool StartReplayBuffer() { return false; } - virtual void ConfigureReplayBuffer() = 0; virtual bool StartVirtualCam(); virtual void StopStreaming(bool force = false) = 0; virtual void StopRecording(bool force = false) = 0; diff --git a/UI/window-basic-main.cpp b/UI/window-basic-main.cpp index 23543cf02..fabc612fe 100644 --- a/UI/window-basic-main.cpp +++ b/UI/window-basic-main.cpp @@ -7269,8 +7269,6 @@ void OBSBasic::ReplayBufferSave() if (!outputHandler->ReplayBufferActive()) return; - outputHandler->ConfigureReplayBuffer(); - calldata_t cd = {0}; proc_handler_t *ph = obs_output_get_proc_handler(outputHandler->replayBuffer);