diff --git a/UI/window-basic-main-outputs.cpp b/UI/window-basic-main-outputs.cpp index 45a10dae2..27d1826cd 100644 --- a/UI/window-basic-main-outputs.cpp +++ b/UI/window-basic-main-outputs.cpp @@ -1806,6 +1806,10 @@ inline void AdvancedOutput::SetupRecording() unsigned int cy = 0; int idx = 0; + /* Hack to allow recordings without any audio tracks selected. It is no + * longer possible to select such a configuration in settings, but legacy + * configurations might still have this configured and we don't want to + * just break them. */ if (tracks == 0) tracks = config_get_int(main->Config(), "AdvOut", "TrackIndex"); diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index fbe526930..ae2b0bbe2 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -3886,14 +3886,8 @@ void OBSBasicSettings::SaveOutputSettings() SaveSpinBox(ui->advOutSplitFileTime, "AdvOut", "RecSplitFileTime"); SaveSpinBox(ui->advOutSplitFileSize, "AdvOut", "RecSplitFileSize"); - config_set_int( - main->Config(), "AdvOut", "RecTracks", - (ui->advOutRecTrack1->isChecked() ? (1 << 0) : 0) | - (ui->advOutRecTrack2->isChecked() ? (1 << 1) : 0) | - (ui->advOutRecTrack3->isChecked() ? (1 << 2) : 0) | - (ui->advOutRecTrack4->isChecked() ? (1 << 3) : 0) | - (ui->advOutRecTrack5->isChecked() ? (1 << 4) : 0) | - (ui->advOutRecTrack6->isChecked() ? (1 << 5) : 0)); + config_set_int(main->Config(), "AdvOut", "RecTracks", + AdvOutGetSelectedAudioTracks()); config_set_int(main->Config(), "AdvOut", "FLVTrack", CurrentFLVTrack()); @@ -4237,6 +4231,10 @@ bool OBSBasicSettings::QueryAllowedToClose() ui->advOutRecAEncoder->currentIndex() == -1 || ui->advOutAEncoder->currentIndex() == -1) invalidEncoder = true; + + QString format = ui->advOutRecFormat->currentData().toString(); + if (AdvOutGetSelectedAudioTracks() == 0 && format != "flv") + invalidTracks = true; } if (invalidEncoder) { @@ -6177,6 +6175,17 @@ int OBSBasicSettings::SimpleOutGetSelectedAudioTracks() return tracks; } +int OBSBasicSettings::AdvOutGetSelectedAudioTracks() +{ + int tracks = (ui->advOutRecTrack1->isChecked() ? (1 << 0) : 0) | + (ui->advOutRecTrack2->isChecked() ? (1 << 1) : 0) | + (ui->advOutRecTrack3->isChecked() ? (1 << 2) : 0) | + (ui->advOutRecTrack4->isChecked() ? (1 << 3) : 0) | + (ui->advOutRecTrack5->isChecked() ? (1 << 4) : 0) | + (ui->advOutRecTrack6->isChecked() ? (1 << 5) : 0); + return tracks; +} + /* Using setEditable(true) on a QComboBox when there's a custom style in use * does not work properly, so instead completely recreate the widget, which * seems to work fine. */ diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp index 1179f77ed..33b5b107c 100644 --- a/UI/window-basic-settings.hpp +++ b/UI/window-basic-settings.hpp @@ -376,6 +376,7 @@ private: int CurrentFLVTrack(); int SimpleOutGetSelectedAudioTracks(); + int AdvOutGetSelectedAudioTracks(); OBSService GetStream1Service();