summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2019-03-20 12:57:41 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2019-03-20 13:29:33 +0100
commit7549e0ff4dec4ef6624a74bda69990abda1910c8 (patch)
tree8e66b4a1964f8851542d076cd0ad29d4b7c3e32c /media-sound/cmus
parentmedia-sound/cmus: 2.8.0 version bump, add MPRIS support (diff)
downloadgentoo-7549e0ff4dec4ef6624a74bda69990abda1910c8.tar.gz
gentoo-7549e0ff4dec4ef6624a74bda69990abda1910c8.tar.bz2
gentoo-7549e0ff4dec4ef6624a74bda69990abda1910c8.zip
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@gentoo.org>
Diffstat (limited to 'media-sound/cmus')
-rw-r--r--media-sound/cmus/cmus-2.8.0.ebuild5
-rw-r--r--media-sound/cmus/files/cmus-2.8.0-ffmpeg-deprecations.patch124
2 files changed, 128 insertions, 1 deletions
diff --git a/media-sound/cmus/cmus-2.8.0.ebuild b/media-sound/cmus/cmus-2.8.0.ebuild
index 270524114797..22dddaf48737 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 000000000000..941f47e3d499
--- /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 <nefthy@users.noreply.github.com>
+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