Commit Graph

4191 Commits

Author SHA1 Message Date
Alexandre Biny b276b1633e obs-qsv11: Use d3d9 allocator on Win7
Use a d3d9 device and allocator to encode in QSV.

This fixes a random crash that could only happen on Windows 7. The QSV
Deviced returned a DEVICE_FAILURE after a random amount of time with the
old method.

This fix is totally based on Shinck's QSVHelper.exe patch for OBS
Classic (see
https://obsproject.com/forum/threads/0-633b-qsvhelper-exe-was-killed-encode-failed.19230/page-3#post-161984
for more information)

This is more like a proof of concept, but that fix is currently stable
and tested more than 50 hours, with a single session of +14 hours.

That commit doesn't respect all OBS Guidelines. It is currently
recommended to wait for a more "cleaner" implementation.
2016-12-23 07:49:12 -08:00
Cephas Reis 2278782c19 obs-filters: Fix comment messages
Split commit for jp9000/obs-studio#733
2016-12-23 02:40:00 -08:00
Cephas Reis d231f40588 obs-filters: Add "Color" option to color correction filter
Closes jp9000/obs-studio#733
2016-12-23 02:39:44 -08:00
jp9000 2da7f3cb0e win-capture: Add a few new blacklisted game capture exes 2016-12-23 02:17:14 -08:00
jp9000 ad72194090 win-capture: Do not add certain windows to window lists
Due to using FindWindowEx to search for certain windows, certain windows
will show up that aren't usable/capturable.  Prevent these windows from
showing up in the window lists.
2016-12-23 02:15:59 -08:00
jp9000 4fe2ca0f75 win-capture: Fix possible null pointer dereference 2016-12-23 02:04:26 -08:00
jp9000 bd67c18c02 win-capture: Use FindWindowEx to traverse window list
For some unknown reason, GetWindow will not traverse the entire window
tree.  It could be due to Microsoft purposely hiding certain UWP
windows, though the reason is unknown.  For some equally unknown reason
FindWindowEx does work in its place.

This fixes the issue of not being able to find/capture certain windows,
such as halo 5: forge.
2016-12-23 01:53:44 -08:00
jp9000 3b5a30ce97 win-capture: Capture all D3D12 backbuffers
D3D12 capture does not take in to account when multiple backbuffers are
in used.  With previous versions of Direct3D there was no need to do
this, but with D3D12 you must explicitly capture each specific
backbuffer currently in use.
2016-12-23 01:53:15 -08:00
jp9000 fb60a5f1e9 UI: Fix settings window stacked widget index 2016-12-22 07:04:15 -08:00
jp9000 579a5019d8 UI: Fix video initialization failure error message
It incorrectly assumed windows systems before, now it uses an
appropriate platform-independent error message.  Also fixes a missing
word.
2016-12-22 06:57:26 -08:00
jp9000 a2c92b1c69 UI: Add default audio track bitrates
Closes jp9000/obs-studio#732
2016-12-22 06:54:44 -08:00
jp9000 94a4228904 UI: Fix buddy controls with new audio tracks 2016-12-22 06:53:01 -08:00
jp9000 e71137534c libobs: Process all scene audio actions if no audio playing
When there are audio sources in a scene and they've all stopped playing
their audio (audio is pending), all scene item audio actions (volume
changes, toggling visibility) will perpetually buffer and no longer be
processed until audio plays again.

So instead of that, if all audio sources have stopped playing in the
scene, just process all pending scene item audio actions immediately to
prevent them from never being processed while waiting for a scene item
to start playing audio.
2016-12-22 00:31:11 -08:00
jp9000 521c40460e libobs: Fix bug drawing RGB/BGR async sources
Commit 53955301a2 introduced a async source texture copy bug due to
creating a new case in a switch without adding a break to the one above
it, causing it to execute both cases by mistake.
2016-12-21 20:11:31 -08:00
jp9000 cef4cba576 obs-ffmpeg: Fix nvenc_h264 deprecated message
The encoder name was changed from "nvenc_h264" to "h264_nvenc", and will
throw a warning in the log file if you use the former, so try the latter
first, then the former.
2016-12-21 19:27:55 -08:00
jp9000 c11572fddf UI: Clarify startup error messages related to video 2016-12-21 19:22:16 -08:00
jp9000 2df7e16b44 UI: Use 64bit desktop link by default in installer 2016-12-21 18:43:52 -08:00
jp9000 005fd823cb UI: Fix endif in installer 2016-12-21 18:43:30 -08:00
jp9000 09a12fcf98 UI: Update locale for 6 tracks 2016-12-21 17:41:59 -08:00
jp9000 c4ec1bc28a UI: Increase maximum audio tracks to 6 2016-12-21 17:14:24 -08:00
jp9000 f10e2c6740 libobs: Increase maximum audio tracks to 6 2016-12-21 17:13:19 -08:00
jp9000 8cc5f8de55 libobs-d3d11: Don't crash if unable to rebuild shared texture
When rebuilding the graphics subsystem, it's possible a shared texture
may no longer be available.  In this case, just soft fail and allow the
texture to be rebuilt rather than crash the entire program over it.
2016-12-21 16:09:12 -08:00
jp9000 c4580ac6ba obs-text: Do not reset blend state
Similar to the parent commit, do not reset the blend state if the source
is not marked as a custom drawn source.  Filters applied won't have the
correct blend state and the alpha edges of the text will be partially
black.
2016-12-21 15:31:13 -08:00
jp9000 922e1d23f9 image-source: Do not change blend state
The blend state does not need to (and should not) be changed.  This
fixes an issue where if filters are applied to an image source, the
image source will paint incorrectly.
2016-12-21 15:26:33 -08:00
Cephas Reis d4cd14b05c obs-filters: Improve "Color Correction" filter
Replaces the "Color Correction" filter with a newer version that uses a
matrix, adds hue and saturation, and improves the contrast option.

Closes jp9000/obs-studio#708
2016-12-20 23:08:00 -08:00
Jim 94a1b0eaef Merge pull request #710 from Xaymar/feature_amd-encoder
enc-amf: Update to version 1.4.3.4 for AMD Driver 16.12.1
2016-12-20 22:46:28 -08:00
Michael Fabian Dirks 6bf1a033af enc-amf: Update to 1.4.3.4 for AMD Driver 16.12.1 2016-12-21 04:47:41 +01:00
cg2121 9f0c48d9c7 UI: Add import/export of scene collections & profiles
Closes jp9000/obs-studio#721
2016-12-19 04:44:57 -08:00
Ryan Foster 42a646f28e UI: Add ability to copy-paste scene item transforms
This commit adds the ability to copy a scene item's transform and crop
settings and paste those settings onto another scene item in any scene
or scene collection. It also changes the menu shortcut key for the
Transform action "Center to screen" from "C" to "n" because "C" is the
standard shortcut key for "Copy" in most other applications.

Closes jp9000/obs-studio#719
2016-12-18 17:21:58 -08:00
SuslikV ee019c7761 UI: Make close button default in transform dialog
Improves ease of use.

Closes jp9000/obs-studio#731
2016-12-18 06:28:08 -08:00
Autumin 0ff4feab02 libobs/graphics: Fix the 2D vector dot product func
The operators were unintentionally reversed.

Closes jp9000/obs-studio#724
2016-12-18 06:20:24 -08:00
shiina424 0d5a23d5f7 obs-ffmpeg: Don't allow 32kb/s with FFmpeg AAC encoder
FFmpeg's AAC encoder is unideal at very low bitrates.

Closes jp9000/obs-studio#722
2016-12-18 06:16:16 -08:00
jp9000 53955301a2 libobs: Fix line size issue when copying Y800 data 2016-12-17 22:53:52 -08:00
jp9000 919aecfd62 libobs: Fix format not being set for new source frames
With the previous Y800 fix a bug was introduced where the format for the
destination frame wouldn't be set if it wasn't Y800, causing a crash.
2016-12-17 21:56:10 -08:00
Michael Fabian Dirks db7632e7fd UI: Use dedicated GPU on Hybrid AMD GPU systems
This enables use of the dedicated GPUs for AMD PowerXpress systems.
Especially important for Adapter selection, as usually the dedicated GPU
is hidden/inactive until needed.

Closes jp9000/obs-studio#706
2016-12-17 20:06:39 -08:00
jp9000 85269fb5b2 libobs: Convert Y800 to RGBX manually
Because D3D11 specifically does not support an L8 texture format (you
have to use a shader swizzle), manually convert Y800 signals to RGBX
instead.  This also fixes a bug where Y800 signals will render red.

Closes jp9000/obs-studio#718
2016-12-17 19:58:01 -08:00
Jim 4b8411fa4d Merge pull request #716 from flash0110/ui_fix-frontend-api-scene-added
UI: Fix frontend-api event call for adding scenes
2016-12-17 18:59:40 -08:00
jp9000 580f38a733 UI: Remove deleteLater view from filter window layout
In the filters dialog, when the properties are being updated due to
filters being added/removed/switched, using deleteLater on the previous
view would cause it to linger in the view until the deleteLater is
processed by the Qt queue, displaying two views instead of one.
Additionally because of that, this would also cause the display in the
filters dialog to resize as well, causing the reorder mutex hard lock
which was fixed by the parent commit.

Closes jp9000/obs-studio#714
2016-12-17 15:32:19 -08:00
jp9000 e541e170a3 libobs: Fix possible reverse order mutex hard lock
For displays, instead of using the draw_callbacks_mutex and risk a
reverse mutual lock scenario, use a separate mutex to lock display size
data.

This bug was exposed when trying to reorder filters in the UI module.
The UI thread would try to reorder the filters, locking the filter mutex
of the source, and then the reorder would signal the UI to resize the
display, so the display would lock its draw_callbacks_mutex.  Then, in
the graphics thread, it would lock the display's draw_callbacks_mutex,
try to draw the source, and then the source would try to lock that same
filter mutex.

A mutex trace:
UI thread -> lock source filter mutex -> waiting on display mutex
graphics thread -> lock display mutex -> waiting on source filter mutex

Closes jp9000/obs-studio#714
2016-12-17 15:21:00 -08:00
vic 7db00a18fa UI: Fix property name bug in frontend API
This commit fixes a bug that would cause the frontend API function
obs_frontend_set_current_scene_collection to never be successful.  Due
to the bug, the following null pointer check would always fail, so the
action would never be triggered.

Modification by Jim: Instead of fixing the typo that caused this to
occur, make it so both scene collection menus and profile menus both use
"file_name" consistently.

Closes jp9000/obs-studio#712
2016-12-16 16:43:12 -08:00
Jim 3869f6dbc2 Merge pull request #709 from kkartaltepe/libff-allow-options
libff: Allow custom demuxer options
2016-12-16 16:25:34 -08:00
jp9000 68a8a5bf2b win-capture: Do not fall back to other windows for UWP windows
If capturing a UWP window, do not fall back to matching windows with the
same window class if the exact window is not found, as this will get any
other UWP window on the system (due to the fact that they all have the
same window class name).
2016-12-16 14:06:05 -08:00
jp9000 4f4aea4562 win-capture: Add debug messages when hooking
These are helpful for debugging UWP capture issues.
2016-12-16 14:06:04 -08:00
jp9000 61773bcbf2 win-capture: Fix cursor not painting with UWP windows
Because the hook cannot get the window handle of UWP windows, fall back
to using the window handle stored in the game capture source itself if
it's unavailable from the hook.
2016-12-16 14:06:03 -08:00
jp9000 b3119e0a8d win-capture: Don't hard fail if thread ID not found
Under certain circumstances, the program may not be able to acquire the
window thread ID for a UWP process, but will be able to acquire the
process ID.  In this case, it should soft fail and retry, rather than
assume it's unacquirable and stop trying to reacquire.
2016-12-16 14:06:02 -08:00
jp9000 a5337605cd win-capture: Add ApplicationFrameHost to game capture blacklist
The ApplicationFrameHost process is a sandbox process, and should not be
hooked.
2016-12-16 14:06:01 -08:00
jp9000 480d0e986f win-capture: Fix "attempting to hook [executable]" message
The "attempting to hook [executable]" message would not display the
correct executable if it's fallen back to a different window with the
same window class.
2016-12-16 14:06:00 -08:00
jp9000 209bcda1f4 win-capture: Wait a few frames for hook to load
Now that the game capture hook creates and controls all the
synchronization objects, it's no longer possible to expect that the hook
is fully loaded by the time game capture tries to initialize it.  In
that case, allow game capture to retry the hook for a few frames before
assuming something failed.
2016-12-16 14:05:59 -08:00
jp9000 bddd9766ac win-capture: Don't hook suspended processes
Remote threads in suspended processes will also start up suspended, so
do not attempt to hook suspended processes.
2016-12-16 14:05:58 -08:00
jp9000 e29638ebf9 win-capture: Log plugin-side when capture successful/lost 2016-12-16 14:05:57 -08:00