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

7059 Commits

Author SHA1 Message Date
jp9000
f6d1887675 libobs: Fail pause/unpause if still waiting for them
When a pause/unpause occurs, a timestamp is set and the actual
pause/unpause does not occur until the output/encoders reach the
specified timestamps.  Do not allow pausing/unpausing unless that point
has been reached with all encoders of an encoded output or the output
itself when using a raw output.

This fixes a bug where pause data could get corrupted if
pausing/unpausing too fast, because the audio/video encoders aren't
necessarily synchronized and although one encoder may have unpaused, the
other encoder(s) may not have yet.  Checking all encoders first before
allowing a pause/unpause ensures that doesn't occur.
2019-08-31 01:15:19 -07:00
jp9000
df5689d534 libobs: Give a little extra time for pause to start/stop
Audio latency can get really low, and if it's low enough, the timestamp
can be passed by the audio subsystem before it's had a chance to pause
with it.  So instead, make the pause have a little bit of extra delay to
ensure that doesn't occur.
2019-08-31 01:15:18 -07:00
Gol-D-Ace
05888fc3aa CI: Update Windows CEF version 2019-08-30 16:38:59 +02:00
jp9000
09fc41cc06 libobs: Use correct pointer
This is not supposed to pass the graphics context pointer -- it's
supposed to pass the device pointer held by the graphics context object.
2019-08-30 00:36:27 -07:00
jp9000
3ef5393d42 libobs: Call debug marker after null check, not before 2019-08-29 21:46:13 -07:00
jp9000
7e77294eed libobs: Don't render scene item texture if it's null 2019-08-29 21:44:34 -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
jp9000
bf41fd5a6b libobs: Add graphics API to get graphics object pointer 2019-08-29 12:43:10 -07:00
jp9000
86572935af deps/media-playback: Remove cuda for hardware decoding
Cuda appears to be a bit buggy and can result in corruption where as
it's not being seen with other hardware decoders.  Remove cuda for now
as a hardware decoder to prevent the possibility of corruption.
2019-08-29 12:06:55 -07:00
Jim
8d43af7748
Merge pull request #2050 from h-o-sein/master
rtmp-services: Update GameTips.TV
2019-08-29 11:59:47 -07:00
jp9000
43957286d7 deps/media-playback: Fix hw decode dropping last few frames
Fixes a bug where hardware frames would not transfer to RAM for the last
few frames of a video.  The 'ret' variable can be 0 even though there
are still frames ready.
2019-08-29 11:55:49 -07:00
Jim
6943d9a973
Merge pull request #2047 from jpark37/scale-weights
Bicubic/Lanczos Shader Improvements
2019-08-28 08:47:28 -07:00
Hosein
2222d23e31 rtmp-services: Update GameTips.TV 2019-08-28 08:32:14 -07:00
Jim
f2ad6ab076
Merge pull request #2048 from VodBox/webm-hwaccel
deps/media-playback: Use hardware decoding with non-alpha WebM files
2019-08-28 08:31:02 -07:00
VodBox
c2a2bc5e40 deps/media-playback: Use hwaccel with non-alpha WebM files 2019-08-27 22:57:59 -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
83e237fec1 libobs: Fix default mixer values
There are 6 mixers, so we want 0x3F for 6 bits, not 0xF which is only 4
bits.
2019-08-26 08:24:02 -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
jp9000
0845844e5d libobs: Insert sources to linked lists after creation
This fixes a race condition where the audio/video backends/threads may
start using sources before their obs_source_info::create function has
been called.
2019-08-25 19:19:57 -07:00
jp9000
2557ffce7e libobs: Add missing static to function
This function is not used outside of the source file, so make it static.
2019-08-25 19:19:57 -07:00
jp9000
2c3ea4af55 libobs: Fix null potential pointer dereference
When a source type has been removed (i.e. its plugin has been removed)
info can be null, which is permitted.
2019-08-25 19:19:57 -07:00
jpark37
af01e044a2 libobs: Fix Lanczos calculations
- Fix: Ensure (1, 1) coordinate gets clamped.
- Fix: Increase weight precision by premultiplying UV in VS.
- Cleanup: Group coordinates 012/345 instead of 024/135.
- Cleanup: Remove unnecessary branches.

NVIDIA RTX 2080 Ti, Intel GPA, SetStablePowerState

256x224 -> 1323x1080: 123 us -> 123 us
2019-08-25 10:00:23 -07:00
jpark37
3485c4cdac libobs: Simplify bicubic weight calculations
Also increase weight precision by premultiplying UV in VS.

Intel HD Graphics 530, Intel GPA, SetStablePowerState

256x224 -> 1323x1080: 1221 us -> 1020 us
2019-08-25 10:00:10 -07:00
Jim
68bdadf812
Merge pull request #2043 from pkviet/nvenc-dbrfix
obs-ffmpeg: Set some parameters for dynamic bitrate in new nvenc
2019-08-24 20:25:12 -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
707f83f57d deps/media-playback: Fix memory leak
The hardware accelerated decoder context needs to be explicitly unrefed
when it's no longer in use, otherwise it and many resources associated
with it will leak.
2019-08-24 18:15:25 -07:00
jp9000
94581952b5 deps/media-playback: Fix hw accel decode crash
When hardware accelerated decoding is enabled, sometimes it can't
initialize for whatever reason, so it will fall back to software on its
own.  When this occurs, it will not use the hardware pixel format on the
frame; instead it will defer to a standard format on the frame.  So if
the frame format does not match the expected format, assume software
decoding.  (This was also what the hw-decode.c FFmpeg example did if the
format did not match the expected format)
2019-08-24 18:12:02 -07:00
jp9000
41e9dd38fa UI: Clarify dynamic bitrate support in tooltip 2019-08-22 16:26:34 -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
4dd96aa6d9 UI: Move "area" scale below bilinear, above bicubic 2019-08-22 15:15:44 -07:00
jp9000
1986445511 UI: Fix bug where FTL was using AAC instead of opus
When the streaming audio track was separated from the recording tracks
in advanced output mode in be8c06334, it mistakenly removed the opus
audio encoder code when FTL is used.  This restores that code.
2019-08-22 15:08:24 -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
73704f20db libobs: Add audio lines
Adds the "audio_line" internal source type as a bare source type for the
sole purpose of outputting audio, and the obs_source_info::audio_mix
callback which allows mixing of those audio lines, which is then treated
as normal audio for the source.  Audio line objects should be added as
sub-sources when multiple audio lines from a single source are needed,
then mixed together with the audio_mix callback.

The difference between the new obs_source_info::audio_mix callback and
obs_source_info::audio_render is that obs_source_info::audio_mix (along
with the audio_line source) are only one track, and it outputs audio to
the source automatically via obs_source_output_audio() when the call
completes.  This allows the mixed audio to be treated like a normal
source's audio, in that you can filter it, change its volume, or monitor
it.

This change was necessary because the CEF (used with the browser source)
outputs multiple audio streams at once to a single browser source, so
it's the program's responsibility to mix those streams together itself.
2019-08-21 15:19:19 -07:00
Jim
509d7f49e1
Merge pull request #2041 from cg2121/pause-stuff
UI: A couple of pause changes
2019-08-20 12:23:58 -07:00
Clayton Groeneveld
e284b102d8 UI: Simplify toggle pause code 2019-08-20 06:37:48 -05:00
Clayton Groeneveld
e770a775c6 UI: Update tooltip when paused 2019-08-20 06:37:22 -05:00
Jim
bc787c5e94
Merge pull request #2039 from Vainock/master
UI: Fix inconsistency with spaces
2019-08-19 00:03:43 -07:00
Vainock
df88eeb092
UI: Fix inconsistency with spaces 2019-08-19 06:13:51 +02:00
jp9000
8ee0480138 UI: Add dynamic bitrate support to the UI
Adds dynamic bitrate support (marked as beta) to the advanced settings
for now.
2019-08-18 03:16:37 -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
Jim
f15290d14f
Merge pull request #2038 from kkartaltepe/fix-rbswap-binding
linux-capture: Bind texture after GS_GL_DUMMYTEX changes
2019-08-18 02:04:14 -07:00
Kurt Kartaltepe
e39e13e7b8 linux-capture: Texture unbound after GS_GL_DUMMYTEX changes 2019-08-17 22:47:32 -07:00