summaryrefslogtreecommitdiff
path: root/media-video/ffmpeg-chromium/files
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/ffmpeg-chromium/files')
-rw-r--r--media-video/ffmpeg-chromium/files/chromium.patch41
-rw-r--r--media-video/ffmpeg-chromium/files/ffmpeg-chromium-100.patch27
-rw-r--r--media-video/ffmpeg-chromium/files/ffmpeg-chromium-vk-headers.patch36
3 files changed, 104 insertions, 0 deletions
diff --git a/media-video/ffmpeg-chromium/files/chromium.patch b/media-video/ffmpeg-chromium/files/chromium.patch
new file mode 100644
index 0000000..e24ea84
--- /dev/null
+++ b/media-video/ffmpeg-chromium/files/chromium.patch
@@ -0,0 +1,41 @@
+Allow libffmpeg to be built for Chromium-based browsers
+https://patchwork.ffmpeg.org/patch/4500/
+
+NOTE: This patch lacks the Makefile include line. We append it
+manually instead to make patching across different versions easier.
+
+diff --git a/ffbuild/libffmpeg.mak b/ffbuild/libffmpeg.mak
+new file mode 100644
+index 0000000..992cf3c
+--- /dev/null
++++ b/ffbuild/libffmpeg.mak
+@@ -0,0 +1,27 @@
++LIBFFMPEG = $(SLIBPREF)ffmpeg$(SLIBSUF)
++LIBFFMPEG_LINK = $(LD) -shared -Wl,-soname,$(LIBFFMPEG) -Wl,-Bsymbolic -Wl,-z,now -Wl,-z,relro -Wl,-z,defs -Wl,--gc-sections $(LDFLAGS) $(LDLIBFLAGS) -o $(LIBFFMPEG)
++
++ifeq ($(CONFIG_SHARED),yes)
++LIBFFMPEG_DEPS = libavcodec/$(SLIBPREF)avcodec$(SLIBSUF) libavformat/$(SLIBPREF)avformat$(SLIBSUF) libavutil/$(SLIBPREF)avutil$(SLIBSUF)
++else
++LIBFFMPEG_DEPS = libavcodec/$(LIBPREF)avcodec$(LIBSUF) libavformat/$(LIBPREF)avformat$(LIBSUF) libavutil/$(LIBPREF)avutil$(LIBSUF)
++endif
++
++$(LIBFFMPEG): $(LIBFFMPEG_DEPS)
++ifeq ($(CONFIG_SHARED),yes)
++ $(LIBFFMPEG_LINK) -Wl,--no-as-needed -lavcodec -lavformat -lavutil
++else
++ $(LIBFFMPEG_LINK) -Wl,--whole-archive $^ -Wl,--no-whole-archive $(EXTRALIBS-avcodec) $(EXTRALIBS-avformat) $(EXTRALIBS-avutil)
++endif
++
++libffmpeg: $(LIBFFMPEG)
++
++install-libffmpeg: $(LIBFFMPEG)
++ $(Q)mkdir -p "$(SHLIBDIR)/chromium"
++ $(INSTALL) -m 755 $< "$(SHLIBDIR)/chromium/$<.$(SLOT)"
++ $(STRIP) "$(SHLIBDIR)/chromium/$<.$(SLOT)"
++
++uninstall-libffmpeg:
++ $(RM) "$(SHLIBDIR)/chromium/$(LIBFFMPEG).$(SLOT)"
++
++.PHONY: libffmpeg install-libffmpeg uninstall-libffmpeg
+--
+2.13.1
diff --git a/media-video/ffmpeg-chromium/files/ffmpeg-chromium-100.patch b/media-video/ffmpeg-chromium/files/ffmpeg-chromium-100.patch
new file mode 100644
index 0000000..e0aa000
--- /dev/null
+++ b/media-video/ffmpeg-chromium/files/ffmpeg-chromium-100.patch
@@ -0,0 +1,27 @@
+diff -Naur a/configure b/configure
+--- a/configure 2022-03-22 10:20:35.000000000 +0000
++++ b/configure 2022-03-23 09:17:18.914615584 +0000
+@@ -6600,15 +6600,14 @@
+ { require_pkg_config libopenjpeg "libopenjp2 >= 2.1.0" openjpeg.h opj_version -DOPJ_STATIC && add_cppflags -DOPJ_STATIC; } }
+ enabled libopenmpt && require_pkg_config libopenmpt "libopenmpt >= 0.2.6557" libopenmpt/libopenmpt.h openmpt_module_create -lstdc++ && append libopenmpt_extralibs "-lstdc++"
+ enabled libopenvino && require libopenvino c_api/ie_c_api.h ie_c_api_version -linference_engine_c_api
+-# Chromium uses a built in copy of libopus that is not visible to pkg-config.
+-# enabled libopus && {
+-# enabled libopus_decoder && {
+-# require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
+-# }
+-# enabled libopus_encoder && {
+-# require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
+-# }
+-# }
++enabled libopus && {
++ enabled libopus_decoder && {
++ require_pkg_config libopus opus opus_multistream.h opus_multistream_decoder_create
++ }
++ enabled libopus_encoder && {
++ require_pkg_config libopus opus opus_multistream.h opus_multistream_surround_encoder_create
++ }
++}
+ enabled libplacebo && require_pkg_config libplacebo "libplacebo >= 4.192.0" libplacebo/vulkan.h pl_vulkan_create
+ enabled libpulse && require_pkg_config libpulse libpulse pulse/pulseaudio.h pa_context_new
+ enabled librabbitmq && require_pkg_config librabbitmq "librabbitmq >= 0.7.1" amqp.h amqp_new_connection
diff --git a/media-video/ffmpeg-chromium/files/ffmpeg-chromium-vk-headers.patch b/media-video/ffmpeg-chromium/files/ffmpeg-chromium-vk-headers.patch
new file mode 100644
index 0000000..f3c3c01
--- /dev/null
+++ b/media-video/ffmpeg-chromium/files/ffmpeg-chromium-vk-headers.patch
@@ -0,0 +1,36 @@
+From eb0455d64690eed0068e5cb202f72ecdf899837c Mon Sep 17 00:00:00 2001
+From: Lynne <dev@lynne.ee>
+Date: Sun, 25 Dec 2022 01:03:30 +0100
+Subject: [PATCH] hwcontext_vulkan: remove optional encode/decode extensions
+ from the list
+
+They're not currently used, so they don't need to be there.
+Vulkan stabilized the decode extensions less than a week ago, and their
+name prefixes were changed from EXT to KHR. It's a bit too soon to be
+depending on it, so rather than bumping, just remove these for now.
+---
+ libavutil/hwcontext_vulkan.c | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c
+index f1db1c7291..2a9b5f4aac 100644
+--- a/libavutil/hwcontext_vulkan.c
++++ b/libavutil/hwcontext_vulkan.c
+@@ -358,14 +358,6 @@ static const VulkanOptExtension optional_device_exts[] = {
+ { VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME, FF_VK_EXT_EXTERNAL_WIN32_MEMORY },
+ { VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME, FF_VK_EXT_EXTERNAL_WIN32_SEM },
+ #endif
+-
+- /* Video encoding/decoding */
+- { VK_KHR_VIDEO_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG },
+- { VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG },
+- { VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME, FF_VK_EXT_NO_FLAG },
+- { VK_EXT_VIDEO_ENCODE_H264_EXTENSION_NAME, FF_VK_EXT_NO_FLAG },
+- { VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME, FF_VK_EXT_NO_FLAG },
+- { VK_EXT_VIDEO_DECODE_H265_EXTENSION_NAME, FF_VK_EXT_NO_FLAG },
+ };
+
+ /* Converts return values to strings */
+--
+2.39.1
+