Commit Graph

3555 Commits (92af243a273f16f508046ff18e3123727c73be38)

Author SHA1 Message Date
jp9000 92af243a27 libobs-opengl: Fix bug with texelFetch shader intrinsic
This is supposed to assign -1 to the sampler_id to indicate that no
sampler need be assigned for the texture, but instead it was leaving the
variable with uninitialized data, resulting in a crash when used.
2016-04-19 19:42:27 -07:00
Richard Stanway 1f39b6a612
libobs: Don't use was_down for hotkey detection
From MSDN: "The behavior of the least significant bit of the return value
is retained strictly for compatibility with 16-bit Windows applications
(which are non-preemptive) and should not be relied upon."

This caused problems with hotkeys firing if the user pressed a hotkey key
in another application, followed by the modifier keys at any other time.
OBS would then think the hotkey key was just pressed based on the was_down
behavior and incorrectly trigger a hotkey event.

Fixes 0000443.
2016-04-20 03:46:30 +02:00
jp9000 86a41f844f obs-ffmpeg: Remove unused variable 2016-04-19 18:21:15 -07:00
jp9000 febceb3add UI: Add collection/profile command line parameters
--collection [name] allows setting the starting scene collection
--profile [name] allows setting the starting profile
2016-04-19 18:19:55 -07:00
Richard Stanway e6c465de84
obs: Make debug break on error optional via preprocessor definition 2016-04-20 03:05:28 +02:00
Richard Stanway 4c0b316130
libff: Small audio decoder loop refactor 2016-04-20 03:05:18 +02:00
Richard Stanway bebaeaeaa9
libff: Fix heap corruption caused by unnecessary av_dup_packet call
There's no need to duplicate the packet as the reference count will be 1
after the av_read_frame call. Duplicating causes heap corruption when a
synthetic clock packet is duplicated and assigned the buffer from the
stack-based temporary packet which is then double-freed by the decoder
thread.
2016-04-20 03:05:04 +02:00
jp9000 ba70b44152 obs-ffmpeg: Also remove 'tier' from locale text 2016-04-19 16:14:03 -07:00
jp9000 ad0ee4d2d8 libobs-opengl: Bind index buffers to VAO
To be able to use index buffers, they must also be bound to a vertex
array object along with the vertex buffers.

Ideally, if there are multiple index buffers for a vertex buffer,
separate VAOs should be created for each combination.
2016-04-19 15:35:05 -07:00
jp9000 8e4fdbbc20 libobs-opengl: Fix type when binding index buffers
GL_ARRAY_BUFFER is for vertex buffers, GL_ELEMENT_ARRAY_BUFFER is for
index buffers.
2016-04-19 15:29:32 -07:00
jp9000 98cc538776 obs-ffmpeg: Remove 'tier' from FFmpeg NVENC encoder
The 'tier' parameter is used with the NVENC HEVC encoder, not with the
AVC encoder.
2016-04-19 14:45:46 -07:00
jp9000 a39cde9d08 obs-qsv11: Fix win7 crash when fake monitor isn't forced
When using QSV is used on a windows 7 machine with a dedicated card, you
have to fake a monitor connection to your Intel graphics to be able to
use QSV.  If you do not, the initialization will fail with an error.
The error for that situation is not handled properly, and a variable
will be used while null.  Instead, the function should safely return
after that error is received.

Also, do not call ClearData in the destructor unless QSV has been
properly initialized (if m_pmfxENC is null).
2016-04-19 12:29:50 -07:00
jp9000 43eba49a50 obs-ffmpeg: Fix warning and remove unnecessary null checks
The if statement erroneously ended with a ';', which means that the code
is always executed, but there's no reason to even have these if checks
in the first place as the functions themselves return safely with null
pointers.
2016-04-19 10:29:34 -07:00
jp9000 17132ba27f win-mf: Deprecate MF NVENC encoder 2016-04-19 09:20:27 -07:00
jp9000 e3fbdb9293 UI: Add NVENC support to simple output 2016-04-19 09:20:27 -07:00
jp9000 8e1943065c obs-ffmpeg: Add FFmpeg NVENC encoder 2016-04-19 09:20:26 -07:00
jp9000 caa5723c21 libobs: Don't parse sei if sei callback returns 0/NULL 2016-04-19 08:29:25 -07:00
jp9000 1a38d779c9 libobs: Add function to extract AVC header/sei
Allows extraction of headers/sei from a frame so that an encoder can
separate those headers and provide them for later use.
2016-04-19 08:29:24 -07:00
jp9000 60ec56b2c6 UI: Add support for QSV encoder to simple output 2016-04-19 08:29:24 -07:00
jp9000 81313dfd35 win-mf: Deprecate MF QSV encoder 2016-04-19 08:29:23 -07:00
Seung-Woo Kim 3e4bcf06bc obs-qsv11: Add native obs-studio QSV encoder 2016-04-19 08:29:22 -07:00
jp9000 d56dc4791d win-capture: Fix cursor corruption bug (typo) 2016-04-18 18:34:41 -07:00
jp9000 cbd13063c6 libobs: Fix another sync issue with encoder sharing
If audio buffering is very high, the audio packets built up in the
interleaved buffer would be significantly before the first video packet,
causing the offset between the starting video/audio packet pairs to be
significantly off, leading to desync.

This issue was not spotted until recently because it only happens when
streaming/recording with same encoders while audio buffering is very
high.
2016-04-18 14:02:57 -07:00
jp9000 bef1b37ae2 win-capture: Fix case where hook only captures one frame
When using a chain hook method (forward or reverse), it was unwisely
assumed that the previous hook in the chain would not overwrite new
hooks when it's called.  When the game capture hook calls the previous
hook in the chain, certain other programs that hook (in this case,
rivatuner on-screen display) would overwrite the hook with older data
and erase the game capture hook, causing it to only capture the first
frame and then never capture again.

This patch ensures that the hook is always saved before calling the next
hook in the chain and then restored after the call returns.  It also
preserves any new hooks that may be added on top of it at any point.
2016-04-14 23:45:19 -07:00
Jim 3fec8e236e Merge pull request #537 from Gol-D-Ace/vcredist
UI: Change message regarding vcredist
2016-04-14 18:58:16 -07:00
Jim 06889b77ed Merge pull request #536 from AnthonySuper/master
libobs: remove duplicated determinant calculation
2016-04-14 18:57:12 -07:00
jp9000 b28b165d06 UI: Make minor text adjustment to bitrate warnings
Specify that it's the streaming bitrate and not just "bitrate" so users
hopefully realize that it's not referring to the recording settings.
2016-04-14 18:41:26 -07:00
jp9000 0bb5a1df62 UI: Discard backup file when renaming scene collection 2016-04-13 20:13:20 -07:00
jp9000 3bd4fe5409 UI: Add command line opts to start streaming/recording
These command line options allow the user to start streaming/recording
on program startup.
2016-04-13 19:01:08 -07:00
jp9000 b52c4f9634 UI: Add command line opt to start w/ specific scene 2016-04-13 19:01:07 -07:00
jp9000 21ea1b1947 UI: Do not show deprecated encoders if not selected
Hides video encoders marked as deprecated if they're not currently in
use.
2016-04-13 19:01:07 -07:00
jp9000 e38a5c61d3 libobs: Add encoder caps (with deprecated flag)
Allows the ability to mark an encoder as deprecated (such as the media
foundation h264 encoders)
2016-04-13 19:01:06 -07:00
Gol-D-Ace 60412572a1 UI: Change message regarding vcredist
This should make it a bit more clear, that you need both vcredist_x64
and vcredist_x86 on 64 Bit Windows versions.
2016-04-14 01:21:37 +02:00
Richard Stanway bc231eda75
libobs: Fix a race condition when initializing audio sources
The source shouldn't be inserted into obs->data.first_audio_source until it's
fully initialized, or other threads will access source->control and
dereference an uninitialized pointer.
2016-04-13 18:39:24 +02:00
Richard Stanway a73b09c74e
libobs: Remove various dead code found by static analysis
Detected by Coverity Scan (CID 92178, 92171)
2016-04-13 02:43:11 +02:00
Richard Stanway c42f666b02
obs-outputs: Fix assign instead of compare on socket address type
Detected by Coverity Scan (CID 92187, 92170)
2016-04-13 02:23:23 +02:00
Anthony Super 1fe0743256 libobs: Remove duplicated determinant calculation 2016-04-12 14:31:52 -06:00
jp9000 5191622d21 UI: Fix bug where bitrate limits wouldn't be shown
Bitrate limit warnings wouldn't be correctly shown if service settings
are changed but not yet saved before modifying the bitrates/settings.
It would use the currently active service settings instead of the
changed values.
2016-04-10 22:55:23 -07:00
jp9000 721d91ffcd UI: Fix audio bitrate unlock if bitrate enforcing off
Fixes a bug where audio bitrate would not be unlocked if maximum bitrate
enforcement is disabled.
2016-04-10 22:53:42 -07:00
jp9000 5920778572 libobs: Add ability to create private services
This is a band-aid solution to be able to create temporary services
without logging them and keep them out of enumeration functions.

This is a band-aid solution -- 'master obs context lists' should not be
kept by the core.  Logging of object creation/destruction should also be
controlled by the front-end instead of the core.
2016-04-10 22:53:15 -07:00
Jim 8af2c168cf Merge pull request #535 from reboot/fix_unclosed_media_source_files
deps/libff: Fix that inputs are not closed when a demuxer is freed
2016-04-10 16:22:32 -07:00
Christoph Hohmann 5e768990f2 deps/libff: Fix that inputs are not closed when a demuxer is freed
avformat_free_context() only frees the memory used by an AVFormatContext
but it does not close the opened media file. This causes a leaked file
descriptor every time a media source frees a demuxer. Using
avformat_close_input() instead frees the context and closes the media
file.
2016-04-10 18:53:26 +02:00
jp9000 b9e4ff1ffb UI: Warn if streaming audio/video bitrate is too high
Allows the user to know that the maximum bitrate limit for a streaming
service is being enforced.
2016-04-10 03:12:25 -07:00
jp9000 d54bf1b8ab UI: Add "Enforce streaming bitrate limits" setting
Allows the user to disable streaming bitrate limits in simple output
mode if they so choose.  This option is enabled by default.
2016-04-10 03:11:41 -07:00
jp9000 2697732861 UI: Fix invalid signal for snap distance setting
A double spin control expects valueChanged(double), not
valueChanged(int).
2016-04-10 02:12:16 -07:00
jp9000 8b2173f591 libobs/util: Add double-quote escape value for text lookup 2016-04-10 02:11:03 -07:00
jp9000 a589ea8c14 rtmp-services: Use "scenecut=0" x264 option for Twitch
This option is an x264-specific feature that may generate additional
keyframes when a major visual change in the output is detected.  This
functionality is undesirable for streaming because it can cause
keyframes to become inconsistent and unpredictable, which can negatively
affect viewer buffering.
2016-04-09 23:39:12 -07:00
jp9000 87810bcf1a rtmp-services: Add the ability to specify custom x264 opts
Certain services may request certain x264-specific options (such as
scenecut=0 to prevent additional keyframes from being generated)
2016-04-09 23:34:16 -07:00
jp9000 ac23ec8359 libobs/util: Fix warning (data type size mismatch)
Fixes warning on Visual Studio 2013:
'initializing' : conversion from 'size_t' to 'int', possible loss of
data
2016-04-09 18:15:47 -07:00
jp9000 2274b57926 libobs: Mark filters as private (band-aid fix)
This patch fixes a specific crash where if the user named a filter the
same name as an input source that already existed in the system, scene
item loading code could find the filter with the same name instead of
the source, and mistakenly use it as the scene item's source directly.
This would cause a crash when trying to render that filter as a regular
source.

Marking filters as private is a temporary and simple workaround to the
solution.  Filters are currently not meant to be found via the main
enumeration/search functions, which is a design flaw (lack of
consistency).  In future major API revisions of libobs, filters should
be reworked to act as sources, with the sources they filter as
sub-sources ideally.

Additionally, the concept of "private context objects" and "primary
lists of context objects" in the back-end should probably also be
removed, allowing the font-end (or optional separate API layers) to
control all primary lists of obs context objects.  These minor issues
that occur ultimately stem from API design flaws which need to be
corrected.
2016-04-09 18:12:50 -07:00