summaryrefslogtreecommitdiff
path: root/media-video/ffmpeg/files
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/ffmpeg/files')
-rw-r--r--media-video/ffmpeg/files/chromium-r3.patch53
-rw-r--r--media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch129
-rw-r--r--media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch127
-rw-r--r--media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch13
4 files changed, 66 insertions, 256 deletions
diff --git a/media-video/ffmpeg/files/chromium-r3.patch b/media-video/ffmpeg/files/chromium-r3.patch
new file mode 100644
index 000000000000..6d6e6c6e4828
--- /dev/null
+++ b/media-video/ffmpeg/files/chromium-r3.patch
@@ -0,0 +1,53 @@
+Allow libffmpeg to be built for Chromium-based browsers
+https://patchwork.ffmpeg.org/patch/4500/
+
+NOTE: This patch has -U1 unified context to be less likely
+to need rebasing across ffmpeg versions.
+
+--- a/Makefile
++++ b/Makefile
+@@ -43,2 +43,3 @@
+ include $(SRC_PATH)/ffbuild/common.mak
++include $(SRC_PATH)/ffbuild/libffmpeg.mak
+
+--- a/chromium.c
++++ b/chromium.c
+@@ -0,0 +1,8 @@
++#include "libavformat/avformat.h"
++#include "libavformat/internal.h"
++
++int64_t av_stream_get_first_dts(const AVStream *st);
++int64_t av_stream_get_first_dts(const AVStream *st)
++{
++ return cffstream(st)->first_dts;
++}
+--- a/ffbuild/libffmpeg.mak
++++ 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) libswresample/$(LIBPREF)swresample$(LIBSUF)
++endif
++
++$(LIBFFMPEG): $(LIBFFMPEG_DEPS) chromium.o
++ifeq ($(CONFIG_SHARED),yes)
++ $(LIBFFMPEG_LINK) -Wl,--no-as-needed chromium.o -lavcodec -lavformat -lavutil
++else
++ $(LIBFFMPEG_LINK) -Wl,--whole-archive $^ -Wl,--no-whole-archive $(EXTRALIBS-avcodec) $(EXTRALIBS-avformat) $(EXTRALIBS-avutil) $(EXTRALIBS-swresample)
++endif
++
++libffmpeg: $(LIBFFMPEG)
++
++install-libffmpeg: $(LIBFFMPEG)
++ $(Q)mkdir -p "$(SHLIBDIR)/chromium"
++ $(INSTALL) -m 755 $< "$(SHLIBDIR)/chromium/$<"
++ $(STRIP) "$(SHLIBDIR)/chromium/$<"
++
++uninstall-libffmpeg:
++ $(RM) "$(SHLIBDIR)/chromium/$(LIBFFMPEG)"
++
++.PHONY: libffmpeg install-libffmpeg uninstall-libffmpeg
diff --git a/media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch b/media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch
deleted file mode 100644
index d02522b3a3a4..000000000000
--- a/media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-https://bugs.gentoo.org/931059
-https://ffmpeg.org//pipermail/ffmpeg-devel/2024-May/326569.html
-https://git.videolan.org/?p=ffmpeg.git;a=commit;h=670c823406612697b394d4933e03d3e1a176474f
-https://git.videolan.org/?p=ffmpeg.git;a=commit;h=1606aab99bd84f0040fb0fa6ccccb092941f01ec
-
-From 670c823406612697b394d4933e03d3e1a176474f Mon Sep 17 00:00:00 2001
-From: Paul B Mahol <onemda@gmail.com>
-Date: Fri, 27 Oct 2023 14:26:50 +0200
-Subject: [PATCH] avfilter/buffersrc: switch to activate
-
-Fixes OOM when caller keeps adding frames into filtergraph
-that reached EOF by other means, for example EOF is signalled
-by other filter in filtergraph or by buffersink.
-
-(cherry picked from commit 84e400ae37b1e2849a3ead399ef86c808356cdd6)
---- a/libavfilter/buffersrc.c
-+++ b/libavfilter/buffersrc.c
-@@ -36,6 +36,7 @@
- #include "audio.h"
- #include "avfilter.h"
- #include "buffersrc.h"
-+#include "filters.h"
- #include "formats.h"
- #include "internal.h"
- #include "video.h"
-@@ -194,7 +195,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
- if (!frame)
- return av_buffersrc_close(ctx, s->last_pts, flags);
- if (s->eof)
-- return AVERROR(EINVAL);
-+ return AVERROR_EOF;
-
- s->last_pts = frame->pts + frame->duration;
-
-@@ -484,21 +485,28 @@ static int config_props(AVFilterLink *link)
- return 0;
- }
-
--static int request_frame(AVFilterLink *link)
-+static int activate(AVFilterContext *ctx)
- {
-- BufferSourceContext *c = link->src->priv;
-+ AVFilterLink *outlink = ctx->outputs[0];
-+ BufferSourceContext *c = ctx->priv;
-
-- if (c->eof)
-- return AVERROR_EOF;
-+ if (!c->eof && ff_outlink_get_status(outlink)) {
-+ c->eof = 1;
-+ return 0;
-+ }
-+
-+ if (c->eof) {
-+ ff_outlink_set_status(outlink, AVERROR_EOF, c->last_pts);
-+ return 0;
-+ }
- c->nb_failed_requests++;
-- return AVERROR(EAGAIN);
-+ return FFERROR_NOT_READY;
- }
-
- static const AVFilterPad avfilter_vsrc_buffer_outputs[] = {
- {
- .name = "default",
- .type = AVMEDIA_TYPE_VIDEO,
-- .request_frame = request_frame,
- .config_props = config_props,
- },
- };
-@@ -507,7 +515,7 @@ const AVFilter ff_vsrc_buffer = {
- .name = "buffer",
- .description = NULL_IF_CONFIG_SMALL("Buffer video frames, and make them accessible to the filterchain."),
- .priv_size = sizeof(BufferSourceContext),
--
-+ .activate = activate,
- .init = init_video,
- .uninit = uninit,
-
-@@ -521,7 +529,6 @@ static const AVFilterPad avfilter_asrc_abuffer_outputs[] = {
- {
- .name = "default",
- .type = AVMEDIA_TYPE_AUDIO,
-- .request_frame = request_frame,
- .config_props = config_props,
- },
- };
-@@ -530,7 +537,7 @@ const AVFilter ff_asrc_abuffer = {
- .name = "abuffer",
- .description = NULL_IF_CONFIG_SMALL("Buffer audio frames, and make them accessible to the filterchain."),
- .priv_size = sizeof(BufferSourceContext),
--
-+ .activate = activate,
- .init = init_audio,
- .uninit = uninit,
-
---
-2.30.2
-
-From 1606aab99bd84f0040fb0fa6ccccb092941f01ec Mon Sep 17 00:00:00 2001
-From: Paul B Mahol <onemda@gmail.com>
-Date: Fri, 1 Dec 2023 16:59:07 +0100
-Subject: [PATCH] avfilter/avfilter: fix OOM case for default activate
-
-Fixes OOM when caller keeps adding frames into filtergraph
-that reached EOF by other means, for example EOF is signalled
-by other filter in filtergraph or by buffersink.
-
-(cherry picked from commit d9e41ead82263e96ebd14d4d88d6e7f858dd944c)
---- a/libavfilter/avfilter.c
-+++ b/libavfilter/avfilter.c
-@@ -1167,6 +1167,16 @@ static int ff_filter_activate_default(AVFilterContext *filter)
- {
- unsigned i;
-
-+ for (i = 0; i < filter->nb_outputs; i++) {
-+ int ret = filter->outputs[i]->status_in;
-+
-+ if (ret) {
-+ for (int j = 0; j < filter->nb_inputs; j++)
-+ ff_inlink_set_status(filter->inputs[j], ret);
-+ return 0;
-+ }
-+ }
-+
- for (i = 0; i < filter->nb_inputs; i++) {
- if (samples_ready(filter->inputs[i], filter->inputs[i]->min_samples)) {
- return ff_filter_frame_to_filter(filter->inputs[i]);
---
-2.30.2
diff --git a/media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch b/media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch
deleted file mode 100644
index b564e3874485..000000000000
--- a/media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch
+++ /dev/null
@@ -1,127 +0,0 @@
-https://bugs.gentoo.org/928593
-https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/fef22c87ada4517441701e6e61e062c9f4399c8e
-
-From fef22c87ada4517441701e6e61e062c9f4399c8e Mon Sep 17 00:00:00 2001
-From: =?utf8?q?Jan=20Ekstr=C3=B6m?= <jeebjp@gmail.com>
-Date: Wed, 14 Feb 2024 22:40:54 +0200
-Subject: [PATCH] {avcodec,tests}: rename the bundled Mesa AV1 vulkan video
- headers
-
-This together with adjusting the inclusion define allows for the
-build to not fail with latest Vulkan-Headers that contain the
-stabilized Vulkan AV1 decoding definitions.
-
-Compilation fails currently as the AV1 header is getting included
-via hwcontext_vulkan.h -> <vulkan/vulkan.h> -> vulkan_core.h, which
-finally includes vk_video/vulkan_video_codec_av1std.h and the decode
-header, leading to the bundled header to never defining anything
-due to the inclusion define being the same.
-
-This fix is imperfect, as it leads to additional re-definition
-warnings for things such as
-VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION. , but it is
-not clear how to otherwise have the bundled version trump the
-actually standardized one for a short-term compilation fix.
-
-(cherry picked from commit e06ce6d2b45edac4a2df04f304e18d4727417d24)
----
- libavcodec/Makefile | 4 ++--
- libavcodec/vulkan_video.h | 4 ++--
- ...v1std_decode.h => vulkan_video_codec_av1std_decode_mesa.h} | 4 ++--
- ..._video_codec_av1std.h => vulkan_video_codec_av1std_mesa.h} | 4 ++--
- tests/ref/fate/source | 4 ++--
- 5 files changed, 10 insertions(+), 10 deletions(-)
- rename libavcodec/{vulkan_video_codec_av1std_decode.h => vulkan_video_codec_av1std_decode_mesa.h} (89%)
- rename libavcodec/{vulkan_video_codec_av1std.h => vulkan_video_codec_av1std_mesa.h} (99%)
-
-diff --git a/libavcodec/Makefile b/libavcodec/Makefile
-index ec57e53e30..eb25707ef5 100644
---- a/libavcodec/Makefile
-+++ b/libavcodec/Makefile
-@@ -1284,7 +1284,7 @@ SKIPHEADERS += %_tablegen.h \
- aacenc_quantization.h \
- aacenc_quantization_misc.h \
- bitstream_template.h \
-- vulkan_video_codec_av1std.h \
-+ vulkan_video_codec_av1std_mesa.h \
- $(ARCH)/vpx_arith.h \
-
- SKIPHEADERS-$(CONFIG_AMF) += amfenc.h
-@@ -1306,7 +1306,7 @@ SKIPHEADERS-$(CONFIG_XVMC) += xvmc.h
- SKIPHEADERS-$(CONFIG_VAAPI) += vaapi_decode.h vaapi_hevc.h vaapi_encode.h
- SKIPHEADERS-$(CONFIG_VDPAU) += vdpau.h vdpau_internal.h
- SKIPHEADERS-$(CONFIG_VIDEOTOOLBOX) += videotoolbox.h vt_internal.h
--SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode.h
-+SKIPHEADERS-$(CONFIG_VULKAN) += vulkan.h vulkan_video.h vulkan_decode.h vulkan_video_codec_av1std_decode_mesa.h
- SKIPHEADERS-$(CONFIG_V4L2_M2M) += v4l2_buffers.h v4l2_context.h v4l2_m2m.h
- SKIPHEADERS-$(CONFIG_ZLIB) += zlib_wrapper.h
-
-diff --git a/libavcodec/vulkan_video.h b/libavcodec/vulkan_video.h
-index b28e3fe0bd..51f44dd543 100644
---- a/libavcodec/vulkan_video.h
-+++ b/libavcodec/vulkan_video.h
-@@ -23,8 +23,8 @@
- #include "vulkan.h"
-
- #include <vk_video/vulkan_video_codecs_common.h>
--#include "vulkan_video_codec_av1std.h"
--#include "vulkan_video_codec_av1std_decode.h"
-+#include "vulkan_video_codec_av1std_mesa.h"
-+#include "vulkan_video_codec_av1std_decode_mesa.h"
-
- #define CODEC_VER_MAJ(ver) (ver >> 22)
- #define CODEC_VER_MIN(ver) ((ver >> 12) & ((1 << 10) - 1))
-diff --git a/libavcodec/vulkan_video_codec_av1std_decode.h b/libavcodec/vulkan_video_codec_av1std_decode_mesa.h
-similarity index 89%
-rename from libavcodec/vulkan_video_codec_av1std_decode.h
-rename to libavcodec/vulkan_video_codec_av1std_decode_mesa.h
-index a697c00593..e2f37b4e6e 100644
---- a/libavcodec/vulkan_video_codec_av1std_decode.h
-+++ b/libavcodec/vulkan_video_codec_av1std_decode_mesa.h
-@@ -14,8 +14,8 @@
- * limitations under the License.
- */
-
--#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_
--#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_H_ 1
-+#ifndef VULKAN_VIDEO_CODEC_AV1STD_DECODE_MESA_H_
-+#define VULKAN_VIDEO_CODEC_AV1STD_DECODE_MESA_H_ 1
-
- /*
- ** This header is NOT YET generated from the Khronos Vulkan XML API Registry.
-diff --git a/libavcodec/vulkan_video_codec_av1std.h b/libavcodec/vulkan_video_codec_av1std_mesa.h
-similarity index 99%
-rename from libavcodec/vulkan_video_codec_av1std.h
-rename to libavcodec/vulkan_video_codec_av1std_mesa.h
-index c46236c457..c91589eee2 100644
---- a/libavcodec/vulkan_video_codec_av1std.h
-+++ b/libavcodec/vulkan_video_codec_av1std_mesa.h
-@@ -14,8 +14,8 @@
- * limitations under the License.
- */
-
--#ifndef VULKAN_VIDEO_CODEC_AV1STD_H_
--#define VULKAN_VIDEO_CODEC_AV1STD_H_ 1
-+#ifndef VULKAN_VIDEO_CODEC_AV1STD_MESA_H_
-+#define VULKAN_VIDEO_CODEC_AV1STD_MESA_H_ 1
-
- /*
- ** This header is NOT YET generated from the Khronos Vulkan XML API Registry.
-diff --git a/tests/ref/fate/source b/tests/ref/fate/source
-index c575789dd5..8bb58b61f1 100644
---- a/tests/ref/fate/source
-+++ b/tests/ref/fate/source
-@@ -23,8 +23,8 @@ compat/djgpp/math.h
- compat/float/float.h
- compat/float/limits.h
- libavcodec/bitstream_template.h
--libavcodec/vulkan_video_codec_av1std.h
--libavcodec/vulkan_video_codec_av1std_decode.h
-+libavcodec/vulkan_video_codec_av1std_decode_mesa.h
-+libavcodec/vulkan_video_codec_av1std_mesa.h
- tools/decode_simple.h
- Use of av_clip() where av_clip_uintp2() could be used:
- Use of av_clip() where av_clip_intp2() could be used:
---
-2.25.1
-
diff --git a/media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch b/media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch
new file mode 100644
index 000000000000..b45f20cebea7
--- /dev/null
+++ b/media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch
@@ -0,0 +1,13 @@
+https://github.com/FFmpeg/FFmpeg/commit/d1ed5c06e
+--- a/libavcodec/libsvtav1.c
++++ b/libavcodec/libsvtav1.c
+@@ -436,5 +436,9 @@
+ svt_enc->eos_flag = EOS_NOT_REACHED;
+
++#if SVT_AV1_CHECK_VERSION(3, 0, 0)
++ svt_ret = svt_av1_enc_init_handle(&svt_enc->svt_handle, &svt_enc->enc_params);
++#else
+ svt_ret = svt_av1_enc_init_handle(&svt_enc->svt_handle, svt_enc, &svt_enc->enc_params);
++#endif
+ if (svt_ret != EB_ErrorNone) {
+ return svt_print_error(avctx, svt_ret, "Error initializing encoder handle");