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.
This commit is contained in:
jp9000 2022-01-04 20:42:58 -08:00
parent a5a8a7c32f
commit f295bd9968
3 changed files with 48 additions and 66 deletions

View File

@ -1,6 +1,5 @@
#include <string>
#include <algorithm>
#include <QFileInfo>
#include <QMessageBox>
#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)

View File

@ -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;

View File

@ -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);