diff options
Diffstat (limited to 'media-video/ffmpeg/files')
-rw-r--r-- | media-video/ffmpeg/files/chromium-r3.patch | 53 | ||||
-rw-r--r-- | media-video/ffmpeg/files/ffmpeg-6.1.1-memory-leak.patch | 129 | ||||
-rw-r--r-- | media-video/ffmpeg/files/ffmpeg-6.1.1-vulkan-rename.patch | 127 | ||||
-rw-r--r-- | media-video/ffmpeg/files/ffmpeg-7.1.1-svt-av1-3.patch | 13 |
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"); |