From f295bd99685b05ee74bf28b75590f088a77a4771 Mon Sep 17 00:00:00 2001 From: jp9000 Date: Tue, 4 Jan 2022 20:42:58 -0800 Subject: [PATCH] Revert "UI: Add checks for overwrite setting to replay buffer" This reverts commit 02f3495b72b716439d7e9f8c61c136a05ee10837. Multiple issues have come up with this commit. One issue is that suddenly replays are overwriting themselves despite the option being disabled. Second issue is that slashes to separate files into subdirectories no longer work properly with replay buffers. I'm just reverting it. I do not care enough about this feature to try to fix it or wait on a fix. If someone wants to fix it they can create a new PR for it. --- UI/window-basic-main-outputs.cpp | 111 +++++++++++++------------------ UI/window-basic-main-outputs.hpp | 1 - UI/window-basic-main.cpp | 2 - 3 files changed, 48 insertions(+), 66 deletions(-) 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);