Commit Graph
8283 Commits
Author SHA1 Message Date
Jim 880d42b56e Merge pull request #2940 from pkviet/log2
UI: Log monitoring type for global audio devices
2020-07-07 09:37:34 -07:00
Jim 50ff29e533 Merge pull request #3087 from obsproject/virtualcam
Add Windows Virtual Camera
2020-07-07 07:46:57 -07:00
jp9000 a72a52fa38 UI: Add virtual camera to UI
Adds a virtual camera button to the main user interface.  If virtual
camera is not installed, it will not add the button.  On Windows, it
detects whether the virtual camera filters are properly registered, and
will only add the button if the virtual camera filter is confirmed
registered.

Also adds a virtual camera option to the auto-configuration wizard,
which will just simply set the user's resolution/scale to 1920x1080 at
30 FPS.
2020-07-07 06:09:59 -07:00
jp9000 6377fe3177 win-dshow: Add Virtual Camera (Windows)
The virtual camera adds the ability to use the output of OBS itself as a
camera that can be selected within other Windows applications.  This is
very loosely based upon the catxfish virtual camera plugin design.

There is a shared memory queue, but instead of having 10-20 frames in
the queue, there are now only 3 frames in the queue to minimize latency
and reduce memory usage.  The third frame is mostly to ensure that
writing does not occur on the same frame being read; the delay is merely
one frame at all times.

The frames of the shared memory queue are NV12 instead of YUYV, which
reduces the memory and data copied, as well as eliminate unnecessary
conversion from NV12.  Some programs (such as chrome, which uses webrtc
to capture) do not support NV12 however, so an I420 conversion is
provided, which is far less expensive than YUYV.  The CPU cost of NV12
-> I420 is negligible in comparison.

The virtual camera filter itself is based upon the output filter within
the libdshowcapture library, which was originally implemented for other
purposes.  This is more ideal than the Microsoft example code because
for one, it's far less convoluted, two, allows us to be able to
customize the filter to our needs a bit more easily, and three, has much
better RAII.  The Microsoft CBaseFilter/etc code comprised of about 30
source files, where as the output filter comprises of two or three
required source files which we already had, so it's a huge win to
compile time.

Scaling is avoided whenever possible to minimize CPU usage.  When the
virtual camera is activated in OBS, the width, height, and frame
interval are saved, that way if the filter is activated, it will always
remember the last OBS resolution/interval that the virtual camera was
activated with, even if OBS is not active.  If for some reason the
filter activates before OBS starts up, and OBS starts up with a
different resolution, it will use simple point scaling intermittently,
and then will remember the new scaling in the future.  The scaler could
use some optimization.  FFmpeg was not opted for because the FFmpeg DLLs
would have to be provided for both architectures, which would be about
30 megabytes in total, and would make writing the plugin much more
painful.  Thus a simple point scaling algorithm is used, and scaling is
avoided whenever possible.

(If another willing participant wants to have a go at improving the
scaling then go for it.  But otherwise, it avoids scaling whenever
possible anyway, so it's not a huge deal)
2020-07-07 06:09:59 -07:00
Jim 79fff2e13b Merge pull request #2927 from tt2468/add-tbar-control
UI: Add TBar controls to obs-frontend-api
2020-07-06 18:24:44 -07:00
tt2468 a03189bb68 UI: Add TBar controls to obs-frontend-api
Adds `obs_frontend_set_tbar_position` and `obs_frontend_release_tbar`,
which allow plugins and scripts to control the tbar in OBS.
This specific change is required for the `SetTBarPosition`
request to be added to obs-websocket.
2020-07-06 17:48:30 -07:00
Jim 39c3b3d687 Merge pull request #2916 from Bennik2000/esc-to-close-settings
UI: Allow the use of Esc key to quit settings window
2020-07-06 17:47:51 -07:00
Jim 19743e19d2 Merge pull request #2917 from cg2121/script-select
frontend-tools: Automatically select scripts
2020-07-06 17:30:53 -07:00
Bennik2000 f2f336229d UI: Allow the use of Esc key to quit settings window 2020-07-06 17:24:21 -07:00
Jim 6fcb57daa7 Merge pull request #2915 from Bennik2000/stats-dock-steals-focus
UI: Fix bug where stats dock steals focus of main windows
2020-07-06 14:01:38 -07:00
Jim c21fd6f275 Merge pull request #2907 from cg2121/script-defaults
frontend-tools: Add defaults button to script dialog
2020-07-05 19:37:48 -07:00
Clayton Groeneveld bb082e0a9d frontend-tools: Add defaults button to script dialog 2020-07-05 18:58:03 -07:00
Jim feecdbb0a0 Merge pull request #2884 from cg2121/rename-strings
UI: Change audio device string in settings
2020-07-05 10:04:05 -07:00
Jim 43bb2cc380 Merge pull request #2876 from Yohox/feature-ffmpeg-source-reconnect
obs-ffmpeg: Add auto reconnect to remote media sources
2020-07-05 09:55:28 -07:00
0a4b1d622c obs-ffmpeg: Add auto reconnect to remote media sources
(Note: This commit also modifies deps/media-playback)

Co-authored-by: Eric Lindvall <eric@5stops.com>
Co-authored-by: Ryan Foster <RytoEX@gmail.com>
Co-authored-by: Jim <obs.jim@gmail.com>
2020-07-05 08:31:05 -07:00
Jim 0fff23d8e1 Merge pull request #2774 from DDRBoxman/libobstests
libobs: Add sample unit tests leveraging cmocka
2020-06-29 15:43:23 -07:00
jp9000 002886bbac obs-ffmpeg, UI: Allow slash in recording names
Automatically generate directories if slashes are present in a recording
name format set in advanced settings or in the replay buffer
prefix/suffix settings.

Fixes obsproject/obs-studio#2416
Closes obsproject/obs-studio#2858
2020-06-27 05:21:14 -07:00
Jim bb890a674e Merge pull request #2821 from Bennik2000/always_on_top_projectors
UI: Add always on top checkbox to projector context menu
2020-06-26 06:14:25 -07:00
Jim 3b11e170b7 Merge pull request #2836 from jpark37/yuv-image-fix
Fix FFmpeg YUV to RGB conversion by adding extra destination padding to line sizes
2020-06-26 06:13:45 -07:00
Bennik2000 d8c215df0e UI: Add always on top checkbox to projector context menu
This checkbox overrides the global always on top setting
2020-06-26 05:59:17 -07:00
Jim 4929de408d Merge pull request #2795 from Codex-/obs_text_antialias_option
obs-text, text-freetype2: Add Enable Antialiasing option
2020-06-26 04:06:26 -07:00
Jim f40abba2d4 Merge pull request #2790 from hosaka-corp/crop-xshm-capture
linux-capture: Add support for cropping the input source
2020-06-26 01:41:48 -07:00
Jim 8e28c89a93 Merge pull request #2786 from pkubaj/patch-1
Add CFLAGS necessary on PPC64(LE) to libobs.pc
2020-06-26 01:39:45 -07:00
Colin Edwards 35088e0d9e libobs: Add sample unit tests leveraging cmocka 2020-06-25 15:21:58 -07:00
Joel Bethke 381960a7bc Merge pull request #3100 from PatTheMav/macos-azure-pipelines-fix
CI: Quick fix to cover pre-installed Homebrew dependencies for macOS
2020-06-24 18:13:01 -05:00
PatTheMav e9bc9e6995 CI: Quick fix to cover pre-installed Homebrew dependencies for macOS 2020-06-25 00:42:21 +02:00
Jim 803df3a40a Merge pull request #2744 from cg2121/auto-config-dialogs
UI: Remove first run auto-config prompts
2020-06-24 14:47:35 -07:00
Jim 76c42215d6 Merge pull request #2755 from exeldro/keep_filters
libobs: Don't check filter compatibility on not loaded sources
2020-06-24 14:13:48 -07:00
Jim f055847854 Merge pull request #2721 from cg2121/unknown-device-label
UI: Highlight unknown audio device label in settings
2020-06-24 14:03:02 -07:00
Jim f75e26a578 Merge pull request #2699 from whoishina/master
rtmp-services: Add weabook.live
2020-06-24 13:35:09 -07:00
Jim 8b2b09bec3 Merge pull request #2690 from Scrxtchy/window-projector-size
UI: Add "Fit window to content" to windowed projectors
2020-06-24 13:34:59 -07:00
Jim baa6b04077 Merge pull request #2701 from exeldro/sort_audio
UI: sort audio sources by name locale aware
2020-06-24 13:33:11 -07:00
Scratch 5421851526 UI: Add window projector option "fit to content"
Adds an option to the context menu of a windowed projector to allow
resizing the aspect ratio of the client area of the window to the
contents of what's being projected (so that there's no extra space).
2020-06-24 13:18:52 -07:00
weabook 740b551c01 rtmp-services: Add weabook.live 2020-06-24 13:09:26 -07:00
Jim 695f3c1f33 Merge pull request #2662 from WizardCM/log-dialog
Enhance Log dialog with description and Analyze button
2020-06-24 12:01:10 -07:00
Jim 924580dbab Merge pull request #2376 from cg2121/fix-window-width
UI: Fix buttons changing minimum window width
2020-06-24 09:52:13 -07:00
jp9000 d51ac98fcf UI: Fix pause/replay buttons having large width
Depending on the circumstances, these buttons can start with width
values that are much larger than their height, and that value wouldn't
be corrected immediately.  Setting an explicit policy to lock their
width to the same as their height value enforces the behavior that was
intended from the beginning.
2020-06-24 09:22:58 -07:00
Jim 3752809e88 Merge pull request #3090 from dodgepong/60hz-meter-update
UI: Update volmeters at 60hz
2020-06-23 04:16:11 -07:00
Jim 6ed6cce12b Merge pull request #3096 from FarzadKarkhani/update-lahzenegar-rtmp
rtmp-services: Update Lahzenegar RTMP
2020-06-23 03:59:51 -07:00
Farzad Karkhani 4386dcee33 rtmp-services: Update Lahzenegar RTMP 2020-06-23 14:43:25 +04:30
Ben Torell 1782490060 UI: Update volmeters at 60hz
Technically this is 62.5Hz (once every 16ms) but who's counting?
2020-06-22 09:36:22 -04:00
Jim 0f27cf4983 Merge pull request #3089 from derrod/purge-services
rtmp-services: Remove offline servers/services
2020-06-21 18:03:34 -07:00
derrod 591cab8339 rtmp-services: Remove offline servers/services
* cybergame.tv - Servers and website gone (defunct)
* castr AU - DNS resolution fails
* stream.live - Defunct by the looks of it (dns fail, website broken)
2020-06-21 20:23:19 +02:00
Jim 088a72129a Merge pull request #3061 from jpark37/vulkan-best-practices
win-capture: Reset command pool rather than buffer
2020-06-21 11:21:33 -07:00
Jim b1d03ae367 Merge pull request #2890 from PatTheMav/macos-build-scripts
CI: Add all-in-one macOS build script
2020-06-21 07:09:30 -07:00
Jim 76ea0336ad Merge pull request #2882 from RytoEX/log-window-capture-method
win-capture: Log window capture method
2020-06-21 07:00:36 -07:00
jpark37 cdd912b162 win-capture: Reset command pool rather than buffer
Reorganize data to avoid best practices layer warning. Sort of a false
positive in our case because we only have one buffer per pool now, but
implicit layers should be clean citizens.
2020-06-21 06:47:22 -07:00
Jim b6375a2a68 Merge pull request #2956 from RytoEX/fix-GetUnusedSceneCollectionFile
UI: Fix GetUnusedSceneCollectionFile filename creation
2020-06-21 06:33:26 -07:00
chirenonsteem c3d7ca0399 rtmp-services: Add VIMM
VIMM is a decentralized video platform for gamers and independent
creators.

Closes obsproject/obs-studio#2962
2020-06-21 06:25:52 -07:00
Jim f887bc3f22 Merge pull request #2970 from cg2121/adv-audio-config
UI: Add percent checkbox to advanced audio dialog
2020-06-21 06:15:54 -07:00