From f9e7d237ad3d821707e3b5508ff316cd80755347 Mon Sep 17 00:00:00 2001 From: Warchamp7 Date: Sun, 22 Aug 2021 00:18:26 -0400 Subject: [PATCH] UI: Clean up Settings Output form - Adds frames around certain elements for a better element hierarchy - Moves the scroll areas into the tabs themselves - Hides stacked widgets that aren't visible to prevent scrolling of invisible content --- UI/data/locale/en-US.ini | 4 + UI/forms/OBSBasicSettings.ui | 5497 +++++++++++++++++++--------------- UI/window-basic-settings.cpp | 26 +- 3 files changed, 3085 insertions(+), 2442 deletions(-) diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini index cf64f902f..ce923d5c6 100644 --- a/UI/data/locale/en-US.ini +++ b/UI/data/locale/en-US.ini @@ -941,6 +941,7 @@ Basic.Settings.Output.NoSpaceFileName="Generate File Name without Space" Basic.Settings.Output.Adv.Rescale="Rescale Output" Basic.Settings.Output.Adv.AudioTrack="Audio Track" Basic.Settings.Output.Adv.Streaming="Streaming" +Basic.Settings.Output.Adv.Streaming.Settings="Streaming Settings" Basic.Settings.Output.Adv.Audio.Track1="Track 1" Basic.Settings.Output.Adv.Audio.Track2="Track 2" Basic.Settings.Output.Adv.Audio.Track3="Track 3" @@ -948,9 +949,11 @@ Basic.Settings.Output.Adv.Audio.Track4="Track 4" Basic.Settings.Output.Adv.Audio.Track5="Track 5" Basic.Settings.Output.Adv.Audio.Track6="Track 6" Basic.Settings.Output.Adv.TwitchVodTrack="Twitch VOD Track" +Basic.Settings.Output.Adv.Encoder="Encoder Settings" # basic mode 'output' settings - advanced section - recording subsection Basic.Settings.Output.Adv.Recording="Recording" +Basic.Settings.Output.Adv.Recording.Settings="Recording Settings" Basic.Settings.Output.Adv.Recording.RecType="Recording Type" Basic.Settings.Output.Adv.Recording.Type="Type" Basic.Settings.Output.Adv.Recording.Type.Standard="Standard" @@ -979,6 +982,7 @@ Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings="Audio Encoder Settings (if an Basic.Settings.Output.Adv.FFmpeg.MuxerSettings="Muxer Settings (if any)" Basic.Settings.Output.Adv.FFmpeg.GOPSize="Keyframe interval (frames)" Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat="Show all codecs (even if potentially incompatible)" +Basic.Settings.Output.Adv.FFmpeg.Settings="FFmpeg Settings" Basic.Settings.Output.EnableSplitFile="Automatic File Splitting" Basic.Settings.Output.SplitFile.TypeTime="Split by Time" Basic.Settings.Output.SplitFile.TypeSize="Split by Size" diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui index 2bc6ef245..ad9a13669 100644 --- a/UI/forms/OBSBasicSettings.ui +++ b/UI/forms/OBSBasicSettings.ui @@ -7,7 +7,7 @@ 0 0 981 - 726 + 730 @@ -1372,615 +1372,705 @@ 0 - - - QFrame::NoFrame - - - QFrame::Plain - - - true - - - - - 0 - 0 - 820 - 676 - - - - - 0 - - - 0 - - - 0 - - - 9 - - - - - - 0 - 0 - + + + + + + + 0 + 0 + + + + + QFormLayout::AllNonFixedFieldsGrow - - - QFormLayout::AllNonFixedFieldsGrow - - - - - - 170 - 0 - - + + 8 + + + 8 + + + 16 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.Mode + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + outputMode + + + + + + + true + + + + 0 + 0 + + + + 0 + + - Basic.Settings.Output.Mode + Basic.Settings.Output.Mode.Simple - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + Basic.Settings.Output.Mode.Adv - - outputMode + + + + + + + + + + 0 + + + + + 0 + + + 0 + + + 8 + + + 0 + + + + + QFrame::NoFrame - - - - - + + QFrame::Plain + + true - - - 0 - 0 - - - - 0 - - - - Basic.Settings.Output.Mode.Simple + + + + 0 + 0 + 794 + 621 + - - - - Basic.Settings.Output.Mode.Adv + + + 0 + 0 + - + + + 8 + + + 8 + + + 8 + + + 8 + + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Streaming + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 8 + + + 8 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.VideoBitrate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + simpleOutputVBitrate + + + + + + + 200 + + + 1000000 + + + 2000 + + + + + + + Basic.Settings.Output.AudioBitrate + + + simpleOutputABitrate + + + + + + + 8 + + + + 32 + + + + + 48 + + + + + 64 + + + + + 80 + + + + + 96 + + + + + 112 + + + + + 128 + + + + + 160 + + + + + 192 + + + + + 256 + + + + + 320 + + + + + + + + Basic.Settings.Output.Encoder + + + simpleOutRecEncoder + + + + + + + + + + true + + + Basic.Settings.Output.EncoderPreset + + + simpleOutPreset + + + + + + + + + + Basic.Settings.Output.Advanced + + + true + + + + + + + Basic.Settings.Output.CustomEncoderSettings + + + simpleOutCustom + + + + + + + + + + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Recording + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 8 + + + 8 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.Simple.SavePath + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + simpleOutputPath + + + + + + + + + true + + + + + + + true + + + Browse + + + + + + + + + Basic.Settings.Output.NoSpaceFileName + + + true + + + + + + + Basic.Settings.Output.Simple.RecordingQuality + + + simpleOutRecQuality + + + + + + + + + + Basic.Settings.Output.Format + + + simpleOutRecFormat + + + + + + + + flv + + + + + mp4 + + + + + mov + + + + + mkv + + + + + ts + + + + + m3u8 + + + + + + + + Basic.Settings.Output.Encoder + + + simpleOutRecEncoder + + + + + + + + + + Basic.Settings.Output.CustomMuxerSettings + + + simpleOutMuxCustom + + + + + + + + + + Basic.Settings.Output.UseReplayBuffer + + + true + + + + + + + + + + ReplayBuffer + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 8 + + + 8 + + + 8 + + + + + Basic.Settings.Output.ReplayBuffer.SecondsMax + + + + + + + sec + + + 5 + + + 21600 + + + 15 + + + + + + + Basic.Settings.Output.ReplayBuffer.MegabytesMax + + + + + + + MB + + + 20 + + + 8192 + + + 512 + + + + + + + + + + + + + + + + + 10 + + + 10 + + + 10 + + + 10 + + + + + + + + 0 + 20 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + Qt::Vertical + + + + 20 + 10 + + + + + + - - - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + true + + + Basic.Settings.Output.Adv.Streaming - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - 170 - 0 - - - - Basic.Settings.Output.VideoBitrate - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - simpleOutputVBitrate - - - - - - - 200 - - - 1000000 - - - 2000 - - - - - - - Basic.Settings.Output.AudioBitrate - - - simpleOutputABitrate - - - - - - - 8 - - - - 32 - - - - - 48 - - - - - 64 - - - - - 80 - - - - - 96 - - - - - 112 - - - - - 128 - - - - - 160 - - - - - 192 - - - - - 256 - - - - - 320 - - - - - - - - Basic.Settings.Output.Encoder - - - simpleOutRecEncoder - - - - - - - - - - true - - - Basic.Settings.Output.EncoderPreset - - - simpleOutPreset - - - - - - - - - - Basic.Settings.Output.Advanced - - - true - - - - - - - Basic.Settings.Output.CustomEncoderSettings - - - simpleOutCustom - - - - - - - - - - - - - - 0 - 0 - - - - Basic.Settings.Output.Adv.Recording - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - 170 - 0 - - - - Basic.Settings.Output.Simple.SavePath - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - simpleOutputPath - - - - - - - - - true - - - - - - - true - - - Browse - - - - - - - - - Basic.Settings.Output.NoSpaceFileName - - - true - - - - - - - Basic.Settings.Output.Simple.RecordingQuality - - - simpleOutRecQuality - - - - - - - - - - Basic.Settings.Output.Format - - - simpleOutRecFormat - - - - - - - - flv - - - - - mp4 - - - - - mov - - - - - mkv - - - - - ts - - - - - - - - Basic.Settings.Output.Encoder - - - simpleOutRecEncoder - - - - - - - - - - Basic.Settings.Output.CustomMuxerSettings - - - simpleOutMuxCustom - - - - - - - - - - Basic.Settings.Output.UseReplayBuffer - - - true - - - - - - - - - - ReplayBuffer - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - Basic.Settings.Output.ReplayBuffer.SecondsMax - - - - - - - sec - - - 5 - - - 21600 - - - 15 - - - - - - - Basic.Settings.Output.ReplayBuffer.MegabytesMax - - - - - - - MB - - - 20 - - - 8192 - - - 512 - - - - - - - - - - - - - - - - - 10 - - - 10 - - - 10 - - - 10 - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - + + 0 - 0 + 8 - 0 + 8 0 - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 0 - - - true - - - - Basic.Settings.Output.Adv.Streaming - - - - 9 - - - 0 - - - 9 - - - 9 - - - + + + + QFrame::NoFrame + + + QFrame::Plain + + + true + + + + + 0 + 0 + 790 + 586 + + - - 0 - 0 @@ -1988,19 +2078,22 @@ 0 - 0 + 6 0 - + - + 0 0 + + Basic.Settings.Output.Adv.Streaming.Settings + QFormLayout::AllNonFixedFieldsGrow @@ -2008,6 +2101,18 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + 8 + + + 2 + + + 8 + + + 8 + @@ -2098,9 +2203,6 @@ Basic.Settings.Output.Encoder - - advOutEncoder - @@ -2135,269 +2237,1117 @@ + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Encoder + + + + 8 + + + 2 + + + 8 + + + 8 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + - - - - - - Basic.Settings.Output.Adv.Recording - - - - 9 - - - 9 - - - 9 - - - 9 - - - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Basic.Settings.Output.Adv.Recording + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 8 + + + 16 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.Adv.Recording.Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + advOutRecType + + + + + + + + Basic.Settings.Output.Adv.Recording.Type.Standard + + + + + Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput + + + + + + + + + + + 0 + + + + + 0 + 0 + + + + + 0 0 + + 8 + 0 - - - - - 170 - 0 - + + + + + 0 + 0 + - - Basic.Settings.Output.Adv.Recording.Type + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + true - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - advOutRecType - - - - - - - - Basic.Settings.Output.Adv.Recording.Type.Standard + + + + 0 + 0 + 790 + 556 + - - - - Basic.Settings.Output.Adv.Recording.Type.FFmpegOutput - - - - - - - - - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - + 0 0 - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 0 0 - - + + 6 + + + 0 + + + - + 0 0 - - - 170 - 0 - + + Basic.Settings.Output.Adv.Recording.Settings - - Basic.Settings.Output.Simple.SavePath - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - advOutRecPath - - - - - - - - - true - - - - - - - true - - - Browse - - - - - - - - - Basic.Settings.Output.NoSpaceFileName - - - true - - - - - - - Basic.Settings.Output.Format - - - advOutRecFormat - - - - - - - - flv + + + QFormLayout::AllNonFixedFieldsGrow - - - - mp4 + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - mov + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - mkv - - - - - ts - - - - - m3u8 - - - - - - - - Basic.Settings.Output.Adv.AudioTrack - - - - - - - Basic.Settings.Output.Encoder - - - advOutRecEncoder - - - - - - - - - - - 0 - 0 - - - - Qt::RightToLeft - - - Basic.Settings.Output.Adv.Rescale - - - - - - - 0 + 8 - 0 + 2 - 0 + 10 - 0 + 8 - - + + + + + 0 + 0 + + + + + 170 + 0 + + + + Basic.Settings.Output.Simple.SavePath + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + true + + + + 0 + 0 + + + + + + + + true + + + + 0 + 0 + + + + Browse + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Basic.Settings.Output.NoSpaceFileName + + + true + + + + + + + Basic.Settings.Output.Format + + + + + + + + 0 + 0 + + + + + flv + + + + + mp4 + + + + + mov + + + + + mkv + + + + + ts + + + + + m3u8 + + + + + + + + Basic.Settings.Output.Adv.AudioTrack + + + + + + + + 0 + 0 + + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + 1 + + + + + + + + 0 + 0 + + + + 2 + + + + + + + + 0 + 0 + + + + 3 + + + + + + + + 0 + 0 + + + + 4 + + + + + + + + 0 + 0 + + + + 5 + + + + + + + + 0 + 0 + + + + 6 + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + 1 + + + + + + + + 0 + 0 + + + + 2 + + + + + + + + 0 + 0 + + + + 3 + + + + + + + + 0 + 0 + + + + 4 + + + + + + + + 0 + 0 + + + + 5 + + + + + + + + 0 + 0 + + + + 6 + + + + + + + + + + + Basic.Settings.Output.Encoder + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Qt::RightToLeft + + + Basic.Settings.Output.Adv.Rescale + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + false + + + + 0 + 0 + + + + true + + + + + + + + + + Basic.Settings.Output.CustomMuxerSettings + + + + + + + + 0 + 0 + + + + + + + + + 0 + 0 + + + + Qt::RightToLeft + + + Basic.Settings.Output.EnableSplitFile + + + + + + + false + + + + Basic.Settings.Output.SplitFile.TypeTime + + + + + Basic.Settings.Output.SplitFile.TypeSize + + + + + + + + Basic.Settings.Output.SplitFile.Time + + + + + + + min + + + 1 + + + 360 + + + 15 + + + + + + + Basic.Settings.Output.SplitFile.Size + + + + + + + MB + + + 20 + + + 8192 + + + 2048 + + + + + + + Basic.Settings.Output.SplitFile.ResetTimestamps + + + true + + + + + + + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Encoder + + + + 8 + + + 2 + + + 10 + + + 8 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 8 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Plain + + + 0 + + + true + + + + + 0 + 0 + 593 + 471 + + + + + 0 + + + 0 + + + 6 + + + 0 + + + + + Basic.Settings.Output.Adv.FFmpeg.Settings + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 8 + + + 10 + + + 8 + + + + + + 0 + 0 + + + + + 170 + 0 + + + + Basic.Settings.Output.Adv.FFmpeg.Type + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile + + + + + Basic.Settings.Output.Adv.FFmpeg.Type.URL + + + + + + + + + 0 + 0 + + + + + 170 + 0 + + + + Basic.Settings.Output.Adv.FFmpeg.SavePathURL + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 0 + 0 + + + + 1 + + + + + 0 + 0 + + + + + 3 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + + + + + Browse + + + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + + + + + + + + + Basic.Settings.Output.NoSpaceFileName + + + true + + + + + + + Basic.Settings.Output.Adv.FFmpeg.Format + + + + + + + + + + Basic.Settings.Output.Adv.FFmpeg.FormatDesc + + + + + + + + + + + + + + Basic.Settings.Output.Adv.FFmpeg.MuxerSettings + + + + + + + + + + Basic.Settings.Output.VideoBitrate + + + + + + + 0 + + + 1000000000 + + + 2500 + + + + + + + Basic.Settings.Output.Adv.FFmpeg.GOPSize + + + + + + + 1000000000 + + + 250 + + + + + + + + 0 + 0 + + + + Qt::RightToLeft + + + Basic.Settings.Output.Adv.Rescale + + + + + false @@ -2406,1546 +3356,1258 @@ + + + + Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat + + + + + + + Basic.Settings.Output.Adv.FFmpeg.VEncoder + + + + + + + + + + Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings + + + + + + + + + + Basic.Settings.Output.AudioBitrate + + + + + + + 32 + + + 4096 + + + 16 + + + 128 + + + + + + + Basic.Settings.Output.Adv.AudioTrack + + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 1 + + + true + + + + + + + 2 + + + + + + + 3 + + + + + + + 4 + + + + + + + 5 + + + + + + + 6 + + + + + + + + + + Basic.Settings.Output.Adv.FFmpeg.AEncoder + + + + + + + + + + Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings + + + + + + - - - - Basic.Settings.Output.CustomMuxerSettings + + + + Qt::Vertical - - advOutMuxCustom + + + 20 + 40 + - - - - - - - - - - 0 - 0 - - - - Qt::RightToLeft - - - Basic.Settings.Output.EnableSplitFile - - - - - - - false - - - - Basic.Settings.Output.SplitFile.TypeTime - - - - - Basic.Settings.Output.SplitFile.TypeSize - - - - - - - - Basic.Settings.Output.SplitFile.Time - - - - - - - min - - - 1 - - - 360 - - - 15 - - - - - - - Basic.Settings.Output.SplitFile.Size - - - - - - - MB - - - 20 - - - 8192 - - - 2048 - - - - - - - Basic.Settings.Output.SplitFile.ResetTimestamps - - - true - - - - - - - - 0 - 0 - - - - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 1 - - - - - - - 2 - - - - - - - 3 - - - - - - - 4 - - - - - - - 5 - - - - - - - 6 - - - - - - - - - - 9 - 0 - 236 - 25 - - - - - - - 1 - - - - - - - 2 - - - - - - - 3 - - - - - - - 4 - - - - - - - 5 - - - - - - - 6 - - - - - - - + - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - QFormLayout::AllNonFixedFieldsGrow + + + + + + + + + + + Basic.Settings.Audio + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + 0 + + + 8 + + + + + QFrame::NoFrame - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + QFrame::Plain - + 0 - - - - - 0 - 0 - + + true + + + + + 0 + 0 + 790 + 576 + + + + + 6 - - - 170 - 0 - - - - Basic.Settings.Output.Adv.FFmpeg.SavePathURL - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 0 - 0 - - - + 0 - - - - 0 - 0 - - - - - 3 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - true - - - - - - - Browse - - - - - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - true - - - - - - - - - - - Basic.Settings.Output.Adv.FFmpeg.Format - - - advOutFFFormat - - - - - - - - - - Basic.Settings.Output.Adv.FFmpeg.FormatDesc - - - - - - - - - - - - - - - 0 - 0 - - - - - 170 - 0 - - - - Basic.Settings.Output.Adv.FFmpeg.Type - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - advOutFFType - - - - - - - - Basic.Settings.Output.Adv.FFmpeg.Type.RecordToFile - - - - - Basic.Settings.Output.Adv.FFmpeg.Type.URL - - - - - - - - Basic.Settings.Output.Adv.FFmpeg.MuxerSettings - - - advOutFFMCfg - - - - - - - - - - Basic.Settings.Output.NoSpaceFileName - - - true - - - - - - - Basic.Settings.Output.VideoBitrate - - - advOutFFVBitrate - - - - - - + 0 - - 1000000000 + + 6 - - 2500 + + 0 - - - - - - Basic.Settings.Output.Adv.FFmpeg.GOPSize - - - advOutFFVGOPSize - - - - - - - 1000000000 - - - 250 - - - - - - - - 0 - 0 - - - - Qt::RightToLeft - - - Basic.Settings.Output.Adv.Rescale - - - - - - - false - - - true - - - - - - - Basic.Settings.Output.Adv.FFmpeg.IgnoreCodecCompat - - - - - - - - - - Basic.Settings.Output.Adv.FFmpeg.VEncoder - - - advOutFFVEncoder - - - - - - - - - - Basic.Settings.Output.Adv.FFmpeg.VEncoderSettings - - - advOutFFVCfg - - - - - - - 32 - - - 4096 - - - 16 - - - 128 - - - - - - - Basic.Settings.Output.AudioBitrate - - - advOutFFABitrate - - - - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 1 - - - true - - - - - - - 2 - - - - - - - 3 - - - - - - - 4 - - - - - - - 5 - - - - - - - 6 - - - - - - - - - - Basic.Settings.Output.Adv.AudioTrack - - - - - - - Basic.Settings.Output.Adv.FFmpeg.AEncoder - - - advOutFFAEncoder - - - - - - - - - - Basic.Settings.Output.Adv.FFmpeg.AEncoderSettings - - - advOutFFACfg - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - Basic.Settings.Audio - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - - - - 0 - 0 - - - - Basic.Settings.Output.Adv.Audio.Track1 - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - 8 + + + + + 0 + 0 + - - - 32 + + Basic.Settings.Output.Adv.Audio.Track1 + + + + QFormLayout::AllNonFixedFieldsGrow - - - - 48 + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - 64 + + 8 - - - - 80 + + 2 - - - - 96 + + 8 - - - - 112 + + 8 - - - - 128 - - - - - 160 - - - - - 192 - - - - - 256 - - - - - 320 - - + + + + + 0 + 0 + + + + 8 + + + + 32 + + + + + 48 + + + + + 64 + + + + + 80 + + + + + 96 + + + + + 112 + + + + + 128 + + + + + 160 + + + + + 192 + + + + + 256 + + + + + 320 + + + + + + + + Name + + + advOutTrack1Name + + + + + + + + 0 + 0 + + + + + + + + + 170 + 0 + + + + Basic.Settings.Output.AudioBitrate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + advOutTrack1Bitrate + + + + - - - + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Audio.Track2 + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 2 + + + 8 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.AudioBitrate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + advOutTrack2Bitrate + + + + + + + + 0 + 0 + + + + 8 + + + + 32 + + + + + 48 + + + + + 64 + + + + + 80 + + + + + 96 + + + + + 112 + + + + + 128 + + + + + 160 + + + + + 192 + + + + + 256 + + + + + 320 + + + + + + + + Name + + + advOutTrack2Name + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Audio.Track3 + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 2 + + + 8 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.AudioBitrate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + advOutTrack3Bitrate + + + + + + + + 0 + 0 + + + + 8 + + + + 32 + + + + + 48 + + + + + 64 + + + + + 80 + + + + + 96 + + + + + 112 + + + + + 128 + + + + + 160 + + + + + 192 + + + + + 256 + + + + + 320 + + + + + + + + Name + + + advOutTrack3Name + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Audio.Track4 + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 2 + + + 8 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.AudioBitrate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + advOutTrack4Bitrate + + + + + + + + 0 + 0 + + + + 8 + + + + 32 + + + + + 48 + + + + + 64 + + + + + 80 + + + + + 96 + + + + + 112 + + + + + 128 + + + + + 160 + + + + + 192 + + + + + 256 + + + + + 320 + + + + + + + + Name + + + advOutTrack4Name + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Audio.Track5 + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 2 + + + 8 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.AudioBitrate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + advOutTrack5Bitrate + + + + + + + + 0 + 0 + + + + 8 + + + + 32 + + + + + 48 + + + + + 64 + + + + + 80 + + + + + 96 + + + + + 112 + + + + + 128 + + + + + 160 + + + + + 192 + + + + + 256 + + + + + 320 + + + + + + + + Name + + + advOutTrack5Name + + + + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + + + Basic.Settings.Output.Adv.Audio.Track6 + + + + QFormLayout::AllNonFixedFieldsGrow + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 8 + + + 2 + + + 8 + + + 8 + + + + + + 170 + 0 + + + + Basic.Settings.Output.AudioBitrate + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + advOutTrack6Bitrate + + + + + + + + 0 + 0 + + + + 8 + + + + 32 + + + + + 48 + + + + + 64 + + + + + 80 + + + + + 96 + + + + + 112 + + + + + 128 + + + + + 160 + + + + + 192 + + + + + 256 + + + + + 320 + + + + + + + + Name + + + advOutTrack6Name + + + + + + + + 0 + 0 + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + - 170 - 0 + 10 + 10 - - Basic.Settings.Output.AudioBitrate - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - advOutTrack1Bitrate - - - - - - - Name - - - advOutTrack1Name - - - - - + - - - - - - 0 - 0 - - - - Basic.Settings.Output.Adv.Audio.Track2 - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - 170 - 0 - - - - Basic.Settings.Output.AudioBitrate - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - advOutTrack2Bitrate - - - - - - - 8 - - - - 32 - - - - - 48 - - - - - 64 - - - - - 80 - - - - - 96 - - - - - 112 - - - - - 128 - - - - - 160 - - - - - 192 - - - - - 256 - - - - - 320 - - - - - - - - Name - - - advOutTrack2Name - - - - - - - - - - - - - - 0 - 0 - - - - Basic.Settings.Output.Adv.Audio.Track3 - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - 170 - 0 - - - - Basic.Settings.Output.AudioBitrate - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - advOutTrack3Bitrate - - - - - - - 8 - - - - 32 - - - - - 48 - - - - - 64 - - - - - 80 - - - - - 96 - - - - - 112 - - - - - 128 - - - - - 160 - - - - - 192 - - - - - 256 - - - - - 320 - - - - - - - - Name - - - advOutTrack3Name - - - - - - - - - - - - - - 0 - 0 - - - - Basic.Settings.Output.Adv.Audio.Track4 - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - 170 - 0 - - - - Basic.Settings.Output.AudioBitrate - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - advOutTrack4Bitrate - - - - - - - 8 - - - - 32 - - - - - 48 - - - - - 64 - - - - - 80 - - - - - 96 - - - - - 112 - - - - - 128 - - - - - 160 - - - - - 192 - - - - - 256 - - - - - 320 - - - - - - - - Name - - - advOutTrack4Name - - - - - - - - - - - - - - 0 - 0 - - - - Basic.Settings.Output.Adv.Audio.Track5 - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - 170 - 0 - - - - Basic.Settings.Output.AudioBitrate - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - advOutTrack5Bitrate - - - - - - - 8 - - - - 32 - - - - - 48 - - - - - 64 - - - - - 80 - - - - - 96 - - - - - 112 - - - - - 128 - - - - - 160 - - - - - 192 - - - - - 256 - - - - - 320 - - - - - - - - Name - - - advOutTrack5Name - - - - - - - - - - - - - - 0 - 0 - - - - Basic.Settings.Output.Adv.Audio.Track6 - - - - QFormLayout::AllNonFixedFieldsGrow - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - 170 - 0 - - - - Basic.Settings.Output.AudioBitrate - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - advOutTrack6Bitrate - - - - - - - 8 - - - - 32 - - - - - 48 - - - - - 64 - - - - - 80 - - - - - 96 - - - - - 112 - - - - - 128 - - - - - 160 - - - - - 192 - - - - - 256 - - - - - 320 - - - - - - - - Name - - - advOutTrack6Name - - - - - - - - - - - - - - - - - ReplayBuffer - - - - - - Basic.Settings.Output.UseReplayBuffer - - - - - - - - 0 - 0 - - - - ReplayBuffer - - - false - - - false - - - - - - Basic.Settings.Output.ReplayBuffer.SecondsMax - - - - - - - s - - - 5 - - - 21600 - - - 15 - - - - - - - - - - - - - - MB - - - 20 - - - 8192 - - - 512 - - - - - - - Basic.Settings.Output.ReplayBuffer.MegabytesMax - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - + + + + + + - - - + + + ReplayBuffer + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 0 + + + + 8 + + + 8 + + + 14 + + + 8 + + + + + Basic.Settings.Output.UseReplayBuffer + + + + + + + + 0 + 0 + + + + + 0 + + + 0 + + + 0 + + + 8 + + + + + Basic.Settings.Output.ReplayBuffer.SecondsMax + + + + + + + s + + + 5 + + + 21600 + + + 15 + + + + + + + MB + + + 20 + + + 8192 + + + 512 + + + + + + + Basic.Settings.Output.ReplayBuffer.MegabytesMax + + + + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 20 + + + + + + + + + - - - + + + @@ -3980,8 +4642,8 @@ 0 0 - 820 - 632 + 561 + 526 @@ -6998,7 +7660,6 @@ authUsername authPw authPwShow - scrollArea_3 outputMode simpleOutputVBitrate simpleOutputABitrate @@ -7029,52 +7690,19 @@ advOutRecType advOutRecPath advOutRecPathBrowse - advOutNoSpace advOutRecFormat - flvTrack1 - flvTrack2 - flvTrack3 - flvTrack4 - flvTrack5 - flvTrack6 advOutRecTrack1 advOutRecTrack2 advOutRecTrack3 advOutRecTrack4 advOutRecTrack5 advOutRecTrack6 - advOutRecEncoder - advOutRecUseRescale advOutRecRescale - advOutMuxCustom advOutSplitFile advOutSplitFileType advOutSplitFileTime advOutSplitFileSize advOutSplitFileRstTS - advOutFFType - advOutFFRecPath - advOutFFPathBrowse - advOutFFNoSpace - advOutFFFormat - advOutFFMCfg - advOutFFVBitrate - advOutFFVGOPSize - advOutFFUseRescale - advOutFFRescale - advOutFFIgnoreCompat - advOutFFVEncoder - advOutFFVCfg - advOutFFABitrate - advOutFFTrack1 - advOutFFTrack2 - advOutFFTrack3 - advOutFFTrack4 - advOutFFTrack5 - advOutFFTrack6 - advOutFFAEncoder - advOutFFACfg - advOutFFURL advOutTrack1Bitrate advOutTrack1Name advOutTrack2Bitrate @@ -7087,7 +7715,6 @@ advOutTrack5Name advOutTrack6Bitrate advOutTrack6Name - advReplayBuf advRBSecMax advRBMegsMax scrollArea_50 @@ -7235,86 +7862,6 @@ - - advOutRecType - currentIndexChanged(int) - stackedWidget - setCurrentIndex(int) - - - 260 - 73 - - - 242 - 85 - - - - - advOutFFUseRescale - toggled(bool) - advOutFFRescale - setEnabled(bool) - - - 260 - 85 - - - 229 - 85 - - - - - advOutUseRescale - toggled(bool) - advOutRescale - setEnabled(bool) - - - 260 - 64 - - - 229 - 64 - - - - - advOutRecUseRescale - toggled(bool) - advOutRecRescale - setEnabled(bool) - - - 260 - 85 - - - 229 - 85 - - - - - advOutFFType - currentIndexChanged(int) - stackedWidget_2 - setCurrentIndex(int) - - - 260 - 85 - - - 260 - 85 - - - systemTrayEnabled toggled(bool) @@ -7571,5 +8118,85 @@ + + advOutUseRescale + toggled(bool) + advOutRescale + setEnabled(bool) + + + 269 + 192 + + + 656 + 192 + + + + + advOutRecType + currentIndexChanged(int) + stackedWidget + setCurrentIndex(int) + + + 663 + 106 + + + 560 + 391 + + + + + advOutRecUseRescale + toggled(bool) + advOutRecRescale + setEnabled(bool) + + + 289 + 317 + + + 662 + 317 + + + + + advOutFFUseRescale + toggled(bool) + advOutFFRescale + setEnabled(bool) + + + 334 + 377 + + + 685 + 377 + + + + + advOutFFType + currentIndexChanged(int) + stackedWidget_2 + setCurrentIndex(int) + + + 685 + 163 + + + 685 + 191 + + + diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp index bc75e9142..7d8e2eca1 100644 --- a/UI/window-basic-settings.cpp +++ b/UI/window-basic-settings.cpp @@ -1892,7 +1892,8 @@ OBSBasicSettings::CreateEncoderPropertyView(const char *encoder, view = new OBSPropertiesView( settings.Get(), encoder, (PropertiesReloadCallback)obs_get_encoder_properties, 170); - view->setFrameShape(QFrame::StyledPanel); + view->setFrameShape(QFrame::NoFrame); + view->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum); view->setProperty("changed", QVariant(changed)); QObject::connect(view, SIGNAL(Changed()), this, SLOT(OutputsChanged())); @@ -1907,7 +1908,9 @@ void OBSBasicSettings::LoadAdvOutputStreamingEncoderProperties() delete streamEncoderProps; streamEncoderProps = CreateEncoderPropertyView(type, "streamEncoder.json"); - ui->advOutputStreamTab->layout()->addWidget(streamEncoderProps); + streamEncoderProps->setSizePolicy(QSizePolicy::Preferred, + QSizePolicy::Minimum); + ui->advOutEncoderLayout->addWidget(streamEncoderProps); connect(streamEncoderProps, SIGNAL(Changed()), this, SLOT(UpdateStreamDelayEstimate())); @@ -2019,7 +2022,10 @@ void OBSBasicSettings::LoadAdvOutputRecordingEncoderProperties() if (astrcmpi(type, "none") != 0) { recordEncoderProps = CreateEncoderPropertyView(type, "recordEncoder.json"); - ui->advOutRecStandard->layout()->addWidget(recordEncoderProps); + recordEncoderProps->setSizePolicy(QSizePolicy::Preferred, + QSizePolicy::Minimum); + ui->advOutRecEncoderProps->layout()->addWidget( + recordEncoderProps); connect(recordEncoderProps, SIGNAL(Changed()), this, SLOT(AdvReplayBufferChanged())); } @@ -3985,7 +3991,9 @@ void OBSBasicSettings::on_advOutEncoder_currentIndexChanged(int idx) streamEncoderProps = CreateEncoderPropertyView( QT_TO_UTF8(encoder), loadSettings ? "streamEncoder.json" : nullptr, true); - ui->advOutputStreamTab->layout()->addWidget(streamEncoderProps); + streamEncoderProps->setSizePolicy(QSizePolicy::Preferred, + QSizePolicy::Minimum); + ui->advOutEncoderLayout->addWidget(streamEncoderProps); } ui->advOutUseRescale->setVisible(true); @@ -4005,6 +4013,7 @@ void OBSBasicSettings::on_advOutRecEncoder_currentIndexChanged(int idx) ui->advOutRecUseRescale->setChecked(false); ui->advOutRecUseRescale->setVisible(false); ui->advOutRecRescaleContainer->setVisible(false); + ui->advOutRecEncoderProps->setVisible(false); return; } @@ -4015,13 +4024,17 @@ void OBSBasicSettings::on_advOutRecEncoder_currentIndexChanged(int idx) recordEncoderProps = CreateEncoderPropertyView( QT_TO_UTF8(encoder), loadSettings ? "recordEncoder.json" : nullptr, true); - ui->advOutRecStandard->layout()->addWidget(recordEncoderProps); + recordEncoderProps->setSizePolicy(QSizePolicy::Preferred, + QSizePolicy::Minimum); + ui->advOutRecEncoderProps->layout()->addWidget( + recordEncoderProps); connect(recordEncoderProps, SIGNAL(Changed()), this, SLOT(AdvReplayBufferChanged())); } ui->advOutRecUseRescale->setVisible(true); ui->advOutRecRescaleContainer->setVisible(true); + ui->advOutRecEncoderProps->setVisible(true); } void OBSBasicSettings::on_advOutFFIgnoreCompat_stateChanged(int) @@ -5037,8 +5050,7 @@ void OBSBasicSettings::AdvReplayBufferChanged() else ui->advRBEstimate->setText(QTStr(ESTIMATE_UNKNOWN_STR)); - ui->advReplayBufferGroupBox->setVisible(!lossless && - replayBufferEnabled); + ui->advReplayBufferFrame->setEnabled(!lossless && replayBufferEnabled); ui->advReplayBuf->setEnabled(!lossless); UpdateAutomaticReplayBufferCheckboxes();