0
0
mirror of https://github.com/obsproject/obs-studio.git synced 2024-09-20 13:08:50 +02:00
Commit Graph

6674 Commits

Author SHA1 Message Date
James Park
ba21fb947e libobs: Fix various alpha issues
There are cases where alpha is multiplied unnecessarily. This change
attempts to use premultiplied alpha blending for composition.

To keep this change simple, The filter chain will continue to use
straight alpha. Otherwise, every source would need to modified to output
premultiplied, and every filter modified for premultiplied input.

"DrawAlphaDivide" shader techniques have been added to convert from
premultiplied alpha to straight alpha for final output. "DrawMatrix"
techniques ignore alpha, so they do not appear to need changing.

One remaining issue is that scale effects are set up here to use the
same shader logic for both scale filters (straight alpha - incorrectly),
and output composition (premultiplied alpha - correctly). A fix could be
made to add additional shaders for straight alpha, but the "real" fix
may be to eliminate the straight alpha path at some point.

For graphics, SrcBlendAlpha and DestBlendAlpha were both ONE, and could
combine together to form alpha values greater than one. This is not as
noticeable of a problem for UNORM targets because the channels are
clamped, but it will likely become a problem in more situations if FLOAT
targets are used.

This change switches DestBlendAlpha to INVSRCALPHA. The blending
behavior of stacked transparents is preserved without overflowing the
alpha channel.

obs-transitions: Use premultiplied alpha blend, and simplify shaders
because both inputs and outputs use premultiplied alpha now.

Fixes https://obsproject.com/mantis/view.php?id=1108
2019-05-08 20:26:52 -07:00
Jim
b5c20fb924
Merge pull request #1869 from cg2121/fix-systray
UI: Fix system tray not working
2019-05-04 08:28:07 -07:00
Jim
a2cf97bfd4
Merge pull request #1868 from SuslikV/patch-8
UI: Hide Alpha channel field from the color picker
2019-05-04 07:52:20 -07:00
Clayton Groeneveld
37bde71020 UI: Fix system tray not working 2019-05-04 09:23:21 -05:00
SuslikV
7bbd45f8d0
UI: Hide Alpha channel field from the color picker
Do not allow the user to select the alpha component of a color.
2019-05-04 16:55:31 +03:00
Jim
131cfaf4f8
Merge pull request #1867 from tmatth/bugfix/tray-crash
UI: fix crash due to NULL dereference
2019-05-03 08:26:57 -07:00
Jim
01b7af2702
Merge pull request #1864 from jpark37/bad-types
libobs: Fix crashes from wrong types
2019-05-03 01:40:08 -07:00
Tristan Matthews
92853f2c7b UI: fix crash due to NULL dereference 2019-05-03 02:54:55 -04:00
Jim
a1caf87ec7
Merge pull request #1855 from h-o-sein/master
rtmp-services: Update GameTips.TV
2019-05-02 19:40:31 -07:00
Hosein
61acbe9328 rtmp-services: Update GameTips.tv 2019-05-02 19:38:47 -07:00
James Park
4afdf70fd5 libobs: Fix crashes from wrong types 2019-05-02 19:09:34 -07:00
Colin Edwards
4efb80de5f
Merge pull request #1863 from DDRBoxman/swig
CI: Use swig 3.0.12 on OSX
2019-05-02 16:58:38 -07:00
Colin Edwards
f5c6fa3656 CI: Use swig 3.0.12 on OSX 2019-05-02 18:39:59 -05:00
jp9000
6b2f3d0604 UI: Fix theme showing incorrect theme when on Dark 2019-05-02 15:47:35 -07:00
Colin Edwards
0ee9d191bf
Merge pull request #1862 from DDRBoxman/swig
CI: Use swig 3.04 on OSX
2019-05-02 13:28:07 -07:00
Colin Edwards
f5becb64da CI: Use swig 3.04 on OSX 2019-05-02 15:07:03 -05:00
jp9000
3f3ec4f933 obs-ffmpeg: Fix jim-nvenc initial DTS for fractional FPS
The initial DTS for non-fractional framerates was being incorrectly
calculated.  It assumed that the time base was in frames when it was
not.

Closes obsproject/obs-studio#1857
2019-05-02 12:45:17 -07:00
Jim
3881f9de27
Merge pull request #1859 from cg2121/remove-settings-lines
UI: Various visual improvements
2019-05-02 11:22:26 -07:00
Clayton Groeneveld
31b73f8025 UI: Add ability to set properties spinbox suffix 2019-05-02 08:54:14 -07:00
Clayton Groeneveld
8789b3469b libobs: Add ability to set spinbox property suffix 2019-05-02 08:54:14 -07:00
Clayton Groeneveld
b2e0d93990 UI: Use icons for hotkey buttons 2019-05-02 08:54:13 -07:00
Clayton Groeneveld
d17e261d23 UI: Truncate text in hotkeys interface 2019-05-02 08:54:13 -07:00
Clayton Groeneveld
64aa211d46 UI: Remove icons from settings button box 2019-05-02 08:54:13 -07:00
Clayton Groeneveld
e284289c56 UI: Improve look of Dark theme 2019-05-02 08:54:10 -07:00
Clayton Groeneveld
4b6a1bf971 UI: Remove settings horizontal lines 2019-05-02 08:18:07 -07:00
Jim
003f00923e
Merge pull request #1860 from cg2121/kbps-singlestep
UI: Increment bitrates by 50
2019-05-02 07:32:49 -07:00
jp9000
f21a48ff36 UI: Remove mac browser workarounds, improve stability
The workarounds were made because of conflicts with running multiple UI
threads at once on macOS, which macOS can't do very well, and would be
susceptible to crashes.  This would cause crashes not only on startup
but seemingly at random when using the browser source on macOS.  The
original "fix" was a hack to try to minimize UI code and browser UI code
from executing at the same time.  The macOS initial scene loading was
deferred until all Qt-related and main window initialization was
completed.  Although this worked to some extent to prevent conflicts, it
made it so that there was an initial period on startup where the entire
UI seemed "blank" for users, and it was still possible for the main UI
thread and the browser UI thread to clash, causing crashes seemingly at
random for users.

The external message pump method of CEF is the solution to the problem,
which is the method which allows the main UI thread to share events with
CEF.  To do this, all CEF operations need to be performed in the UI
thread (Qt's main thread), and CefDoMessageLoopWork() needs to be called
when CefApp::OnScheduleMessagePumpWork callback is triggered.  A number
of other issues had to be solved as well, such as CefBrowser references
getting "stuck" in the Qt event queue.

With this, macOS no longer needs to do the "deferred load" hack, and
browsers are now much more stable and no longer as susceptible to
seemingly random crashes, improving overall program stability when
browsers are used.
2019-05-01 12:13:35 -07:00
jp9000
7efcb6989d UI: Only execute "What's New" code on win32
The "What's New" dialog currently is only functional on windows.
2019-05-01 12:12:03 -07:00
jp9000
767d534409 UI: Check for valid systen tray pointer
Fixes a potential crash that can happen if the system tray is not
initialized for whatever reason.
2019-05-01 12:11:29 -07:00
Clayton Groeneveld
1160ee767a UI: Increment bitrates by 50 2019-04-30 06:54:02 -05:00
Jim
dd68493590
Merge pull request #956 from mntone/issue-load-methods
libobs: Load function simbol from specified file.
2019-04-27 13:03:32 -07:00
mntone
a66ad7eb63 libobs: Use RTLD_FIRST when loading libraries on macOS
Ensures that functions loaded by `os_dlsym()` come only from the
specified library that was loaded with `os_dlopen()` rather than the set
of libraries loaded by the specified library.
2019-04-27 11:56:53 -07:00
Jim
d273e74e94
Merge pull request #1853 from cg2121/fix-vis-lock-icons
UI: Fix theme issues with vis/lock checkboxes
2019-04-27 05:56:40 -07:00
Clayton Groeneveld
507cfe3ea0 UI: Fix theme issues with vis/lock checkboxes 2019-04-27 01:06:41 -05:00
jp9000
0677fe2b21 obs-ffmpeg: Move ffmpeg-mux to executable dir
Instead of having ffmpeg-mux stored in a data directory, install it to
the primary binary directory.  On windows, this fixes ffmpeg-mux
potentially accessing the wrong FFmpeg libraries (some programs install
them to system32, foolishly), and instead ensures that it uses the ones
that come with the program.  On Linux, ensures that a binary is in its
appropriate directory (/usr/bin or /usr/local/bin rather than a subset
of /usr/share or /usr/local/share).
2019-04-26 13:24:34 -07:00
jp9000
0e8fe8bbbc libobs/util: Add function to get executable path 2019-04-26 13:24:30 -07:00
jp9000
0800c8cbd1 obs-filters: Use int sliders for opacity
This changes all opacity scrollers for filters to sliders + scrollers.

Reference: obsproject/obs-studio#1827
2019-04-26 06:33:41 -07:00
jp9000
71f9900e74 obs-filters: Fix opacity on image mask/blend filter
The alpha value from the opacity slider was being overwritten.

Closes obsproject/obs-studio#1827
2019-04-26 05:22:44 -07:00
Jim
6f23c1ca4f
Merge pull request #1846 from jpark37/rgb-limited
Support limited color range for RGB/Y800 sources
2019-04-25 16:25:28 -07:00
James Park
a86710ec5b libobs: Support limited color range for RGB/Y800 sources
libobs: Add support for limited to full color range conversions when
using RGB or Y800 formats, and move RGB converison for Y800 formats to
the GPU.

decklink: Stop hiding color space/range properties for RGB formats, and
remove "YUV" from "YUV Color Space" and "YUV Color Range".

win-dshow: Remove "YUV" from "YUV Color Space" and "YUV Color Range".

UI: Remove "YUV" from "YUV Color Space" and "YUV Color Range".
2019-04-25 15:13:05 -07:00
jp9000
7d136c3ce1 decklink, win-dshow: Use obs_source_output_video2
Allows the ability to override and use partial range RGB with the
DirectShow and Decklink device sources when partial range RGB is
implemented.  Fixes certain cases where devices could capture RGB in
limited range via HDMI (per the HDMI specs).
2019-04-25 15:12:33 -07:00
jp9000
8d125dc01d libobs: Add better default source color range handling
Fixes handling of the `obs_source_frame::full_range` member variable,
which is often set to false by default by many plugins even when using
RGB, which would cause RGB to be marked as "partial range".  This change
is crucial for when partial range RBG support is implemented.

Adds `obs_source_frame2` structure that replaces the `full_range` member
variable with a `range` variable, which uses the `video_range_type` enum
to allow handling default range values.  This member variable treats
VIDEO_RANGE_DEFAULT as full range if the format is RGB, and partial
range if the format is YUV.

Also adds `obs_source_output_video2` and `obs_source_preload_video2`
functions which use the `obs_source_frame2` structure instead of the
`obs_source_frame` structure.

When using the original `obs_source_frame`, `obs_source_output_video`,
and `obs_source_preload_video` functions, RGB will always be full range
by default for backward compatibility purposes.
2019-04-25 15:12:08 -07:00
jp9000
f109d1c2bf Revert "libobs: libobs-d3d11: obs-filters: No excess alpha"
This reverts commit d91bd327d7, which
broke alpha with sources, scenes, and filter, causing them all to become
opaque unintentionally.
2019-04-25 08:36:41 -07:00
Jim
314a31d973
Merge pull request #1851 from cg2121/fix-theme-selection
UI: Fix theme bug when updating from older versions
2019-04-24 04:31:10 -07:00
Clayton Groeneveld
52c3f81f0e UI: Fix theme bug when updating from older versions
Fixes: https://obsproject.com/mantis/view.php?id=1446
2019-04-23 23:38:03 -05:00
Jim
5781605289
Merge pull request #1847 from cg2121/scene-copy-paste-filters
UI: Add ability to copy/paste scene filters
2019-04-23 18:18:10 -07:00
Jim
575f998fdd
Merge pull request #1850 from guangong7628/renaming-scene
UI: Fix unable to escape when renaming scene
2019-04-23 04:58:54 -07:00
Clayton Groeneveld
2940c80f49 UI: Add ability to copy/paste scene filters 2019-04-23 06:46:04 -05:00
guangong7628
16cc60587f UI: Fix unable to escape when renaming scene
Fixes https://obsproject.com/mantis/view.php?id=1443
2019-04-23 04:20:49 -07:00
Jim
7dc9ff0575
Merge pull request #1843 from cg2121/fix-group-icons
UI: Fix group checkbox icons not working in Dark theme
2019-04-22 05:35:25 -07:00