2502 Commits

Author SHA1 Message Date
cmlin2
477199ef2c obs-qsv11: Set preference for encode to iGPU in case of i+i 2020-07-08 12:03:22 -07:00
Jeremy Cole
974cd4350b obs-ffmpeg: Allow continuous network streaming
This change breaks the tying of the 'close' option to the media
source being a local file vs. network source. In doing so, it is
possible to keep network sources streaming continuously, which
fixes a few things when using network cameras as sources:

* The preview pane works in studio mode.
* There is no delay in switching scenes before video appears.
* The multiview works properly/normally.

This does introduce one bit of weirdness which could be easily fixed
with sufficient knowledge of OBS to do it quickly: if a networked media
source fails with both 'Restart playback when source becomes active' and
'Close file when inactive' disabled, it is slightly tricky to get it to
restart the video stream. (It can be done by enabling those options and
hiding the scene, though.) It would be nice to have a simple "restart
stream" button somewhere to do this more easily.
2020-07-08 07:05:11 -07:00
Jim
5f9f7166f9
Merge pull request #2978 from ioangogo/V4l2-updating-fix
linux-v4l2: Selective stream restart
2020-07-07 21:02:44 -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
yoho
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
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
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
weabook
740b551c01 rtmp-services: Add weabook.live 2020-06-24 13:09:26 -07:00
Farzad Karkhani
4386dcee33 rtmp-services: Update Lahzenegar RTMP 2020-06-23 14:43:25 +04:30
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
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
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
62491cace3
Merge pull request #3042 from matoi974/patch-1
image-source: change color source default color to d1d1d1
2020-06-21 06:09:18 -07:00
Jim
d16bc7ebee
Merge pull request #3034 from karenkim-AfreecaTV/patch-1
rtmp-services: AfreecaTV Update
2020-06-21 05:59:15 -07:00
Jim
d072798fbd
Merge pull request #3037 from khng300/oss-audio-locale
oss-audio: Add en-US translation data file
2020-06-21 05:49:38 -07:00
matoi974
57a1bab187 color-source: Change default color to d1d1d1
The default color can trigger photosensitivity in users suffering from
it; the new color should reduce or avoid the trigger.
2020-06-21 05:48:22 -07:00
karenkim-AfreecaTV
e958e89f14 rtmp-services: Update AfreecaTV 2020-06-21 05:37:26 -07:00
tlivegaming
1a4d132de7 rtmp-services: Update Madcat service
Closes obsproject/obs-studio#3005
2020-06-21 05:25:57 -07:00
Jim
9c107738f6
Merge pull request #3015 from jpark37/vulkan-external-fixes
win-capture: Improve Vulkan synchronization
2020-06-21 05:02:20 -07:00
Jim
9938e6f23f
Merge pull request #3049 from jpark37/old-vkresult
win-capture: Remove dead VkResult values
2020-06-21 04:54:16 -07:00
jbpratt78
cc66198164 rtmp-services: add angelthump 2020-06-20 16:42:13 -05:00
jpark37
a7813c9f87 win-capture: Remove dead VkResult values 2020-06-07 15:22:13 -07:00
Ka Ho Ng
d9d33b431a oss-audio: Add en-US translation data file 2020-06-06 09:20:21 +08:00
Joel Bethke
cda14a0acb
Merge pull request #3022 from matclayton/master
rtmp-services: Add Mixcloud service
2020-06-02 09:23:12 -05:00
Richard Stanway
4ec875485d image-source: Don't check for changes when hidden
If an image source isn't visible there is no point polling for changes
during the time it's hidden as no one will see them. Should the image
be on unreachable media such as an unavailable network share, this
check would cause the graphics thread to periodically stall trying to
detect changes of a non-visible image source.

If the image is modified while it's hidden, the updated file will now
be loaded as soon as the source is made visible - the update timer
intentionally ticks up while hidden.

Partially fixes some of the behavior described in
https://github.com/obsproject/obs-studio/issues/3007, a full fix
likely requires significant changes to support OS-specific file change
notification APIs.
2020-06-01 23:40:22 +02:00
jp9000
72a94cb6f5 Revert "Merge pull request #2993 from brittneysclark/enable_vdenc"
This reverts commit 636f0bfdfa81f843a629ec2494e2657dbeab5742, reversing
changes made to b9ea45e4982f4ec26b3f115f0e625289a8f26ae4.
2020-06-01 13:40:18 -07:00
Jim
636f0bfdfa
Merge pull request #2993 from brittneysclark/enable_vdenc
obs-qsv11: Simplify QSV settings in UI and Enable AVC VDEnc on ICL+
2020-06-01 13:14:24 -07:00
Mat Clayton
33f3501b48 rtmp-services: Add Mixcloud 2020-06-01 21:08:37 +01:00
jpark37
83dd9c8540 win-capture: Improve Vulkan synchronization
Use general layout and 0 access masks for external synchronization as
specified in the spec.

Also set pipeline stages for maximum synchronization just in case
because it doesn't seem like the pipeline stages are specified.

"Vulkan-incompatible APIs will require the image to be in the GENERAL
layout whenever they are accessing them."

"Whilst it is not invalid to provide destination or source access masks
for memory barriers used for release or acquire operations,
respectively, they have no practical effect. Access after a release
operation has undefined results, and so visibility for those accesses
has no practical effect. Similarly, write access before an acquire
operation will produce undefined results for future access, so
availability of those writes has no practical use. In an earlier version
of the specification, these were required to match on both sides - but
this was subsequently relaxed. These masks should be set to 0."
2020-05-31 22:31:39 -07:00
brittneysclark
d0a539341b obs-qsv11: Simplify UI subjective quality parameters
Combine MMBRC and CQM parameters into a subjective video
enhancement box
2020-05-28 05:32:44 -07:00
Richard Stanway
79981889c6 obs-filters: Misc code cleanups detected by PVS Studio 2020-05-24 18:09:42 +02:00
Ioan Loosley
8814e2bf4c
linux-v4l2: Selective stream restart
This commit adds a basic check to see if the v4l2 stream requires a
restart. This is primarly implemented on the basis of the fact that
the options requiring a restart have values stored in the v4l2_data
structure. A restart is only needed if any of the values have changed
since the last update.
2020-05-24 17:05:00 +01:00
Richard Stanway
ea7bb7a7cd obs-ffmpeg: Show friendly error for NV_ENC_ERR_INVALID_VERSION 2020-05-24 14:42:14 +02:00
Richard Stanway
50e1d17615 win-capture: Better matching of internal UWP windows
All strings were treated as partial matches before, which caused a
false positive with any executable beginning with "time", notably
affecting the game "Timelie" which used Timelie.exe.
2020-05-23 01:50:38 +02:00
Jim
b0e8ba6db8
Merge pull request #2972 from kkartaltepe/cmake-variety-fixes
cmake: Fix warnings and normalize variables/errors
2020-05-21 19:40:57 -07:00
Kurt Kartaltepe
d928bfd1ea cmake: Fix warnings and normalize variables/errors
As of 3.17 using find_package_handle_standard_args checks that the name
of the FindXXX file and the first argument are the same case.

Some modules used non-standard variables or the old singular variables
instead of plurals. This normalizes variable usage to the new-style.

Some CMakeLists.txt did custom error checking instead of propagating
find_package errors. These were changes to call find_package with
REQUIRED or without QUIET where needed and shortens the custom status
messages. This helps users who want to enable that functionality see
what precisely wasnt found.
2020-05-21 18:45:16 -07:00
Jim
665180350d
Merge pull request #2657 from hselasky/improvement
libobs: Implement and use better scaling function for 64-bit integers
2020-05-21 18:07:53 -07:00
Jim
9607a9f46e
Merge pull request #2384 from LiamCoal/allow-no-buffering
media-playback: Unbuffered Media Source
2020-05-21 17:40:08 -07:00
Jim
ad919b47ea
Merge pull request #2921 from jpark37/vulkan-format-fail
win-capture: Fail on unsupported Vulkan formats
2020-05-21 17:29:57 -07:00
Jim
c5187aef16
Merge pull request #2908 from jpark37/wgc-minimize
Fix WGC minimize handling
2020-05-21 17:29:04 -07:00
jp9000
8d6f29ffc7 Revert "Merge pull request #2637 from kkartaltepe/cmake-variety-fixes"
This reverts commit d777000a60cb9ccd78b3bdf1fbae3583b55aac0c, reversing
changes made to c9e5f30a78d087e42434813df1c56076049d62c3.
2020-05-21 00:03:09 -07:00
Jim
d777000a60
Merge pull request #2637 from kkartaltepe/cmake-variety-fixes
cmake: Fix warnings and normalize variables/errors
2020-05-20 23:45:25 -07:00
Jim
89ccad8a2b
Merge pull request #2619 from dgcampea/ffmpeg-vaapi
Expose more levels and profiles for FFmpeg VAAPI
2020-05-20 19:49:41 -07:00
Jim
cb98f456eb
Merge pull request #2595 from jpark37/vulkan-cleanup
Vulkan hook COM clean up, and extension check
2020-05-20 18:20:05 -07:00
Jim
23ee7aebc6
Merge pull request #2589 from jpark37/vulkan-alloc
win-capture: Use VkAllocationCallbacks
2020-05-20 18:17:20 -07:00
Jim
04e6a39de9
Merge pull request #2551 from jpark37/cube-lut-enhance
Implement CUBE LUT domain properly, tetrahedral interpolation for 3D LUTs
2020-05-20 18:09:56 -07:00