When we use the server error to respond to user's failing to start a
stream it is slow to return an error and unclear to the user what went
wrong. This diff introduces a simple settings check before attempting
to stream and catch and explain specific URL/key issues to the user.
In the case of preset services we check there is a Stream Key before
attempting to start a stream.
In the case of "custom" we only verify there is a URL since for some
services that's all that is required or the user may use user/password
authentication.
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.
Twitch will now return a 403 HTTP error code if you attempt to query
your stream key when your Twitch account does not have two-factor
authentication enabled. This handles it a bit better and displays an
appropriate error message for users so they know where to go to enable
it.
(This commit also modifies the UI, obs-ffmpeg, and obs-output modules)
Fixes a long-time regression where the program would lock up if an
encode call fails. Shuts down all outputs associated with the failing
encoder and displays an error message to the user.
Ideally, it would be best if a more detailed error could be displayed to
the user about the nature of the error, though the primary problem is
the encoder errors are typically not something the user would be able to
understand. The current message is a bit of a generic error message;
improvement is welcome.
Another suggestion is to try to have the encoder restart seamlessly,
though it would take a significant amount of work to be able to make it
do something like that properly, and it sort of assumes that encoder
failures are sporadic, which may not necessarily be the case with some
hardware encoders on some systems. It may be better just to use another
encoder in that case. For now, seamless restart is ruled out.
This commit adds a preview to the properties window for transitions.
The preview will play back the transition at the global transition
duration or the transitions fixed duration, between two private scenes
with an A and B label, and different background colors.
libobs: Add support for limited to full color range conversions when
using RGB or Y800 formats, and move RGB converison for Y800 formats to
the GPU.
decklink: Stop hiding color space/range properties for RGB formats, and
remove "YUV" from "YUV Color Space" and "YUV Color Range".
win-dshow: Remove "YUV" from "YUV Color Space" and "YUV Color Range".
UI: Remove "YUV" from "YUV Color Space" and "YUV Color Range".
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
The system theme was named Default even though the default theme is Dark.
This addresses that by renaming Default.qss to System.qss. I've made it
backwards compatible so users already using this theme are not affected.
The theme list now shows up as:
-System
-Dark (Default)
-Acri
-Rachni
I have also made it so that you can specify the default theme in the
UI config file.
- 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
This new scale filter computes pixels by weighing the coverage area of
source pixels over the target pixel. This algorithm works well for both
upsampling and downsampling, but was mainly designed to upscale
high-quality low-resolution sources like RGB/HDMI retro consoles. I've
heard of people using odd workarounds like scaling up to very high
resolutions before scaling back down to preserve pixel shartpness. This
algorithm directly addresses this use-case in a much more direct
fashion.
The Area scale filter does a better job of preserving the thickness of
thin features than the Point filter.
The Area scale filter does not look at source pixels that lie outside
of the target pixel, leading to a much sharper image than Bilinear,
Bicubic, and Lanczos filters.
This filter should interpolate pixels in linear space, but OBS is not
equipped to do that at the moment.
libobs: Add GPU effect, and wire up scene serialization.
obs-filters: Add Area as an option for scale_filter.
UI: Add Area as an option for both scene items, and canvas downscaling.
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).
Adds a function for initializing browser and cookies in a separate
thread while, and while waiting for it to complete, show a dialog
stating that the browser is currently being loaded. Allows the ability
to safely prevent the user from taking any action without actually
freezing up the UI thread.
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.
Fixes an issue when it's hard to perform drag-by-mouse move of the
scrollbar while handle is at corner and has minimum size.
Info: the handle minimum size styled as 20px, while add/sub-line is
14px, thus only 6px left for mouse drag when handle resides at corner.
While handle styled to cover whole bar including, subcontrol elements,
it is better to remove the hidden subcontrols completely.
Fixes an issue with horizontal scrollbar when it was hard to drag it by
mouse in Acri theme, because active area was thinner than the visible
scroll handle.
Fixes an issue when it was hard to drag by mouse the scroll handle in
Dark theme if scroll handle size is close to full size
(https://obsproject.com/mantis/view.php?id=466) or close to minimal
size.
Also, the mouse pointer was misaligned to the scroll handle when
moving: the scroll handle always moves faster than mouse pointer itself
and finishes first.
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.
The ability to use multiple separate QSV encoders was added in Pull
Request #1341 (commit 3a08e858a6).
This error message was left in place, so let's remove it now.
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.
In the Dark theme, disabled UI elements had text that was too close in
color to enabled UI elements. This commit switches them to use the
"light" palette color instead of the "lighter" palette color.
Adds the ability to set the current palette for the program via adding
"OBSTheme" objects to the qss files. The values for the OBSTheme object
are the values used by QPalette::ColorRole.
Modifying the global palette allows the ability to easily/quickly look
up application theme colors (especially if you would like to use them
for QML), as well as the ability to fix the hyperlink color issue. (On
dark themes, links would still be dark blue, causing them to be
difficult to see)
The variable name changes were done with the intent to ease the
abstraction of the scene, preview and program width/height size
so its not related with the canvas size but directly related with
our concept of scenes.
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.
Fixing a reference to Rachni theme folder, some minor tweaks and
reverting volume meter foreground colors to original brightness.
Closesjp9000/obs-studio#1169
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
The following features have been added to the audio-meters:
* Stereo PPM-level meter, with 40 dB/1.7s decay rate.
* Stereo VU-level meter, with 300 ms integration time.
* Stereo Peak-hold meter, with 20 second sustain.
* Input peak level color-squares in front of every meter.
* Minor-ticks for each dB.
* Major-ticks for every 5 dB.
* Meter is divided in sections at -20 dB and -9 dB.
The ballistic parameters chosen here where taken from:
* https://en.wikipedia.org/wiki/Peak_programme_meter (SMPTE RP.0155)
* https://en.wikipedia.org/wiki/VU_meter
In the rework I have removed any ballistic calculations from
libobs/obs-audio-controls.c making the calculations here a lot more
simple doing only MAX and RMS calculations for only the samples in
the current update. The actual ballistics are now done by just
the UI/volume-control.cpp because ballistics need to be updated
based on the repaint-rate of the user-interface.
The dB to pixel conversion has been moved from
libobs/obs-audio-controls.c to UI/volume-control.cpp as well to reduce
coupling between these two objects, especially when implementing the
major- and minor-ticks and the sections.
All colors and ballistic parameters are adjustable via QT style sheets.
There are slight differences in colors for each of the themes.
The tab bars in the Rachni theme had an issue related to an attempted
property of qproperty-drawBase: 0 in the .qss file. This, in theory,
should have worked and removed the base of the tab bar, but there is a
bug that prevents this from consistently applying, as detailed here:
https://bugreports.qt.io/browse/QTBUG-2982
This fix removes that property, and adjusts the styling of the tabs
themselves for a more consistent experience. Tabs should no longer be
cut off or displayed improperly.
In addition, this also corrects an issue with the scene/source rename
QLineEdit field displaying improperly.
Moves the multiview (fullscreen/window) options to the view menu to
reduce context menu clutter, and allow using it even when not in studio
mode.
Also adds missing translation strings.
Jim note:
- Refactored code significantly
- Added a context menu option to exclude specific scenes from projectors
- Made it so multiview projectors update when scenes are
added/removed/renamed
- Increased text quality
- Removed the color sources and replaced them with simple solid
rectangles
- Increased the border size of "program" and "preview" scenes in the
lower scene list
Closesjp9000/obs-studio#1068
Allows the ability to override what specific transition a scene may use
when transitioning to it.
(Original proposal by cg2121, reworked by Jim)
Closesjp9000/obs-studio#1052
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 adds the ability for users to change the names of audio sources
from the mixer including desktop and mic/aux sources.
Closesjp9000/obs-studio#1055
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
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
With the addition of the peak volume indicator, themes may wish to change
these colors but there was no way to do so. This change updates the
VolumeControl widget to allow a stylesheet to adjust all possible colors
for the volume bar. In addtion, the Rachni theme is updated to demonstrate
this new capability.
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
I have always felt that the out of the box themes for OBS were quite
lacking, and have spent a lot of time going through and sorting out the
difficulties with the current setup. I've added a new themeID parameter to
several elements that were otherwise impossible to target with QSS in a
theme. Since Qt has pushed for the use of QML over QSS at this point,
these should be considered workarounds. Included is the theme I was
working on that can serve as a base. I'm hoping to encourage others to
make their own themes, so we can grow the available themes for OBS.
I am happy for any feedback on the theme itself, or other updates that
can me made to make creating new themes easier overall.
Uses a named mutex to detect if multiple instances of the program are
open, and if so warns the user. When running in portable mode, uses a
separate unique mutex name mapped to the user's config directory to
ensure that no two portable builds use the same config directory. This
way, portable builds do not conflict with normal builds or other
separate portable builds.
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 is mainly to give visual feedback to those affected by NVENC not
working with older driver versions. Currenlty obs fails silently which
could go unnoticed for users who are using hotkeys as well as confuse
users who are not trained to read their logs when issues occur.
Closesjp9000/obs-studio#788
This commit adds the ability to copy a scene item's transform and crop
settings and paste those settings onto another scene item in any scene
or scene collection. It also changes the menu shortcut key for the
Transform action "Center to screen" from "C" to "n" because "C" is the
standard shortcut key for "Copy" in most other applications.
Closesjp9000/obs-studio#719