Overview

Request 6200 (superseded)

- Update to version 31.0.1:
* Update translations from Crowdin
* libobs: Update version to 31.0.1
* UI: Use filename stem as fallback value on empty collection name
* UI: Prevent creation of scene collections with empty name
* libobs: Fix underlinking by adding libx11
* image-source: Fix slideshow stopping on last file in random mode
* obs-nvenc: Abort encoder init if custom options are invalid
* obs-nvenc: Fix translation string for 4:4:4 unsupported error
* cmake: Turn off camera reaction by default on macOS 14.4 and later
* libobs: Fix deadlock on macOS input method change
* libobs-opengl: Avoid trying to allocate 0 byte on Linux
* UI: Fix linux base folder location
* UI: Fix remigrating scene collections from absolute to relative
* CI: Disable Flatpak bundling on publish
* obs-filters: Maintain order of migrated NVAFX filters
* CI: Disable PVS-Studio job
* libobs/util: Improve inhibit portal detection on Linux
* win-capture: Add The Bazaar to compatibility list (#11601)
* win-capture: Add Marvel Rivals to compatibility list (#11594)


obs-studio.changes Changed
x
 
1
@@ -1,4 +1,20 @@
2
 -------------------------------------------------------------------
3
+Fri Mar 07 23:49:06 UTC 2025 - packman@nordisch.org
4
+
5
+- Update to version 31.0.2:
6
+  * libobs: Update version to 31.0.2
7
+  * mac-avcapture: Prevent race condition in source init/deinit
8
+  * win-dshow: Fix possible crash if frame width or height is zero
9
+  * obs-browser: Update version to 2.24.5
10
+  * obs-websocket: Update version to 5.5.5
11
+  * obs-nvenc: Fix lookahead depth value logging
12
+  * obs-nvenc: Correct max target quality for AV1
13
+  * cmake: Fix regexp to detect installed FFmpeg version
14
+  * nv-filters: Remove CUDA RT functions
15
+  * nv-filters: Update SDK version targeted
16
+  * obs-scripting: Fix macOS Homebrew Python loading
17
+
18
+-------------------------------------------------------------------
19
 Mon Jan 20 09:57:57 UTC 2025 - darix <packman@nordisch.org>
20
 
21
 - make nvenc handling more readable
22
obs-studio.spec Changed
10
 
1
@@ -35,7 +35,7 @@
2
 %endif
3
 
4
 Name:           obs-studio
5
-Version:        31.0.1
6
+Version:        31.0.2
7
 Release:        0
8
 Summary:        A recording/broadcasting program
9
 Group:          Productivity/Multimedia/Video/Editors and Convertors
10
_service Changed
10
 
1
@@ -1,7 +1,7 @@
2
 <services>
3
   <service name="tar_scm" mode="disabled">
4
     <param name="versionformat">@PARENT_TAG@</param>
5
-    <param name="revision">31.0.1</param>
6
+    <param name="revision">31.0.2</param>
7
     <param name="url">https://github.com/obsproject/obs-studio.git</param>
8
     <param name="versionrewrite-pattern">(\.\d+)-(a-z.*)</param>
9
     <param name="versionrewrite-replacement">\1~\2</param>
10
_servicedata Changed
10
 
1
@@ -1,6 +1,6 @@
2
 <servicedata>
3
   <service name="tar_scm">
4
     <param name="url">https://github.com/obsproject/obs-studio.git</param>
5
-    <param name="changesrevision">b7b7c4cbbcd86eb29d8bbc51765be0338ed6814d</param>
6
+    <param name="changesrevision">e6137e15e0fb26b3aa47a66df28e9f056d54b9af</param>
7
   </service>
8
 </servicedata>
9
\ No newline at end of file
10
obs-studio-31.0.1.tar.xz/build-aux/modules/99-cef.json -> obs-studio-31.0.2.tar.xz/build-aux/modules/99-cef.json Changed
12
 
1
@@ -17,8 +17,8 @@
2
     "sources": 
3
         {
4
             "type": "archive",
5
-            "url": "https://cdn-fastly.obsproject.com/downloads/cef_binary_6533_linux_x86_64.tar.xz",
6
-            "sha256": "fab66dfc9cfd2e26fb87798f855aef30c2004edc8e19570d37af555644ae1655"
7
+            "url": "https://cdn-fastly.obsproject.com/downloads/cef_binary_6533_linux_x86_64_v3.tar.xz",
8
+            "sha256": "cb7225c7a937ac4cdc9c41700061f45cccc640d696902357782e57f8250bf43a"
9
         }
10
     
11
 }
12
obs-studio-31.0.1.tar.xz/buildspec.json -> obs-studio-31.0.2.tar.xz/buildspec.json Changed
25
 
1
@@ -27,11 +27,18 @@
2
             "baseUrl": "https://cdn-fastly.obsproject.com/downloads",
3
             "label": "Chromium Embedded Framework",
4
             "hashes": {
5
-                "macos-x86_64": "139c6664b6c9c446e0b56f303586fa6bd4b3587bae4742e13967c2f0f99c8740",
6
-                "macos-arm64": "8e833fce815b83114ab381c055122a18dc415e29af5c4db0a577caf4b817baa2",
7
-                "ubuntu-x86_64": "fab66dfc9cfd2e26fb87798f855aef30c2004edc8e19570d37af555644ae1655",
8
-                "ubuntu-aarch64": "ab09f04e534306d3f301ea997c03a6a9f7bd245042d50a434f17c1c98ac64b89",
9
-                "windows-x64": "87b1033ff0f8f2fb7262d8a236bc36b981cb50d24b401c20cdf9b31099a9a217"
10
+                "macos-x86_64": "02478ad91d284d7717ea48aad90c4ecbe90f8c6a982c48861aa149b7466505eb",
11
+                "macos-arm64": "6a1084a985366f3f0695b1ecd902d326a2d6f286a067935d83567d4fe94bf62b",
12
+                "ubuntu-x86_64": "cb7225c7a937ac4cdc9c41700061f45cccc640d696902357782e57f8250bf43a",
13
+                "ubuntu-aarch64": "f92df7f076bdc8cac2e3c77e27be418008b7168723201cb73fdbc2f6d91bc778",
14
+                "windows-x64": "922efbda1f2f8be9e5b2754d878a14d90afc81f04e94fc9101a7513e2b5cecc1"
15
+            },
16
+            "revision": {
17
+                "macos-x86_64": 2,
18
+                "macos-arm64": 2,
19
+                "ubuntu-x86_64": 3,
20
+                "ubuntu-aarch64": 3,
21
+                "windows-x64": 2
22
             }
23
         }
24
     },
25
obs-studio-31.0.1.tar.xz/cmake/finders/FindFFmpeg.cmake -> obs-studio-31.0.2.tar.xz/cmake/finders/FindFFmpeg.cmake Changed
10
 
1
@@ -295,7 +295,7 @@
2
     STRINGS
3
     "${FFmpeg_avutil_INCLUDE_DIR}/libavutil/ffversion.h"
4
     _version_string
5
-    REGEX "^.*FFMPEG_VERSION \t+\"n?0-9a-z\\~.-+\" \t*$"
6
+    REGEX "^.*FFMPEG_VERSION \t+\"n?0-9a-z\\~+.-+\" \t*$"
7
   )
8
   string(REGEX REPLACE ".*FFMPEG_VERSION \t+\"n?(0-9+\\.0-9).*\".*" "\\1" FFmpeg_VERSION "${_version_string}")
9
 endif()
10
obs-studio-31.0.1.tar.xz/libobs/obs-config.h -> obs-studio-31.0.2.tar.xz/libobs/obs-config.h Changed
10
 
1
@@ -41,7 +41,7 @@
2
  *
3
  * Reset to zero each major or minor version
4
  */
5
-#define LIBOBS_API_PATCH_VER 1
6
+#define LIBOBS_API_PATCH_VER 2
7
 
8
 #define MAKE_SEMANTIC_VERSION(major, minor, patch) ((major << 24) | (minor << 16) | patch)
9
 
10
obs-studio-31.0.1.tar.xz/plugins/mac-avcapture/plugin-main.m -> obs-studio-31.0.2.tar.xz/plugins/mac-avcapture/plugin-main.m Changed
58
 
1
@@ -228,33 +228,36 @@
2
     if (!capture) {
3
         return;
4
     }
5
+    /// It is possible that the source's serial queue is still creating this source, so perform destruction
6
+    /// synchronously on that queue to ensure the source is fully initialized before being destroyed.
7
+    dispatch_sync(capture.sessionQueue, ^{
8
+        OBSAVCaptureInfo *capture_info = capture.captureInfo;
9
 
10
-    OBSAVCaptureInfo *capture_info = capture.captureInfo;
11
-
12
-    capture stopCaptureSession;
13
-    capture.deviceInput.device unlockForConfiguration;
14
+        capture stopCaptureSession;
15
+        capture.deviceInput.device unlockForConfiguration;
16
 
17
-    if (capture_info->isFastPath) {
18
-        pthread_mutex_destroy(&capture_info->mutex);
19
-    }
20
+        if (capture_info->isFastPath) {
21
+            pthread_mutex_destroy(&capture_info->mutex);
22
+        }
23
 
24
-    if (capture_info->videoFrame) {
25
-        bfree(capture_info->videoFrame);
26
-        capture_info->videoFrame = NULL;
27
-    }
28
+        if (capture_info->videoFrame) {
29
+            bfree(capture_info->videoFrame);
30
+            capture_info->videoFrame = NULL;
31
+        }
32
 
33
-    if (capture_info->audioFrame) {
34
-        bfree(capture_info->audioFrame);
35
-        capture_info->audioFrame = NULL;
36
-    }
37
+        if (capture_info->audioFrame) {
38
+            bfree(capture_info->audioFrame);
39
+            capture_info->audioFrame = NULL;
40
+        }
41
 
42
-    if (capture_info->sampleBufferDescription) {
43
-        capture_info->sampleBufferDescription = NULL;
44
-    }
45
+        if (capture_info->sampleBufferDescription) {
46
+            capture_info->sampleBufferDescription = NULL;
47
+        }
48
 
49
-    bfree(capture_info);
50
+        bfree(capture_info);
51
 
52
-    CFBridgingRelease((__bridge CFTypeRef _Nullable)(capture));
53
+        CFBridgingRelease((__bridge CFTypeRef _Nullable)(capture));
54
+    });
55
 }
56
 
57
 #pragma mark - OBS Module API
58
obs-studio-31.0.1.tar.xz/plugins/nv-filters/nv_sdk_versions.h -> obs-studio-31.0.2.tar.xz/plugins/nv-filters/nv_sdk_versions.h Changed
6
 
1
@@ -1,2 +1,2 @@
2
-#define MIN_VFX_SDK_VERSION (0 << 24 | 7 << 16 | 2 << 8 | 0 << 0)
3
-#define MIN_AFX_SDK_VERSION (1 << 24 | 3 << 16 | 0 << 0)
4
+#define MIN_VFX_SDK_VERSION (0 << 24 | 7 << 16 | 6 << 8 | 0 << 0)
5
+#define MIN_AFX_SDK_VERSION (1 << 24 | 6 << 16 | 1 << 8 | 2 << 0)
6
obs-studio-31.0.1.tar.xz/plugins/nv-filters/nvidia-videofx-filter.c -> obs-studio-31.0.2.tar.xz/plugins/nv-filters/nvidia-videofx-filter.c Changed
16
 
1
@@ -1189,14 +1189,6 @@
2
    LOAD_SYM(NvCVImage_FromD3DColorSpace);
3
 #undef LOAD_SYM
4
 
5
-#define LOAD_SYM(sym) LOAD_SYM_FROM_LIB(sym, nv_cudart, "cudart64_110.dll")
6
-   LOAD_SYM(cudaMalloc);
7
-   LOAD_SYM(cudaStreamSynchronize);
8
-   LOAD_SYM(cudaFree);
9
-   LOAD_SYM(cudaMemcpy);
10
-   LOAD_SYM(cudaMemsetAsync);
11
-#undef LOAD_SYM
12
-
13
 #define LOAD_SYM(sym) LOAD_SYM_FROM_LIB2(sym, nv_videofx, "NVVideoEffects.dll")
14
    LOAD_SYM(NvVFX_SetStateObjectHandleArray);
15
    LOAD_SYM(NvVFX_AllocateState);
16
obs-studio-31.0.1.tar.xz/plugins/nv-filters/nvvfx-load.h -> obs-studio-31.0.2.tar.xz/plugins/nv-filters/nvvfx-load.h Changed
28
 
1
@@ -670,15 +670,6 @@
2
        FreeLibrary(nv_cvimage);
3
        nv_cvimage = NULL;
4
    }
5
-   cudaMalloc = NULL;
6
-   cudaStreamSynchronize = NULL;
7
-   cudaFree = NULL;
8
-   cudaMemcpy = NULL;
9
-   cudaMemsetAsync = NULL;
10
-   if (nv_cudart) {
11
-       FreeLibrary(nv_cudart);
12
-       nv_cudart = NULL;
13
-   }
14
 }
15
 
16
 static inline void nvvfx_get_sdk_path(char *buffer, const size_t len)
17
@@ -702,9 +693,8 @@
18
 
19
    nv_videofx = LoadLibrary(L"NVVideoEffects.dll");
20
    nv_cvimage = LoadLibrary(L"NVCVImage.dll");
21
-   nv_cudart = LoadLibrary(L"cudart64_110.dll");
22
    SetDllDirectoryA(NULL);
23
-   return !!nv_videofx && !!nv_cvimage && !!nv_cudart;
24
+   return !!nv_videofx && !!nv_cvimage;
25
 }
26
 
27
 static unsigned int get_lib_version(void)
28
obs-studio-31.0.1.tar.xz/plugins/obs-browser/browser-app.cpp -> obs-studio-31.0.2.tar.xz/plugins/obs-browser/browser-app.cpp Changed
18
 
1
@@ -78,10 +78,16 @@
2
        // Don't override existing, as this can break OSR
3
        std::string disableFeatures = command_line->GetSwitchValue("disable-features");
4
        disableFeatures += ",HardwareMediaKeyHandling";
5
+#ifdef _WIN32
6
+       disableFeatures += ",EnableWindowsGamingInputDataFetcher";
7
+#endif
8
        disableFeatures += ",WebBluetooth";
9
        command_line->AppendSwitchWithValue("disable-features", disableFeatures);
10
    } else {
11
        command_line->AppendSwitchWithValue("disable-features", "WebBluetooth,"
12
+#ifdef _WIN32
13
+                                   "EnableWindowsGamingInputDataFetcher,"
14
+#endif
15
                                    "HardwareMediaKeyHandling");
16
    }
17
 
18
obs-studio-31.0.1.tar.xz/plugins/obs-browser/browser-client.cpp -> obs-studio-31.0.2.tar.xz/plugins/obs-browser/browser-client.cpp Changed
16
 
1
@@ -83,6 +83,14 @@
2
    return nullptr;
3
 }
4
 
5
+void BrowserClient::OnRenderProcessTerminated(CefRefPtr<CefBrowser>, TerminationStatus, int,
6
+                         const CefString &error_string)
7
+{
8
+   std::string str_text = error_string;
9
+   blog(LOG_ERROR, "obs-browser: '%s' Webpage has crashed unexpectedly! Reason: '%s'",
10
+        obs_source_get_name(bs->source), str_text.c_str());
11
+}
12
+
13
 CefResourceRequestHandler::ReturnValue BrowserClient::OnBeforeResourceLoad(CefRefPtr<CefBrowser>, CefRefPtr<CefFrame>,
14
                                       CefRefPtr<CefRequest>,
15
                                       CefRefPtr<CefCallback>)
16
obs-studio-31.0.1.tar.xz/plugins/obs-browser/browser-client.hpp -> obs-studio-31.0.2.tar.xz/plugins/obs-browser/browser-client.hpp Changed
10
 
1
@@ -98,6 +98,8 @@
2
    GetResourceRequestHandler(CefRefPtr<CefBrowser> browser, CefRefPtr<CefFrame> frame,
3
                  CefRefPtr<CefRequest> request, bool is_navigation, bool is_download,
4
                  const CefString &request_initiator, bool &disable_default_handling) override;
5
+   virtual void OnRenderProcessTerminated(CefRefPtr<CefBrowser> browser, TerminationStatus status, int error_code,
6
+                          const CefString &error_string) override;
7
 
8
    /* CefResourceRequestHandler */
9
    virtual CefResourceRequestHandler::ReturnValue OnBeforeResourceLoad(CefRefPtr<CefBrowser> browser,
10
obs-studio-31.0.1.tar.xz/plugins/obs-browser/browser-version.h -> obs-studio-31.0.2.tar.xz/plugins/obs-browser/browser-version.h Changed
10
 
1
@@ -2,7 +2,7 @@
2
 
3
 #define OBS_BROWSER_VERSION_MAJOR 2
4
 #define OBS_BROWSER_VERSION_MINOR 24
5
-#define OBS_BROWSER_VERSION_PATCH 4
6
+#define OBS_BROWSER_VERSION_PATCH 5
7
 
8
 #ifndef MAKE_SEMANTIC_VERSION
9
 #define MAKE_SEMANTIC_VERSION(major, minor, patch) ((major << 24) | (minor << 16) | patch)
10
obs-studio-31.0.1.tar.xz/plugins/obs-browser/cmake/os-linux.cmake -> obs-studio-31.0.2.tar.xz/plugins/obs-browser/cmake/os-linux.cmake Changed
9
 
1
@@ -1,7 +1,5 @@
2
 find_package(X11 REQUIRED)
3
 
4
-target_compile_definitions(obs-browser PRIVATE ENABLE_BROWSER_QT_LOOP)
5
-
6
 target_link_libraries(obs-browser PRIVATE CEF::Wrapper CEF::Library X11::X11)
7
 set_target_properties(obs-browser PROPERTIES BUILD_RPATH "$ORIGIN/" INSTALL_RPATH "$ORIGIN/")
8
 
9
obs-studio-31.0.1.tar.xz/plugins/obs-browser/obs-browser-plugin.cpp -> obs-studio-31.0.2.tar.xz/plugins/obs-browser/obs-browser-plugin.cpp Changed
39
 
1
@@ -281,7 +281,7 @@
2
    os_mkdir(conf_path);
3
 
4
    CefSettings settings;
5
-   settings.log_severity = LOGSEVERITY_DISABLE;
6
+   settings.log_severity = LOGSEVERITY_FATAL;
7
    BPtr<char> log_path = obs_module_config_path("debug.log");
8
    BPtr<char> log_path_abs = os_get_abs_path_ptr(log_path);
9
    CefString(&settings.log_file) = log_path_abs;
10
@@ -367,10 +367,10 @@
11
 
12
 #if !defined(_WIN32)
13
    BackupSignalHandlers();
14
-   CefInitialize(args, settings, app, nullptr);
15
+   bool success = CefInitialize(args, settings, app, nullptr);
16
    RestoreSignalHandlers();
17
 #elif (CHROME_VERSION_BUILD > 3770)
18
-   CefInitialize(args, settings, app, nullptr);
19
+   bool success = CefInitialize(args, settings, app, nullptr);
20
 #else
21
    /* Massive (but amazing) hack to prevent chromium from modifying our
22
     * process tokens and permissions, which caused us problems with winrt,
23
@@ -379,9 +379,14 @@
24
     * we'll just switch back to the static library but I doubt we'll need
25
     * to. */
26
    uintptr_t zeroed_memory_lol32 = {};
27
-   CefInitialize(args, settings, app, zeroed_memory_lol);
28
+   bool success = CefInitialize(args, settings, app, zeroed_memory_lol);
29
 #endif
30
 
31
+   if (!success) {
32
+       blog(LOG_ERROR, "obs-browser: CEF failed to initialize. Exit code: %d", CefGetExitCode());
33
+       return;
34
+   }
35
+
36
 #if !ENABLE_LOCAL_FILE_URL_SCHEME
37
    /* Register http://absolute/ scheme handler for older
38
     * CEF builds which do not support file:// URLs */
39
obs-studio-31.0.1.tar.xz/plugins/obs-browser/panel/browser-panel-client.cpp -> obs-studio-31.0.2.tar.xz/plugins/obs-browser/panel/browser-panel-client.cpp Changed
10
 
1
@@ -216,7 +216,7 @@
2
 void QCefBrowserClient::OnBeforeClose(CefRefPtr<CefBrowser>)
3
 {
4
    if (widget) {
5
-       emit widget->CloseSafely();
6
+       widget->CloseSafely();
7
    }
8
 }
9
 
10
obs-studio-31.0.1.tar.xz/plugins/obs-nvenc/nvenc-properties.c -> obs-studio-31.0.2.tar.xz/plugins/obs-nvenc/nvenc-properties.c Changed
11
 
1
@@ -126,7 +126,8 @@
2
    p = obs_properties_add_int(props, "bitrate", obs_module_text("Bitrate"), 50, UINT32_MAX / 1000, 50);
3
    obs_property_int_set_suffix(p, " Kbps");
4
 
5
-   obs_properties_add_int(props, "target_quality", obs_module_text("TargetQuality"), 1, 51, 1);
6
+   obs_properties_add_int(props, "target_quality", obs_module_text("TargetQuality"), 1,
7
+                  codec == CODEC_AV1 ? 63 : 51, 1);
8
 
9
    p = obs_properties_add_int(props, "max_bitrate", obs_module_text("MaxBitrate"), 0, UINT32_MAX / 1000, 50);
10
    obs_property_int_set_suffix(p, " Kbps");
11
obs-studio-31.0.1.tar.xz/plugins/obs-nvenc/nvenc.c -> obs-studio-31.0.2.tar.xz/plugins/obs-nvenc/nvenc.c Changed
11
 
1
@@ -392,7 +392,8 @@
2
    dstr_catf(&log, "\theight:       %d\n", enc->cy);
3
    dstr_catf(&log, "\tb-frames:     %ld\n", enc->props.bf);
4
    dstr_catf(&log, "\tb-ref-mode:   %ld\n", enc->props.bframe_ref_mode);
5
-   dstr_catf(&log, "\tlookahead:    %s (%d frames)\n", lookahead ? "true" : "false", rc_lookahead);
6
+   dstr_catf(&log, "\tlookahead:    %s (%d frames)\n", lookahead ? "true" : "false",
7
+         config->rcParams.lookaheadDepth);
8
    dstr_catf(&log, "\taq:           %s\n", enc->props.adaptive_quantization ? "true" : "false");
9
 
10
    if (enc->props.split_encode) {
11
obs-studio-31.0.1.tar.xz/plugins/obs-websocket/CMakeLists.txt -> obs-studio-31.0.2.tar.xz/plugins/obs-websocket/CMakeLists.txt Changed
9
 
1
@@ -1,6 +1,6 @@
2
 cmake_minimum_required(VERSION 3.16...3.25)
3
 
4
-set(obs-websocket_VERSION 5.5.4)
5
+set(obs-websocket_VERSION 5.5.5)
6
 set(OBS_WEBSOCKET_RPC_VERSION 1)
7
 
8
 include(cmake/obs-websocket-api.cmake)
9
obs-studio-31.0.1.tar.xz/plugins/obs-websocket/src/utils/Json.cpp -> obs-studio-31.0.2.tar.xz/plugins/obs-websocket/src/utils/Json.cpp Changed
32
 
1
@@ -178,7 +178,7 @@
2
 
3
 bool Utils::Json::GetJsonFileContent(std::string fileName, json &content)
4
 {
5
-   std::ifstream f(fileName);
6
+   std::ifstream f(std::filesystem::u8path(fileName));
7
    if (!f.is_open())
8
        return false;
9
 
10
@@ -195,9 +195,11 @@
11
 
12
 bool Utils::Json::SetJsonFileContent(std::string fileName, const json &content, bool makeDirs)
13
 {
14
+   auto jsonFilePath = std::filesystem::u8path(fileName);
15
+
16
    if (makeDirs) {
17
+       auto p = jsonFilePath.parent_path();
18
        std::error_code ec;
19
-       auto p = std::filesystem::path(fileName).parent_path();
20
        if (!ec && !std::filesystem::exists(p, ec))
21
            std::filesystem::create_directories(p, ec);
22
        if (ec) {
23
@@ -207,7 +209,7 @@
24
        }
25
    }
26
 
27
-   std::ofstream f(fileName);
28
+   std::ofstream f(jsonFilePath);
29
    if (!f.is_open()) {
30
        blog(LOG_ERROR, "Utils::Json::SetJsonFileContent Failed to open file `%s` for writing", fileName.c_str());
31
        return false;
32
obs-studio-31.0.1.tar.xz/plugins/win-dshow/win-dshow.cpp -> obs-studio-31.0.2.tar.xz/plugins/win-dshow/win-dshow.cpp Changed
14
 
1
@@ -936,6 +936,12 @@
2
        return false;
3
    }
4
 
5
+   if (!videoConfig.cx || !videoConfig.cy_abs) {
6
+       blog(LOG_ERROR, "%s: Frame width or height are zero (%" PRIu32 "x%" PRIu32 ")",
7
+            obs_source_get_name(source), videoConfig.cx, videoConfig.cy_abs);
8
+       return false;
9
+   }
10
+
11
    DStr formatName = GetVideoFormatName(videoConfig.internalFormat);
12
 
13
    double fps = 0.0;
14
obs-studio-31.0.1.tar.xz/shared/obs-scripting/obs-scripting-python-import.c -> obs-studio-31.0.2.tar.xz/shared/obs-scripting/obs-scripting-python-import.c Changed
19
 
1
@@ -35,7 +35,7 @@
2
 #define PATH_MAX MAX_PATH
3
 #elif __APPLE__
4
 #define VERSION_PATTERN "%d.%d"
5
-#define FILE_PATTERN "Python.framework/Versions/Current/lib/libpython%s.dylib"
6
+#define FILE_PATTERN "Python.framework/Versions/%s/lib/libpython%s.dylib"
7
 #endif
8
 
9
 #define PY_MAJOR_VERSION_MAX 3
10
@@ -71,7 +71,7 @@
11
 
12
    struct dstr temp;
13
    dstr_init(&temp);
14
-   dstr_printf(&temp, FILE_PATTERN, cur_version);
15
+   dstr_printf(&temp, FILE_PATTERN, cur_version, cur_version);
16
 
17
    int minor_version = PY_MINOR_VERSION_MAX;
18
    do {
19
obs-studio-31.0.1.tar.xz/shared/obs-scripting/obs-scripting-python.c -> obs-studio-31.0.2.tar.xz/shared/obs-scripting/obs-scripting-python.c Changed
11
 
1
@@ -1607,7 +1607,8 @@
2
    if (python_path && *python_path) {
3
 #ifdef __APPLE__
4
        char tempPATH_MAX;
5
-       snprintf(temp, sizeof(temp), "%s/Python.framework/Versions/Current", python_path);
6
+       snprintf(temp, sizeof(temp), "%s/Python.framework/Versions/%i.%i", python_path, python_version.major,
7
+            python_version.minor);
8
        os_utf8_to_wcs(temp, 0, home_path, PATH_MAX);
9
        Py_SetPythonHome(home_path);
10
 #else
11
Refresh
obs-studio
All the results have state excluded/disabled
Refresh


Request History
darix's avatar

darix created request 2 months ago

- Update to version 31.0.1:
* Update translations from Crowdin
* libobs: Update version to 31.0.1
* UI: Use filename stem as fallback value on empty collection name
* UI: Prevent creation of scene collections with empty name
* libobs: Fix underlinking by adding libx11
* image-source: Fix slideshow stopping on last file in random mode
* obs-nvenc: Abort encoder init if custom options are invalid
* obs-nvenc: Fix translation string for 4:4:4 unsupported error
* cmake: Turn off camera reaction by default on macOS 14.4 and later
* libobs: Fix deadlock on macOS input method change
* libobs-opengl: Avoid trying to allocate 0 byte on Linux
* UI: Fix linux base folder location
* UI: Fix remigrating scene collections from absolute to relative
* CI: Disable Flatpak bundling on publish
* obs-filters: Maintain order of migrated NVAFX filters
* CI: Disable PVS-Studio job
* libobs/util: Improve inhibit portal detection on Linux
* win-capture: Add The Bazaar to compatibility list (#11601)
* win-capture: Add Marvel Rivals to compatibility list (#11594)