Commit Graph

2374 Commits (6dce4662cfc6d37792a38414d9f737cf168eb0d2)

Author SHA1 Message Date
Jim b88ea35c34
Merge pull request #2341 from FlyGoat/cross-plat
Add support for MIPS architecture
2020-01-27 04:22:13 -08:00
Richard Stanway 2f4447a7a1 obs-outputs: Remove server support from librtmp
This code is very old and seems to be non-functional in its current
state. The TLS support is also complicated to maintain across multiple
deprecated mbedtls functions.
2020-01-25 19:31:48 +01:00
Richard Stanway 5f62cd153b obs-outputs: Remove unused variable 2020-01-25 19:25:43 +01:00
Richard Stanway baa559813c obs-outputs: Fix build with older mbedtls versions
Compilation with older versions of mbedtls was broken by
https://github.com/obsproject/obs-studio/pull/2304, unfortunately the
older version is still present in Ubuntu 16 LTS.
2020-01-25 18:58:05 +01:00
Richard Stanway 476b727fea obs-outputs: Show UI error if the root certs don't load
Though this should now be very rare, it's more helpful than "Failed to
connect to server". Other TLS error codes are now also stored for future
use instead of copying them on a case by case basis.
2020-01-25 17:35:07 +01:00
Richard Stanway 7a4c5e5df2 obs-outputs: Enable logging before calling RTMP_Init
Errors or warnings in RTMP_Init were not copied to the OBS log file
if they occured before the callback was set.
2020-01-25 17:01:14 +01:00
Richard Stanway d1159087f1 obs-outputs: Add additional paths for root certificates on Linux
Fixes https://github.com/obsproject/obs-studio/issues/2350. Also adds
some log file output for when the root certificates can't be loaded to
make it more obvious what the problem is.
2020-01-25 16:49:11 +01:00
Matt Gajownik 56d25fe6a8 obs-transitions: Set stinger media source's name 2020-01-25 17:27:16 +11:00
jpark37 8cd22d4fb2 enc-amf: Update to 2.7.0 2020-01-22 20:24:31 -08:00
Richard Stanway 2b131d212f obs-outputs: Fix librtmp mbedtls thread safety
Per mbedtls documentation, "If you share a context between threads, you
need to call these functions only from the main thread, at the beginning
and end of the context's lifetime.". OBS violated this since librtmp
uses a global context and it was allocated and freed in different
threads such as the auto config test.

This commit attaches the mbedtls context to an RTMP structure so there
is no more global state. It also fixes a rare double-free crash that
could occur if RTMP_TLS_Free was called twice (this happened in rare
situations such as the auto config running followed by a mode change
from Advanced to Simple).
2020-01-23 00:11:23 +01:00
Jim 44dc06ede4
Merge pull request #2336 from cg2121/fix-warnings
libobs, obs-x264: Fix compiler warnings
2020-01-22 00:42:23 -08:00
Jiaxun Yang af062863ab linux-v4l2: Mark aarch64 and mips n64 as known platform
Aarch64 and MIPS N64 ABI are safe to the uint to long cast.

Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com>
2020-01-22 15:41:30 +08:00
Matthew d3cf29dcc2 rtmp-services: Add Uscreen 2020-01-21 15:22:16 -07:00
Clayton Groeneveld 4e3a0180ba libobs, obs-x264: Fix compiler warnings 2020-01-21 15:18:09 -06:00
Clayton Groeneveld 9ae8e090e0 image-source: Fix color source default size 2020-01-17 07:53:14 -06:00
astudios123 fd206521da rtmp-services: Update SermonAudio entry (#2324)
We have a new back-end to the SermonAudio webcasting system which required a new URL and now allows for increased bitrates.

Added the "alt_names" to avoid breaking backwards compatibility and ensure that users receive the new ingest URLs.
2020-01-16 17:48:20 -06:00
Clayton Groeneveld 6a282360f0 obs-text: Change default size of text to 256 2020-01-15 02:18:33 -08:00
Clayton Groeneveld b5d2d26b5b text-freetype2: Change default size of text to 256 2020-01-15 02:17:52 -08:00
Clayton Groeneveld fd1a107436 image-source: Change default size to size of canvas 2020-01-15 02:17:09 -08:00
jpark37 9eeef48b5a win-dshow: Fix upside-down RGB DIBs
Fix regression to RGB DIB orientation according to MSDN.
2020-01-13 21:50:54 -08:00
Jim 1b3525e66a
Merge pull request #2291 from jpark37/cube-lut
Cube LUT file support
2020-01-13 16:10:40 -08:00
jpark37 5306f56e89 obs-filters: Add Cube LUT samples 2020-01-12 20:02:33 -08:00
jpark37 4ea7424ebb obs-filters: Add Cube LUT file support
Tested Cube LUT examples from Photoshop, Adobe spec, and some homebrew.

I don't know how to use the domain fields, so they are being ignored.
2020-01-12 20:02:24 -08:00
Kurt Kartaltepe 4d89123cdc librtmp: Allow partial success for mbedtls
mbedtls_x509_crt_parse_path returns a positive number if it partially
succeeds and a negative number on complete failure. This changes the
positive result to no longer error and prevent TLS connections (OBS
verifies all endpoints so having no CA chain prevents TLS).
2020-01-12 13:31:39 -08:00
Florian Zwoch 2699bbbd77 obs-outputs: Fix mbedtls use of deprecated functions
mbedtls_md5_starts(), mbedtls_md5_update() and mbedtls_md5_finish()
have been marked deprecated since mbedtls version 2.7 and may go
away in the future.

These function have been superseded by versions with a return
value. They are suffixed with "_ret". We do not actually check
return values.

Also the header "mbedtls/net.h" has been superseded by
"mbedtls/net_sockets.h".
2020-01-08 11:45:55 +01:00
derrod 3d091d5eeb rtmp-services: Update/remove services
- Mixer OSL removed (NXDOMAIN)
- Restream.io Prague added (FTL & RTMP)
- GameTips.tv removed (NXDOMAIN on all servers)
2020-01-08 04:55:38 +01:00
jpark37 2c10f237a0 mac-vth264: Fix encoder list leak
Instruments claims there are still more around here, but they look
internal with my limited Mac knowledge.
2020-01-04 09:46:09 -08:00
jpark37 55d47bed0d obs-ffmpeg: Fix VC++ warnings 2020-01-03 09:32:07 -08:00
Kacper Geisheimer a5fc8ab63b rtmp-services: Add show-it.tv 2019-12-30 23:09:36 +01:00
Jim 4df9ce0cdf
Merge pull request #2251 from jpark37/lut-volume-texture
Use volume textures for LUT filter
2019-12-29 11:04:20 -08:00
jpark37 f452bfeedd obs-filters: Add grayscale LUT image
Not sure what effect black_and_white.png is going for. Add grayscale.png
to try to make it clear that the other image shouldn't be used for
desaturation.
2019-12-26 09:41:47 -08:00
Jim 0d45f4d577
Merge pull request #1748 from boxerab/ffmpeg-streaming
obs-ffmpeg: UI and back-end for obs-encoded streaming over various protocols such as SRT
2019-12-18 12:54:10 -08:00
Gary Kramlich cbe1791362 linux-v4l2: Add support for controls
Video4Linux exposes controls for capture devices.  This commit adds
those controls to the properties window for v4l2-input devices.
2019-12-18 09:22:05 -08:00
jpark37 e4d8eaa1bc obs-filters: Use volume texture for LUT
Simplifies shader calculations. Not much perf gain, but GPA shows
bottleneck shift from Shader Execution to Sampler as expected.
2019-12-15 14:38:32 -08:00
Daniel Hill b9ad1ceb64 obs-qsv11: Add all TargetUsage values
Using terminology from FFmpeg reference, implement:
https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/cloud-computing-quicksync-video-ffmpeg-white-paper.pdf
2019-12-15 05:20:49 -08:00
Alexander Kozhevin c11a30e02a rtmp-services: Add YouStreamer
(This commit also modifies the UI module)
2019-12-14 12:54:31 -08:00
Jim 9ebc3d1352
Merge pull request #2220 from dionney/rate_control_vaapi
obs-ffmpeg: Enable VAAPI Rate Control
2019-12-14 02:11:02 -08:00
Jim 68bedcf1a9
Merge pull request #2240 from JohannMG/new-fb-bitrate
rtmp-services: Increase FB max bitrate to 6Mbps
2019-12-13 11:41:16 -08:00
jp9000 eed1a603d1 obs-browser: Disable system flash 2019-12-13 07:04:26 -08:00
JohannMG 0e6afafa67 rtmp-services: Increase FB max bitrate to 6Mbps
Facebook Live now recommends 6000kbps for most streamers and the auto
capping is clamping users to 4000kpbs. This fixes the new suggested
setting.
2019-12-12 17:24:45 -08:00
Yves Dionne 2841dfc6db obs-ffmpeg: Enable VAAPI Rate Control
Enable choosing CBR, CQP and VBR.
2019-12-11 17:16:29 -05:00
Kraz3D d34ad717b8 rtmp-services: Add Konduit.live 2019-12-10 08:53:06 -08:00
jpark37 3f58810b0e libdshowcapture: Update to latest submodule 2019-12-08 14:52:00 -08:00
jpark37 592ff852a5 Decklink: Explicit casts for truncation warnings 2019-12-06 22:35:52 -08:00
Jim c36e3fbc92
Merge pull request #2196 from jpark37/ffmpeg-mjpeg-spam
win-dshow: Suppress MJPEG error spam
2019-11-29 20:48:40 -08:00
Aaron Boxer b55b1e9bfd obs-ffmpeg: Add new ffmpeg-encoded-output 2019-11-27 14:40:52 -05:00
Aaron Boxer e13dae8299 obs-ffmpeg: Expose ffmpeg_data_init and ffmpeg_data_free methods 2019-11-27 14:40:52 -05:00
Peter Geis 64d0b7fcb4 libobs: Enable compilation on aarch64
Add arch checks to enable aarch-compat layer on aarch64, retain normal
gcc intrinsics on x86 and ppc64.
2019-11-25 13:04:21 -05:00
jpark37 f685322a0f win-dshow: Suppress MJPEG error spam
Only print the first message for this known benign error.
2019-11-24 23:59:27 -08:00
Clayton Groeneveld 82ffcdc827 UI: Add source icons 2019-11-24 20:50:42 -08:00
Jim 226f704e90
Merge pull request #2152 from Rosuav/fix-cursor-position
libobs: Fix cursor draw position bug when cropping a window capture.
2019-11-24 19:26:47 -08:00
jpark37 7d3e086e6f win-wasapi: Verify and balance CoInitializeEx call 2019-11-24 09:43:39 -08:00
Jim f09c7d0430
Merge pull request #2184 from kkartaltepe/log-ftl
obs-outputs: Log FTL during configure
2019-11-24 02:59:31 -08:00
Jim 1d1c9e5fee
Merge pull request #2167 from kkartaltepe/vaapi-ffmpeg-4.2
obs-ffmpeg: Remove unexposed vaapi parameters
2019-11-24 02:57:19 -08:00
Jim fa5454d1b8
Merge pull request #2124 from notr1ch/pci-device-ids
Use PCI database IDs instead of string matching for devices
2019-11-22 23:15:55 -08:00
Jim ef6e574d25
Merge pull request #2151 from RytoEX/vth264-dropped-frames
mac-vth264: Manually mark priority bits for frames
2019-11-20 23:45:51 -08:00
Chris Angelico fd668695db linux-capture: Fix cursor draw bug when cropping window cap.
When cropping the left or top of a window capture, OBS would misalign
the drawn cursor, placing it as if the entire window were being
captured. Instead, offset the captured cursor by the same number of
pixels, thus placing the cursor back where it belongs.
2019-11-20 22:09:47 -08:00
jp9000 f5e026b38b rtmp-services: Add scenecut=0 to mixer requirements 2019-11-20 15:02:50 -08:00
Kurt Kartaltepe 210ebcbda7 obs-outputs: Log FTL during configure 2019-11-18 20:37:33 -08:00
Manuel Kroeber 3773c7cc31 obs-text: add missing locale include to fix build
PR 2079 added localization but forgot the needed include
2019-11-16 12:50:42 +01:00
Jim e6daa22ab7
Merge pull request #2079 from exeldro/startcase
obs-text: text transform add locale and start case
2019-11-15 02:07:07 -08:00
Jim 61d959a095
Merge pull request #2077 from brittneysclark/qsv_cust_quant_mat
obs-qsv: Enable option for Custom Quantization Matrix
2019-11-14 18:54:51 -08:00
Jim 0d140542e4
Merge pull request #2072 from jpark37/dshow-negative-height
win-dshow: Support bottom-up DIBs
2019-11-13 11:42:05 -08:00
Jim 0f8472e8a8
Merge pull request #1914 from YouNow/master
rtmp-services: Add YouNow service and implement ingest lookup
2019-11-13 08:41:13 -08:00
jpark37 f896c773e8 win-dshow: Support bottom-up DIBs
The biHeight field can be negative, leading to crashes on some cards
like VisionRGB-E1S. Adding flip support is fairly straightforward.

There also appears to be a hack to automatically flip for RGB formats,
but I wish to remove it because it seems to fight with this change. We
already have a separate vertical flip checkbox to deal with non
compliant behavior.
2019-11-12 17:59:59 -08:00
wanhongqing 9b4d9c6788 win-dshow: Fix format switching issue
If the format was one encoded format and changes to another encoded
format, it could cause it to continue to treat it as the old format.
2019-11-12 14:37:32 -08:00
Jim 768a58771a
Merge pull request #1919 from omkelderman/mask-filter-reload-on-file-change
obs-filters: Reload the mask image when file change is detected
2019-11-07 15:45:12 -08:00
Olle Kelderman 5534c46920 obs-filters: Reload the mask image when file change is detected 2019-11-07 11:34:10 -08:00
VodBox 6645eaf1b8 obs-filters: Add toggle for scroll filter looping
By giving the option to disable the looping in the scroll filter, it
makes it more suitable for tasks like credits sequences, where you don't
want the texture to repeat and for the motion to only be performed once.
2019-11-07 06:25:36 -08:00
Kurt Kartaltepe d9470770a0 rtmp-services: Type check apply_encoder_settings
This fixes ovewritting hidden "profile" setting in ffmpeg vaapi which is
a number and not a string. It also shouldnt be overwritten as it is
required on some AMD hardware for the encoder to work.
2019-11-06 20:10:19 -08:00
Kurt Kartaltepe d2f2aeb5d2 obs-ffmpeg: Remove unexposed vaapi parameters
In ffmepg 4.2 setting qp overrides bitrate, this option isnt exposed
currently so users cannot disable it.
2019-11-06 18:57:05 -08:00
tujinshu 76e6a99124 win-capture: Fix rare crash when GL program exits
**Commit message modified and clarified by Jim**

When hooking a program that has both DirectX and OpenGL contexts in use,
it is possible to cause a crash on shutdown due to capture_active()
returning true when an OpenGL context is deleted.  Normally, when
capturing an OpenGL program, this would not happen because the 'active'
variable would not be set due to OpenGL capture not being initialized,
but if DirectX is captured while an OpenGL context is available, and
OpenGL could not load these required functions, then GL can crash due to
trying to use unavailable functions.

This case is extremely rare and doesn't happen under normal
circumstances; only if a program is using both DirectX and OpenGL within
the same program simultaneously, and *only* if OpenGL could not load the
required functions.  This likely almost never happens under normal
programs, games, and hardware.  This was apparently produced by hooking
a GL Qt program that used QWebEngine, which used multiple contexts at
once.
2019-11-05 13:44:15 -08:00
Roman Sivriver 64d90c28c8 rtmp-services: Add YouNow service and implement ingest lookup 2019-10-30 13:16:13 -04:00
Ryan Foster 30d29618b1 mac-vth264: Manually mark priority bits for frames
This commit is the mac-vth264 version of edfc2be in obs-qsv11.
2019-10-27 01:05:54 -04:00
Dmitry Vovk c0a8e86c9c rtmp-services: Add Stars.AVN.com streaming service 2019-10-22 23:53:48 -07:00
Jim 4c85ac65a3
Merge pull request #2134 from WizardCM/wasapi-samplerate
Log Sample Rate for WASAPI devices
2019-10-21 23:30:18 -07:00
Jim 86006ca726
Merge pull request #2129 from Fenrirthviti/win-blacklist-update
win-capture: Add additional exe to window capture blacklist
2019-10-21 23:23:23 -07:00
Matt Gajownik a6a86caf21 win-wasapi: Log device sample rate when initialized 2019-10-19 21:53:08 +11:00
derrod 5e183ff9a7 obs-ffmpeg: use avcodec_find_best_pix_fmt_of_list
The built-in format selector failed in certain cases like UtVideo now
using a differently packeg RGB format. FFmpeg has a format selection
functionality built-in that does pick the correct format however
(avcodec_find_best_pix_fmt_of_list), so we can simply use that instead.
2019-10-17 08:07:27 +02:00
Joel Bethke 6fb3552d70 win-capture: Add additional exe to window capture blacklist
These are additional internal windows processes that should not
be listed in the window capture dropdown.
2019-10-16 19:47:43 -05:00
Richard Stanway da31881059 obs-ffmpeg: Use vendor and device ID for NVENC blacklist 2019-10-16 12:19:09 +02:00
Jim 1ae588f3be
Merge pull request #2121 from cg2121/fix-warning
rtmp-stream: Fix comparison between signed and unsigned ints
2019-10-15 22:24:10 -07:00
Jim 86a5d43173
Merge pull request #2110 from derrod/ffmpeg-output-fix
obs-ffmpeg: Use av_opt_set on context instead of priv_data
2019-10-15 22:21:04 -07:00
Jim 09cbbd5487
Merge pull request #2108 from cg2121/mantis-1557
obs-filters: Fix sharpness not being translated
2019-10-15 22:19:27 -07:00
Jim ba6472fa1c
Merge pull request #2095 from jpark37/amf-upgrade
enc-amf: Reinstate AMF 1.4.14 with driver version check
2019-10-15 10:18:18 -07:00
Jim 5cbc23c195
Merge pull request #2091 from Programatic/xshm_wrong_windows
linux-capture: Fix bug where multiple 0x0 windows would appear
2019-10-15 10:09:03 -07:00
luz.paz d124e6402c docs/sphinx: Fix various typos
(This modifies UI, libobs, deps/obs-scripting, various cmake files)

Found using:
`codespell -q 3 -S *.ini,./UI/data/locale,./deps/w32-pthreads -L aci,dur,iff,mut,numer,uint`
2019-10-14 17:19:38 -07:00
jpark37 e35c15d4b6 enc-amf: Upgrade to v2.6
Deprecated support for drivers that ship an AMF Runtime older than
version 1.4.14, and older than 19.9.2. This also means Windows 8 is no
longer supported since AMD has stopped providing driver updates.

Added the new "High Motion Quality Boost" option that is exclusive to
the new 5700 cards and seems to do nothing on older cards.

Fixed the calculation of the automatic VBV buffer above 50%.

The Video API option will now only list one API, Direct3D 11 on Windows
10, and Direct3D 9 on Windows 7.
2019-10-13 13:52:17 -07:00
Jim 6b08c064f6
Merge pull request #2066 from jpark37/feature-level-baseline
Use D3D_FEATURE_LEVEL_10_0 as baseline
2019-10-12 20:55:33 -07:00
Jim 0a2fa768d5
Merge pull request #2045 from wolf247/master
rtmp-services: Add ChathostessModels
2019-10-12 02:17:32 -07:00
jp9000 d88a5a5a60 obs-browser: Remove "monitor by default" flag
The reasoning behind removing this flag is because the whole point of
having it in was so we could replace chromium's audio output.  But there
are too many obstacles in our path from doing that for now, so it's
better to not have this flag because it just causes a lot of browser
sources to initialize audio monitoring unnecessarily.  We can change
this in the future, but for now, it's best to let the user choose to
turn on audio monitoring for the source if they choose to turn on audio
rerouting to OBS.

Note that this only changes default behavior for newly created sources;
it will not change settings of existing sources the user had before this
change.
2019-10-11 23:42:35 -07:00
Clayton Groeneveld 350969a206 rtmp-stream: Fix comparison between signed and unsigned ints 2019-10-11 22:34:49 -05:00
wolf247 7d6d315533 rtmp-services: Add ChathostessModels 2019-10-11 17:05:25 -07:00
jp9000 80a1fee70f obs-browser: Only disable NetworkService on macOS
Apparently, using the old chromium network implementation changes the
way cookies are handled, causing cookies to reset.  So instead of doing
that, continue to use the new network implementation on Windows, and
only use the old network implementation on macOS for the time being.
2019-10-11 12:45:42 -07:00
brittneysclark ffd0bbb1ab obs-qsv11: Enable option for Custom Quantization Matrix
Add the option to enable custom quantization matrix for game streaming
on ICL for better subject quality. Feature is only supported with AVC
high profile, so added function to detect when QSV profile is modified
and hide or show CQM UI option accordingly. Also, increase SPS/PPS
buffer sizes since matrix is stored in SPS/PPS.
2019-10-11 01:10:08 -07:00
brittneysclark dc76bf2fe9 obs-qsv11: Add platform enums for KBL and ICL
Add two new platform enums for enabling future features
2019-10-11 01:10:08 -07:00
Jim 29ca28418f
Merge pull request #2115 from jpark37/duplicator-ref-count
Fix duplicator ref count
2019-10-10 21:01:16 -07:00
jpark37 1ce61c57c0 win-capture: Fix extra duplicator refs
Make duplicator_capture_tick the sole creater, and reference adder of
IDXGIOutputDuplication objects. This prevents a situation where
duplicator_capture::showing cause be false while
duplicator_capture::duplicator was not null at startup on background
scenes, preventing IDXGIOutputDuplication from being recreated when
DXGI_ERROR_ACCESS_LOST.
2019-10-10 19:03:18 -07:00
jp9000 8743b00f84 obs-browser: Use older chromium network implementation
This uses the older network implementation rather than the new
NetworkService chromium has implemented until a later version of CEF is
used.  The newer NetworkService implementation has caused some lag with
playback when hardware acceleration is not available for whatever
reason.  This doesn't fix media playback issues with software rendering
on windows, but it does on macOS.  All playback issues with software
rendering appear to be fixed in later version of CEF, however those
versions do not currently have hardware accelerated OSR or audio capture
support, so we must deal with 3770 until we can upgrade CEF again (which
hopefully won't be too long).
2019-10-10 02:00:57 -07:00
derrod 5e6a538931 obs-ffmpeg: Use av_opt_set on context instead of priv_data
Certain ffmpeg parameters such as "bufsize" or "maxrate" have to be
applied to the context rather than to "priv_data". In order to make sure
options are still passed to the encoder setting set AV_OPT_SEARCH_CHILDREN.
2019-10-09 18:54:01 +02:00
Clayton Groeneveld 2d6494ec00 obs-filters: Fix sharpness not being translated 2019-10-09 05:23:15 -05:00
jp9000 89586ef441 obs-ffmpeg: Remove unbuffered mode from media source
Unbuffered mode is causing the frames of media sources to potentially
have some slight jitter in playback, so instead of using unbuffered mode
with media sources, just leave buffering on.  There may be a frame or so
of latency, but it shouldn't be noticeable to most users.
2019-10-05 15:40:12 -07:00
jp9000 e023060afa obs-transitions: Fix stingers sometimes getting cut off
The file duration is a bit of an estimate.  This adds 500ms to the
estimated stinger media file duration to help ensure stinger videos
play back in full without getting cut off prematurely.
2019-10-05 12:51:01 -07:00
jp9000 c6f48b9107 obs-browser: Update version to 2.7.12 2019-10-05 02:16:27 -07:00
jp9000 eabebd1774 obs-ffmpeg: Fix deadlock with nvenc lookahead
Lookahead requires examining frame data over a large number of frames,
so when pkv added the change to fully reset the encoder when the bitrate
changes, nvenc will invalidate all buffers and basically starts over
from a completely clean slate.

It's possible to make lookahead work when changing the bitrate, but due
to how lookahead seems to works internally in nvenc, it will cause
continually increasing latency every time the bitrate is updated, which
is unideal.

Additionally, when lookahead is enabled, deadlocks can occur when
changing the bitrate in a thread other than the graphics thread.
Currently we allow it to be reset outside of the graphics thread.  From
limited investigating, it would appear this deadlock occurs because
nvenc is locking and releasing old textures.

So instead of dealing with all these potential issues, disable the
ability to adjust bitrate when the user has lookahead enabled on nvenc.
It's not really worth implementing dynamic bitrate support when
lookahead is enabled if the latency is just going to continually
increase for every bitrate adjustment anyway.
2019-10-04 04:39:15 -07:00
Ford Smith 003e8474d3 linux-capture: Fix bug with xshm input showing multiple 0x0 windows 2019-10-02 13:51:28 -04:00
jp9000 66967b7a55 obs-ffmpeg: Do not enable hardware decoding by default
If a user has a tremendous amount of media files, this can cause
instability.  Instead, make hardware decoding something the user has to
explicitly enable.

Although hardware decoding was technically enabled by default even
before we fixed it, fixing it was essentially a change to defaults for
users because it was just not even available before version 24.
2019-09-24 03:04:18 -07:00
Exeldro ffb58f51d5 obs-text: text transform add start case
Add option to transform to start case
2019-09-21 21:26:07 +02:00
Exeldro fd879e56f0 obs-text: text transform add locale
Support transform accented characters
2019-09-21 21:24:45 +02:00
jp9000 94570478b7 obs-browser: Fix a deadlock
This fixes a freeze that can occur if you try to destroy browser while
another browser is being created.  The CEF UI thread has to wait on a
window message to the main application UI thread, meanwhile the destroy
call in the main application UI thread is waiting on the CEF UI thread,
thus causes a deadlock.

Now that we have the SetParent(hwnd, nullptr) code that detaches the CEF
window from the Qt window, we no longer have to worry about
synchronously shutting down the browser, so instead of waiting for that
operation to finish, just allow it to occur asynchronously.
2019-09-20 08:14:16 -07:00
jp9000 e200a8a8a9 obs-browser: Signal whether audio active/inactive
Uses the new obs_source_set_audio_active function to signal to the UI
whether audio is active or inactive depending upon whether the user is
currently allowing OBS to control the audio or whether the user is
allowing CEF to control the audio.  Ensures that the browser does not
show up in the mixer if CEF is playing back the audio itself.
2019-09-19 23:43:36 -07:00
jp9000 3baa75c7ca obs-browser: Turn rerouting audio off by default
It was determined that rerouting audio through OBS currently isn't the
best idea even with monitoring enabled, primarily due to the fact that
audio monitoring has never had this wide of testing before, and that
many users complained that they were not getting audio for (as of yet)
unknown reasons from audio monitoring.  It would appear that we need to
address the issues with audio monitoring first before attempting to use
audio monitoring with any sources by default.  For now, audio will
reroute through CEF by default, and then the user must explicitly use
the option "Control audio via OBS", (renamed from "reroute audio", and
now disabled by default), to enable browser audio control through OBS.

There are other issues that need to be resolved as well, and once all
the various issues are addressed, the setting default can be allowed to
change back.
2019-09-19 19:14:21 -07:00
jp9000 eee40ec6d6 win-dshow: Do not allow H264 to have same priority as MJPEG
This prevents VideoFormat::Any from unintentionally selecting H264 when
MJPEG is the only other format available.

This fixes a bug where certain devices (Logitech C920 with latest
drivers) will only have H264 and MJPEG available, and using
VideoFormat::Any will then select H264 over MJPEG because it's the first
format value and has the same priority as MJPEG.  So now, MJPEG will be
prioritized over H264 instead.
2019-09-19 00:12:07 -07:00
jp9000 6f1cb5a8f8 win-dshow: Disable HW decode in DirectShow for now
This did not get enough testing, so disable it for now until more
devices can be tested (especially the live gamer portable).
2019-09-18 18:14:22 -07:00
Gol-D-Ace 5d95cfc361 obs-browser: Update translations from crowdin 2019-09-17 23:29:34 +02:00
Gol-D-Ace 03b5be75e4 Update translations from Crowdin 2019-09-17 23:21:00 +02:00
Jim 888a7ad3fb
Merge pull request #2071 from jpark37/mjpeg-default-range
win-dshow: Fix color range when using FFmpeg decode
2019-09-16 15:21:22 -07:00
jp9000 4ff1195768 obs-browser: Map absolute to file URLs
Fixes a bug where where if http://absolute/ are used directly by the
user, the local files used with it would not function correctly.
2019-09-15 18:53:51 -07:00
jp9000 e61984c2cf obs-browser: Fix panels not remembering last URL set 2019-09-15 13:17:45 -07:00
jpark37 f60b820fee win-dshow: Fix color range when using FFmpeg decode
Full color range seems to be active when decoding video with FFMmpeg
even when partial is explicitly selected. This should keep the range
synchronized.
2019-09-14 17:12:29 -07:00
jp9000 656873ab94 obs-browser: Fix portable mode not saving cookies
Request contexts don't appear to work with relative paths, only absolute
paths.  This fixes the bug where when using portable mode,
cookies/session wouldn't save because obs_module_config_path() was
returning a relative path rather than an absolute path.
2019-09-10 17:42:59 -07:00
jp9000 333fcb3664 obs-browser: Fix minor bug when using older CEF versions
Fixes duplicate visibility notifications when using 3440.
2019-09-10 12:05:15 -07:00
jpark37 3ddef4bf7d win-capture: Remove support for feature level 9.3
Be consistent with libobs-d3d11, which now uses 10_0 as the baseline.
2019-09-08 22:43:41 -07:00
jpark37 ef39715c31 win-capture: Remove unused variable from D3D12 capture 2019-09-08 22:36:25 -07:00
jp9000 70c9688e99 obs-browser: Fix browser panel visibility bug
Browser panels were having their initial visibility state always being
set to false.  This fixes that by only setting visibility state on
browser objects which explicitly call the visibility message (i.e. only
browser sources).
2019-09-07 21:27:41 -07:00
jp9000 91825f236f obs-browser: Fix large local media file access
In newer CEF builds the http://absolute/ scheme handler factory seems to
never complete when accessing large media files due to an apparent bug
in the Chromium media player (XHR requests complete fine).  At the same
time, file:// URLs are working just fine.

file:// URLs will be used where available (CEF 3440+) falling back to
BrowserSchemeHandlerFactory on older CEF versions.
2019-09-07 10:54:15 -07:00
jp9000 e981c15749 Revert "image-source: Set default size of color source to canvas size"
This reverts commit 46c5780a77.

This needs to be reverted for now because users who did not set a size
on it (left it at default and just stretched it) will now suddenly have
the source's size change out of nowhere.  There needs to be backward
compatibility implementation for this.
2019-09-05 17:02:33 -07:00
jp9000 1b1a431c86 obs-browser: Fix build error on macOS 2019-09-05 11:28:18 -07:00
jp9000 fe1a3718ea obs-browser: Fix browser panel crash
Reverts the container widget, then decouples the browser's window handle
from its parent instead.  This allows calling DestroyBrowser() safely.
2019-09-04 21:19:15 -07:00
jp9000 65eac02cda UI: Shut down browsers when browser docks hidden
Shuts down the actual browsers internally when the browser docks are
hidden by user.
2019-09-03 19:12:36 -07:00
Jim 04d1f04bd3
Merge pull request #2060 from craftwar/format
Fix Variable type and format specifier
2019-09-03 13:09:32 -07:00
jp9000 93aa528d2b obs-browser: Allow users to use CEF audio instead of OBS
Allows the ability for users to use audio through CEF (previous
behavior) by unchecking the "Reroute audio through OBS" checkbox if they
so choose.
2019-09-02 17:46:25 -07:00
craftwar e004ce8064 graphics-hook: Fix format specifier 2019-09-02 21:12:27 +08:00
jp9000 297f9fb0fd obs-browser: Do not use WasHidden() for visibility on 3507+
Using WasHidden() for the purposes of visibility no longer can be relied
upon due to some sort of bug with OSR in Chromium.  This issue does not
happen when using 3440.  The browser works fine without WasHidden()
calls, so we must remove its usage or be forced to use 3440.  For those
who need the visibility handling, an alternative will have to be used
once it's available.

Additionally, this reverts the failed workaround to use OBS FPS in place
of SignalBeginFrame() because that code is no longer needed due to the
WasHidden() removal.
2019-09-01 10:40:26 -07:00
Jim e4594f00bd
Merge pull request #2056 from jpark37/qsv-warning
obs-qsv11: Remove leftover stack variable
2019-08-31 21:16:40 -07:00
Jim 1523acd726
Merge pull request #2055 from jpark37/video-warnings
Fix video format warnings
2019-08-31 21:16:23 -07:00
jp9000 dc6a0bf8e9 obs-browser: Fix browser panel crash
Before, we were calling DestroyWindow on the browser panel HWND from the
CEF UI thread, which meant that the main program thread had to process
window messages in order for that message to successfully through as
DestroyWindow blocks on the WM_DESTROY/WM_NCDESTROY window messages.
Unfortunately, this also had the side-effect of processing all queued Qt
events, which, when called in the destructor of a window like this, can
result in undefined behavior; specifically crashes, which were occurring
due to this.  Especially when browser panels were in docks and docked to
the main window.

So, instead of calling DestroyWindow in another thread and then
processing events in the main thread, call DestroyWindow directly in the
main thread to get WM_DESTROY/WM_NCDESTROY and only those processed on
the spot.  This appears to fix the crashes due to the undefined
behavior when closing browser panels.
2019-08-31 21:10:26 -07:00
jpark37 fcca1c4476 obs-qsv11: Remove leftover stack variable 2019-08-30 23:45:14 -07:00
jpark37 4a81df759d obs-ffmpeg: Fix video warnings 2019-08-30 22:13:11 -07:00
jp9000 1a83f3c287 obs-browser: Do not process Qt events for browser source
This fixes crashes that could occur while processing Qt events during a
source's destruction.

Originally the processEvents code was added to make sure that any window
messages being sent to the browsers were being processed by Qt.
However, that was only necessary for browser panels as they are actually
associated with windows/views.  Browser sources are OCR, thus they do
not need this.
2019-08-29 20:46:18 -07:00
Hosein 2222d23e31 rtmp-services: Update GameTips.TV 2019-08-28 08:32:14 -07:00
jp9000 4f2c8ad4a1 obs-browser: Ensure FPS always matches OBS
When "custom FPS" is disabled, ensures that OBS and the browser always
use the same FPS even if the user changes it in settings.
2019-08-27 22:46:24 -07:00
jp9000 f7c285a749 obs-browser: Don't signal frame begin if feature disabled 2019-08-26 21:51:09 -07:00
jp9000 3f12b5e846 obs-browser: Actually fix browsers sometimes not rendering
Fixes same issue as 5c04876de1, but reverts that and changes it so that
external_begin_frame_enabled is not used instead, which seems to fix
that issue.
2019-08-26 19:41:56 -07:00
jp9000 c5178a5d1e obs-qsv11: Do not enable b-frames on sandy/ivy bridge
B-frames on sandy/ivy bridge do not work, so disable for those
platforms.
2019-08-26 08:13:24 -07:00
jp9000 5c04876de1 obs-browser: Fix browser source sometimes not rendering
On 3770, when many (5+) browser sources/panels are active at once,
browsers started freezing.  It is apparently due to this particular
issue:

https://bitbucket.org/chromiumembedded/cef/issues/2483/osr-invalidate-does-not-generate-frame

The solution is to remove the "WasHidden(true)" call.
2019-08-26 06:43:00 -07:00
pkv adedd967d5 obs-ffmpeg: Use NV_FAILED() instead of FAILED()
The FAILED() macro is for HRESULT values; NV_FAILED() is what should be
used for NVENCSTATUS.
2019-08-24 18:24:28 -07:00
pkv 1a11e15a30 obs-ffmpeg: Force I-Frame when reconfiguring jim-nvenc
This forces an I-Frame when reconfiguring encoding parameters so that
the changes apply immediately.
2019-08-24 18:19:59 -07:00
jp9000 6863140381 obs-x264: Do not display log messages every update
Prevents log spam when dynamic bitrate is used
2019-08-22 16:21:59 -07:00
jp9000 f0140cbb74 obs-browser: Fix audio cutting out
CEF outputs multiple audio streams at once, and OBS was only able to
handle one at a time.  This fixes it by using audio lines for each CEF
audio stream, and mixes them together itself.
2019-08-21 16:07:31 -07:00
jp9000 aa4d1d0cd1 obs-outputs: Add dynamic bitrate to RTMP output
The dynamic bitrate operates based upon estimating the current bitrate
output, and then adjusting the bitrate on the fly as necessary when
congestion is detected as a replacement for dropping frames.

This may still need adjustment, as it is difficult to accurately emulate
real-world frame drop scenarios.  This does not currently drop frames at
all, and because of that, very high congestion may cause additional
stream delay to viewers (because data will be buffered), but from
limited testing, most congestion will not cause that and it can safely
recover pretty quickly without adding significant delay.
2019-08-18 03:14:38 -07:00
jp9000 806ab5a022 libobs: Mark encoders that support dynamic bitrate
(This commit also modifies mac-vth264, obs-ffmpeg, obs-qsv11, and
obs-x264)
2019-08-18 03:14:38 -07:00
jp9000 91ce2349db obs-outputs: Allow changing bitrate test limit on the fly
When doing the bitrate limit test, it can be useful to have the ability
to change the current maximum bitrate limit.  This adds the ability to
press keys on windows (numpad 0-6) to change between bitrates.  Numpad 0
being no limit, 1 being 1000, 2 being 2000, etc.
2019-08-18 03:14:38 -07:00
jp9000 15ade1e2c4 obs-x264: Do not show reconfigure details in log
Prevents the x264 plugin from spamming the log when dynamic bitrate is
active.
2019-08-18 03:14:38 -07:00
jp9000 ed43de5c75 obs-ffmpeg: Allow FFmpeg NVENC to be reconfigured
Adds the ability to reconfigure FFmpeg's NVENC implementation on the
fly.
2019-08-18 03:14:38 -07:00
Kurt Kartaltepe e39e13e7b8 linux-capture: Texture unbound after GS_GL_DUMMYTEX changes 2019-08-17 22:47:32 -07:00
jp9000 d981c10906 Revert "win-capture: Don't leak dynamic library references"
This reverts commit c5928bff4a.

This breaks game capture.
2019-08-17 12:23:44 -07:00
Jim 5f7ff6fbcc
Merge pull request #1970 from cg2121/fix-warnings
various: Fix compiler/theme warnings
2019-08-17 08:22:03 -07:00
Jim ce51fa092c
Merge pull request #1992 from Xaymar/patch-tidy-up-1
Fix various clang-tidy and CppCheck warnings.
2019-08-17 08:16:46 -07:00
Jim e747584692
Merge pull request #2027 from cg2121/fix-typos
win-wasapi: Fix typo with description
2019-08-16 13:08:48 -07:00
jp9000 d6b551c9d3 obs-text: Fix formatting 2019-08-15 21:38:23 -07:00
Jim da6a3e3ce0
Merge pull request #1931 from exeldro/text_transform
obs-text: fix text transform on updated file
2019-08-15 21:19:12 -07:00
Clayton Groeneveld e8ad89fc75 libobs, obs-scripting, vlc-video: Fix compiler warnings 2019-08-15 03:00:06 -05:00
Clayton Groeneveld 48f22d9b91 win-wasapi: Fix typo with description 2019-08-15 02:32:57 -05:00
jp9000 ae83c857d7 obs-browser: Update to 2.6.1 2019-08-12 20:07:10 -07:00
Jim 444991ba21
Merge pull request #2021 from jpark37/yuva-format
Add support for YUV alpha formats
2019-08-11 20:38:17 -07:00
Kurt Kartaltepe 1402a80583 linux-capture: Revert GS_RGBX usage 2019-08-11 18:30:23 -07:00
jpark37 90c545b52c obs-ffmpeg: Add YUV alpha formats for completeness 2019-08-11 11:26:32 -07:00
Jim 0546d18855
Merge pull request #1934 from kkartaltepe/alpha-linux
linux-capture: Correct XCompCap glxFBConfigs alpha check
2019-08-11 05:00:35 -07:00
Jim fe56046a38
Merge pull request #1988 from cg2121/fix-suffix
obs-transitions: Fix suffix with stinger transition
2019-08-10 23:28:37 -07:00
jp9000 a2e8741449 obs-browser: Fix a few panel issues 2019-08-08 03:23:53 -07:00
jp9000 deaeb5e632 win-dshow: Use unbuffered by default for MJPEG
Due to the recent change of using FFmpeg to decode MJPEG, MJPEG was
getting included in the delayed device check.  This fixes that so that
it doesn't.  MJPEG can decode in real time.
2019-07-29 20:34:13 -07:00
jp9000 cd6e9e34b8 win-dshow: Clarify function name/purpose
IsEncoded is meant to be used to indicated delayed devices, such as
older Elgato devices, or Hauppauge device.  Devices that use H264 and
have a 800+ millisecond latency.  This changes the function name to
better indicate that.
2019-07-29 20:34:13 -07:00
jp9000 68a5a40df9 libobs, obs-ffmpeg, win-dshow: Fix FFmpeg 4.0 deprecation
Fixes FFmpeg 4.0 deprecation warnings.
2019-07-29 20:34:13 -07:00
jp9000 a3fface27f win-dshow, obs-ffmpeg: Add hardware decoding support
Fixes hardware decoding support and updates it to FFmpeg 4.0.
2019-07-29 20:34:13 -07:00
jp9000 363d28815f obs-browser: Update to 2.5.0 (audio capture support) 2019-07-26 00:14:09 -07:00
James Park 0e7eec8f2d win-dshow: Use FFmpeg for MJPEG decompression
Measured lower CPU usage and latency than default DirectShow filter.
Tested with Logitech BRIO camera at 4K, 30 FPS.
2019-07-25 20:11:44 -07:00
James Park 37f663a789 libobs: obs-ffmpeg: win-dshow: Planar 4:2:2 video
This format has been seen when using FFmpeg MJPEG decompression.
2019-07-25 20:11:37 -07:00
Michael Fabian 'Xaymar' Dirks c5928bff4a win-capture: Don't leak dynamic library references 2019-07-24 18:26:45 +02:00
Michael Fabian 'Xaymar' Dirks 00298fd4f1 win-wasapi: Catch by reference 2019-07-24 18:26:44 +02:00
Clayton Groeneveld ae7887704a obs-transitions: Fix suffix with stinger transition 2019-07-22 15:24:30 -05:00
Jim 8ff87ef9e1
Merge pull request #1968 from redcrazyheart/addstripchatsources
rtmp-services: Add Stripchat streaming service
2019-07-21 22:32:58 -07:00
Jim 168ae0af8e
Merge pull request #1979 from cg2121/suffixes
UI, obs-plugins: Add spinbox suffixes where necessary
2019-07-21 21:45:30 -07:00
Jim a8fc576678
Merge pull request #1982 from brittneysclark/qsv_reverted_ft_fix
obs-qsv: Fix QSV reverted features
2019-07-21 19:40:40 -07:00
Richard Stanway f775070c80
obs-text: Use array type for unique_ptr uint8_t[] 2019-07-21 21:14:03 +02:00
Richard Stanway 37d8cb3307
rtmp-services: Remove redundant null checks
The jansson json_ macros already include a null check.
2019-07-21 20:50:22 +02:00
jp9000 cdb7cd80f6 win-dshow: Update libdshowcapture to 0.6.1 2019-07-20 20:24:52 -07:00
Jim 3f7d4fe1f5
Merge pull request #1975 from jpark37/area-upscale-shader
libobs: obs-filters: Area upscale shader
2019-07-20 17:06:41 -07:00
Jim ffcfe4c9d9
Merge pull request #1951 from jpark37/audio-buffering
Fix audio buffering for devices like GV-USB2
2019-07-20 17:05:27 -07:00
crazyheart b529925985 rtmp-services: Add Stripchat streaming service 2019-07-19 19:24:49 +03:00
brittneysclark 0610bc7570 obs-qsv: Enable high profile for QSV H.264
Changing QSV H.264 default profile from "main" to "high"
2019-07-19 02:51:49 -07:00
brittneysclark 00c06446d7 obs-qsv: Remove check for AsyncDepth in InitParams
AsyncDepth = 1 does not mean low latency so we can use default
MaxDecFrameBuffering
2019-07-19 02:33:01 -07:00
Clayton Groeneveld 3ea354b4e4 UI, obs-plugins: Add spinbox suffixes where necessary 2019-07-18 04:03:38 -05:00
jpark37 85cc7c84bc libobs: obs-filters: Area upscale shader
Add a separate shader for area upscaling to take advantage of bilinear
filtering. Iterating over texels is unnecessary in the upscale case
because a target pixel can only overlap 1 or 2 texels in X and Y
directions. When only overlapping one texel, adjust UVs to sample texel
center to avoid filtering.

Also add "base_dimension" uniform to avoid unnecessary division.

Intel HD Graphics 530, 644x478 -> 1323x1080: ~836 us -> ~232 us
2019-07-17 21:11:18 -07:00
brittneysclark 2f62831a96 obs-qsv: Enable LA_CBR as QSV rate control
Allow user to choose look ahead CBR as the rate control method for QSV.
Also, changes look ahead depth default to 15 when used.
2019-07-16 07:46:02 -07:00
jp9000 8af49016fa obs-browser: Fix CEF 75.0.13 support 2019-07-14 09:39:19 -07:00
Colin Edwards f2a0c5275f
Merge pull request #1962 from jpark37/default-color-range
Default color range
2019-07-13 20:45:53 -05:00
Manuel Kroeber 6c78f4d222 rtmp-services: Add Steam 2019-07-13 19:09:46 -05:00
brittneysclark 8717a66991 obs-qsv: Enable Content Adaptive Quantization
Allow user to enable Content Adaptive Quantization (MMBRC) if CPU is SKL
or newer
2019-07-13 00:10:16 -07:00
brittneysclark b675bed90b obs-qsv: Enable B-frames and B-pyramid for encoder
Enable B-Pyramid frames to improve quality for high motion content.
B-pyramid allows a B-frame to choose closer frames for reference which
may have higher correlation.

Adjusts packet priority to avoid dropping referable B-frames

A check has been added to ensure feature is enabled only on platforms
with MSDK API 1.8 or higher - addresses crashing issues.
2019-07-12 23:35:16 -07:00