Some audio devices do not have a fixed number of channels. For example,
Soundflower. This was previously fixed by defaulting the speaker layout
to stereo. With surround sound support, the default has been changed to
the output speaker layout as set in Settings > Audio.
Closesjp9000/obs-studio#1110
The list of channel layouts available for decklink input is missing 2.1
& 4.1 layouts. The commit adds them. This aligns the decklink input
with the speaker layouts available at outputs. Having different layouts
as input and output invokes FFmpeg resampler, which remixes the channels
in non trivial way except when downmixing to stereo. This patch allows
to avoid such uncontrolled remix of channels with decklink input.
The core audio aac encoder has bitrates maps specific to speaker
layouts. Previously, the bitrate map maxed at 320 kbs and was the map
for stereo. The bitrate map is now tailored to the speaker layout. In
practice this unlocks higher bitrates. For instance up to 960 kbs for
7.1. Additionally the commit fixes a bug with 2.1 with channels not
ordered correctly.
The click to select scenes follows the same rules
as the main UI. The double click respects the option
under Settings -> General -> Studio -> Transition
to scene when Double Clicked.
(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.
(also modifies obs-ffmpeg, audio-monitoring, win-wasapi, decklink,
obs-outputs)
Removes speaker layouts which are not exposed in UI. The speaker
layouts selectable by users in the UI are the most common ones. It is
not necessary to keep other layouts. (This basically removes
5POINT1_SURROUND, 7POINT1_SURROUND, SURROUND =3.0).
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.
Noise Suppression: Clamp sample values before converting to integer.
This fixes an issue where samples exceeding full scale would overflow,
resulting in heavy distortion.
Closesjp9000/obs-studio#1113
(Windows only)
3rd party antivirus / firewalls cause a large number of issues in OBS.
Logging which products are installed will help narrow down potential
issues when users ask for help and include their log files.
Closesjp9000/obs-studio#1124
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.
The "obs" global variable can still be accessed by functions during
shutdown. To prevent access to the variable during shutdown, move the
pointer to a temporary function variable, and set the "obs" global
variable to NULL before shutting down.
Individual property objects would store pointers to strings rather than
copies of the strings and assume that memory would continue to exist, so
instead just duplicate the strings.
Because it would be troublesome to add the ability to remove source
types (in case for example a script fails to reload), instead make it so
source types can be temporarily disabled while the program is running.
Convenience function that allows removing the current signal handler
callback within the callback without having to use
signal_handler_disconnect with all of its required parameters.
When splitting a string in to a string list via stringlist_split, it
would previously allocate memory for each sub-string and again for the
list itself. This optimizes that function to use a single contiguous
chunk of memory for the sake of access optimization and memory
allocation efficiency.