Occasionally users accidentally select the following applications built
into Windows 10 using game capture, which cannot be captured.
This PR simply hides them from the game capture list.
The latter takes up 6 entries in the dropdown.
LockApp.exe - the lock screen which doesn't run in user space
WindowsInternal.ComposableShell.Experiences.TextInput.InputApp
* Hitbox/Smashcast NBG/VIE servers are unavailable
* Dailymotion seems to have removed public live streaming
* Watchpeoplecode removed their live streaming functionality
* All gameplank servers are unavailable
* Afreeca KR en-ko server is unavailable
* Afreeca TW servers are unavailable
* Afreeca JP servers are unavailable
Prevents services with special exception services from unintentionally
using the wrong server. There's no real reason to be doing this on
anything but Facebook at the moment anyway.
The browser source would always create the source on first start
regardless of whether "shutdown when not showing" was set or not and the
source wasn't visible. This fixes the issue by checking whether the
source is actually showing or not in that case.
"Auto" is sort of a special use-case for certain services
(Twitch/Mixer), and the code recently added in be8ddc06a would
unintentionally override it. This would for example cause the "Auto"
setting on Twitch to set the user to use an Asia server unintentionally
because "auto" is not in the json file.
- Allow user to change # of B frames. New Default -> 1
- Allow user to enable Content Adaptive Quantization (MBBRC) if CPU is Skylake or newer.
- Allow user to choose LA_CBR as a rate control.
- LA depth: New Default -> 15, only when LA rate control is used.
Re-fetch texture when cursor's either width or height changed.
When the cursor icon changed and the new one has the same width or height,
it may not recreate the texture and thus cause memory access violation.
If the user had a valid service selected, but the server that the user
originally was using is now (for whatever reason) no longer listed, the
rtmp-common service would still use that server rather than any of the
newer servers, and the user would have to physically go in to their
settings to reconfigure to get it to use that new server.
Instead, make sure that the server the user has selected exists within
the server list, and if it doesn't, use the first server in the list
instead by default.
This diff adds mbedTLS support to the obs-outputs plugin. PolarSSL and
mbedTLS have grown so different between 2015-or-so when libRTMP was
written, and now it's no longer feasible to just use the USE_POLARSSL
flag.
This commit adds a WITH_RTMPS tri-state CMake variable (auto/on/off),
set to "Auto" by default. "Auto" will use RTMPS if mbedTLS is found,
otherwise will disable RTMPS. "On" will make it require mbedTLS,
otherwise fails configuration, and "Off" disables RTMPS support
altogether.
Closesobsproject/obs-studio#1360
obs_audio_data* sent to compressor_filter_audio had audio->frames == 0.
The analyze_envelope was trying to access an array at index -1 in result
of that. Just return if no samples are provided.
This fixes Mantis issue: 1261
* Updated AMF SDK to 1.4.7.0.
* Fixed a crash in api::base if Direct3D 9 or Direct3D 11 was not found.
* Changed how the capability testing reports supported devices to the log file.
* Fixed the order that codec properties are applied. (Thanks to Qiang Wen, see commit c292f6de41f22a0521300e8ce0b74bbe5e4d0edf)
* Fixed a crash caused by very old drivers that predate H265 support.
Allow multiple QSV encoders, usefull for live + recorded parallel
sessions. The first QSV encoder will create a DirectX device and return
a handle / pointer. Any additional QSV encoder will use that same
pointer to the DirectX device. We keep track of the number of open
QSV encoders so that we wait to close the DirectX resources after all
encoders are closed.
Closesobsproject/obs-studio#1341
This adds a build-time option for disabling the SpeexDSP-based
Noise Suppression filter support in cases where users do not
wish to build it, but have the required library installed.
As of version 3, libvlc on macOS is linked against libvlccore
differently. Previously libvlccore was referred to via the @loader_path
macro, now @rpath is used. As such, dlopen is no longer able to find
libvlccore. Explicitly load libvlccore so that the symbols that
libvlc needs can be found.
Tested against VLC versions 2.2.8 and 3.0.3.
This reverts commit 958167c4f7.
This caused certain transcoders (specifically Twitch's transcoders) to
misinterpret the data and transcode the video incorrectly.
If the transition point was above or equal to 1.0, it would cause a
divide by 0 error a few lines down. This could cause audio data to
become corrupted with NAN audio data when mixing, which can cause
certain audio encoders (namely the FFmpeg AAC encoder) to fail.
It was possible for the transition point to be above or equal to 1.0 if
the stinger media file was no longer loadable for whatever reason.
Back in an older commit, the default YUV colorspace was changed to 601
in order to ensure correct playback in video players that ignore the
contents of the H264 header.
x264's "undef" is unfortunately not what players that don't ignore the
header expect for BT.601, resulting in incorrect colors when played
back. Setting it to "bt470bg", similar to what is specified in ffmpeg
outputs, remedies this issue.
We're expecting a variable with double precision. Since we don't read
the value of these doubles with a particular precision, it can often
lead to unpredictable results where the value set isn't the one
intended due to the loss of precision from float->double conversion.
When drawing cursor to window capture area - use actual resource width
and height instead of system metric values for icons. Fixes an issue
where under rare circumstances, certain cursors would not draw at the
correct size.
Closesobsproject/obs-studio#1284
Allows the ability to (optionally) synchronously create/update a
directshow device source rather than always asynchronously update the
device. This is useful if creating/destroying scenes/sources very
quickly, and helps minimize the risk of creating new directshow sources
that use the same device, yet may not activate because an existing
source may already exist. To use, set "synchronous_activate" to true in
its settings when updating or creating. Note that this setting will be
erased after it's used, and will not be saved to user settings, so it
must be set each time in order to be used.
Closesobsproject/obs-studio#1228
After you call av_frame_alloc(), ffmpeg expects you to fill in certain
fields on the frame, depending on whether it's an audio or video frame.
obs-ffmpeg did this in the two places where it allocates video frames,
but not where it allocates audio frames. On my system, using trunk
ffmpeg and the Opus codec, this causes OBS to crash while calling
avcodec_send_frame, ultimately because av_frame_copy fails due to
'dst->format < 0' (as 'format' stays at the default of -1), causing a
null pointer to be added to a buffer queue, which later gets
dereferenced.
Oddly, the fields in question can just be copied directly from
corresponding fields in the AVCodecContext, but I don't see any ffmpeg
API to automatically copy all relevant fields, and all the examples I've
seen do it by hand. So this patch does the same.
If the user selected the "default" device for audio capture on mac, it
would no longer be able to be switched to another device due to the
"default_device" variable being set.
In the vt_h264_video_info function, the format of the video to be encoded is
always being set to VIDEO_FORMAT_NV12, dispite the presence of code to set
the video format to VIDEO_FORMAT_I420 or VIDEO_FORMAT_I444. This commit fixes
that function to respect the video format choice of the user.
In addition, whilst testing this fix initially, I also discovered that the
4:4:4 colour format is not supported by the VideoToolbox H264 encoder.
Looking at the VideoToolbox code in ffmpeg as a reference, the ffmpeg code
errors out if a color format other than NV12 or I420 is set. Therefore, this
commit also logs a warning about I444 not being supported, and uses the NV12
default.
The fullrange variable is used to set appropriate video format information in
vt_h264_video_info. Set fullrange first so the video format data is correct in
all cases.