When the program first starts up, or rather when a scene collection is
loaded, the frontend API OBS_FRONTEND_EVENT_SCENE_CHANGED event would
not get triggered.
(Note: This commit also modifies UI and test)
This makes it so that main preview panes are rendered with the main
output texture rather than re-rendering the main view. The view will
render all objects again, whereas the output texture will be a single
texture render of the same exact thing.
Also fixes some abnormal artifacting when scaling the main preview pane.
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.
When clicking the close button with unsaved changes in a source properties
dialog closeEvent and reject are called, which both call ConfirmQuit.
This fixes it by setting the acceptClicked flag correctly in ConfirmQuit
Some CMake checks were recently switched from UNIX to LINUX to get them
to not apply to macOS/OSX. Since LINUX doesn't seem to be defined,
switch these checks to UNIX AND NOT APPLE.
The studio mode double-click scene switching option disables scene
duplication, which bypasses the user's settings for scene switching in
studio mode. This fixes it so that scenes are properly duplicated
according to the user's settings.
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.
Scissor rects would affect the internal effect rendering of sources, so
scissor rectangles aren't the ideal method of restricting draw space.
Instead, use viewports and projection matrices, which are automatically
accounted for by internal source handling.
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
The scene override would trigger, but the scene override variable would
stay set, causing the next transition to be the same one that was
previously used for overriding.
If a preview projector was created in normal mode, it would become a
studio projector in studio mode. The window title of the window
projector would reflect that it was in fact a preview projector and not
a program projector.
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
The studio mode program view projectors used the wrong saving mechanism.
The save data was copied from the source projectors, which were
dependent on string values, where as it should have been using a boolean
true/false value for specific monitors.
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
The OBSBasicFilters window did not register a handler for the
"update_properties" signal. Now it does. Addresses issue #1028.
Closesjp9000/obs-studio#1036
X11BypassWindowManagerHint Bypass the window
manager completely. This results in a borderless window
that is not managed at all (i.e., no keyboard input unless
you call QWidget::activateWindow() manually).
This allows the Esc key to close the projector on X11
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.
This commit prevents users from being able to use the "Paste
(Duplicate)" context menu option after copying a source that has the
OBS_SOURCE_DO_NOT_DUPLICATE flag set. Though OBS would correctly paste
the source as a reference, it seems that this behavior was confusing
some users. This fixes Mantis Bug 1034.
This will help resolve incidents where users accidentally started or
stopped their stream without knowing what triggered it (usually from
hotkeys that were forgotten about).
(This commit also modifies UI)
Instead of pinging Twitch every time the program starts up, only pings
for new servers when the ingests are actually being used, and when the
UI uses the auto-configuration dialog.
If ingests have not been cached when using the "Auto" server, it will
wait for 3 seconds max to query the Twitch ingest API. If it takes
longer than 3 seconds or fails, it will defer to SF. If ingests were
already cached, then it will use the existing cache immediately.
Allows setting a specific graphics adapter index to use for Direct3D 11.
This is currently meant to be sort of "undocumented" in implementing it
this way due to the fact that users will be guaranteed to break their
configurations if this is implemented in the UI (even if in advanced
settings).
On Windows 7, WinHTTP defaults to using only SSL3 and TLS 1.0. The
obsproject.com server was updated to remove TLS 1.0 support and
this has caused updates to stop working on Windows 7.
Prevents a potential cross-lock deadlock. The UI thread would lock the
scene's mutex in obs_scene_atomic_update, then the item would lock the
graphics context to create a texture. Meanwhile in the video thread, it
could lock the graphics context in the render loop, then lock the
scene's mutex when rendering. When doing anything graphics-related, the
graphics context is always supposed to be locked before the scene's
mutex is supposed to be locked (it's designed that way), and the
obs_scene_atomic_update would just bypass that.
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
Use the Qt standard buttons in the source properties dialog to make the
UI consistent. Also remove the right alignment of the button box to
allow Qt to align standard buttons on the left side of the dialog.
Closesjp9000/obs-studio#1013
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
Allows bringing up properties/filters/etc via right-clicking mixer items
in addition instead of only being able to click the gear icon. Minor
QoL improvement.
The parent window adjusted according to child object polices and hint
sizes. Thus, it is possible to disable all docking panes to restore
true parent geometry first, the docking geometry and settings will be
restored later in OBSBasic::OBSInit().
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.
After the commit 3491487c71 obs_frontend_get_streaming_output()
returns NULL if "Start Streaming" button not pressed yet. The code
would erroneously fail to update the recording/streaming status if
either one of them hadn't been activated yet.
Closesjp9000/obs-studio#999
Currently if a file is partially written to (eg, the file is opened for
writing but the write fails), the updater won't correctly roll back to the
previous version, leaving the OBS install in an inconsistent state.
We now track failed installs or hash failures on patched files with a new
STATE_INSTALL_FAILED state and properly roll back on errors.
When updating large files such as libcef, the patching process can take a
decent amount of time. Previously the progress bar would remain at 100%
after completing the downloads, so the user may think the updater has
frozen. Now it shows the process of the install / patching process.
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).
Due to an oversight in enc-amf with strcmp, the code currently causes
certain weirdness to appear. This fixes it so it will use "High"
Profile instead of attempting to use "Constrained Baseline" and also
changes it to actually set things up for "Constant Bitrate" instead of
"Variable Bitrate (Latency Constrained)". Finally I've added a slight
change that always makes it set the B-Frame Pattern to 0 in order to
work better with VCE2.0 and VCE3.0 cards.
Closesjp9000/obs-studio#978
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.
QMainWindow::resizeDocks isn't supported on certain long-term support
distros (ubuntu trusty in particular), so instead just restore the
starting state and don't try to recalculate the ideal positioning.
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.
If the service settings change and the output type changes, the previous
signals would attempt to disconnect after the output has been destroyed,
and subsequently that would cause a crash.
This allows the ability for certain types of modules (particularly
scripting-related modules) to initialize extra data when all other
modules have loaded. Because front-ends may wish to have custom
handling for loading modules, the front-end must manually call
obs_post_load_modules after it has completed loading all plug-in
modules.
Closesjp9000/obs-studio#965
Allows an output to automatically specify which audio codec it requires
and use it instead of AAC. This change is intended to be
behind-the-scenes and seamless to the user.
Allows a service to specify the output it needs in order to function as
configured.
NOTE: This functionality should be considered temporary as a seamless
means of implementing support for different output types within the same
service. Ideally, different services should be used for this
functionality.