6891 Commits

Author SHA1 Message Date
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
Jim
f54fda4678
Merge pull request #1991 from jpark37/gl-improvements
GL support improvements
2019-07-25 16:22:01 -07:00
Jim
173eec0d6e
Merge pull request #1978 from jpark37/defer-yuv-multiply
libobs: Rework RGB to YUV conversion
2019-07-25 16:20:48 -07:00
jpark37
a7ac33488c libobs-opengl: Remove unused VERTEXID code
I think this was leftover from an abandoned approach.
2019-07-23 08:33:49 -07:00
jpark37
df59046050 libobs-opengl: Support gl_FragCoord and cull unused interpolants 2019-07-23 08:31:57 -07:00
jpark37
ce9e4dd4d2 libobs-opengl: Fix GS_R8G8 values 2019-07-23 08:29:54 -07:00
Richard Stanway
1684b9bddb
UI: Add links for Facebook stream key 2019-07-23 00:47:18 +02:00
Jim
d396b2ec15
Merge pull request #1977 from cg2121/adv-audio-styling
UI: Improve look of adv audio control dialog
2019-07-22 02:59:58 -07:00
Jim
37072e6c97
Merge pull request #1932 from Chiitoo/libdir
cmake: Install 'libobs.pc' under the correct 'libdir'
2019-07-22 02:45:22 -07:00
Jim
c36a86bb46
Merge pull request #1973 from restreamio/master
UI: Add Restream integration: stream info widget, channels widget
2019-07-22 01:33:59 -07:00
jpark37
2656bf0a90 libobs: Rework RGB to YUV conversion
RGB to YUV converison was previously baked into every scale shader, but
this work has been moved to the YUV packing shaders. The scale shaders
now write RGBA instead. In the case where base and output resolutions
are identical, the render texture is forwarded directly to the YUV pack
step, skipping an entire fullscreen pass.

Intel GPA, SetStablePowerState, Intel HD Graphics 530, NV12

1920x1080, Before:
RGBA -> UYVX: ~321 us
UYVX -> Y: ~480 us
UYVX -> UV: ~127 us

1920x1080, After:
[forward render texture]
RGBA -> Y: ~487 us
RGBA -> UV: ~131 us

1920x1080 -> 1280x720, Before:
RGBA -> UYVX: ~268 us
UYVX -> Y: ~209 us
UYVX -> UV: ~57 us

1920x1080 -> 1280x720, After:
RGBA -> RGBA (rescale): ~268 us
RGBA -> Y: ~210 us
RGBA -> UV: ~58 us
2019-07-22 01:12:35 -07:00
jpark37
e5b004fd48 libobs: Remove YUV transformation on CPU
This code path does not appear to be used. Breakpoint-inspected all four
output formats I420/I444/NV12/RGB, and they are all behaving as they
should.
2019-07-22 01:12:01 -07:00
Jim
887857b71d
Merge pull request #1976 from cg2121/output-timer-pause
frontend-tools: Add option to pause output timer when rec is paused
2019-07-21 22:48:13 -07:00
Jim
1831165c5e
Merge pull request #1969 from cg2121/simplify-code
UI: Simplify resize output code
2019-07-21 22:33:46 -07:00
Jim
8ff87ef9e1
Merge pull request #1968 from redcrazyheart/addstripchatsources
rtmp-services: Add Stripchat streaming service
2019-07-21 22:32:58 -07:00
Clayton Groeneveld
e5365ec583 UI: Improve look of adv audio control dialog 2019-07-21 22:31:10 -07:00
Jim
696cebb672
Merge pull request #1987 from SCG82/declare-override
UI: Declare missing overrides
2019-07-21 22:22:15 -07:00
SoftArch
225817b1ba UI: Add Restream.io link to stream key page
Allows the users to find their stream key via a specified link if they
opt to just use a stream key instead of integration.
2019-07-21 22:16:43 -07:00
SoftArch
f914b45c7a UI: Add Restream.io bandwidth test stream key param
Allows testing bandwidth via streaming without the stream activating
remotely for viewers.
2019-07-21 22:16:43 -07:00
SoftArch
484c57181c UI: Add channels widget to Restream.io integration 2019-07-21 22:16:07 -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
807da6c7f6
Merge pull request #1985 from SCG82/fix-typo
cmake: Fix typo
2019-07-21 21:39:20 -07:00
SCG82
4a4fc3b68f UI: Declare missing overrides 2019-07-21 20:53:30 -07:00
Jim
5507200f1a
Merge pull request #1984 from jpark37/deinterlace-smoothing
libobs: Improve timing of unbuffered deinterlacing
2019-07-21 20:03:49 -07:00
SCG82
596dd54c0b cmake: Fix typo 2019-07-21 19:49:41 -07:00
Jim
6d6330ff03
Merge pull request #1983 from cg2121/infinity-symbol
UI: Display infinity symbol when volume is at 0 percent
2019-07-21 19:44:29 -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
jpark37
3ea98b8b0d libobs: Improve timing of unbuffered deinterlacing
There are devices like the GV-USB2 that produce frames with smmoth
timestamps at an uneven pace, which causes OBS to stutter because the
unbuffered path is designed to aggressively operate on the latest frame.

We can make the unbuffered path work by making two adjustments:

- Don't discard the current frame until it has elapsed.
- Don't skip frames in the queue until they have elapsed.

The buffered path still has problems with deinterlacing GV-USB2 output,
but the unbuffered path is better anyway.

Testing:

GV-USB2, Unbuffered: Stuttering is gone!
GV-USB2, Buffered: No regression (still broken).
SC-512N1-L/DVI, Unbuffered: No regression (still works).
SC-512N1-L/DVI, Buffered: No regression (still works).
2019-07-20 21:00:59 -07:00
jp9000
cdb7cd80f6 win-dshow: Update libdshowcapture to 0.6.1 2019-07-20 20:24:52 -07:00
Jim
262a8c62bc
Merge pull request #1981 from jpark37/optimize-backdrop
libobs: UI: Remove DrawBackdrop() to save fullscreen pass
2019-07-20 17:09:08 -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
e6796edcb0
Merge pull request #1971 from jpark37/gl-error-infinite-loop
libobs-opengl: Fix glGetError() infinite loop
2019-07-20 17:05:52 -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
Clayton Groeneveld
6da1df2ece UI: Display infinity symbol when volume is at 0 percent 2019-07-19 23:15:14 -05: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
jpark37
3456ed0644 libobs: UI: Remove DrawBackdrop() to save fullscreen pass
It's a waste of GPU time to do two fullscreen passes to render final mix
previews. Use blend states to simulate the black background of
DrawBackdrop() for the following situations:

- Main preview window (Studio Mode off)
- Studio Mode: Program

This does not effect:

- Studio Mode: Preview (still uses DrawBackdrop)
- Fullscreen Projector (uses GPU clear to black)
- Windowed Projector (uses GPU clear to black)

intel GPA, SetStablePowerState, Intel HD Graphics 530, 1920x1080

Before:
DrawBackdrop: ~529 us
main texture: ~367 us (Cheaper than drawing a black quad?)

After:
[DrawBackdrop optimized away]
main texture: ~383 us
2019-07-18 19:58:29 -07:00
Richard Stanway
15770712a8
UI: Set default maximum name length to 170 characters
As the names entered into this dialog can be used as part of file names
(for example, saving a scene collection), allowing long names can result
in silent data loss where OBS creates the collection and allows the user
to manipulate it, but it cannot be saved on exit. This is due to the
MAX_PATH limitation on Windows (260 characters). 170 was chosen to
accomodate the length of the user app data folder plus some room for
extensions like .json.tmp.
2019-07-18 16:16:03 +02:00
Clayton Groeneveld
42c6984771 frontend-tools: Make start/stop buttons checkable 2019-07-18 07:07:34 -05: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
Richard Stanway
dd3ed096f8
file-updater: Use transparent HTTP compression 2019-07-17 17:22:09 +02:00
Clayton Groeneveld
64598732a6 frontend-tools: Add option to pause output timer when rec is paused 2019-07-17 00:02:15 -05: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
jpark37
b90ce6944f libobs-opengl: Fix glGetError() infinite loop
glGetError() returns GL_INVALID_OPERATION during OBS shutdown when GL is
used on Windows. This change gives up after eight errors.

This could be avoided by stopping the graphics thread before window
destruction, but the shutdown code looks like it could be tricky to
reorder.
2019-07-15 09:13:14 -07:00
Clayton Groeneveld
5f5ba54a66 UI: Simplify resize output code 2019-07-15 04:50:42 -05:00