10520 Commits
Author SHA1 Message Date
jp9000 aab14ba29a libobs: Update version to 27.2.4 27.2.4 2022-03-27 16:29:23 -07:00
MonsteerandJim 48f41c67dc UI: Add missing previousIcon in Rachni theme
The previous icon for the media icons set in the Rachni theme is missing
in the theme's .qss file.
2022-03-24 18:22:59 -07:00
derrodandJim c263266975 CI: Enable legacy CI for PRs to release branches 2022-03-24 18:22:59 -07:00
derrodandJim a1ba04536f CI: Fix CEF zip extraction path on Windows 2022-03-24 18:22:59 -07:00
Ryan FosterandJim ef53407c75 CI: Fix Qt XML Validator workflow
libxml2-utils updated recently but the manifest is out-of-date. Try to
fix it with the suggestion of running apt-get update first.
2022-03-24 18:22:59 -07:00
pkvandJim 928597ec9d obs-libfdk: Set bitstream to ADTS for mpegts output
This sets the aac bitstream to ADTS for the mpegts output.
This fixes a bug with mpegts ouput where the avformat muxer issues
an error with fdk-aac encoder.

Signed-off-by: pkv <pkv@obsproject.com>
2022-03-24 18:22:59 -07:00
jpark37andJim b718aa41f4 win-waspai: Tighten version check for RTWQ
Getting reports that it isn't working for 1607 and below.

If they continue, we should probably just pull the RTWQ path.
2022-03-24 18:22:59 -07:00
eightball567andJim 0d68aacfb6 mac-capture: Add vbcable to whitelist for loopback devices 2022-03-24 18:22:59 -07:00
cg2121andJim 2056a41ca5 UI: Fix handling of remove signal with projectors
Since the remove signal is coming from another thread,
QMetaObject::invokeMethod has to be used, or corruption
could possibly occur.
2022-03-24 18:22:59 -07:00
jp9000 fb96d637e2 UI: Fix deferred source properties not updating 2022-03-24 18:22:59 -07:00
jp9000 1cfd1bb90a UI: Rename visual update callback variable
Having both a "callback" and "cb" doesn't make sense. One is
specifically for visual updates only, the other is for actual updates,
so use an appropriate name for both
2022-03-24 18:22:59 -07:00
cg2121andJim 63f535c86e UI: Fix mixer hide toggle in studio mode
If the user would toggle hide in mixer in studio mode,
the source would show up in audio mixer, even if it
wasn't active.
2022-03-24 18:22:59 -07:00
ExeldroandJim 27bb608130 libobs: Fix overflow subtracting unsigned numbers
When offset_size is greater than size, size would overflow
2022-03-24 18:22:59 -07:00
Kurt KartaltepeandJim 4845e88219 UI: Avoid calling obs_source_update multiple times
When we added undo/redo in 86eb7aeb a distinction between Updates and
Visual updates was made, presumably for filters which need special
handling of the update case. These functions were also added to regular
source properties, but didnt use any special code instead calling
obs_source_update an additional time after a short time.

Instead lets remove the 2nd delayed call and only call obs_source_update
once per settings change.
2022-03-24 18:22:59 -07:00
jp9000 09df945fb8 UI: Use get_new_source_name instead of strprintf
Remove a bit of duplicated code, and fix non-Windows compilation. This
is a bit of a workaround to not have to modify cmake, but might as well
reuse a function that already exists anyway rather than duplicate the
code.
2022-03-24 18:22:59 -07:00
jp9000 23bc7c7544 UI: Fix duplicated source names in audio settings
When you add an audio capture source and use the "use existing" feature
in the source selection dialog, and then recreate the same audio source
again in audio settings, it will result in two sources using identical
names, which although relatively harmless can cause issues when doing
things such as trying to find sources by their name.

Fixes obsproject/obs-studio#5621
Closes obsproject/obs-studio#5947
2022-03-24 18:22:59 -07:00
jpark37andJim 4b6170f258 win-dshow: Fix hwdevice_ctx leak 2022-03-24 18:22:59 -07:00
derrodandRodney 20332b01fd CI: Move obspython.py to Resources 2022-03-23 15:53:01 +01:00
derrodandRodney afa8527723 obs-scripting: Load obspython.py from Resources on macOS 2022-03-23 15:53:01 +01:00
jp9000 b65ee7e7fb virtualcam-module: Revert changes since 27.1.3 (for now)
This reverts commit 4b0767741a,
3f3f9ed7e6,
0e7c17bd6e, and
865eecb739.
27.2.3
2022-03-02 17:36:49 -08:00
jp9000 399636847d virtualcam-module: Prevent placeholder memory leak 2022-03-02 05:05:13 -08:00
jp9000 9f0650658d virtualcam-module: Only initialize placeholder once 2022-03-02 05:04:47 -08:00
jp9000 201e9df041 libobs: Update version to 27.2.3 2022-03-02 04:26:32 -08:00
jp9000 fc20e7a71b virtualcam-module: Fix incorrect correct res/fps
Apparently the testing that was done was not sufficient enough or did
not check all test cases, so resolution/fps does not get set properly on
the virtualcam.
2022-03-02 04:20:27 -08:00
jpark37andjp9000 5bd791dea6 UI: Remove conflicting setlocale call
Qt already sets LC_ALL to "" for non-Windows. We set LC_NUMERIC to "C"
afterward for sanity, and we don't want that setting to get smashed.
27.2.2
2022-03-01 12:54:25 -08:00
jpark37andjp9000 b5f85bc788 UI: Restore LC_NUMERIC to C locale on Mac/Linux
Recommended by QCoreApplication doc for Unix.

Fixes CUBE LUT load, and FFmpeg output args for foreign locales.
2022-03-01 12:54:25 -08:00
jp9000 34b55180ab libobs: Update version to 27.2.2 2022-03-01 11:40:46 -08:00
jp9000andMatt Gajownik c1ff655dfe virtualcam-module: Remove unnecessarily inlines 2022-03-01 23:29:04 +11:00
jp9000andMatt Gajownik 91759c2a2e virtualcam-module: Stop thread on Stop call
This causes the thread to only start when the IMediaFilter::Run/Pause
calls have been made, and stop whenever either the IMediaFilter::Stop
call has been made, or on destruction, whichever comes first.

This potentially will work around a suspected race condition that
appears to be in the WebRTC library where the filter's library will be
released while the filter is in the process of being destroyed, which
can take longer than usual if the join takes too long. Basically, fixes
a reported crash (that doesn't appear to technically be our fault) when
the filter is used with browsers when the virtualcam is deactivating in
web browsers.
2022-03-01 23:28:59 +11:00
jp9000andMatt Gajownik d23cb52796 win-dshow: Ensure thread is joinable before joining
This may have been the issue behind the reported firefox crashes, but
strangely, the thread should always be joinable here because it's
explicitly always created in the constructor and joined in the
destructor.
2022-03-01 23:28:37 +11:00
jp9000 1acc6c69da obs-scripting: Make callback "removed" variable atomic
Makes the callback variable "removed" atomic, and on script unload,
first sets all callbacks to removed before actually unloading the script
out of a safety precaution. (See note at the bottom for further details)

This minimizes the possibility of a race condition where the script
callback could be called while those callbacks were being removed.

Big note for this change, this change should eventually be replaced with
a reference counting ownership method where script callbacks can hold a
reference and share ownership of the script if it's still alive while
the script callback is being called. That way the script callbacks can
safely execute. May require a fair amount of reworking of the script
object.
2022-03-01 04:06:33 -08:00
jpark37andMatt Gajownik fea9281a1f libobs/util: Use integer math for Windows timing
Cleaner and faster than double math.
2022-03-01 17:03:31 +11:00
jpark37andMatt Gajownik 2e1a6c9c64 libobs: Clamp video timing for safety
os_gettime_ns and os_sleepto_ns may not match up exactly.
2022-03-01 17:03:27 +11:00
jp9000andMatt Gajownik 2d7cda18e9 libobs/util: Fix rounding error with os_sleepto_ns()
os_sleepto_ns() can occasionally return false on times that the
processor may not have reached yet. The reason is because the
count_target, which converts time_target into a QPC counter, is subject
to a rounding error.

Using numbers I generated from an actual clock cycle on my own CPU, I
can show an example of this occurring: if the clock frequency value is
10000000.0, and you call os_sleepto_ns(42164590320600), it will convert
that number first to a double floating point of its QPC value:
421645903205.99994. Then, because it converts that to a LONGLONG
integer, it of course strips off the decimal point. If you convert
421645903205 *back* to a time value, the new value will be
42164590320500, which is lower than the original value by approximately
100 nanoseconds. While this may seem insignificant, it was apparently
enough to cause the os_sleepto_ns() call in video_sleep() to sometimes
return false despite the current time being lower than the target time,
which would cause it to incorrectly calculate how many frames were
duplicated by subtracting the frame time from the current system time,
divide that by the current frame interval, set the vframe_info.count
value to 0, and thus cause an infinite loop in the encode_gpu()
function because queue_frame now starts returning negative numbers in
perpetuity.

This change fixes some rare reports of users having their video lock up
and disconnect, forcing the user to have to forcibly shut down the
program.

Thanks to Twitch user SNLabat for having the patience to kindly provide
us with a dump file from the freeze, and to Matt for coordinating with
that user to obtain it from them.
2022-02-28 22:22:29 +11:00
Kevin DegelingandMatt Gajownik db3cee0868 UI: Additional product details
Based on the product description from the main website
2022-02-28 22:22:09 +11:00
obiwacandMatt Gajownik c09429aa8c linux-v4l2: scandir with alphasort on non-Linux
Sort video device entries with `alphasort` on non-Linux platforms,
as opposed to `versionsort` on Linux.
(`versionsort` is a GNU extension, unavailable on e.g. FreeBSD.)

UI: Fix call to `to_string` on FreeBSD
2022-02-28 22:21:46 +11:00
obiwacandMatt Gajownik cedd8b9d15 libobs/graphics: gs_query_dmabuf_* on FreeBSD too 2022-02-28 22:21:41 +11:00
gxalphaandMatt Gajownik 46f9a5a8b9 UI: Refresh edit menu on item locked signal 2022-02-28 22:21:30 +11:00
Kurt KartaltepeandMatt Gajownik eff0148dd7 linux-v4l2: Fix warnings in mjpeg
Previously the switch did not catch all cases issuing a quite large
warning. Also there was a const-ness warning for codecs on ffmpeg 5.0
that this addresses.
2022-02-28 22:21:14 +11:00
Richard StanwayandMatt Gajownik bad7edd051 win-wasapi: Fall back to old code if RTWQ fails
Fixes a crash if RTWQ is unavailable, e.g. if the mmcss service is not
running.
2022-02-28 22:20:45 +11:00
Ryan Foster cc1395857a CI: Update workflow to copy SOVERSION symlinks
Commit 7a5bffc0a6 applied a fix to the
macOS build script. This applies the same fix to the GitHub Actions
workflow that is actually currently used on CI.
2022-02-22 17:17:25 -05:00
Julian OrthandRyan Foster 68a8264197 libobs: Map wayland keymap with MAP_PRIVATE
Wayland clients are required to use MAP_PRIVATE starting with version 7
of the wl_seat protocol.

Signed-off-by: Julian Orth <ju.orth@gmail.com>
2022-02-21 14:10:36 -05:00
jp9000 acad9dbaf7 libobs: Update version to 27.2.1 27.2.1 2022-02-20 16:35:43 -08:00
Richard StanwayandMatt Gajownik bfcc066099 obs-outputs: Set a fixed size socket buffer on Windows 7
Auto tuning apparently doesn't work very well on this version and
af6844f5c2 caused throughput
regressions.
2022-02-21 11:21:20 +11:00
Matt Gajownik 2f48733f3c CI: Bump Windows CEF cache to fix reported version
While the previous cache had the correct changes, the version was
reported incorrectly. This will avoid confusion.
2022-02-21 10:32:40 +11:00
Matt Gajownik c9dfad7340 CI: Bump Windows CEF cache for new OnAcceleratedPaint2
See https://github.com/obsproject/cef/commit/36fdac16a7 for more info.

This only bumps the cache on Windows as the changes are currently
Windows-specific.
2022-02-21 10:32:36 +11:00
jp9000 0f97427ef2 obs-browser: Add support for custom OBS CEF
Our version fixes the system freeze issue, reduces resource usage, and
improves performance back to 3770 levels.

See obsproject/cef@36fdac16a7 for detailed information.
2022-02-20 13:31:05 -08:00
jp9000 3eec65d127 obs-browser: Fix texture recreating every frame 2022-02-20 13:31:05 -08:00
Matt Gajownik a0c37e7aa9 obs-browser: Fix issues with rendering on Linux/macOS 2022-02-20 17:33:02 +11:00
Kurt KartaltepeandMatt Gajownik 8ad7d1b08d linux-v4l2: Use decoded MJPEG pixel format
Previously we assumed mjpeg was always decoded to 422 but it seems some
cameras provide frames that decode to different pixel formats such as
420.

This change delays setting the obs frame pixel format until after we
have decoded the v4l2 frame.

fixes #5821
2022-02-20 14:40:20 +11:00