We truncated the diff of some files because they were too big.
If you want to see the full diff for every file, click here.
Changes of Revision 77
obs-studio.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Sun Apr 05 21:29:12 UTC 2020 - jimmy@boombatower.com
4
+
5
+- Update to version 25.0.4:
6
+ * libobs: Update version to 25.0.4
7
+ * win-capture: Update graphics hook version to 1.1.4
8
+ * UI: Don't stretch server field in Qt 5.14
9
+ * obs-browser: Fix interact keyboard input on Linux
10
+ * Decklink: Fix crash when no matching device
11
+ * libobs: Fix macOS 10.15 hotkey crash (temporary)
12
+ * win-capture: Fix crash if GPU can't Vulkan capture
13
+ * docs/sphinx: Bump major OBS version
14
+ * UI: Use Qt dialogs for Font & Color Pickers on Linux
15
+ * obs-qsv11: Fix QuickSync LA_ICQ encoder settings
16
+ * rtmp-services: Remove executable bits from json files
17
+ * obs-ffmpeg: Expose old NVENC on Windows 7
18
+ * UI: Fix text handling for dialogs
19
+ * libobs-winrt: Stronger exception handling
20
+ * UI: Fix silent scenes with imported SL scenes
21
+
22
+-------------------------------------------------------------------
23
Tue Mar 24 15:03:52 UTC 2020 - jimmy@boombatower.com
24
25
- Update to version 25.0.3:
26
obs-studio.spec
Changed
8
1
2
Name: obs-studio
3
-Version: 25.0.3
4
+Version: 25.0.4
5
Release: 0
6
Summary: A recording/broadcasting program
7
Group: Productivity/Multimedia/Video/Editors and Convertors
8
_service
Changed
10
1
2
<services>
3
<service name="tar_scm" mode="disabled">
4
<param name="versionformat">@PARENT_TAG@</param>
5
- <param name="revision">refs/tags/25.0.3</param>
6
+ <param name="revision">refs/tags/25.0.4</param>
7
<param name="url">git://github.com/jp9000/obs-studio.git</param>
8
<param name="scm">git</param>
9
<param name="changesgenerate">enable</param>
10
_servicedata
Changed
9
1
2
<servicedata>
3
<service name="tar_scm">
4
<param name="url">git://github.com/jp9000/obs-studio.git</param>
5
- <param name="changesrevision">3c78a8aa8d5f5c3fd0242697c06582dc96daa012</param>
6
+ <param name="changesrevision">47058d9b6999f14bb5e2c76f7ae449efa2ca1c13</param>
7
</service>
8
</servicedata>
9
obs-studio-25.0.3.tar.xz/UI/forms/OBSBasicSettings.ui -> obs-studio-25.0.4.tar.xz/UI/forms/OBSBasicSettings.ui
Changed
14
1
2
</item>
3
<item row="0" column="1">
4
<widget class="QStackedWidget" name="serverStackedWidget">
5
+ <property name="sizePolicy">
6
+ <sizepolicy hsizetype="Preferred" vsizetype="Maximum">
7
+ <horstretch>0</horstretch>
8
+ <verstretch>0</verstretch>
9
+ </sizepolicy>
10
+ </property>
11
<property name="currentIndex">
12
<number>1</number>
13
</property>
14
obs-studio-25.0.3.tar.xz/UI/importers/sl.cpp -> obs-studio-25.0.4.tar.xz/UI/importers/sl.cpp
Changed
30
1
2
Json::array filter_items = in_filters["items"].array_items();
3
4
Json in_settings = scene["settings"];
5
- Json in_sync = scene["syncOffset"];
6
7
- int sync = (int)(in_sync["sec"].number_value() * 1000000000 +
8
- in_sync["nsec"].number_value());
9
-
10
- double vol = scene["volume"].number_value();
11
- bool muted = scene["muted"].bool_value();
12
string name = scene["name"].string_value();
13
- int monitoring = scene["monitoringType"].int_value();
14
15
Json::object out_hotkeys = Json::object{};
16
get_hotkey_bindings(out_hotkeys, hotkey_items, "");
17
18
{"id", "scene"},
19
{"sl_id", sl_id},
20
{"settings", in_settings},
21
- {"sync", sync},
22
- {"volume", vol},
23
- {"muted", muted},
24
+ {"volume", 1.0},
25
{"name", out_name},
26
- {"monitoring_type", monitoring},
27
{"private_settings", Json::object{}}};
28
29
Json in_items = scene["sceneItems"];
30
obs-studio-25.0.3.tar.xz/UI/properties-view.cpp -> obs-studio-25.0.4.tar.xz/UI/properties-view.cpp
Changed
19
1
2
* other open QDialogs on exit, and
3
* https://bugreports.qt-project.org/browse/QTBUG-34532
4
*/
5
-#ifdef __APPLE__
6
+#ifndef _WIN32
7
options |= QColorDialog::DontUseNativeDialog;
8
#endif
9
10
11
12
QFontDialog::FontDialogOptions options;
13
14
-#ifdef __APPLE__
15
+#ifndef _WIN32
16
options = QFontDialog::DontUseNativeDialog;
17
#endif
18
19
obs-studio-25.0.3.tar.xz/UI/window-basic-main.cpp -> obs-studio-25.0.4.tar.xz/UI/window-basic-main.cpp
Changed
10
1
2
obs_data_get_string(curPrivData, "color");
3
const char *customColor = *oldColor != 0 ? oldColor
4
: "#55FF0000";
5
-#ifdef __APPLE__
6
+#ifndef _WIN32
7
options |= QColorDialog::DontUseNativeDialog;
8
#endif
9
10
obs-studio-25.0.3.tar.xz/UI/window-importer.cpp -> obs-studio-25.0.4.tar.xz/UI/window-importer.cpp
Changed
20
1
2
QSizePolicy::ControlType::LineEdit));
3
layout->addWidget(text);
4
5
+ QObject::connect(text, SIGNAL(editingFinished()), this,
6
+ SLOT(updateText()));
7
+
8
QToolButton *browseButton = new QToolButton();
9
browseButton->setText("...");
10
browseButton->setSizePolicy(buttonSizePolicy);
11
12
{
13
QLineEdit *text = editor->findChild<QLineEdit *>();
14
text->setText(index.data().toString());
15
- QObject::connect(text, SIGNAL(textEdited(QString)), this,
16
- SLOT(updateText()));
17
editor->setProperty(PATH_LIST_PROP, QVariant());
18
}
19
20
obs-studio-25.0.3.tar.xz/UI/window-remux.cpp -> obs-studio-25.0.4.tar.xz/UI/window-remux.cpp
Changed
20
1
2
QSizePolicy::ControlType::LineEdit));
3
layout->addWidget(text);
4
5
+ QObject::connect(text, SIGNAL(editingFinished()), this,
6
+ SLOT(updateText()));
7
+
8
QToolButton *browseButton = new QToolButton();
9
browseButton->setText("...");
10
browseButton->setSizePolicy(buttonSizePolicy);
11
12
{
13
QLineEdit *text = editor->findChild<QLineEdit *>();
14
text->setText(index.data().toString());
15
- QObject::connect(text, SIGNAL(textEdited(QString)), this,
16
- SLOT(updateText()));
17
editor->setProperty(PATH_LIST_PROP, QVariant());
18
}
19
20
obs-studio-25.0.3.tar.xz/docs/sphinx/conf.py -> obs-studio-25.0.4.tar.xz/docs/sphinx/conf.py
Changed
13
1
2
# built documents.
3
#
4
# The short X.Y version.
5
-version = '20.1.0'
6
+version = '25.0.0'
7
# The full version, including alpha/beta/rc tags.
8
-release = '20.1.0'
9
+release = '25.0.0'
10
11
# The language for content autogenerated by Sphinx. Refer to documentation
12
# for a list of supported languages.
13
obs-studio-25.0.3.tar.xz/libobs-winrt/winrt-capture.cpp -> obs-studio-25.0.4.tar.xz/libobs-winrt/winrt-capture.cpp
Changed
59
1
2
return winrt::Windows::Foundation::Metadata::ApiInformation::
3
IsApiContractPresent(L"Windows.Foundation.UniversalApiContract",
4
8);
5
-} catch (winrt::hresult_error &err) {
6
+} catch (const winrt::hresult_error &err) {
7
blog(LOG_ERROR, "winrt_capture_supported (0x%08X): %ls", err.to_abi(),
8
err.message().c_str());
9
return false;
10
+} catch (...) {
11
+ blog(LOG_ERROR, "winrt_capture_supported (0x%08X)",
12
+ winrt::to_hresult());
13
+ return false;
14
}
15
16
extern "C" EXPORT BOOL winrt_capture_cursor_toggle_supported()
17
18
#else
19
return false;
20
#endif
21
-} catch (winrt::hresult_error &err) {
22
+} catch (const winrt::hresult_error &err) {
23
blog(LOG_ERROR, "winrt_capture_cursor_toggle_supported (0x%08X): %ls",
24
err.to_abi(), err.message().c_str());
25
return false;
26
+} catch (...) {
27
+ blog(LOG_ERROR, "winrt_capture_cursor_toggle_supported (0x%08X)",
28
+ winrt::to_hresult());
29
+ return false;
30
}
31
32
template<typename T>
33
34
blog(LOG_ERROR, "CreateForWindow (0x%08X): %ls", err.to_abi(),
35
err.message().c_str());
36
return nullptr;
37
+ } catch (...) {
38
+ blog(LOG_ERROR, "CreateForWindow (0x%08X)",
39
+ winrt::to_hresult());
40
+ return nullptr;
41
}
42
43
const winrt::Windows::Graphics::DirectX::Direct3D11::IDirect3DDevice
44
45
46
return capture;
47
48
-} catch (winrt::hresult_error &err) {
49
+} catch (const winrt::hresult_error &err) {
50
blog(LOG_ERROR, "winrt_capture_init (0x%08X): %ls", err.to_abi(),
51
err.message().c_str());
52
return nullptr;
53
+} catch (...) {
54
+ blog(LOG_ERROR, "winrt_capture_init (0x%08X)", winrt::to_hresult());
55
+ return nullptr;
56
}
57
58
extern "C" EXPORT void winrt_capture_free(struct winrt_capture *capture)
59
obs-studio-25.0.3.tar.xz/libobs/obs-cocoa.m -> obs-studio-25.0.4.tar.xz/libobs/obs-cocoa.m
Changed
62
1
2
blog(LOG_INFO, "OS Name: %s", name ? name : "Unknown");
3
}
4
5
+static bool using_10_15_or_above = true;
6
+
7
static void log_os_version(id pi, SEL UTF8StringSel)
8
{
9
typedef id (*version_func)(id, SEL);
10
11
const char *version = UTF8String(vs, UTF8StringSel);
12
13
blog(LOG_INFO, "OS Version: %s", version ? version : "Unknown");
14
+
15
+ if (version) {
16
+ int major;
17
+ int minor;
18
+
19
+ int count = sscanf(version, "Version %d.%d", &major, &minor);
20
+ if (count == 2 && major == 10) {
21
+ using_10_15_or_above = minor >= 15;
22
+ }
23
+ }
24
}
25
26
static void log_os(void)
27
28
29
struct obs_hotkeys_platform {
30
volatile long refs;
31
+ bool secure_input_activated;
32
TISInputSourceRef tis;
33
CFDataRef layout_data;
34
UCKeyboardLayout *layout;
35
36
if (key >= OBS_KEY_LAST_VALUE)
37
return false;
38
39
+ /* if secure input is activated, kill hotkeys.
40
+ *
41
+ * TODO: rewrite all mac hotkey code, suspect there's a bug in 10.15
42
+ * causing the crash internally. */
43
+ if (plat->secure_input_activated) {
44
+ return false;
45
+ }
46
+
47
for (size_t i = 0; i < plat->keys[key].num;) {
48
IOHIDElementRef element = plat->keys[key].array[i];
49
IOHIDValueRef value = 0;
50
51
continue;
52
}
53
54
+ if (using_10_15_or_above && IsSecureEventInputEnabled()) {
55
+ plat->secure_input_activated = true;
56
+ return false;
57
+ }
58
+
59
if (IOHIDDeviceGetValue(device, element, &value) !=
60
kIOReturnSuccess) {
61
i += 1;
62
obs-studio-25.0.3.tar.xz/libobs/obs-config.h -> obs-studio-25.0.4.tar.xz/libobs/obs-config.h
Changed
10
1
2
*
3
* Reset to zero each major or minor version
4
*/
5
-#define LIBOBS_API_PATCH_VER 3
6
+#define LIBOBS_API_PATCH_VER 4
7
8
#define MAKE_SEMANTIC_VERSION(major, minor, patch) \
9
((major << 24) | (minor << 16) | patch)
10
obs-studio-25.0.3.tar.xz/plugins/decklink/decklink-output.cpp -> obs-studio-25.0.4.tar.xz/plugins/decklink/decklink-output.cpp
Changed
11
1
2
3
device.Set(deviceEnum->FindByHash(decklink->deviceHash));
4
5
+ if (!device)
6
+ return false;
7
+
8
DeckLinkDeviceMode *mode = device->FindOutputMode(decklink->modeID);
9
10
decklink->SetSize(mode->GetWidth(), mode->GetHeight());
11
obs-studio-25.0.3.tar.xz/plugins/obs-browser/CMakeLists.txt -> obs-studio-25.0.4.tar.xz/plugins/obs-browser/CMakeLists.txt
Changed
18
1
2
endif()
3
endif()
4
5
+if(UNIX AND NOT APPLE)
6
+ find_package(X11 REQUIRED)
7
+ if(NOT X11_FOUND)
8
+ message(STATUS "X11 Not found -- obs-browser plugin disabled.")
9
+ return()
10
+ endif()
11
+ include_directories("${X11_INCLUDE_DIR}")
12
+endif()
13
+
14
+
15
configure_file(
16
"${CMAKE_CURRENT_SOURCE_DIR}/browser-config.h.in"
17
"${CMAKE_CURRENT_BINARY_DIR}/browser-config.h")
18
obs-studio-25.0.4.tar.xz/plugins/obs-browser/linux-keyboard-helpers.hpp
Added
201
1
2
+#pragma once
3
+
4
+#define XK_3270
5
+#include <X11/keysym.h>
6
+#include <X11/XF86keysym.h>
7
+
8
+#ifndef VKEY_UNKNOWN
9
+
10
+#define VKEY_UNKNOWN 0
11
+
12
+// POSIX specific VKEYs. Note that as of Windows SDK 7.1, 0x97-9F, 0xD8-DA,
13
+// and 0xE8 are unassigned.
14
+#define VKEY_WLAN 0x97
15
+#define VKEY_POWER 0x98
16
+#define VKEY_BRIGHTNESS_DOWN 0xD8
17
+#define VKEY_BRIGHTNESS_UP 0xD9
18
+#define VKEY_KBD_BRIGHTNESS_DOWN 0xDA
19
+#define VKEY_KBD_BRIGHTNESS_UP 0xE8
20
+
21
+// Windows does not have a specific key code for AltGr. We use the unused 0xE1
22
+// (VK_OEM_AX) code to represent AltGr, matching the behaviour of Firefox on
23
+// Linux.
24
+#define VKEY_ALTGR 0xE1
25
+// Windows does not have a specific key code for Compose. We use the unused
26
+// 0xE6 (VK_ICO_CLEAR) code to represent Compose.
27
+#define VKEY_COMPOSE 0xE6
28
+
29
+// Left mouse button
30
+#ifndef VKEY_LBUTTON
31
+#define VKEY_LBUTTON 0x01
32
+#endif
33
+// Right mouse button
34
+#ifndef VKEY_RBUTTON
35
+#define VKEY_RBUTTON 0x02
36
+#endif
37
+// Middle mouse button (three-button mouse)
38
+#ifndef VKEY_MBUTTON
39
+#define VKEY_MBUTTON 0x04
40
+#endif
41
+#ifndef VKEY_XBUTTON1
42
+#define VKEY_XBUTTON1 0x05
43
+#endif
44
+#ifndef VKEY_XBUTTON2
45
+#define VKEY_XBUTTON2 0x06
46
+#endif
47
+
48
+#ifndef VKEY_BACK
49
+#define VKEY_BACK 0x08
50
+#endif
51
+#ifndef VKEY_TAB
52
+#define VKEY_TAB 0x09
53
+#endif
54
+#ifndef VKEY_CLEAR
55
+#define VKEY_CLEAR 0x0C
56
+#endif
57
+#ifndef VKEY_RETURN
58
+#define VKEY_RETURN 0x0D
59
+#endif
60
+#ifndef VKEY_SHIFT
61
+#define VKEY_SHIFT 0x10
62
+#endif
63
+#ifndef VKEY_CONTROL
64
+#define VKEY_CONTROL 0x11 // CTRL key
65
+#endif
66
+#ifndef VKEY_MENU
67
+#define VKEY_MENU 0x12 // ALT key
68
+#endif
69
+#ifndef VKEY_PAUSE
70
+#define VKEY_PAUSE 0x13 // PAUSE key
71
+#endif
72
+#ifndef VKEY_CAPITAL
73
+#define VKEY_CAPITAL 0x14 // CAPS LOCK key
74
+#endif
75
+#ifndef VKEY_KANA
76
+#define VKEY_KANA 0x15 // Input Method Editor (IME) Kana mode
77
+#endif
78
+#ifndef VKEY_HANGUL
79
+#define VKEY_HANGUL 0x15 // IME Hangul mode
80
+#endif
81
+#ifndef VKEY_JUNJA
82
+#define VKEY_JUNJA 0x17 // IME Junja mode
83
+#endif
84
+#ifndef VKEY_FINAL
85
+#define VKEY_FINAL 0x18 // IME final mode
86
+#endif
87
+#ifndef VKEY_HANJA
88
+#define VKEY_HANJA 0x19 // IME Hanja mode
89
+#endif
90
+#ifndef VKEY_KANJI
91
+#define VKEY_KANJI 0x19 // IME Kanji mode
92
+#endif
93
+#ifndef VKEY_ESCAPE
94
+#define VKEY_ESCAPE 0x1B // ESC key
95
+#endif
96
+#ifndef VKEY_CONVERT
97
+#define VKEY_CONVERT 0x1C // IME convert
98
+#endif
99
+#ifndef VKEY_NONCONVERT
100
+#define VKEY_NONCONVERT 0x1D // IME nonconvert
101
+#endif
102
+#ifndef VKEY_ACCEPT
103
+#define VKEY_ACCEPT 0x1E // IME accept
104
+#endif
105
+#ifndef VKEY_MODECHANGE
106
+#define VKEY_MODECHANGE 0x1F // IME mode change request
107
+#endif
108
+#ifndef VKEY_SPACE
109
+#define VKEY_SPACE 0x20 // SPACE key
110
+#endif
111
+#ifndef VKEY_PRIOR
112
+#define VKEY_PRIOR 0x21 // PAGE UP key
113
+#endif
114
+#ifndef VKEY_NEXT
115
+#define VKEY_NEXT 0x22 // PAGE DOWN key
116
+#endif
117
+#ifndef VKEY_END
118
+#define VKEY_END 0x23 // END key
119
+#endif
120
+#ifndef VKEY_HOME
121
+#define VKEY_HOME 0x24 // HOME key
122
+#endif
123
+#ifndef VKEY_LEFT
124
+#define VKEY_LEFT 0x25 // LEFT ARROW key
125
+#endif
126
+#ifndef VKEY_UP
127
+#define VKEY_UP 0x26 // UP ARROW key
128
+#endif
129
+#ifndef VKEY_RIGHT
130
+#define VKEY_RIGHT 0x27 // RIGHT ARROW key
131
+#endif
132
+#ifndef VKEY_DOWN
133
+#define VKEY_DOWN 0x28 // DOWN ARROW key
134
+#endif
135
+#ifndef VKEY_SELECT
136
+#define VKEY_SELECT 0x29 // SELECT key
137
+#endif
138
+#ifndef VKEY_PRINT
139
+#define VKEY_PRINT 0x2A // PRINT key
140
+#endif
141
+#ifndef VKEY_EXECUTE
142
+#define VKEY_EXECUTE 0x2B // EXECUTE key
143
+#endif
144
+#ifndef VKEY_SNAPSHOT
145
+#define VKEY_SNAPSHOT 0x2C // PRINT SCREEN key
146
+#endif
147
+#ifndef VKEY_INSERT
148
+#define VKEY_INSERT 0x2D // INS key
149
+#endif
150
+#ifndef VKEY_DELETE
151
+#define VKEY_DELETE 0x2E // DEL key
152
+#endif
153
+#ifndef VKEY_HELP
154
+#define VKEY_HELP 0x2F // HELP key
155
+#endif
156
+
157
+#define VKEY_0 0x30
158
+#define VKEY_1 0x31
159
+#define VKEY_2 0x32
160
+#define VKEY_3 0x33
161
+#define VKEY_4 0x34
162
+#define VKEY_5 0x35
163
+#define VKEY_6 0x36
164
+#define VKEY_7 0x37
165
+#define VKEY_8 0x38
166
+#define VKEY_9 0x39
167
+#define VKEY_A 0x41
168
+#define VKEY_B 0x42
169
+#define VKEY_C 0x43
170
+#define VKEY_D 0x44
171
+#define VKEY_E 0x45
172
+#define VKEY_F 0x46
173
+#define VKEY_G 0x47
174
+#define VKEY_H 0x48
175
+#define VKEY_I 0x49
176
+#define VKEY_J 0x4A
177
+#define VKEY_K 0x4B
178
+#define VKEY_L 0x4C
179
+#define VKEY_M 0x4D
180
+#define VKEY_N 0x4E
181
+#define VKEY_O 0x4F
182
+#define VKEY_P 0x50
183
+#define VKEY_Q 0x51
184
+#define VKEY_R 0x52
185
+#define VKEY_S 0x53
186
+#define VKEY_T 0x54
187
+#define VKEY_U 0x55
188
+#define VKEY_V 0x56
189
+#define VKEY_W 0x57
190
+#define VKEY_X 0x58
191
+#define VKEY_Y 0x59
192
+#define VKEY_Z 0x5A
193
+
194
+#define VKEY_LWIN 0x5B // Left Windows key (Microsoft Natural keyboard)
195
+
196
+#define VKEY_RWIN 0x5C // Right Windows key (Natural keyboard)
197
+
198
+#define VKEY_APPS 0x5D // Applications key (Natural keyboard)
199
+
200
+#define VKEY_SLEEP 0x5F // Computer Sleep key
201
obs-studio-25.0.3.tar.xz/plugins/obs-browser/obs-browser-source.cpp -> obs-studio-25.0.4.tar.xz/plugins/obs-browser/obs-browser-source.cpp
Changed
54
1
2
#include <thread>
3
#include <mutex>
4
5
+#ifdef __linux__
6
+#include "linux-keyboard-helpers.hpp"
7
+#endif
8
+
9
#ifdef USE_QT_LOOP
10
#include <QEventLoop>
11
#include <QThread>
12
13
{
14
uint32_t modifiers = event->modifiers;
15
std::string text = event->text;
16
+#ifdef __linux__
17
+ uint32_t native_vkey = KeyboardCodeFromXKeysym(event->native_vkey);
18
+#else
19
uint32_t native_vkey = event->native_vkey;
20
+#endif
21
+ uint32_t native_scancode = event->native_scancode;
22
+ uint32_t native_modifiers = event->native_modifiers;
23
24
ExecuteOnBrowser(
25
[=](CefRefPtr<CefBrowser> cefBrowser) {
26
CefKeyEvent e;
27
e.windows_key_code = native_vkey;
28
- e.native_key_code = 0;
29
+ e.native_key_code = native_scancode;
30
31
e.type = key_up ? KEYEVENT_KEYUP : KEYEVENT_RAWKEYDOWN;
32
33
34
}
35
36
//e.native_key_code = native_vkey;
37
- e.modifiers = modifiers;
38
+ e.modifiers = native_modifiers;
39
40
cefBrowser->GetHost()->SendKeyEvent(e);
41
if (!text.empty() && !key_up) {
42
e.type = KEYEVENT_CHAR;
43
+#ifdef __linux__
44
+ e.windows_key_code =
45
+ KeyboardCodeFromXKeysym(e.character);
46
+#else
47
e.windows_key_code = e.character;
48
- e.native_key_code = native_vkey;
49
+#endif
50
+ e.native_key_code = native_scancode;
51
cefBrowser->GetHost()->SendKeyEvent(e);
52
}
53
},
54
obs-studio-25.0.3.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg.c -> obs-studio-25.0.4.tar.xz/plugins/obs-ffmpeg/obs-ffmpeg.c
Changed
13
1
2
#ifdef _WIN32
3
if (get_win_ver_int() > 0x0601) {
4
jim_nvenc_load();
5
+ } else {
6
+ // if on Win 7, new nvenc isn't available so there's
7
+ // no nvenc encoder for the user to select, expose
8
+ // the old encoder directly
9
+ nvenc_encoder_info.caps &= ~OBS_ENCODER_CAP_INTERNAL;
10
}
11
#endif
12
obs_register_encoder(&nvenc_encoder_info);
13
obs-studio-25.0.3.tar.xz/plugins/obs-qsv11/QSV_Encoder_Internal.cpp -> obs-studio-25.0.4.tar.xz/plugins/obs-qsv11/QSV_Encoder_Internal.cpp
Changed
9
1
2
break;
3
case MFX_RATECONTROL_LA_ICQ:
4
m_mfxEncParams.mfx.ICQQuality = pParams->nICQQuality;
5
+ break;
6
case MFX_RATECONTROL_LA_HRD:
7
m_mfxEncParams.mfx.TargetKbps = pParams->nTargetBitRate;
8
m_mfxEncParams.mfx.MaxKbps = pParams->nTargetBitRate;
9
obs-studio-25.0.3.tar.xz/plugins/win-capture/graphics-hook-ver.h -> obs-studio-25.0.4.tar.xz/plugins/win-capture/graphics-hook-ver.h
Changed
10
1
2
3
#define HOOK_VER_MAJOR 1
4
#define HOOK_VER_MINOR 1
5
-#define HOOK_VER_PATCH 3
6
+#define HOOK_VER_PATCH 4
7
8
#define STRINGIFY(s) #s
9
#define MAKE_VERSION_NAME(major, minor, patch) \
10
obs-studio-25.0.3.tar.xz/plugins/win-capture/graphics-hook/vulkan-capture.c -> obs-studio-25.0.4.tar.xz/plugins/win-capture/graphics-hook/vulkan-capture.c
Changed
106
1
2
}
3
4
static VkResult VKAPI OBS_CreateDevice(VkPhysicalDevice phy_device,
5
- const VkDeviceCreateInfo *cinfo,
6
+ const VkDeviceCreateInfo *info,
7
const VkAllocationCallbacks *ac,
8
VkDevice *p_device)
9
{
10
- VkDeviceCreateInfo info = *cinfo;
11
struct vk_inst_data *idata = get_inst_data(phy_device);
12
struct vk_inst_funcs *ifuncs = &idata->funcs;
13
struct vk_data *data = NULL;
14
15
VkResult ret = VK_ERROR_INITIALIZATION_FAILED;
16
17
- VkLayerDeviceCreateInfo *ldci = (void *)info.pNext;
18
+ VkLayerDeviceCreateInfo *ldci = (void *)info->pNext;
19
20
/* -------------------------------------------------------- */
21
/* step through chain until we get to the link info */
22
23
PFN_vkCreateDevice createFunc =
24
(PFN_vkCreateDevice)gipa(VK_NULL_HANDLE, "vkCreateDevice");
25
26
- ret = createFunc(phy_device, idata->valid ? &info : cinfo, ac,
27
- p_device);
28
+ ret = createFunc(phy_device, info, ac, p_device);
29
if (ret != VK_SUCCESS) {
30
goto fail;
31
}
32
33
if (funcs_not_found) {
34
goto fail;
35
}
36
+
37
if (!idata->valid) {
38
flog("instance not valid");
39
goto fail;
40
41
if (!data)
42
return;
43
44
- for (uint32_t fam_idx = 0; fam_idx < _countof(data->cmd_pools);
45
- fam_idx++) {
46
- struct vk_cmd_pool_data *pool_data = &data->cmd_pools[fam_idx];
47
- if (pool_data->cmd_pool != VK_NULL_HANDLE) {
48
- vk_shtex_destroy_cmd_pool_objects(data, pool_data);
49
+ if (data->valid) {
50
+ for (uint32_t fam_idx = 0; fam_idx < _countof(data->cmd_pools);
51
+ fam_idx++) {
52
+ struct vk_cmd_pool_data *pool_data =
53
+ &data->cmd_pools[fam_idx];
54
+ if (pool_data->cmd_pool != VK_NULL_HANDLE) {
55
+ vk_shtex_destroy_cmd_pool_objects(data,
56
+ pool_data);
57
+ }
58
}
59
}
60
61
62
const VkAllocationCallbacks *ac, VkSwapchainKHR *p_sc)
63
{
64
struct vk_data *data = get_device_data(device);
65
- struct vk_device_funcs *funcs = &data->funcs;
66
67
VkSwapchainCreateInfoKHR info = *cinfo;
68
- info.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
69
+ if (data->valid)
70
+ info.imageUsage |= VK_IMAGE_USAGE_TRANSFER_SRC_BIT;
71
72
+ struct vk_device_funcs *funcs = &data->funcs;
73
VkResult res = funcs->CreateSwapchainKHR(device, &info, ac, p_sc);
74
debug_res("CreateSwapchainKHR", res);
75
- if (res != VK_SUCCESS)
76
+ if ((res != VK_SUCCESS) || !data->valid)
77
return res;
78
+
79
VkSwapchainKHR sc = *p_sc;
80
81
uint32_t count = 0;
82
83
struct vk_data *data = get_device_data(device);
84
struct vk_device_funcs *funcs = &data->funcs;
85
86
- struct vk_swap_data *swap = get_swap_data(data, sc);
87
- if (swap) {
88
- if (data->cur_swap == swap) {
89
- vk_shtex_free(data);
90
+ if (data->valid) {
91
+ struct vk_swap_data *swap = get_swap_data(data, sc);
92
+ if (swap) {
93
+ if (data->cur_swap == swap) {
94
+ vk_shtex_free(data);
95
+ }
96
+
97
+ swap->sc = VK_NULL_HANDLE;
98
+ swap->hwnd = NULL;
99
}
100
-
101
- swap->sc = VK_NULL_HANDLE;
102
- swap->hwnd = NULL;
103
}
104
105
funcs->DestroySwapchainKHR(device, sc, ac);
106