0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-19 20:32:15 +02:00

UI: Add output settings indicators for eRTMP multitrack video

This commit is contained in:
Ruwen Hahn 2024-04-17 14:30:54 +02:00 committed by Ryan Foster
parent 42a3f903a9
commit 1aa81117d6
4 changed files with 158 additions and 0 deletions

View File

@ -864,6 +864,7 @@ Basic.MainMenu.Help.About="&About"
Basic.Settings.ProgramRestart="The program must be restarted for these settings to take effect."
Basic.Settings.ConfirmTitle="Confirm Changes"
Basic.Settings.Confirm="You have unsaved changes. Save changes?"
Basic.Settings.MultitrackVideoDisabledSettings="%1 %2 is controlling some of your stream settings"
# basic mode 'general' settings
Basic.Settings.General="General"

View File

@ -1376,6 +1376,11 @@ QLabel#errorLabel {
font-weight: bold;
}
QFrame [themeID="notice"] {
background: var(--bg_preview);
border-radius: var(--border_radius);
}
/* About dialog */
* [themeID="aboutName"] {

View File

@ -1846,6 +1846,25 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QFrame" name="multitrackVideoNoticeBox">
<property name="themeID" stdset="0">
<string notr="true">notice</string>
</property>
<layout class="QVBoxLayout" name="multitrackVideoNoticeBoxLayout">
<item>
<widget class="QLabel" name="multitrackVideoNotice">
<property name="text">
<string>Basic.Settings.MultitrackVideoDisabledSettings</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="widget">
<property name="sizePolicy">

View File

@ -896,6 +896,8 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
obs_properties_destroy(ppts);
ui->multitrackVideoNoticeBox->setVisible(false);
InitStreamPage();
InitAppearancePage();
LoadSettings(false);
@ -4662,6 +4664,8 @@ void OBSBasicSettings::OutputsChanged()
outputsChanged = true;
sender()->setProperty("changed", QVariant(true));
EnableApplyButton(true);
UpdateMultitrackVideo();
}
}
@ -5420,6 +5424,7 @@ void OBSBasicSettings::SimpleRecordingQualityChanged()
ui->simpleOutRecFormat->setVisible(!losslessQuality);
ui->simpleOutRecFormatLabel->setVisible(!losslessQuality);
UpdateMultitrackVideo();
SimpleRecordingEncoderChanged();
SimpleReplayBufferChanged();
}
@ -6343,6 +6348,114 @@ void OBSBasicSettings::UpdateMultitrackVideo()
toggle_available && ui->enableMultitrackVideo->isChecked() &&
ui->multitrackVideoConfigOverrideEnable->isChecked());
auto update_simple_output_settings = [&](bool mtv_enabled) {
auto recording_uses_stream_encoder =
ui->simpleOutRecQuality->currentData().toString() ==
"Stream";
mtv_enabled = mtv_enabled && !recording_uses_stream_encoder;
ui->simpleOutputVBitrateLabel->setDisabled(mtv_enabled);
ui->simpleOutputVBitrate->setDisabled(mtv_enabled);
ui->simpleOutputABitrateLabel->setDisabled(mtv_enabled);
ui->simpleOutputABitrate->setDisabled(mtv_enabled);
ui->simpleOutStrEncoderLabel->setDisabled(mtv_enabled);
ui->simpleOutStrEncoder->setDisabled(mtv_enabled);
ui->simpleOutPresetLabel->setDisabled(mtv_enabled);
ui->simpleOutPreset->setDisabled(mtv_enabled);
ui->simpleOutCustomLabel->setDisabled(mtv_enabled);
ui->simpleOutCustom->setDisabled(mtv_enabled);
ui->simpleOutStrAEncoderLabel->setDisabled(mtv_enabled);
ui->simpleOutStrAEncoder->setDisabled(mtv_enabled);
};
auto update_advanced_output_settings = [&](bool mtv_enabled) {
auto recording_uses_stream_video_encoder =
ui->advOutRecEncoder->currentText() ==
TEXT_USE_STREAM_ENC;
auto recording_uses_stream_audio_encoder =
ui->advOutRecAEncoder->currentData() == "none";
auto disable_video = mtv_enabled &&
!recording_uses_stream_video_encoder;
auto disable_audio = mtv_enabled &&
!recording_uses_stream_audio_encoder;
ui->advOutAEncLabel->setDisabled(disable_audio);
ui->advOutAEncoder->setDisabled(disable_audio);
ui->advOutEncLabel->setDisabled(disable_video);
ui->advOutEncoder->setDisabled(disable_video);
ui->advOutUseRescale->setDisabled(disable_video);
ui->advOutRescale->setDisabled(disable_video);
ui->advOutRescaleFilter->setDisabled(disable_video);
if (streamEncoderProps)
streamEncoderProps->SetDisabled(disable_video);
};
auto update_advanced_output_audio_tracks = [&](bool mtv_enabled) {
auto vod_track_enabled = vodTrackCheckbox &&
vodTrackCheckbox->isChecked();
auto vod_track_idx_enabled = [&](size_t idx) {
return vod_track_enabled && vodTrack[idx] &&
vodTrack[idx]->isChecked();
};
auto track1_warning_visible = mtv_enabled &&
(ui->advOutTrack1->isChecked() ||
vod_track_idx_enabled(1));
auto track1_disabled = track1_warning_visible &&
!ui->advOutRecTrack1->isChecked();
ui->advOutTrack1BitrateLabel->setDisabled(track1_disabled);
ui->advOutTrack1Bitrate->setDisabled(track1_disabled);
auto track2_warning_visible = mtv_enabled &&
(ui->advOutTrack2->isChecked() ||
vod_track_idx_enabled(2));
auto track2_disabled = track2_warning_visible &&
!ui->advOutRecTrack2->isChecked();
ui->advOutTrack2BitrateLabel->setDisabled(track2_disabled);
ui->advOutTrack2Bitrate->setDisabled(track2_disabled);
auto track3_warning_visible = mtv_enabled &&
(ui->advOutTrack3->isChecked() ||
vod_track_idx_enabled(3));
auto track3_disabled = track3_warning_visible &&
!ui->advOutRecTrack3->isChecked();
ui->advOutTrack3BitrateLabel->setDisabled(track3_disabled);
ui->advOutTrack3Bitrate->setDisabled(track3_disabled);
auto track4_warning_visible = mtv_enabled &&
(ui->advOutTrack4->isChecked() ||
vod_track_idx_enabled(4));
auto track4_disabled = track4_warning_visible &&
!ui->advOutRecTrack4->isChecked();
ui->advOutTrack4BitrateLabel->setDisabled(track4_disabled);
ui->advOutTrack4Bitrate->setDisabled(track4_disabled);
auto track5_warning_visible = mtv_enabled &&
(ui->advOutTrack5->isChecked() ||
vod_track_idx_enabled(5));
auto track5_disabled = track5_warning_visible &&
!ui->advOutRecTrack5->isChecked();
ui->advOutTrack5BitrateLabel->setDisabled(track5_disabled);
ui->advOutTrack5Bitrate->setDisabled(track5_disabled);
auto track6_warning_visible = mtv_enabled &&
(ui->advOutTrack6->isChecked() ||
vod_track_idx_enabled(6));
auto track6_disabled = track6_warning_visible &&
!ui->advOutRecTrack6->isChecked();
ui->advOutTrack6BitrateLabel->setDisabled(track6_disabled);
ui->advOutTrack6Bitrate->setDisabled(track6_disabled);
};
if (available) {
OBSDataAutoRelease settings;
{
@ -6384,6 +6497,26 @@ void OBSBasicSettings::UpdateMultitrackVideo()
.arg(multitrack_video_name,
ui->service->currentText()));
}
auto disabled_text =
QTStr("Basic.Settings.MultitrackVideoDisabledSettings")
.arg(ui->service->currentText())
.arg(multitrack_video_name);
ui->multitrackVideoNotice->setText(disabled_text);
auto mtv_enabled = ui->enableMultitrackVideo->isChecked();
ui->multitrackVideoNoticeBox->setVisible(mtv_enabled);
update_simple_output_settings(mtv_enabled);
update_advanced_output_settings(mtv_enabled);
update_advanced_output_audio_tracks(mtv_enabled);
} else {
ui->multitrackVideoNoticeBox->setVisible(false);
update_simple_output_settings(false);
update_advanced_output_settings(false);
update_advanced_output_audio_tracks(false);
}
}