commit: 7549e0ff4dec4ef6624a74bda69990abda1910c8
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Wed Mar 20 11:57:41 2019 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Wed Mar 20 12:29:33 2019 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7549e0ff
media-sound/cmus: Fix ffmpeg deprecations being future build errors
Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>
media-sound/cmus/cmus-2.8.0.ebuild | 5 +-
.../files/cmus-2.8.0-ffmpeg-deprecations.patch | 124 +++++++++++++++++++++
2 files changed, 128 insertions(+), 1 deletion(-)
diff --git a/media-sound/cmus/cmus-2.8.0.ebuild
b/media-sound/cmus/cmus-2.8.0.ebuild
index 27052411479..22dddaf4873 100644
--- a/media-sound/cmus/cmus-2.8.0.ebuild
+++ b/media-sound/cmus/cmus-2.8.0.ebuild
@@ -66,7 +66,10 @@ REQUIRED_USE="tremor? ( vorbis )
DOCS=( AUTHORS README.md )
-PATCHES=( "${FILESDIR}/${P}-elogind.patch" )
+PATCHES=(
+ "${FILESDIR}/${P}-elogind.patch"
+ "${FILESDIR}/${P}-ffmpeg-deprecations.patch"
+)
S="${WORKDIR}/${P/_/-}"
diff --git a/media-sound/cmus/files/cmus-2.8.0-ffmpeg-deprecations.patch
b/media-sound/cmus/files/cmus-2.8.0-ffmpeg-deprecations.patch
new file mode 100644
index 00000000000..941f47e3d49
--- /dev/null
+++ b/media-sound/cmus/files/cmus-2.8.0-ffmpeg-deprecations.patch
@@ -0,0 +1,124 @@
+From 9877eb02381fd4c57059f9c77be03127c28d8f88 Mon Sep 17 00:00:00 2001
+From: Niko E <[email protected]>
+Date: Mon, 11 Feb 2019 09:09:21 +0100
+Subject: [PATCH] Fixes ffmpeg deprecations (#861)
+
+- av_register_all is no longer needed since 4.0
+- AVStream::codec is deprecated since 3.1
+- avcodec_decode_audio4 is deprecated since 3.1
+---
+ ip/ffmpeg.c | 42 ++++++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 42 insertions(+)
+
+diff --git a/ip/ffmpeg.c b/ip/ffmpeg.c
+index eaad5c4f..418a37f8 100644
+--- a/ip/ffmpeg.c
++++ b/ip/ffmpeg.c
+@@ -128,9 +128,11 @@ static void ffmpeg_init(void)
+
+ av_log_set_level(AV_LOG_QUIET);
+
++#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 18, 100)
+ /* We could register decoders explicitly to save memory, but we have to
+ * be careful about compatibility. */
+ av_register_all();
++#endif
+ }
+
+ static int ffmpeg_open(struct input_plugin_data *ip_data)
+@@ -143,6 +145,9 @@ static int ffmpeg_open(struct input_plugin_data *ip_data)
+ AVCodec *codec;
+ AVCodecContext *cc = NULL;
+ AVFormatContext *ic = NULL;
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
++ AVCodecParameters *cp = NULL;
++#endif
+ SwrContext *swr = NULL;
+
+ ffmpeg_init();
+@@ -162,11 +167,20 @@ static int ffmpeg_open(struct input_plugin_data *ip_data)
+ }
+
+ for (i = 0; i < ic->nb_streams; i++) {
++
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
++ cp = ic->streams[i]->codecpar;
++ if (cp->codec_type == AVMEDIA_TYPE_AUDIO) {
++ stream_index = i;
++ break;
++ }
++#else
+ cc = ic->streams[i]->codec;
+ if (cc->codec_type == AVMEDIA_TYPE_AUDIO) {
+ stream_index = i;
+ break;
+ }
++#endif
+ }
+
+ if (stream_index == -1) {
+@@ -175,7 +189,13 @@ static int ffmpeg_open(struct input_plugin_data *ip_data)
+ break;
+ }
+
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
++ codec = avcodec_find_decoder(cp->codec_id);
++ cc = avcodec_alloc_context3(codec);
++ avcodec_parameters_to_context(cc, cp);
++#else
+ codec = avcodec_find_decoder(cc->codec_id);
++#endif
+ if (!codec) {
+ d_print("codec not found: %d, %s\n", cc->codec_id,
avcodec_get_name(cc->codec_id));
+ err = -IP_ERROR_UNSUPPORTED_FILE_TYPE;
+@@ -196,6 +216,9 @@ static int ffmpeg_open(struct input_plugin_data *ip_data)
+
+ if (err < 0) {
+ /* Clean up. cc is never opened at this point. (See above
assumption.) */
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
++ avcodec_free_context(&cc);
++#endif
+ avformat_close_input(&ic);
+ return err;
+ }
+@@ -207,6 +230,9 @@ static int ffmpeg_open(struct input_plugin_data *ip_data)
+ priv->input = ffmpeg_input_create();
+ if (priv->input == NULL) {
+ avcodec_close(cc);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
++ avcodec_free_context(&cc);
++#endif
+ avformat_close_input(&ic);
+ free(priv);
+ return -IP_ERROR_INTERNAL;
+@@ -252,6 +278,9 @@ static int ffmpeg_close(struct input_plugin_data *ip_data)
+ struct ffmpeg_private *priv = ip_data->private;
+
+ avcodec_close(priv->codec_context);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
++ avcodec_free_context(&priv->codec_context);
++#endif
+ avformat_close_input(&priv->input_context);
+ swr_free(&priv->swr);
+ ffmpeg_input_free(priv->input);
+@@ -305,7 +334,20 @@ static int ffmpeg_fill_buffer(AVFormatContext *ic,
AVCodecContext *cc, struct ff
+ AVPacket avpkt;
+ av_new_packet(&avpkt, input->curr_pkt_size);
+ memcpy(avpkt.data, input->curr_pkt_buf,
input->curr_pkt_size);
++#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101)
++ if (avcodec_send_packet(cc, &avpkt) == 0) {
++ got_frame = !avcodec_receive_frame(cc, frame);
++ if (got_frame)
++ len = input->curr_pkt_size;
++ else
++ len = 0;
++ } else {
++ got_frame = 0;
++ len = 0;
++ }
++#else
+ len = avcodec_decode_audio4(cc, frame, &got_frame,
&avpkt);
++#endif
+ #if LIBAVCODEC_VERSION_MAJOR >= 56
+ av_packet_unref(&avpkt);
+ #else