This continues work from #5133 to correct UI file markup and save correctly in Qt Creator
Defining alignment as an attribute in the <item> tag seems to be old behaviour that current versions of Qt Creator do not respect and will clobber these entries on save.
The correct approach is to have alignment as a property element in the widget.
As well, QWidgets that contain property definitions as well as a layout child item do not properly show up in the Qt Creator hierarchy.
These properties are still invisibly applied but the QWidgets are not shown in Qt Creator and will get removed from the file after saving.
Implements the Undo/Redo for scenes and sources, ranging from renaming,
deletion, addition. It also adds several elements to libobs that were
designed to facilitate undo/redo, and should not affect the rest of
libobs.
Some widgets are marked as native unnecessarily. Native widgets are
a bit more involving than regular ones, so remove this flag.
Original patch by David Edmundson <kde@davidedmundson.co.uk>
This setting, although technically different from the one in the
streaming section of settings, is superseded by that setting.
The setting can still be used via ini file if an actual custom rate
control or keyframe interval is needed.
This commit fixes various issues with screen readers in the main OBS
interface. These were tested using NVDA on Windows 10 2004.
Audio track selection in Settings now says Track 1, 2, etc, rather than
just the number.
Various checkboxes that just say "Enable" now have accessible text that
says what the enable is for (since it says "checkbox", the fact it's an
enable should hopefully be clear).
Type in the recording tab of output now has accessible text which says
"Recording Type".
Items in the Advanced Audio Properties window now have accessible text
for what they are for. Currently some do not report correct values, but
that will require an accessible interface in Qt to be written
specifically for that, which will be done at a later date.
Buttons in the filters window now have accessible text for what they do.
All the right side buttons in hotkeys now have tooltips, and by
extension, accessible text.
Allows services to limit and enforce resolution and framerate values the
user can select in the UI if "ignore service recommendations" is not
checked. If the "ignore service recommendations" option is not checked,
the user will not be able to select or use a resolution and/or framerate
in the user interface that the service does not support. If "ignore
service recommendations" is checked, it will work as it normally would,
allowing any value to be used as per normal.
Fortunately, and hopefully for the foreseeable future, there is only one
service that enforces resolutions and framerates.
Moves the "Enforce streaming service bitrate" option from simple output
mode to the stream section, renames it to "Ignore streaming service
setting recommendations" (inverting it). When trying to check it, it
will now also display a message box warning the user that it's generally
a not-so-good idea.
Also displays recommended settings for the service.
Adds a VOD track option (specific to Twitch) that allows a user to
specify which audio track to use for their Twitch VODs, which uses a
separate encoder to encode the track. This allows users the ability to
choose what audio goes on their VOD, separately from the live stream.
We disable the stream encoder setting in Advanced Output Mode when an
output is active, so let's also disable the stream encoder setting in
Simple Output Mode when an output is active.
New profile state is similar to first start: settings are wiped, encoders
not setup. It may make sense to show the auto configuration wizard when
a new profile is made as well.
There is a checkbox option to show the wizard. If a profile is created
with the checkbox off, the checkbox will remain defaulted to off next
prompt.
(Jim) Allows the ability to get a link from the service's settings about
a specific service selection the user chooses and display it as a "More
Info" button that the user can click to find out more information about
that particular service.
This adds spacing between the timer and duration labels in the media
controls. The vertical alignment of the labels have been fixed as well.
And the width of the source label has also been widened.
The edit widget on the image source toolbar had a maximum width set,
which caused the layout for the toolbar to look ugly if it hit that
maximum width.
The source toolbar allows quick and easy access to properties and
filers, and shows common properties/features of a source type. For
example, when you select a media source, VLC source, or the slideshow
source, you'll get media controls to control playback of the media. If
you select a text source you can edit the font, color, or text if
applicable. Or if you select a capture source, you can select the
display/window/etc to capture for that source.
If the source toolbar is not desired and is viewed as taking up valuable
space in the window, it can be disabled via the view menu.
Co-authored-by: Clayton Groeneveld <claytong1214@gmail.com>
Co-authored-by: Jim <obs.jim@gmail.com>
AllDockWidgetFeatures is now deprecated. Use underlying values instead.
Use default QFlags constructor instead of nullptr/0.
Use QWheelEvent::angleDelta() in place of orientation() and delta(), and
position() in place of x() and y().
-Remove 9px margins around central widget. This saves 18px of vertical
space. This will be helpful when the source context menu is added,
which is 24px tall.
-Adjusts margins in transitions dock. The top of the transitions dock
wasn't lined up with the top of the controls dock, which made it look
bad.
This replaces the previous Open File dialog for importing collections
with a window for importing many collections at once, based on the remux
window, along with support for importing from OBS Classic, XSplit
Broadcaster and from Streamlabs' fork. This also translates sources
between OSes that Studio supports.
Follow up to #2145: https://github.com/obsproject/obs-studio/pull/2145
The wizard has a stream link URL as well, adding the button in the
wizard to match. Additionally, fixing a few errors in the UI layout
and spacing where items were not padded.
Adds an option to the right click menu in the scenes widget to switch
modes. When in regular list mode, it'll let you select grid mode, and in
grid mode, it'll let you select list mode. Grid mode changes the scenes
widget to have a grid of buttons for scenes rather than a list, much
like XSplit.
Both BTTV and FFZ are fairly popular however they do occasionally
interfere. To give users the option to chose whichever one they like
most we add a new setting that allows BTTV, FFZ, both, or neither.
Defaults to "None" for new users. Existing users will be migrated to
"Both" as that's the previous behavior.
Most of the top streaming services now have a link in the stream key
label. Upgrading this button to a button clarifies the assistance
for the important step of setting up a stream.
Creates a new type of button for URL opening simply which also
automatically updates the tootip to the current URL.
Includes addition of Twitter/Periscope URL to make this feature more
complete.
This reverts commit b5843caa48.
This breaks some hotkeys because the signals are tied to a signal which
is now triggered because "toggled" is used instead of "clicked", so just
revert it for now for the release and look at it later post-patch.
This commit fixes various issues with screen readers in the main OBS
interface. These were tested using NVDA on Windows 10 1903.
Checkboxes or buttons which toggle, when receiving an activate signal
from the screen reader would visually update, but not perform any
action. This is because they're listening only for clicks. They should
all now be listening for toggles instead.
The screen reader would navigate through the UI in the order that
elements are defined in the .ui XML, and not by their row positions.
The XML has been reordered so that things should be defined in their row
order.
Audio track selection now says Track 1, 2, etc, rather than just the
number. Various checkboxes that just say "Enable" now have accessible
text that says what the enable is for (since it says "checkbox", the
fact it's an enable should hopefully be clear). Type in the recording
tab of output now has accessible text which says "Recording Type".
All the right side buttons in hotkeys now have tooltips, and by
extension, accessible text. Currently it does not yet say what hotkey
the action is in relation to, but that would require more locales.
Allows the ability for users to add custom browser widget docks that
they can use for their third party services if they feel the need,
mostly as a convenience tool so they don't have to open extra browsers
alongside the program.
OBS has an option to warn before stopping a stream, but it doesn't have
a similar warning for recording. This can result in a recording being
unintentionally stopped.
Add an option to warn when the "Stop Recording" button is pressed.
Note: While OBS also has an option to warn on stream start, this
patch purposefully does not add similar warn on recording start option.
This is because accidentally starting to record isn't risky in the same
way that accidentally starting to stream is.
Adds support for pausing recordings. When settings are eligible for
recordings, a pause button will appear next to the recording button. If
the settings are not eligible, it will warn the user in the output
settings that they cannot pause recordings if those settings are used.
This changes all of the icons from png to svg. With svgs, scaling is
unlimited. With the svgs, the issue of the @ symbols with the Windows
updater is no longer an issue.
I changed the colors of the icons to a light gray (#d2d2d2), in the
dark themes, because I thought they looked better with this color.
The mute, unmute, plus, minus, up, down and expand icons are from the
Feather Icons set. https://feathericons.com/
The visibility icon is from the Octicons set. https://octicons.github.com/
The locked and unlocked icons are from the Open Iconic set.
https://github.com/iconic/open-iconic
- Now uses a QVBoxLayout with a QScrollArea for the container
- Uses QGroupBox for each section
- Moved Monitoring and ducking settings out of the Advanced tab
- Push-to hotkeys are no longer in a child scroll area
- Renamed device labels for consistency
Users don't realize that dockable windows can be closed (hidden) and can
be shown again via the View menu. This adds an explicit warning when
the user first closes a dockable window for their first time. In future
versions, this should be changed to a dialog box with a "Do not show
again" checkbox.
This was a feature that was available when you chose custom RTMP server;
it was not considered when making the new version. Note: it looks
unslightly, but it works for now.
Adds the ability to connect/login to an account via the settings and
auto-configuration dialogs. Checks registered Auth objects, and if the
Auth object matches the currently selected service in the settings
window or auto-configuration dialog, will display "connect account"
buttons for the user to be able to click (which are optional, they can
still use stream keys if they'd prefer).
Makes it so that services can have custom handling on a per-service
basis. The bottom part of the service pane is now a stacked widget
which can now be customized for different types of services
(particularly OAuth services).
The "Custom" service has been moved, and is now an item called "Custom"
in the "Services" combo box. This simplifies the stream page of
auto-configuration and removes an unnecessary widget. Overall a minor
but nice slimline/improvement on user experience.
The stats dock was incorrectly added to the .ui file, causing the stats
dock to show by default on startup, and just generally causing a bad
default startup UI appearance. This fixes that by adding the stats dock
programmatically/dynamically instead of modifying the .ui file.
This changes the remux dialog to support a collection of input/output
pairs, presented as a QTableView. Standard Qt icons are used to
indicate the state of each entry during a remux operation. Drag/drop
support is added to populate the list quickly. Both Dark and Rachni
themes are updated to make QTableView look reasonable.
Relevant text is added in the localization files.
Closesobsproject/obs-studio#1153
OBS Studio currently does not support retina rendering for any of the
images in the app. This adds support for retina pixmap rendering as
well as adding higher resolution versions of each icon that was not
a high enough resolution to support 2x. The icons work when switching
themes and will only render the 2x versions when the device pixel
ratio is greater than or equal to 2.
I also added credits to the readme for images that were already being
used that require credit to the author. If the OBS community has
paid for these images already, I can remove the credits from the
readme. The credit is for the invisible, visible, and gear icons.
In commit 57f8c5e3, a stretch spacer was put in to the filter window UI,
which was meant to be used when there's no video for the source.
However, it was always put in, and would stretch the layout even when
there was video. This fixes that issue by only inserting a stretch
spacer when there's no video for the source.
This commit adds the ability to select a background color for a
scene-item, whether it's a custom color or one of eight presets.
As this is an initial implementation, it lacks theme customizability,
and it also lacks the ability for the user to set their own preset
colors, so only the hard-coded 8 are available.
When the vertical volume meter was introduced it set in the OBSBasic.ui
mixer dock definition a min width/height that was valid for both
widgets. QStackedWidget hints the minimum size as the higher w/h
of its children so this workaround is necessary.
Adds an option to enable/disable blocking hotkeys when the window is in
focus which is normally used in order to prevent hotkey/shortcut
conflicts. This does not apply to the settings window; the hotkey
behavior is unchanged with the settings window (in order to prevent
hotkeys from being used while setting hotkeys for example).
Closesobsproject/obs-studio#1267
Add a new algorithm to calculate the true-peak. It implements the
Whittaker- Shannon interpolation from four samples to create 4
intermediate samples (5 x oversampling) inbetween the middle two
samples.
With 4 samples and 4 intermediate samples the algorithm can be
implemented as a 4x4 vector-matrix cross product, which is ideal for
SSE.
I've also replaced the sample-peak algorithm using SSE as well to
improve performance.
Closesobsproject/obs-studio#1189
Adds the ability to upload crash reports, making it easier for users to
give us crash data. This should be considered a temporarily solution,
as automated crash reporting should be the ideal solution as soon as
time permits.
This fixes a problem introduced in #1050 where the Copy option would
be grayed out when rightclicking a source above the currently selected
source. This also retains the functionality of not having the Copy option
enabled when no source is selected.
The decay rate of the audio meters can now be selected in the audio
settings. The values are:
- "Fast" (OBS default, 40 dB / 1.7s)
- "Medium" (Type I PPM, 20 dB / 1.7s)
- "Slow" (Type II PPM, 24 dB / 2.8s)
Closesjp9000/obs-studio#1143
(also obs, deps/media-playback, libobs/audio-monitoring, decklink,
linux-alsa, linux-pulseaudio, mac-capture, obs-ffmpeg, win-dshow,
win-wasapi)
Default channel layout for 4 channels is 4.0 in FFmpeg.
Replacing quad with 4.0 will improve compatibility since FFmpeg has
better support of its default channel layouts.
This adds the ability to switch to a scene by double-clicking it when in
studio mode.
(Edit by Jim: In case this change is undesired by the user, this has
been changed to be an option in general settings; disabled by default)
Closesjp9000/obs-studio#1029
(This commit also modifies the following modules: UI,
deps/media-playback, coreaudio-encoder, decklink, linux-alsa,
linux-pulseaudio, mac-capture, obs-ffmpeg, obs-filters, obs-libfdk,
obs-outputs, win-dshow, and win-wasapi)
Adds surround sound audio support to the core, core plugins, and user
interface.
Compatible streaming services: Twitch, FB 360 live
Compatible protocols: rtmp / mpeg-ts tcp udp
Compatible file formats: mkv mp4 ts (others untested)
Compatible codecs: ffmpeg aac, fdk_aac, CoreAudio aac,
opus, vorbis, pcm (others untested).
Tested streaming servers: wowza, nginx
HLS, mpeg-dash : surround passthrough
Html5 players tested with live surround:
videojs, mediaelement, viblast (hls+dash), hls.js
Decklink: on win32, swap channels order for 5.1 7.1
(due to different channel mapping on wav, mpeg, ffmpeg)
Audio filters: surround working.
Monitoring: surround working (win macOs linux (pulse-audio)).
VST: stereo plugins keep in general only the first two channels.
surround plugins should work (e.g. mcfx does).
OS: win, macOs, linux (alsa, pulse-audio).
Misc: larger audio bitrates unlocked to accommodate more channels
NB: mf-aac only supports mono and stereo + 5.1 on win 10
(not implemented due to lack of usefulness)
Closesjp9000/obs-studio#968
This makes it so the buttons appear "pressed" while streaming/recording
to more visibly help indicate that they are currently active.
Closesjp9000/obs-studio#1039
This commit addresses Mantis Bug 993. If no source was selected, the
"Copy" context menu item was enabled, but selecting it would do nothing.
This commit disables that menu item when no sources are selected.
Replay buffer is currently only supported in simple mode. This change
adds support to advanced mode and is, for the most part, a mirror of the
addition of replay buffer to simple mode.
Mantis-bug: https://obsproject.com/mantis/view.php?id=792Closesjp9000/obs-studio#1019
Allows the ability to hide/unhide sources in the mixer that the user
doesn't care about or doesn't necessarily want to see (such as video
sources that have audio but don't have any audio playing). If all
sources are hidden, the user can right-click the mixer's empty area and
choose "unhide all" via a context menu.
Closesjp9000/obs-studio#1002
Instead of having an extra config button that essentially wastes
valuable window space, allow the ability to open advanced audio
properties from each audio meter config button.
This commit fixes two regressions introduced by the modular UI (commit
25bb8a444f):
- the Delete key no longer works in the scene list
- the Delete key no longer works working in the source list
This commit also enables the Delete key on sources that were selected by
clicking on them in the preview, which addresses Mantis Bug 576
(https://obsproject.com/mantis/view.php?id=576).
This fixes the issue presented in:
https://obsproject.com/mantis/view.php?id=885
Minimum size is changed to 700x512. I arrived at this number from testing
the minimum sizes that I felt the settings UI was still perfectly usable
and readable. Any smaller, and things became difficult to see and adjust.
As a note, this does increase the minum width of the settings window, as
the previous minimum allowed you to cut off objects and render the window
too small to be usable.
Changes the UI to an adjustable user interface, allowing the user to
fully customize how the scenes list, sources list, the mixer,
transitions, and the buttons are oriented on the main window window.
(Edit by Jim: Removed "Fullscreen Preview" because that's already sort
of served by the normal fullscreen projector option via the preview
context menu)
Closesjp9000/obs-studio#846
Shows performance stats, and streaming/recording stats, and helps warn
the user when they have less-than-optimal values with coloring on the
values (e.g. yellow when getting low on disk space, red when getting
really low)
The auto-configuration wizard is designed to allow first-time or
novice/uneducated users or to set up video and encoding settings in a
very quick and easy way. It'll automatically perform a bandwidth test,
and/or test the user's video settings to determine the most ideal
settings for streaming and recording (assuming a 1-pc setup).
The audio subsystem of windows is by default configured to lower the
volume of other things while a communications device (mic) is currently
active. This patch prevents that from being enabled with OBS. If the
user needs audio ducking enabled again for whatever reason, there is now
an option to re-enable it in advanced settings.
Closesjp9000/obs-studio#884
This adds close buttons to remux dialog, output timer dialog, and
advanced audio properties dialog. I also did a small refactor of the
remux dialog so the buttons were consistent with other dialogs.
Closesjp9000/obs-studio#876
Added a shortcut to "Edit Transform", with Ctrl+E (lines 1191-1193).
Editing was very easy in OBS Classic, and I could not find the option
for stretching a source to bounds in OBS Studio, so the "Edit Transform"
dialogue should be more user-facing. Giving it a keyboard shortcut
denotes that it is important enough to have a shortcut, as opposed
to the myriad options with no shortcut