summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimi Huotari <chiitoo@gentoo.org>2024-08-22 07:25:01 +0300
committerJimi Huotari <chiitoo@gentoo.org>2024-08-22 08:57:01 +0300
commit361170b3f6aa367a12460e189a682cb6745b4eaa (patch)
tree1f742560ede92f39406e36ef9de0b577e88842d2 /media-video
parentprofiles/features/llvm: mask 'media-video/obs-studio[browser]' (diff)
downloadgentoo-361170b3f6aa367a12460e189a682cb6745b4eaa.tar.gz
gentoo-361170b3f6aa367a12460e189a682cb6745b4eaa.tar.bz2
gentoo-361170b3f6aa367a12460e189a682cb6745b4eaa.zip
media-video/obs-studio: add 30.2.3
This restores "legacy ffmpeg" being used via USE="nvenc", which seems to be more in line with the upstream default for the time being, and there seem to be potential performance problems [1] with the new, "native nvenc", so stick to "legacy" for now. The next non-patch release should have CMake options tweaked to handle these better (will be in 9999 soon), and if there is want for experimenting more with it already, can always flip it using 'MYCMAKEARGS="-DENABLE_NATIVE_NVENC=ON"'. 1. https://github.com/obsproject/obs-studio/issues/11009 Closes: https://bugs.gentoo.org/936826 Closes: https://bugs.gentoo.org/938022 Closes: https://github.com/gentoo/gentoo/pull/37755 Signed-off-by: Jimi Huotari <chiitoo@gentoo.org>
Diffstat (limited to 'media-video')
-rw-r--r--media-video/obs-studio/Manifest2
-rw-r--r--media-video/obs-studio/obs-studio-30.2.3.ebuild274
-rw-r--r--media-video/obs-studio/obs-studio-9999.ebuild9
3 files changed, 282 insertions, 3 deletions
diff --git a/media-video/obs-studio/Manifest b/media-video/obs-studio/Manifest
index 9f311bc29cbd..c9fa9bc7a36b 100644
--- a/media-video/obs-studio/Manifest
+++ b/media-video/obs-studio/Manifest
@@ -1,10 +1,12 @@
DIST cef_binary_5060_linux_x86_64_v3.tar.xz 91352460 BLAKE2B 443f4b1bc638d3fe462fd8b8dd167e96f65aebb2b8de3616beac298449e2786c746f9a1fa4a0dbe2e3ef2d593139938e97538890d3ca3b74018b3afb9c7fc661 SHA512 1fbdf1d4ed117f3b8af20476c57502145d652b451ba8e0a544081403d292cc7a78642e9071b8f0283a19ef7ad507ef6e0d9df32b00afc51605ab74f650a7d755
DIST obs-browser-2a2879b5a69f4a99cd7459d8595af46cdb23115c.tar.gz 112519 BLAKE2B 94b0e46d83865ff5b85ffa07c082a561ad14205512502976e555555449441a0f701d14445b97b2084d2e10bc9289dd51e28fcf7057cb4584e6ef025bfde93062 SHA512 5ad219dacf50a4187ff79ee8d5d3e2bcc978b6dd91396669e76c56af2af26424c74151b15d9185a87c06aeb694a0a2f5d80e66a6c18c60ce843009c6f97e9b3a
DIST obs-browser-996b5a7bc43d912f1f4992e0032d4f263ac8b060.tar.gz 112416 BLAKE2B c82b5b55184130caaca0aad066ce1253c28206522e8d130cb3b940ee283c8a2dffc409a5d4774cad17535f958f52f4fe632a6b4462a18c10a4b5bbe02b60b4e9 SHA512 f6f7dbeb1d28b6c47663f36cb119cbc90a18c46fc6e81ca6db87e901ae4cee1fafd4a4a8c3f8cae94619d2f8f92baf1c52ca5c7df182f3df7521397638b0660d
+DIST obs-browser-c710222ec9d7ef9aa5d7099e9019d636e2c89f00.tar.gz 112527 BLAKE2B abfdd7cff3ec4479cc78d1f85a404ac48c2ebee1ba679a48e4e7abeb685ee08faa00059bda1cee2d5abf16b69ad0aa843898f612b3ee9d46f0950bd546aa6e44 SHA512 1ec2f48ce986c0d44cddf4332c8b58b8eb1fcb6a662504dd7ec580f9eb45b2a570542424d4c31ed6f96060746f21082661d43bf50b94469b4ef0c1f0b9190f7c
DIST obs-browser-c81851a1d7696c2d7ba319122eec387c1568ad44.tar.gz 112521 BLAKE2B 184d398941e8055c89f9a80664ce0b3a900fc0df75c5f45c30e3c80e7645c23052ab4ff6816169136c7d9ae4da7754ab0a64bc075a7ee9036effa64860c88f21 SHA512 78e09171d173ff756ce60f6ac1da201cc87ac317b3f5839632813a177b7eb126a376e8d194eb2b6d64a7cf0d1292640d6c216cfd4e82f71f54b44e8a85e86c49
DIST obs-studio-30.1.2.tar.gz 16023853 BLAKE2B 8886b7c07240e5f83a37f046c0a68aad6432cfc7056959caa25c33dd9a830de44f27c821809116000f82939e1684222c1f8343bc83b362f0f3f3338923bbf196 SHA512 8d6102f3431c1c6c530f22b09612cb955c1877e5aba07aa0ba1d7b014471ebf9f0c1f8e898eb9373c64417455e75d8b9cf2ae4d9010b6a09330bac9f4e5aa01e
DIST obs-studio-30.2.0.tar.gz 16122672 BLAKE2B 7c91c1a3691035fb3503ac25a22bad416de506488cb9bf2f4567b6048f40f4bd93ca17a92e92c535c9ead6e70b7610200b335d203978b47feee7e642310d86d2 SHA512 546374e0efbe9f23ecc2580d9d118e930afd576471b8931baa00cd4fbafe6bcba5f3a4b15769338860472aad616ccd2bd952bdef416acd85e637bbefd8c9d581
DIST obs-studio-30.2.1.tar.gz 16150144 BLAKE2B 4e50f90af43ba785619bb90a793bbfe63e5d914d046c4da109883a3f21f98f9a55efd6600374046623e87f47733167236a2390b0ba90d4e9c7c310e24a4d5792 SHA512 d8bbe71305d3aac3d64db1d3c9bee0a849bffcad4ba1019c9028d69511a4c2ed341b878a3fd5818abda707fcecb2bc90c3f35a453d84317c782d24c299a15a13
+DIST obs-studio-30.2.3.tar.gz 16150339 BLAKE2B b3ed65060881a731bd2e48d8b490cde4a0cf2886bfbdfb2f09536b4aae15c8230c6f6fc20eed3943b88c194b46509dca702d7e955b5b148b5f3577db410f0889 SHA512 1fea762b8fb4d5401516d9e547fe20db389633fb1abbdb52e4b9559ab6aaf3b9f4c25e055896b4063c6a693bfeb78e6463486b4c66e3994a6d1ceb0b7f65865f
DIST obs-websocket-0548c7798a323fe5296c150e13b898a5ee62fc1e.tar.gz 250611 BLAKE2B fefeab4a637528138152d6e1bd374d6e3f08e4a4e20698665adf4dd925e7831df5bdb1068e402def71b6e12e239db823dac2944e6549c00e914abca175d16fc0 SHA512 f24f520c4a08ad2b80d97c5dfba14421fcd48661d3b0fb694af5d11e063c711e7bf49a4baa95d9de8aff07b6fbbd4b4681ce10a4074506d98cf25c793cc2844d
DIST obs-websocket-d2d4bfb3e78cf2b02c8e2f5dda1d805eda8d8f32.tar.gz 246888 BLAKE2B 6e06c85ee47cb088a50b9d5eae9a8d68441989c1f76fdcd7806d59597062af5eb36e1722600b1a8d544e5f11533985b9bac243f7ca1002eed616e2f5c11a9a3f SHA512 31d5e1817aab341e55cbc5c759f28509f442695afb90d08a235c07359a65d2c2d3dfae2bf9c8a5086db310bb127dc59945ebe23fb219fda7408ee82d05b43938
DIST obs-websocket-f8bc7c4f593c7957ecdb45a24faaff3e95f24e8b.tar.gz 250582 BLAKE2B 13a93a00b8f7d3cc775641243ffb14b98490b2190386663a05621376dc9f70838005768039c236083e8767e1951378341a242df2fefdd74b7172090a4526a0d0 SHA512 38e02f346042d6c71bab6f0dc3c706953b996d0c8a92a3c0922b04955ea0152857005f924c5a0fccfaa64a6fef5b0dd597bce658c152be38081d1dc02ed2be19
diff --git a/media-video/obs-studio/obs-studio-30.2.3.ebuild b/media-video/obs-studio/obs-studio-30.2.3.ebuild
new file mode 100644
index 000000000000..d0fc789c0edc
--- /dev/null
+++ b/media-video/obs-studio/obs-studio-30.2.3.ebuild
@@ -0,0 +1,274 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+CMAKE_REMOVE_MODULES_LIST=( FindFreetype )
+LUA_COMPAT=( luajit )
+PYTHON_COMPAT=( python3_{9..12} )
+
+inherit cmake flag-o-matic lua-single optfeature python-single-r1 xdg
+
+CEF_DIR="cef_binary_5060_linux_x86_64"
+CEF_REVISION="_v3"
+OBS_BROWSER_COMMIT="c710222ec9d7ef9aa5d7099e9019d636e2c89f00"
+OBS_WEBSOCKET_COMMIT="0548c7798a323fe5296c150e13b898a5ee62fc1e"
+
+DESCRIPTION="Software for Recording and Streaming Live Video Content"
+HOMEPAGE="https://obsproject.com"
+
+if [[ ${PV} == 9999 ]]; then
+ inherit git-r3
+ EGIT_REPO_URI="https://github.com/obsproject/obs-studio.git"
+ EGIT_SUBMODULES=(
+ plugins/obs-browser
+ plugins/obs-websocket
+ )
+else
+ SRC_URI="
+ https://github.com/obsproject/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz
+ https://github.com/obsproject/obs-browser/archive/${OBS_BROWSER_COMMIT}.tar.gz -> obs-browser-${OBS_BROWSER_COMMIT}.tar.gz
+ https://github.com/obsproject/obs-websocket/archive/${OBS_WEBSOCKET_COMMIT}.tar.gz -> obs-websocket-${OBS_WEBSOCKET_COMMIT}.tar.gz
+ "
+ KEYWORDS="~amd64 ~arm64 ~ppc64 ~x86"
+fi
+
+SRC_URI+=" browser? ( https://cdn-fastly.obsproject.com/downloads/${CEF_DIR}${CEF_REVISION}.tar.xz )"
+
+LICENSE="Boost-1.0 GPL-2+ MIT Unlicense"
+SLOT="0"
+IUSE="
+ +alsa browser decklink fdk jack lua mpegts nvenc pipewire pulseaudio
+ python qsv speex +ssl test truetype v4l vlc wayland websocket
+"
+RESTRICT="!test? ( test )"
+REQUIRED_USE="
+ browser? ( || ( alsa pulseaudio ) )
+ lua? ( ${LUA_REQUIRED_USE} )
+ python? ( ${PYTHON_REQUIRED_USE} )
+"
+
+BDEPEND="
+ lua? ( dev-lang/swig )
+ python? ( dev-lang/swig )
+"
+# media-video/ffmpeg[opus] required due to bug 909566
+DEPEND="
+ dev-cpp/nlohmann_json
+ dev-libs/glib:2
+ dev-libs/jansson:=
+ dev-libs/uthash
+ dev-qt/qtbase:6[network,widgets,xml(+)]
+ dev-qt/qtsvg:6
+ media-libs/libglvnd[X]
+ media-libs/libva
+ media-libs/rnnoise
+ media-libs/x264:=
+ media-video/ffmpeg:=[nvenc?,opus,x264]
+ net-misc/curl
+ sys-apps/dbus
+ sys-apps/pciutils
+ sys-apps/util-linux
+ sys-libs/zlib:=
+ x11-libs/libX11
+ x11-libs/libxcb:=
+ x11-libs/libXcomposite
+ x11-libs/libXfixes
+ x11-libs/libxkbcommon
+ alsa? ( media-libs/alsa-lib )
+ browser? (
+ || (
+ >=app-accessibility/at-spi2-core-2.46.0:2
+ ( app-accessibility/at-spi2-atk dev-libs/atk )
+ )
+ dev-libs/expat
+ dev-libs/glib
+ dev-libs/nspr
+ dev-libs/nss
+ dev-libs/wayland
+ media-libs/alsa-lib
+ media-libs/fontconfig
+ media-libs/mesa[gbm(+)]
+ net-print/cups
+ x11-libs/cairo
+ x11-libs/libdrm
+ x11-libs/libXcursor
+ x11-libs/libXdamage
+ x11-libs/libXext
+ x11-libs/libXi
+ x11-libs/libxkbcommon
+ x11-libs/libXrandr
+ x11-libs/libXrender
+ x11-libs/libXScrnSaver
+ x11-libs/libxshmfence
+ x11-libs/libXtst
+ x11-libs/pango
+ )
+ fdk? ( media-libs/fdk-aac:= )
+ jack? ( virtual/jack )
+ lua? ( ${LUA_DEPS} )
+ mpegts? (
+ net-libs/librist
+ net-libs/srt
+ )
+ nvenc? ( >=media-libs/nv-codec-headers-12 )
+ pipewire? ( media-video/pipewire:= )
+ pulseaudio? ( media-libs/libpulse )
+ python? ( ${PYTHON_DEPS} )
+ qsv? ( media-libs/libvpl )
+ speex? ( media-libs/speexdsp )
+ ssl? ( net-libs/mbedtls:= )
+ test? ( dev-util/cmocka )
+ truetype? (
+ media-libs/fontconfig
+ media-libs/freetype
+ )
+ v4l? (
+ media-libs/libv4l
+ virtual/udev
+ )
+ vlc? ( media-video/vlc:= )
+ wayland? (
+ dev-libs/wayland
+ x11-libs/libxkbcommon
+ )
+ websocket? (
+ dev-cpp/asio
+ dev-cpp/websocketpp
+ dev-libs/qr-code-generator
+ )
+"
+RDEPEND="${DEPEND}
+ qsv? ( media-libs/intel-mediasdk )
+"
+
+QA_PREBUILT="
+ usr/lib*/obs-plugins/chrome-sandbox
+ usr/lib*/obs-plugins/libcef.so
+ usr/lib*/obs-plugins/libEGL.so
+ usr/lib*/obs-plugins/libGLESv2.so
+ usr/lib*/obs-plugins/libvk_swiftshader.so
+ usr/lib*/obs-plugins/libvulkan.so.1
+ usr/lib*/obs-plugins/swiftshader/libEGL.so
+ usr/lib*/obs-plugins/swiftshader/libGLESv2.so
+"
+
+pkg_setup() {
+ use lua && lua-single_pkg_setup
+ use python && python-single-r1_pkg_setup
+}
+
+src_unpack() {
+ default
+
+ if [[ ${PV} == 9999 ]]; then
+ git-r3_src_unpack
+ else
+ rm -d ${P}/plugins/obs-browser || die
+ mv obs-browser-${OBS_BROWSER_COMMIT} ${P}/plugins/obs-browser || die
+
+ rm -d ${P}/plugins/obs-websocket || die
+ mv obs-websocket-${OBS_WEBSOCKET_COMMIT} ${P}/plugins/obs-websocket || die
+ fi
+}
+
+src_prepare() {
+ default
+
+ sed -i '/-Werror$/d' "${WORKDIR}"/${P}/cmake/Modules/CompilerConfig.cmake || die
+
+ # -Werror=lto-type-mismatch
+ # https://bugs.gentoo.org/867250
+ # https://github.com/obsproject/obs-studio/issues/8988
+ use wayland && filter-lto
+
+ cmake_src_prepare
+}
+
+src_configure() {
+ local libdir=$(get_libdir)
+ local mycmakeargs=(
+ $(usev browser -DCEF_ROOT_DIR=../${CEF_DIR})
+ -DCALM_DEPRECATION=ON
+ -DCCACHE_SUPPORT=OFF
+ -DENABLE_ALSA=$(usex alsa)
+ -DENABLE_AJA=OFF
+ -DENABLE_BROWSER=$(usex browser)
+ -DENABLE_DECKLINK=$(usex decklink)
+ -DENABLE_FREETYPE=$(usex truetype)
+ -DENABLE_JACK=$(usex jack)
+ -DENABLE_LIBFDK=$(usex fdk)
+ -DENABLE_NATIVE_NVENC=OFF
+ -DENABLE_NEW_MPEGTS_OUTPUT=$(usex mpegts)
+ -DENABLE_PIPEWIRE=$(usex pipewire)
+ -DENABLE_PULSEAUDIO=$(usex pulseaudio)
+ -DENABLE_QSV11=$(usex qsv)
+ -DENABLE_RNNOISE=ON
+ -DENABLE_RTMPS=$(usex ssl ON OFF) # Needed for bug 880861
+ -DENABLE_SPEEXDSP=$(usex speex)
+ -DENABLE_UNIT_TESTS=$(usex test)
+ -DENABLE_V4L2=$(usex v4l)
+ -DENABLE_VLC=$(usex vlc)
+ -DENABLE_VST=ON
+ -DENABLE_WAYLAND=$(usex wayland)
+ -DENABLE_WEBRTC=OFF # Requires libdatachannel.
+ -DENABLE_WEBSOCKET=$(usex websocket)
+ -DOBS_MULTIARCH_SUFFIX=${libdir#lib}
+ -DUNIX_STRUCTURE=1
+ )
+
+ if [[ ${PV} != 9999 ]]; then
+ mycmakeargs+=(
+ -DOBS_VERSION_OVERRIDE=${PV}
+ )
+ fi
+
+ if use lua || use python; then
+ mycmakeargs+=(
+ -DENABLE_SCRIPTING_LUA=$(usex lua)
+ -DENABLE_SCRIPTING_PYTHON=$(usex python)
+ -DENABLE_SCRIPTING=ON
+ )
+ else
+ mycmakeargs+=( -DENABLE_SCRIPTING=OFF )
+ fi
+
+ if use browser && use ssl; then
+ mycmakeargs+=( -DENABLE_WHATSNEW=ON )
+ else
+ mycmakeargs+=( -DENABLE_WHATSNEW=OFF )
+ fi
+
+ cmake_src_configure
+}
+
+src_install() {
+ cmake_src_install
+
+ # external plugins may need some things not installed by default, install them here
+ insinto /usr/include/obs/UI/obs-frontend-api
+ doins UI/obs-frontend-api/obs-frontend-api.h
+}
+
+pkg_postinst() {
+ xdg_pkg_postinst
+
+ if ! use alsa && ! use pulseaudio; then
+ elog
+ elog "For the audio capture features to be available,"
+ elog "at least one of the 'alsa' or 'pulseaudio' USE-flags needs to"
+ elog "be enabled."
+ elog
+ fi
+
+ if use v4l && has_version media-video/v4l2loopback; then
+ elog
+ elog "Depending on system configuration, the v4l2loopback kernel module"
+ elog "may need to be loaded manually, and needs to be re-built after"
+ elog "kernel changes."
+ elog
+ fi
+
+ optfeature "VA-API hardware encoding" media-video/ffmpeg[vaapi]
+ optfeature "virtual camera support" media-video/v4l2loopback
+}
diff --git a/media-video/obs-studio/obs-studio-9999.ebuild b/media-video/obs-studio/obs-studio-9999.ebuild
index d5800bb8e299..957534cb13d4 100644
--- a/media-video/obs-studio/obs-studio-9999.ebuild
+++ b/media-video/obs-studio/obs-studio-9999.ebuild
@@ -11,7 +11,7 @@ inherit cmake flag-o-matic lua-single optfeature python-single-r1 xdg
CEF_DIR="cef_binary_5060_linux_x86_64"
CEF_REVISION="_v3"
-OBS_BROWSER_COMMIT="2a2879b5a69f4a99cd7459d8595af46cdb23115c"
+OBS_BROWSER_COMMIT="be9f1b646406d2250b402581b043f1558042d7f0"
OBS_WEBSOCKET_COMMIT="0548c7798a323fe5296c150e13b898a5ee62fc1e"
DESCRIPTION="Software for Recording and Streaming Live Video Content"
@@ -111,6 +111,7 @@ DEPEND="
net-libs/librist
net-libs/srt
)
+ nvenc? ( >=media-libs/nv-codec-headers-12 )
pipewire? ( media-video/pipewire:= )
pulseaudio? ( media-libs/libpulse )
python? ( ${PYTHON_DEPS} )
@@ -137,7 +138,9 @@ DEPEND="
dev-libs/qr-code-generator
)
"
-RDEPEND="${DEPEND}"
+RDEPEND="${DEPEND}
+ qsv? ( media-libs/intel-mediasdk )
+"
QA_PREBUILT="
usr/lib*/obs-plugins/chrome-sandbox
@@ -195,7 +198,7 @@ src_configure() {
-DENABLE_FREETYPE=$(usex truetype)
-DENABLE_JACK=$(usex jack)
-DENABLE_LIBFDK=$(usex fdk)
- -DENABLE_NATIVE_NVENC=$(usex nvenc)
+ -DENABLE_NATIVE_NVENC=OFF
-DENABLE_NEW_MPEGTS_OUTPUT=$(usex mpegts)
-DENABLE_PIPEWIRE=$(usex pipewire)
-DENABLE_PULSEAUDIO=$(usex pulseaudio)