summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/sunshine/files/sunshine-custom-ffmpeg.patch')
-rw-r--r--net-misc/sunshine/files/sunshine-custom-ffmpeg.patch163
1 files changed, 163 insertions, 0 deletions
diff --git a/net-misc/sunshine/files/sunshine-custom-ffmpeg.patch b/net-misc/sunshine/files/sunshine-custom-ffmpeg.patch
new file mode 100644
index 000000000000..94febe187c1f
--- /dev/null
+++ b/net-misc/sunshine/files/sunshine-custom-ffmpeg.patch
@@ -0,0 +1,163 @@
+From 64783df9d7ed22916894387a8ff1f73a97dbb760 Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Mon, 1 Jan 2024 11:17:08 +0000
+Subject: [PATCH 1/2] Allow a custom FFmpeg build to be provided using CMake
+ options
+
+---
+ cmake/dependencies/common.cmake | 90 ++++++++++++++++++---------------
+ 1 file changed, 50 insertions(+), 40 deletions(-)
+
+diff --git a/cmake/dependencies/common.cmake b/cmake/dependencies/common.cmake
+index a1f3512..d921c1b 100644
+--- a/cmake/dependencies/common.cmake
++++ b/cmake/dependencies/common.cmake
+@@ -23,53 +23,63 @@ include_directories(SYSTEM ${MINIUPNP_INCLUDE_DIRS})
+ add_subdirectory("${CMAKE_SOURCE_DIR}/third-party/nlohmann_json")
+
+ # ffmpeg pre-compiled binaries
+-if(WIN32)
+- if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
+- message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++if(NOT DEFINED FFMPEG_PREPARED_BINARIES)
++ if(WIN32)
++ if(NOT CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
++ message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++ endif()
++ set(FFMPEG_PLATFORM_LIBRARIES mfplat ole32 strmiids mfuuid vpl)
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/windows-x86_64")
++ elseif(APPLE)
++ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/macos-x86_64")
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/macos-aarch64")
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc")
++ message(FATAL_ERROR "PowerPC is not supported on macOS")
++ else()
++ message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++ endif()
++ elseif(UNIX)
++ set(FFMPEG_PLATFORM_LIBRARIES va va-drm va-x11 vdpau X11)
++ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
++ list(APPEND FFMPEG_PLATFORM_LIBRARIES mfx)
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/linux-x86_64")
++ set(CPACK_DEB_PLATFORM_PACKAGE_DEPENDS "libmfx1,")
++ set(CPACK_RPM_PLATFORM_PACKAGE_REQUIRES "intel-mediasdk >= 22.3.0,")
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/linux-aarch64")
++ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64")
++ set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/linux-powerpc64le")
++ else()
++ message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++ endif()
+ endif()
+- set(FFMPEG_PLATFORM_LIBRARIES mfplat ole32 strmiids mfuuid vpl)
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/windows-x86_64")
+-elseif(APPLE)
+- if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/macos-x86_64")
+- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64")
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/macos-aarch64")
+- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "powerpc")
+- message(FATAL_ERROR "PowerPC is not supported on macOS")
+- else()
+- message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
++ if(EXISTS "${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a")
++ set(HDR10_PLUS_LIBRARY
++ "${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a")
+ endif()
+-elseif(UNIX)
+- set(FFMPEG_PLATFORM_LIBRARIES va va-drm va-x11 vdpau X11)
+- if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+- list(APPEND FFMPEG_PLATFORM_LIBRARIES mfx)
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/linux-x86_64")
+- set(CPACK_DEB_PLATFORM_PACKAGE_DEPENDS "libmfx1,")
+- set(CPACK_RPM_PLATFORM_PACKAGE_REQUIRES "intel-mediasdk >= 22.3.0,")
+- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/linux-aarch64")
+- elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64le" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc64")
+- set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/linux-powerpc64le")
+- else()
+- message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
+- endif()
+-endif()
+-set(FFMPEG_INCLUDE_DIRS
+- "${FFMPEG_PREPARED_BINARIES}/include")
+-if(EXISTS "${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a")
+- set(HDR10_PLUS_LIBRARY
+- "${FFMPEG_PREPARED_BINARIES}/lib/libhdr10plus.a")
+-endif()
+-set(FFMPEG_LIBRARIES
++ set(FFMPEG_LIBRARIES
++ "${FFMPEG_PREPARED_BINARIES}/lib/libavcodec.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libavutil.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libcbs.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libSvtAv1Enc.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libswscale.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libx264.a"
++ "${FFMPEG_PREPARED_BINARIES}/lib/libx265.a"
++ ${HDR10_PLUS_LIBRARY}
++ ${FFMPEG_PLATFORM_LIBRARIES})
++else()
++ set(FFMPEG_LIBRARIES
+ "${FFMPEG_PREPARED_BINARIES}/lib/libavcodec.a"
+ "${FFMPEG_PREPARED_BINARIES}/lib/libavutil.a"
+ "${FFMPEG_PREPARED_BINARIES}/lib/libcbs.a"
+- "${FFMPEG_PREPARED_BINARIES}/lib/libSvtAv1Enc.a"
+ "${FFMPEG_PREPARED_BINARIES}/lib/libswscale.a"
+- "${FFMPEG_PREPARED_BINARIES}/lib/libx264.a"
+- "${FFMPEG_PREPARED_BINARIES}/lib/libx265.a"
+- ${HDR10_PLUS_LIBRARY}
+ ${FFMPEG_PLATFORM_LIBRARIES})
++endif()
++
++set(FFMPEG_INCLUDE_DIRS
++ "${FFMPEG_PREPARED_BINARIES}/include")
+
+ # platform specific dependencies
+ if(WIN32)
+--
+2.43.0
+
+
+From b7a479b15216900fdc4cbc5587d8fd90e366f5a5 Mon Sep 17 00:00:00 2001
+From: James Le Cuirot <chewi@gentoo.org>
+Date: Mon, 1 Jan 2024 13:34:20 +0000
+Subject: [PATCH 2/2] Move numa from general PLATFORM_LIBRARIES to
+ FFMPEG_PLATFORM_LIBRARIES
+
+It's only needed if libx265 was built with NUMA support. This support
+may be disabled in a custom FFmpeg build.
+---
+ cmake/compile_definitions/linux.cmake | 1 -
+ cmake/dependencies/common.cmake | 2 +-
+ 2 files changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/cmake/compile_definitions/linux.cmake b/cmake/compile_definitions/linux.cmake
+index 613a090..e1fda2c 100644
+--- a/cmake/compile_definitions/linux.cmake
++++ b/cmake/compile_definitions/linux.cmake
+@@ -242,7 +242,6 @@ list(APPEND PLATFORM_LIBRARIES
+ Boost::dynamic_linking
+ dl
+ evdev
+- numa
+ pulse
+ pulse-simple)
+
+diff --git a/cmake/dependencies/common.cmake b/cmake/dependencies/common.cmake
+index d921c1b..23695e3 100644
+--- a/cmake/dependencies/common.cmake
++++ b/cmake/dependencies/common.cmake
+@@ -41,7 +41,7 @@ if(NOT DEFINED FFMPEG_PREPARED_BINARIES)
+ message(FATAL_ERROR "Unsupported system processor:" ${CMAKE_SYSTEM_PROCESSOR})
+ endif()
+ elseif(UNIX)
+- set(FFMPEG_PLATFORM_LIBRARIES va va-drm va-x11 vdpau X11)
++ set(FFMPEG_PLATFORM_LIBRARIES numa va va-drm va-x11 vdpau X11)
+ if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
+ list(APPEND FFMPEG_PLATFORM_LIBRARIES mfx)
+ set(FFMPEG_PREPARED_BINARIES "${CMAKE_SOURCE_DIR}/third-party/build-deps/ffmpeg/linux-x86_64")
+--
+2.43.0
+