[packages/obs-studio] - up to 31.0.0

baggins baggins at pld-linux.org
Thu Dec 26 13:00:43 CET 2024


commit f448dc27a59980c341ee4a6daad322fa49b0a57e
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Thu Dec 26 13:05:36 2024 +0100

    - up to 31.0.0

 disable-missing-plugins.patch | 127 +++++++++++++-----------------------------
 luajit-lua52.patch            |  11 ++++
 obs-studio.spec               |  41 ++++++++------
 sign-compare.patch            |  11 ++++
 size_t.patch                  |   8 +--
 x11-linkage.patch             |  31 +++++++++++
 x32.patch                     |  12 ++--
 7 files changed, 126 insertions(+), 115 deletions(-)
---
diff --git a/obs-studio.spec b/obs-studio.spec
index 262d393..a5cac5e 100644
--- a/obs-studio.spec
+++ b/obs-studio.spec
@@ -4,6 +4,7 @@
 %bcond_with	aja	# AJA NTV2 support
 %bcond_without	jack	# JACK support
 %bcond_with	qt5	# Qt 5 instead of Qt 6
+%bcond_with	webrtc	# Build WebRTC output plugin (R: LibDataChannel)
 
 %ifnarch %{x8664}
 # plugins/aja/cmake/legacy.cmake: "aja support not enabled (32-bit not supported)."
@@ -12,17 +13,19 @@
 Summary:	OBS Studio - live streaming and screen recording software
 Summary(pl.UTF-8):	OBS Studio - oprogramowanie do przesyłania strumieni na żywo i nagrywania ekranu
 Name:		obs-studio
-Version:	29.1.3
-Release:	3
+Version:	31.0.0
+Release:	1
 License:	GPL v2+
-%define		obs_vst_gitref	8ad3f64e702ac4f1799b209a511620eb1d096a01
 Group:		X11/Applications/Multimedia
 #Source0Download: https://github.com/obsproject/obs-studio/releases
 Source0:	https://github.com/jp9000/obs-studio/archive/%{version}/%{name}-%{version}.tar.gz
-# Source0-md5:	5597636f9c66342566f47d68aa4c6693
+# Source0-md5:	7dd7edb0c4e159b1c78c5ce24a3d746b
 Patch0:		disable-missing-plugins.patch
 Patch1:		size_t.patch
 Patch2:		x32.patch
+Patch3:		sign-compare.patch
+Patch4:		x11-linkage.patch
+Patch5:		luajit-lua52.patch
 URL:		https://obsproject.com/
 BuildRequires:	ImageMagick-devel
 BuildRequires:	OpenGL-GLX-devel
@@ -43,6 +46,7 @@ BuildRequires:	librist-devel
 BuildRequires:	libstdc++-devel >= 6:4.7
 BuildRequires:	libv4l-devel
 BuildRequires:	libva-devel
+BuildRequires:	libvpl-devel
 BuildRequires:	libx264-devel
 # xcb xcb-composite xcb-randr xcb-shm xcb-xfixes xcb-xinerama
 BuildRequires:	libxcb-devel
@@ -60,6 +64,7 @@ BuildRequires:	speexdsp-devel
 BuildRequires:	srt-devel
 BuildRequires:	swig-python >= 2
 BuildRequires:	udev-devel
+BuildRequires:	uthash-devel
 BuildRequires:	vlc-devel
 # wayland-client
 BuildRequires:	wayland-devel
@@ -114,11 +119,12 @@ Pliki nagłówkowe OBS Studio.
 
 %prep
 %setup -q
-%patch0 -p1
-%patch1 -p1
-%ifarch x32
-%patch2 -p1
-%endif
+%patch -P 0 -p1
+%patch -P 1 -p1
+%patch -P 2 -p1
+%patch -P 3 -p1
+%patch -P 4 -p1
+%patch -P 5 -p1
 
 %build
 export OBS_MULTIARCH_SUFFIX="%(echo "%{_lib}" | sed -e 's/^lib//')"
@@ -136,6 +142,7 @@ export OBS_MULTIARCH_SUFFIX="%(echo "%{_lib}" | sed -e 's/^lib//')"
 %ifarch x32
 	-DENABLE_SCRIPTING_LUA=OFF \
 %endif
+	%{!?with_webrtc:-DENABLE_WEBRTC=OFF} \
 	-DOBS_VERSION_OVERRIDE=%{version} \
 	-DQT_VERSION=%{?with_qt5:5}%{!?with_qt5:6} \
 	-DUNIX_STRUCTURE=1
@@ -184,14 +191,13 @@ rm -rf $RPM_BUILD_ROOT
 %doc AUTHORS README.rst
 %attr(755,root,root) %{_bindir}/obs
 %attr(755,root,root) %{_bindir}/obs-ffmpeg-mux
-%attr(755,root,root) %{_libdir}/libobs-frontend-api.so.29
+%attr(755,root,root) %{_bindir}/obs-nvenc-test
+%attr(755,root,root) %{_libdir}/libobs-frontend-api.so.30
 %attr(755,root,root) %ghost %{_libdir}/libobs-frontend-api.so.0
-%attr(755,root,root) %{_libdir}/libobs-opengl.so.29
-%attr(755,root,root) %ghost %{_libdir}/libobs-opengl.so.1
-%attr(755,root,root) %{_libdir}/libobs.so.29
+%attr(755,root,root) %{_libdir}/libobs-opengl.so.30
+%attr(755,root,root) %{_libdir}/libobs.so.30
 %attr(755,root,root) %ghost %{_libdir}/libobs.so.0
-%attr(755,root,root) %{_libdir}/libobs-scripting.so.29
-%attr(755,root,root) %ghost %{_libdir}/libobs-scripting.so.1
+%attr(755,root,root) %{_libdir}/libobs-scripting.so.30
 
 %dir %{_libdir}/obs-plugins
 %attr(755,root,root) %{_libdir}/obs-plugins/decklink-captions.so
@@ -209,7 +215,9 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{_libdir}/obs-plugins/linux-v4l2.so
 %attr(755,root,root) %{_libdir}/obs-plugins/obs-ffmpeg.so
 %attr(755,root,root) %{_libdir}/obs-plugins/obs-filters.so
+%attr(755,root,root) %{_libdir}/obs-plugins/obs-nvenc.so
 %attr(755,root,root) %{_libdir}/obs-plugins/obs-outputs.so
+%attr(755,root,root) %{_libdir}/obs-plugins/obs-qsv11.so
 %attr(755,root,root) %{_libdir}/obs-plugins/obs-transitions.so
 %attr(755,root,root) %{_libdir}/obs-plugins/obs-vst.so
 %attr(755,root,root) %{_libdir}/obs-plugins/obs-x264.so
@@ -223,7 +231,7 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{_libdir}/obs-scripting/_obspython.so
 %attr(755,root,root) %{_libdir}/obs-scripting/obspython.py
 
-%{_datadir}/metainfo/com.obsproject.Studio.appdata.xml
+%{_datadir}/metainfo/com.obsproject.Studio.metainfo.xml
 %{_desktopdir}/com.obsproject.Studio.desktop
 %{_iconsdir}/hicolor/*x*/apps/com.obsproject.Studio.png
 %{_iconsdir}/hicolor/scalable/apps/com.obsproject.Studio.svg
@@ -311,5 +319,6 @@ rm -rf $RPM_BUILD_ROOT
 %attr(755,root,root) %{_libdir}/libobs-scripting.so
 %{_includedir}/obs
 %{_pkgconfigdir}/libobs.pc
+%{_pkgconfigdir}/obs-frontend-api.pc
 %{_libdir}/cmake/libobs
 %{_libdir}/cmake/obs-frontend-api
diff --git a/disable-missing-plugins.patch b/disable-missing-plugins.patch
index e5e9160..4412b4f 100644
--- a/disable-missing-plugins.patch
+++ b/disable-missing-plugins.patch
@@ -1,99 +1,48 @@
---- obs-studio-29.1.3/plugins/CMakeLists.txt~	2023-06-19 00:05:22.000000000 +0200
-+++ obs-studio-29.1.3/plugins/CMakeLists.txt	2023-11-04 23:10:07.465701088 +0100
-@@ -11,28 +11,6 @@
+--- obs-studio-31.0.0/plugins/CMakeLists.txt.orig	2024-12-07 00:21:55.000000000 +0100
++++ obs-studio-31.0.0/plugins/CMakeLists.txt	2024-12-26 12:09:59.606665425 +0100
+@@ -9,27 +9,6 @@
  
-   set_property(GLOBAL APPEND PROPERTY OBS_FEATURES_ENABLED "Plugin Support")
+ set_property(GLOBAL APPEND PROPERTY OBS_FEATURES_ENABLED "Plugin Support")
  
--  macro(check_obs_browser)
--    if(NOT (OS_WINDOWS AND NOT CMAKE_GENERATOR_PLATFORM MATCHES "(Win32|x64)"))
--      if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/cmake/macos/Info.plist.in")
--        add_subdirectory(obs-browser)
--      elseif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt")
--        message(FATAL_ERROR "Required submodule 'obs-browser' not available.")
--      endif()
+-macro(check_obs_browser)
+-  if((OS_WINDOWS AND CMAKE_VS_PLATFORM_NAME MATCHES "(Win32|x64)") OR OS_MACOS OR OS_LINUX)
+-    if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt")
+-      message(FATAL_ERROR "Required submodule 'obs-browser' not available.")
+-    else()
+-      add_subdirectory(obs-browser)
 -    endif()
--  endmacro()
--
--  macro(check_obs_websocket)
--    if(OS_WINDOWS
--       OR OS_MACOS
--       OR OS_LINUX)
--      if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-websocket/cmake/macos/Info.plist.in")
--        add_subdirectory(obs-websocket)
--      elseif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-websocket/CMakeLists.txt")
--        message(FATAL_ERROR "Required submodule 'obs-websocket' not available.")
--      endif()
--    endif()
--  endmacro()
+-  else()
+-    add_custom_target(obs-browser)
+-    target_disable(obs-browser)
+-  endif()
+-endmacro()
 -
-   # Add plugins in alphabetical order to retain order in IDE projects
-   add_subdirectory(aja)
-   if(OS_WINDOWS OR OS_MACOS)
-@@ -62,7 +40,6 @@
-     add_subdirectory(mac-videotoolbox)
-     add_subdirectory(mac-virtualcam)
-   endif()
--  check_obs_browser()
-   add_subdirectory(obs-ffmpeg)
-   add_subdirectory(obs-filters)
-   add_subdirectory(obs-outputs)
-@@ -76,7 +53,6 @@
-      OR OS_LINUX)
-     add_subdirectory(obs-vst)
-   endif()
--  check_obs_websocket()
-   add_subdirectory(obs-x264)
-   add_subdirectory(rtmp-services)
-   if(OS_LINUX)
-@@ -101,14 +77,6 @@
-   return()
- endif()
- 
--function(check_obs_browser)
--  if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/obs-browser/CMakeLists.txt)
--    add_subdirectory(obs-browser)
+-macro(check_obs_websocket)
+-  if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/obs-websocket/CMakeLists.txt")
+-    message(FATAL_ERROR "Required submodule 'obs-websocket' not available.")
 -  else()
--    obs_status(FATAL_ERROR "obs-browser submodule not available.")
+-    add_subdirectory(obs-websocket)
 -  endif()
--endfunction()
+-endmacro()
 -
- # APPLE/WIN32/UNIX are soft-deprecated: https://discourse.cmake.org/t/platform-id-vs-win32-vs-cmake-system-name/1226/2
- if(OS_WINDOWS)
-   add_subdirectory(coreaudio-encoder)
-@@ -127,7 +95,6 @@
-     obs_status(WARNING "enc-amf plugin not found.")
-   endif()
- 
--  check_obs_browser()
- elseif(OS_MACOS)
-   add_subdirectory(coreaudio-encoder)
-   add_subdirectory(mac-avcapture)
-@@ -140,7 +107,6 @@
-   add_subdirectory(linux-jack)
-   add_subdirectory(obs-vst)
+ # Add plugins in alphabetical order to retain order in IDE projects
+ add_obs_plugin(
+     aja
+@@ -56,8 +35,6 @@
+ add_obs_plugin(mac-virtualcam PLATFORMS MACOS)
+ add_obs_plugin(nv-filters PLATFORMS WINDOWS)
  
--  check_obs_browser()
- elseif(OS_LINUX)
-   add_subdirectory(linux-capture)
-   add_subdirectory(linux-pulseaudio)
-@@ -153,7 +119,6 @@
-   add_subdirectory(sndio)
-   add_subdirectory(obs-vst)
- 
--  check_obs_browser()
- elseif(OS_FREEBSD)
-   add_subdirectory(linux-capture)
-   add_subdirectory(linux-pipewire)
-@@ -175,12 +140,6 @@
-   obs_status(STATUS "obs-vst plugin not available.")
- endif()
+-check_obs_browser()
+-
+ add_obs_plugin(obs-ffmpeg)
+ add_obs_plugin(obs-filters)
+ add_obs_plugin(obs-libfdk)
+@@ -77,8 +54,6 @@
+ )
+ add_obs_plugin(obs-webrtc)
  
--if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/obs-websocket/CMakeLists.txt)
--  add_subdirectory(obs-websocket)
--else()
--  obs_status(FATAL_ERROR "obs-websocket submodule not available.")
--endif()
+-check_obs_websocket()
 -
- add_subdirectory(image-source)
- add_subdirectory(obs-x264)
- add_subdirectory(obs-libfdk)
+ add_obs_plugin(obs-x264)
+ add_obs_plugin(oss-audio PLATFORMS FREEBSD OPENBSD)
+ add_obs_plugin(rtmp-services)
diff --git a/luajit-lua52.patch b/luajit-lua52.patch
new file mode 100644
index 0000000..5bdadc9
--- /dev/null
+++ b/luajit-lua52.patch
@@ -0,0 +1,11 @@
+--- obs-studio-31.0.0/cmake/finders/FindLuajit.cmake~	2024-12-07 00:21:55.000000000 +0100
++++ obs-studio-31.0.0/cmake/finders/FindLuajit.cmake	2024-12-26 12:51:07.859998781 +0100
+@@ -94,7 +94,7 @@
+ 
+ find_library(
+   Luajit_LIBRARY
+-  NAMES luajit-5.1 luajit-51 luajit lua51
++  NAMES luajit-5.2 luajit-5.1 luajit-51 luajit
+   HINTS ${PC_Luajit_LIBRARY_DIRS}
+   PATHS /usr/lib /usr/local/lib
+   DOC "Luajit location"
diff --git a/sign-compare.patch b/sign-compare.patch
new file mode 100644
index 0000000..5ca2bed
--- /dev/null
+++ b/sign-compare.patch
@@ -0,0 +1,11 @@
+--- obs-studio-31.0.0/plugins/obs-qsv11/QSV_Encoder_Internal.cpp~	2024-12-07 00:21:55.000000000 +0100
++++ obs-studio-31.0.0/plugins/obs-qsv11/QSV_Encoder_Internal.cpp	2024-12-26 12:22:23.613332074 +0100
+@@ -347,7 +347,7 @@
+ 
+ 	constexpr uint32_t pixelcount_4k = 3840 * 2160;
+ 	/* If size is 4K+, set tile columns per frame to 2. */
+-	if (codec == QSV_CODEC_AV1 && (pParams->nWidth * pParams->nHeight) >= pixelcount_4k) {
++	if (codec == QSV_CODEC_AV1 && static_cast<uint32_t>(pParams->nWidth * pParams->nHeight) >= pixelcount_4k) {
+ 		memset(&m_ExtAv1TileParam, 0, sizeof(m_ExtAv1TileParam));
+ 		m_ExtAv1TileParam.Header.BufferId = MFX_EXTBUFF_AV1_TILE_PARAM;
+ 		m_ExtAv1TileParam.Header.BufferSz = sizeof(m_ExtAv1TileParam);
diff --git a/size_t.patch b/size_t.patch
index 1acd8eb..53c748e 100644
--- a/size_t.patch
+++ b/size_t.patch
@@ -1,8 +1,8 @@
 --- obs-studio-29.1.3/libobs/obs.c~	2023-06-19 00:05:22.000000000 +0200
 +++ obs-studio-29.1.3/libobs/obs.c	2023-11-05 00:28:11.859696298 +0100
 @@ -873,7 +873,11 @@
- 		obs->video.mixes.array[i] = NULL;
  	}
+ 	da_free(obs->video.mixes);
  	if (num_views > 0)
 +#ifdef __ILP32__
 +		blog(LOG_WARNING, "Number of remaining views: %d", num_views);
@@ -15,11 +15,11 @@
 --- obs-studio-29.1.3/libobs-opengl/gl-egl-common.c~	2023-06-19 00:05:22.000000000 +0200
 +++ obs-studio-29.1.3/libobs-opengl/gl-egl-common.c	2023-11-05 00:30:13.543492738 +0100
 @@ -373,7 +373,7 @@
+ 		blog(LOG_ERROR, "Unable to load eglQueryDmaBufModifiersEXT");
  		return false;
  	}
- 	if (!query_dmabuf_modifiers(egl_display, drm_format, modifiers,
--				    n_modifiers)) {
-+				    (EGLuint64KHR *)n_modifiers)) {
+-	if (!query_dmabuf_modifiers(egl_display, drm_format, modifiers, n_modifiers)) {
++	if (!query_dmabuf_modifiers(egl_display, drm_format, modifiers, (EGLuint64KHR *)n_modifiers)) {
  		*n_modifiers = 0;
  		*modifiers = NULL;
  		return false;
diff --git a/x11-linkage.patch b/x11-linkage.patch
new file mode 100644
index 0000000..3121592
--- /dev/null
+++ b/x11-linkage.patch
@@ -0,0 +1,31 @@
+--- obs-studio-31.0.0/libobs-opengl/CMakeLists.txt~	2024-12-07 00:21:55.000000000 +0100
++++ obs-studio-31.0.0/libobs-opengl/CMakeLists.txt	2024-12-26 12:44:37.833332079 +0100
+@@ -56,6 +56,7 @@
+     "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,IOSurface.framework>>"
+     $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:xcb::xcb>
+     $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:X11::x11-xcb>
++    $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:X11::X11>
+     $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<BOOL:${ENABLE_WAYLAND}>>:OpenGL::EGL>
+     $<$<AND:$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>,$<BOOL:${ENABLE_WAYLAND}>>:Wayland::EGL>
+ )
+--- obs-studio-31.0.0/libobs/CMakeLists.txt~	2024-12-07 00:21:55.000000000 +0100
++++ obs-studio-31.0.0/libobs/CMakeLists.txt	2024-12-26 12:47:01.733332089 +0100
+@@ -7,6 +7,10 @@
+   return()
+ endif()
+ 
++if(OS_LINUX OR OS_FREEBSD OR OS_OPENBSD)
++  find_package(X11 REQUIRED)
++endif()
++
+ find_package(Threads REQUIRED)
+ 
+ find_package(FFmpeg 6.1 REQUIRED avformat avutil swscale swresample OPTIONAL_COMPONENTS avcodec)
+@@ -260,6 +264,7 @@
+     jansson::jansson
+     Uthash::Uthash
+     ZLIB::ZLIB
++    $<$<PLATFORM_ID:Linux,FreeBSD,OpenBSD>:X11::X11>
+   PUBLIC Threads::Threads
+ )
+ 
diff --git a/x32.patch b/x32.patch
index a6c04e7..75f70b1 100644
--- a/x32.patch
+++ b/x32.patch
@@ -1,14 +1,14 @@
 --- obs-studio-29.1.3/plugins/linux-v4l2/v4l2-input.c~	2023-06-19 00:05:22.000000000 +0200
 +++ obs-studio-29.1.3/plugins/linux-v4l2/v4l2-input.c	2023-11-05 00:32:37.108931868 +0100
 @@ -259,7 +259,11 @@
+ 			break;
  		}
  
- 		blog(LOG_DEBUG,
-+#ifdef __ILP32__
-+		     "%s: ts: %06lld buf id #%d, flags 0x%08X, seq #%d, len %d, used %d",
++#if defined(__x86_64__) && defined(__ILP32__)
++		blog(LOG_DEBUG, "%s: ts: %0al6ld buf id #%d, flags 0x%08X, seq #%d, len %d, used %d", data->device_id,
 +#else
- 		     "%s: ts: %06ld buf id #%d, flags 0x%08X, seq #%d, len %d, used %d",
+ 		blog(LOG_DEBUG, "%s: ts: %06ld buf id #%d, flags 0x%08X, seq #%d, len %d, used %d", data->device_id,
 +#endif
- 		     data->device_id, buf.timestamp.tv_usec, buf.index,
- 		     buf.flags, buf.sequence, buf.length, buf.bytesused);
+ 		     buf.timestamp.tv_usec, buf.index, buf.flags, buf.sequence, buf.length, buf.bytesused);
  
+ 		out.timestamp = timeval2ns(buf.timestamp);
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/obs-studio.git/commitdiff/f448dc27a59980c341ee4a6daad322fa49b0a57e



More information about the pld-cvs-commit mailing list