From c55e93a8acc7eb98dbbc618b2f81f112d260cdf1 Mon Sep 17 00:00:00 2001 From: Andreas Sturmlechner Date: Thu, 29 Nov 2018 22:14:31 +0100 Subject: media-libs/qtav: Fix build with ffmpeg-4 Thanks-to: Marco Genasci Closes: https://bugs.gentoo.org/670765 Package-Manager: Portage-2.3.52, Repoman-2.3.12 Signed-off-by: Andreas Sturmlechner --- media-libs/qtav/files/qtav-1.12.0-ffmpeg-4.patch | 36 ------- media-libs/qtav/files/qtav-1.12.0-ffmpeg4-1.patch | 36 +++++++ media-libs/qtav/files/qtav-1.12.0-ffmpeg4-2.patch | 119 ++++++++++++++++++++++ media-libs/qtav/qtav-1.12.0.ebuild | 6 +- 4 files changed, 158 insertions(+), 39 deletions(-) delete mode 100644 media-libs/qtav/files/qtav-1.12.0-ffmpeg-4.patch create mode 100644 media-libs/qtav/files/qtav-1.12.0-ffmpeg4-1.patch create mode 100644 media-libs/qtav/files/qtav-1.12.0-ffmpeg4-2.patch diff --git a/media-libs/qtav/files/qtav-1.12.0-ffmpeg-4.patch b/media-libs/qtav/files/qtav-1.12.0-ffmpeg-4.patch deleted file mode 100644 index cb77e9adebb2..000000000000 --- a/media-libs/qtav/files/qtav-1.12.0-ffmpeg-4.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 1633f2962e195eb2a013072e694a2e1c701613a8 Mon Sep 17 00:00:00 2001 -From: 0xFelix -Date: Tue, 12 Dec 2017 13:24:34 +0100 -Subject: [PATCH] Remove usage of deprecated avfiltergraph.h header - -avfiltergraph.h was replaced by avfilter.h in libavfilter version -3.8.0+ so only include it when the used libavfilter version -is older than 3.8.0 ---- - src/QtAV/private/AVCompat.h | 4 ++++ - 1 file changed, 4 insertions(+) - -diff --git a/src/QtAV/private/AVCompat.h b/src/QtAV/private/AVCompat.h -index 6c38596d1..944cfd7de 100644 ---- a/src/QtAV/private/AVCompat.h -+++ b/src/QtAV/private/AVCompat.h -@@ -59,6 +59,7 @@ extern "C" - #include - #include - #include -+#include - - #if !FFMPEG_MODULE_CHECK(LIBAVUTIL, 51, 73, 101) - #include -@@ -79,8 +80,11 @@ extern "C" - #endif //QTAV_HAVE(AVRESAMPLE) - - #if QTAV_HAVE(AVFILTER) -+#if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,8,0) - #include /*code is here for old version*/ -+#else - #include -+#endif - #include - #include - #endif //QTAV_HAVE(AVFILTER) diff --git a/media-libs/qtav/files/qtav-1.12.0-ffmpeg4-1.patch b/media-libs/qtav/files/qtav-1.12.0-ffmpeg4-1.patch new file mode 100644 index 000000000000..cb77e9adebb2 --- /dev/null +++ b/media-libs/qtav/files/qtav-1.12.0-ffmpeg4-1.patch @@ -0,0 +1,36 @@ +From 1633f2962e195eb2a013072e694a2e1c701613a8 Mon Sep 17 00:00:00 2001 +From: 0xFelix +Date: Tue, 12 Dec 2017 13:24:34 +0100 +Subject: [PATCH] Remove usage of deprecated avfiltergraph.h header + +avfiltergraph.h was replaced by avfilter.h in libavfilter version +3.8.0+ so only include it when the used libavfilter version +is older than 3.8.0 +--- + src/QtAV/private/AVCompat.h | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/QtAV/private/AVCompat.h b/src/QtAV/private/AVCompat.h +index 6c38596d1..944cfd7de 100644 +--- a/src/QtAV/private/AVCompat.h ++++ b/src/QtAV/private/AVCompat.h +@@ -59,6 +59,7 @@ extern "C" + #include + #include + #include ++#include + + #if !FFMPEG_MODULE_CHECK(LIBAVUTIL, 51, 73, 101) + #include +@@ -79,8 +80,11 @@ extern "C" + #endif //QTAV_HAVE(AVRESAMPLE) + + #if QTAV_HAVE(AVFILTER) ++#if LIBAVFILTER_VERSION_INT < AV_VERSION_INT(3,8,0) + #include /*code is here for old version*/ ++#else + #include ++#endif + #include + #include + #endif //QTAV_HAVE(AVFILTER) diff --git a/media-libs/qtav/files/qtav-1.12.0-ffmpeg4-2.patch b/media-libs/qtav/files/qtav-1.12.0-ffmpeg4-2.patch new file mode 100644 index 000000000000..1f78acfde491 --- /dev/null +++ b/media-libs/qtav/files/qtav-1.12.0-ffmpeg4-2.patch @@ -0,0 +1,119 @@ +From 7f6929b49c25ca475a08f87e8b52aa1642d109dd Mon Sep 17 00:00:00 2001 +From: Felix Matouschek +Date: Sat, 11 Nov 2017 10:13:06 +0100 +Subject: [PATCH] Make QtAV build with newer versions of FFmpeg + +Some defines changed their name in newer versions of FFmpeg, this +patch uses preprocessor instructions in AVCompat.h to use the +correct define names. Also filter names retrieved by +'avfilter_get_by_name' should be used as const variables in +libavfilter versions starting at 7.0.0. +--- + src/AVMuxer.cpp | 2 +- + src/QtAV/private/AVCompat.h | 12 ++++++++++++ + src/codec/audio/AudioEncoderFFmpeg.cpp | 4 ++-- + src/codec/video/VideoEncoderFFmpeg.cpp | 2 +- + src/filter/LibAVFilter.cpp | 8 +++++++- + src/subtitle/SubtitleProcessorFFmpeg.cpp | 2 +- + 6 files changed, 24 insertions(+), 6 deletions(-) + +diff --git a/src/AVMuxer.cpp b/src/AVMuxer.cpp +index 2f0b40d05..d2eb3dde8 100644 +--- a/src/AVMuxer.cpp ++++ b/src/AVMuxer.cpp +@@ -124,7 +124,7 @@ AVStream *AVMuxer::Private::addStream(AVFormatContext* ctx, const QString &codec + c->time_base = s->time_base; + /* Some formats want stream headers to be separate. */ + if (ctx->oformat->flags & AVFMT_GLOBALHEADER) +- c->flags |= CODEC_FLAG_GLOBAL_HEADER; ++ c->flags |= AV_CODEC_FLAG_GLOBAL_HEADER; + // expose avctx to encoder and set properties in encoder? + // list codecs for a given format in ui + return s; +diff --git a/src/QtAV/private/AVCompat.h b/src/QtAV/private/AVCompat.h +index e387868a8..6c38596d1 100644 +--- a/src/QtAV/private/AVCompat.h ++++ b/src/QtAV/private/AVCompat.h +@@ -456,3 +456,15 @@ const char *get_codec_long_name(AVCodecID id); + } } while(0) + + #endif //QTAV_COMPAT_H ++ ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(56,33,0) ++#define AV_CODEC_FLAG_GLOBAL_HEADER CODEC_FLAG_GLOBAL_HEADER ++#endif ++ ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(56,56,100) ++#define AV_INPUT_BUFFER_MIN_SIZE FF_MIN_BUFFER_SIZE ++#endif ++ ++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(56,56,100) ++#define AV_INPUT_BUFFER_PADDING_SIZE FF_INPUT_BUFFER_PADDING_SIZE ++#endif +diff --git a/src/codec/audio/AudioEncoderFFmpeg.cpp b/src/codec/audio/AudioEncoderFFmpeg.cpp +index a74f4f31d..3811e11a6 100644 +--- a/src/codec/audio/AudioEncoderFFmpeg.cpp ++++ b/src/codec/audio/AudioEncoderFFmpeg.cpp +@@ -151,8 +151,8 @@ bool AudioEncoderFFmpegPrivate::open() + } else { + buffer_size = frame_size*format_used.bytesPerSample()*format_used.channels()*2+200; + } +- if (buffer_size < FF_MIN_BUFFER_SIZE) +- buffer_size = FF_MIN_BUFFER_SIZE; ++ if (buffer_size < AV_INPUT_BUFFER_MIN_SIZE) ++ buffer_size = AV_INPUT_BUFFER_MIN_SIZE; + buffer.resize(buffer_size); + return true; + } +diff --git a/src/codec/video/VideoEncoderFFmpeg.cpp b/src/codec/video/VideoEncoderFFmpeg.cpp +index 7c5ed42d0..671efa7d3 100644 +--- a/src/codec/video/VideoEncoderFFmpeg.cpp ++++ b/src/codec/video/VideoEncoderFFmpeg.cpp +@@ -245,7 +245,7 @@ bool VideoEncoderFFmpegPrivate::open() + applyOptionsForContext(); + AV_ENSURE_OK(avcodec_open2(avctx, codec, &dict), false); + // from mpv ao_lavc +- const int buffer_size = qMax(qMax(width*height*6+200, FF_MIN_BUFFER_SIZE), sizeof(AVPicture));//?? ++ const int buffer_size = qMax(qMax(width*height*6+200, AV_INPUT_BUFFER_MIN_SIZE), sizeof(AVPicture));//?? + buffer.resize(buffer_size); + return true; + } +diff --git a/src/filter/LibAVFilter.cpp b/src/filter/LibAVFilter.cpp +index 191512040..8993a91f7 100644 +--- a/src/filter/LibAVFilter.cpp ++++ b/src/filter/LibAVFilter.cpp +@@ -120,7 +120,10 @@ class LibAVFilter::Private + // pixel_aspect==sar, pixel_aspect is more compatible + QString buffersrc_args = args; + qDebug("buffersrc_args=%s", buffersrc_args.toUtf8().constData()); +- AVFilter *buffersrc = avfilter_get_by_name(video ? "buffer" : "abuffer"); ++#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(7,0,0) ++ const ++#endif ++ AVFilter *buffersrc = avfilter_get_by_name(video ? "buffer" : "abuffer"); + Q_ASSERT(buffersrc); + AV_ENSURE_OK(avfilter_graph_create_filter(&in_filter_ctx, + buffersrc, +@@ -128,6 +131,9 @@ class LibAVFilter::Private + filter_graph) + , false); + /* buffer video sink: to terminate the filter chain. */ ++#if LIBAVFILTER_VERSION_INT >= AV_VERSION_INT(7,0,0) ++ const ++#endif + AVFilter *buffersink = avfilter_get_by_name(video ? "buffersink" : "abuffersink"); + Q_ASSERT(buffersink); + AV_ENSURE_OK(avfilter_graph_create_filter(&out_filter_ctx, buffersink, "out", +diff --git a/src/subtitle/SubtitleProcessorFFmpeg.cpp b/src/subtitle/SubtitleProcessorFFmpeg.cpp +index 30ee9367c..1755c3816 100644 +--- a/src/subtitle/SubtitleProcessorFFmpeg.cpp ++++ b/src/subtitle/SubtitleProcessorFFmpeg.cpp +@@ -249,7 +249,7 @@ bool SubtitleProcessorFFmpeg::processHeader(const QByteArray &codec, const QByte + codec_ctx->time_base.den = 1000; + if (!data.isEmpty()) { + av_free(codec_ctx->extradata); +- codec_ctx->extradata = (uint8_t*)av_mallocz(data.size() + FF_INPUT_BUFFER_PADDING_SIZE); ++ codec_ctx->extradata = (uint8_t*)av_mallocz(data.size() + AV_INPUT_BUFFER_PADDING_SIZE); + if (!codec_ctx->extradata) + return false; + codec_ctx->extradata_size = data.size(); \ No newline at end of file diff --git a/media-libs/qtav/qtav-1.12.0.ebuild b/media-libs/qtav/qtav-1.12.0.ebuild index f3e1ff02cc1d..9f203d800ef2 100644 --- a/media-libs/qtav/qtav-1.12.0.ebuild +++ b/media-libs/qtav/qtav-1.12.0.ebuild @@ -1,4 +1,4 @@ -# Copyright 1999-2018 Gentoo Foundation +# Copyright 1999-2018 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=6 @@ -38,8 +38,8 @@ RDEPEND="${DEPEND}" S="${WORKDIR}/${MY_PN}-${PV}" PATCHES=( - "${FILESDIR}/${P}-multilib.patch" - "${FILESDIR}/${P}-ffmpeg-4.patch" + "${FILESDIR}"/${P}-multilib.patch + "${FILESDIR}"/${P}-ffmpeg4-{1,2}.patch # bugs 660852, 670765 ) src_prepare() { -- cgit v1.2.3-65-gdbad