From d4c4a0d1aaba728cf0d016f8f973cb92c3431f63 Mon Sep 17 00:00:00 2001 From: Palana Date: Mon, 23 Nov 2015 15:36:06 +0100 Subject: [PATCH] UI: Add custom muxer settings for ffmpeg-mux --- obs/data/locale/en-US.ini | 1 + obs/forms/OBSBasicSettings.ui | 20 ++++++++++++++++++++ obs/window-basic-main-outputs.cpp | 6 ++++++ obs/window-basic-settings.cpp | 11 +++++++++++ 4 files changed, 38 insertions(+) diff --git a/obs/data/locale/en-US.ini b/obs/data/locale/en-US.ini index 14c345744..198705528 100644 --- a/obs/data/locale/en-US.ini +++ b/obs/data/locale/en-US.ini @@ -334,6 +334,7 @@ Basic.Settings.Output.MaxRetries="Maximum Retries" Basic.Settings.Output.Advanced="Enable Advanced Encoder Settings" Basic.Settings.Output.EncoderPreset="Encoder Preset (higher = less CPU)" Basic.Settings.Output.CustomEncoderSettings="Custom Encoder Settings" +Basic.Settings.Output.CustomMuxerSettings="Custom Muxer Settings" # basic mode 'output' settings - advanced section Basic.Settings.Output.Adv.Rescale="Rescale Output" diff --git a/obs/forms/OBSBasicSettings.ui b/obs/forms/OBSBasicSettings.ui index 09ee8a1d4..c1fb597cc 100644 --- a/obs/forms/OBSBasicSettings.ui +++ b/obs/forms/OBSBasicSettings.ui @@ -667,6 +667,16 @@ + + + + Basic.Settings.Output.CustomMuxerSettings + + + + + + @@ -1232,6 +1242,16 @@ + + + + Basic.Settings.Output.CustomMuxerSettings + + + + + + diff --git a/obs/window-basic-main-outputs.cpp b/obs/window-basic-main-outputs.cpp index db27cf5f4..52401a756 100644 --- a/obs/window-basic-main-outputs.cpp +++ b/obs/window-basic-main-outputs.cpp @@ -428,6 +428,8 @@ bool SimpleOutput::StartRecording() "SimpleOutput", "FilePath"); const char *format = config_get_string(main->Config(), "SimpleOutput", "RecFormat"); + const char *mux = config_get_string(main->Config(), "SimpleOutput", + "MuxerCustom"); os_dir_t *dir = path ? os_opendir(path) : nullptr; @@ -459,6 +461,7 @@ bool SimpleOutput::StartRecording() obs_data_t *settings = obs_data_create(); obs_data_set_string(settings, ffmpegOutput ? "url" : "path", strPath.c_str()); + obs_data_set_string(settings, "muxer_settings", mux); obs_output_update(fileOutput, settings); @@ -711,6 +714,8 @@ inline void AdvancedOutput::SetupRecording() { const char *path = config_get_string(main->Config(), "AdvOut", "RecFilePath"); + const char *mux = config_get_string(main->Config(), "AdvOut", + "RecMuxerCustom"); bool rescale = config_get_bool(main->Config(), "AdvOut", "RecRescale"); const char *rescaleRes = config_get_string(main->Config(), "AdvOut", @@ -744,6 +749,7 @@ inline void AdvancedOutput::SetupRecording() } obs_data_set_string(settings, "path", path); + obs_data_set_string(settings, "muxer_settings", mux); obs_output_update(fileOutput, settings); obs_data_release(settings); } diff --git a/obs/window-basic-settings.cpp b/obs/window-basic-settings.cpp index de64390fd..aa45b07df 100644 --- a/obs/window-basic-settings.cpp +++ b/obs/window-basic-settings.cpp @@ -274,6 +274,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->simpleOutCustom, EDIT_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->simpleOutRecQuality, COMBO_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->simpleOutRecEncoder, COMBO_CHANGED, OUTPUTS_CHANGED); + HookWidget(ui->simpleOutMuxCustom, EDIT_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutEncoder, COMBO_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutUseRescale, CHECK_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRescale, CBEDIT_CHANGED, OUTPUTS_CHANGED); @@ -288,6 +289,7 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent) HookWidget(ui->advOutRecEncoder, COMBO_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRecUseRescale, CHECK_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRecRescale, CBEDIT_CHANGED, OUTPUTS_CHANGED); + HookWidget(ui->advOutMuxCustom, EDIT_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRecTrack1, CHECK_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRecTrack2, CHECK_CHANGED, OUTPUTS_CHANGED); HookWidget(ui->advOutRecTrack3, CHECK_CHANGED, OUTPUTS_CHANGED); @@ -1025,6 +1027,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings() "RecQuality"); const char *recEnc = config_get_string(main->Config(), "SimpleOutput", "RecEncoder"); + const char *muxCustom = config_get_string(main->Config(), + "SimpleOutput", "MuxerCustom"); audioBitrate = FindClosestAvailableAACBitrate(audioBitrate); @@ -1048,6 +1052,8 @@ void OBSBasicSettings::LoadSimpleOutputSettings() idx = ui->simpleOutRecEncoder->findData(QString(recEnc)); if (idx == -1) idx = 0; ui->simpleOutRecEncoder->setCurrentIndex(idx); + + ui->simpleOutMuxCustom->setText(muxCustom); } void OBSBasicSettings::LoadAdvOutputStreamingSettings() @@ -1131,6 +1137,8 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings() "RecRescale"); const char *rescaleRes = config_get_string(main->Config(), "AdvOut", "RecRescaleRes"); + const char *muxCustom = config_get_string(main->Config(), "AdvOut", + "RecMuxerCustom"); int tracks = config_get_int(main->Config(), "AdvOut", "RecTracks"); int typeIndex = (astrcmpi(type, "FFmpeg") == 0) ? 1 : 0; @@ -1138,6 +1146,7 @@ void OBSBasicSettings::LoadAdvOutputRecordingSettings() ui->advOutRecPath->setText(path); ui->advOutRecUseRescale->setChecked(rescale); ui->advOutRecRescale->setCurrentText(rescaleRes); + ui->advOutMuxCustom->setText(muxCustom); int idx = ui->advOutRecFormat->findText(format); ui->advOutRecFormat->setCurrentIndex(idx); @@ -2123,6 +2132,7 @@ void OBSBasicSettings::SaveOutputSettings() SaveEdit(ui->simpleOutCustom, "SimpleOutput", "x264Settings"); SaveComboData(ui->simpleOutRecQuality, "SimpleOutput", "RecQuality"); SaveComboData(ui->simpleOutRecEncoder, "SimpleOutput", "RecEncoder"); + SaveEdit(ui->simpleOutMuxCustom, "SimpleOutput", "MuxerCustom"); SaveCheckBox(ui->advOutApplyService, "AdvOut", "ApplyServiceSettings"); SaveComboData(ui->advOutEncoder, "AdvOut", "Encoder"); @@ -2140,6 +2150,7 @@ void OBSBasicSettings::SaveOutputSettings() SaveComboData(ui->advOutRecEncoder, "AdvOut", "RecEncoder"); SaveCheckBox(ui->advOutRecUseRescale, "AdvOut", "RecRescale"); SaveCombo(ui->advOutRecRescale, "AdvOut", "RecRescaleRes"); + SaveEdit(ui->advOutMuxCustom, "AdvOut", "RecMuxerCustom"); config_set_int(main->Config(), "AdvOut", "RecTracks", (ui->advOutRecTrack1->isChecked() ? (1<<0) : 0) | -- GitLab