Hi,
On Wed, 17 Apr 2019 12:14:42 +0200 (CEST)
Paco Esteban <[email protected]> wrote:
> Here's a diff for cmus port 2.7.1 --> 2.8.0
> According to changelog:
>
> [...]
> I basically removed some patches that seem to be now integrated
> upstream related to ffmpeg plugin and sndio. Configure patch has been
> also tweaked to apply cleanly. I've left the rest untouched.
>
> Works fine for me on amd64.
I tried your diff on macppc, it needs tweaks, but it fixes cmus'
runtime (a double-free error) when playing audio CDs with the
libcdio diff i'm trying at the moment (Edd: it's a regression).
Thanks a lot :)
I'm proposing 3 tweaks to the Makefile:
- don't use REVISION, as you're bumping the version it's not needed
- It's C11, so it will require ports-gcc on !base-clang archs
- It wants atomics for macppc and probably hppa
There are extra WANTLIBs but it's needed by the *.so files in
cmus,-main according to 'readelf -d'
I've modified only the Makefile in that diff.
Charlène.
Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/cmus/Makefile,v
retrieving revision 1.20
diff -u -p -r1.20 Makefile
--- Makefile 16 Apr 2019 20:19:01 -0000 1.20
+++ Makefile 2 May 2019 18:54:39 -0000
@@ -3,11 +3,10 @@
COMMENT-main= ncurses-based music player
COMMENT-ffmpeg= ffmpeg input plugin for cmus (.aac, .mp4...)
-V= 2.7.1
+V= 2.8.0
DISTNAME= cmus-${V}
PKGNAME-main= ${PKGNAME}
PKGNAME-ffmpeg= cmus-ffmpeg-${V}
-REVISION= 6
GH_ACCOUNT= cmus
GH_PROJECT= cmus
@@ -21,12 +20,13 @@ PERMIT_PACKAGE_CDROM= Yes
MULTI_PACKAGES= -main -ffmpeg
-WANTLIB-main+= c cdio cdio_cdda cue curses discid FLAC iconv m mad
+WANTLIB-main+= c cdio cdio_cdda curses discid FLAC iconv m mad
WANTLIB-main+= ogg opusfile pthread sndio vorbis vorbisfile wavpack
+# C11
+COMPILER= base-clang ports-gcc
LIB_DEPENDS-main= audio/flac \
audio/libcdio \
- audio/libcue \
audio/libdiscid \
audio/libmad \
audio/libogg \
@@ -42,7 +42,7 @@ RUN_DEPENDS-ffmpeg= audio/cmus
USE_GMAKE= Yes
CONFIGURE_STYLE= simple
-CONFIGURE_ENV= HOSTCC="${CC}" HOSTLD="${CC}" HOST_CFLAGS="${CFLAGS}"
+CONFIGURE_ENV= HOSTCC="${CC}" HOSTLD="${CC}" HOST_CFLAGS="${CFLAGS}"
LDFLAGS="${LDFLAGS}"
CFLAGS+= -Wno-system-headers
# Note: We're explicitly disabling CONFIG_CDDB as it gets undef'd in cdio.c
CONFIGURE_ARGS= prefix=${PREFIX} \
@@ -68,6 +68,12 @@ CONFIGURE_ARGS= prefix=${PREFIX} \
CONFIG_VTX=n
NO_TEST= Yes
+
+# undefined reference to `__atomic_fetch_add_8'
+.if ${MACHINE_ARCH} == "powerpc" || ${MACHINE_ARCH} == "hppa"
+WANTLIB += atomic
+LDFLAGS += -latomic
+.endif
pre-build:
sed -i s,/usr,${LOCALBASE}, ${WRKSRC}/Doc/cmus.txt
Index: distinfo
===================================================================
RCS file: /cvs/ports/audio/cmus/distinfo,v
retrieving revision 1.4
diff -u -p -r1.4 distinfo
--- distinfo 17 Jan 2016 01:16:38 -0000 1.4
+++ distinfo 17 Apr 2019 09:58:49 -0000
@@ -1,2 +1,2 @@
-SHA256 (cmus-2.7.1.tar.gz) = gXmnqEPSV921hfTGVZmES8DlFv6F6X9vh6fOreTrUWU=
-SIZE (cmus-2.7.1.tar.gz) = 296818
+SHA256 (cmus-2.8.0.tar.gz) = dWzixiQbIQTcGQl0iCJd5VmsGAKhdb4CM8+2+8AvO9I=
+SIZE (cmus-2.8.0.tar.gz) = 317243
Index: patches/patch-Makefile
===================================================================
RCS file: /cvs/ports/audio/cmus/patches/patch-Makefile,v
retrieving revision 1.2
diff -u -p -r1.2 patch-Makefile
--- patches/patch-Makefile 17 Jan 2016 01:16:38 -0000 1.2
+++ patches/patch-Makefile 17 Apr 2019 09:58:49 -0000
@@ -2,9 +2,10 @@ $OpenBSD: patch-Makefile,v 1.2 2016/01/1
Fix install(1) usage.
---- Makefile.orig Mon Jul 13 12:00:56 2015
-+++ Makefile Tue Jul 28 14:05:50 2015
-@@ -262,17 +262,21 @@ plugins: $(ip-y) $(op-y)
+Index: Makefile
+--- Makefile.orig
++++ Makefile
+@@ -272,17 +272,21 @@ plugins: $(ip-y) $(op-y)
man: $(man1) $(man7)
install-main: main
Index: patches/patch-configure
===================================================================
RCS file: /cvs/ports/audio/cmus/patches/patch-configure,v
retrieving revision 1.5
diff -u -p -r1.5 patch-configure
--- patches/patch-configure 6 Jun 2018 12:14:44 -0000 1.5
+++ patches/patch-configure 17 Apr 2019 09:58:49 -0000
@@ -11,16 +11,7 @@ final build.
Index: configure
--- configure.orig
+++ configure
-@@ -378,7 +378,7 @@ check_aac()
- check_ffmpeg()
- {
- HAVE_FFMPEG_AVCODEC_H=y
-- pkg_config FFMPEG "libavformat" || return $?
-+ pkg_config FFMPEG "libavformat libavcodec" || return $?
- if check_header "libavcodec/avcodec.h" $FFMPEG_CFLAGS
- then
- HAVE_FFMPEG_AVCODEC_H=n
-@@ -387,7 +387,7 @@ check_ffmpeg()
+@@ -439,7 +439,7 @@ check_ffmpeg()
fi
# ffmpeg api changes so frequently that it is best to compile the module
libs="$LDDLFLAGS $FFMPEG_LIBS"
Index: patches/patch-ffmpeg_c
===================================================================
RCS file: patches/patch-ffmpeg_c
diff -N patches/patch-ffmpeg_c
--- patches/patch-ffmpeg_c 6 Jun 2018 12:14:44 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,493 +0,0 @@
-$OpenBSD: patch-ffmpeg_c,v 1.1 2018/06/06 12:14:44 kn Exp $
-
-Various updates from upstream for newer ffmpeg versions.
-
-among other things:
-
-903282c: Fix ffmpeg segfault
-98ab2a6: Replace deprecated FFmpeg API
-ef65f69: remove dead code for ancient ffmpeg versions
-b595b8c: Fix ffmpeg plugin build
-
-Index: ffmpeg.c
---- ffmpeg.c.orig
-+++ ffmpeg.c
-@@ -26,49 +26,16 @@
- #endif
-
- #include <stdio.h>
--#ifdef HAVE_FFMPEG_AVCODEC_H
--#include <ffmpeg/avcodec.h>
--#include <ffmpeg/avformat.h>
--#include <ffmpeg/avio.h>
--#include <ffmpeg/swresample.h>
--#include <ffmpeg/opt.h>
--#include <ffmpeg/audioconvert.h>
--#else
- #include <libavcodec/avcodec.h>
- #include <libavformat/avformat.h>
- #include <libavformat/avio.h>
- #include <libswresample/swresample.h>
- #include <libavutil/opt.h>
--#include <libavutil/audioconvert.h>
-+#include <libavutil/channel_layout.h>
- #ifndef AVUTIL_MATHEMATICS_H
- #include <libavutil/mathematics.h>
- #endif
--#endif
-
--#if (LIBAVFORMAT_VERSION_INT < ((52<<16)+(31<<8)+0))
--# define NUM_FFMPEG_KEYS 8
--#endif
--
--#if (LIBAVCODEC_VERSION_INT < ((52<<16)+(64<<8)+0))
--# define AVMEDIA_TYPE_AUDIO CODEC_TYPE_AUDIO
--#endif
--
--#if (LIBAVCODEC_VERSION_INT < ((52<<16)+(94<<8)+1))
--#define AV_SAMPLE_FMT_U8 SAMPLE_FMT_U8
--#define AV_SAMPLE_FMT_S16 SAMPLE_FMT_S16
--#define AV_SAMPLE_FMT_S32 SAMPLE_FMT_S32
--#define AV_SAMPLE_FMT_FLT SAMPLE_FMT_FLT
--#if (LIBAVCODEC_VERSION_INT > ((51<<16)+(64<<8)+0))
--#define AV_SAMPLE_FMT_DBL SAMPLE_FMT_DBL
--#endif
--#endif
--
--#if (LIBAVUTIL_VERSION_INT < ((51<<16)+(5<<8)+0))
--#define AV_DICT_IGNORE_SUFFIX AV_METADATA_IGNORE_SUFFIX
--#define av_dict_get av_metadata_get
--#define AVDictionaryEntry AVMetadataTag
--#endif
--
- #ifndef AVCODEC_MAX_AUDIO_FRAME_SIZE
- #define AVCODEC_MAX_AUDIO_FRAME_SIZE 192000
- #endif
-@@ -77,6 +44,7 @@ struct ffmpeg_input {
- AVPacket pkt;
- int curr_pkt_size;
- uint8_t *curr_pkt_buf;
-+ int stream_index;
-
- unsigned long curr_size;
- unsigned long curr_duration;
-@@ -94,7 +62,6 @@ struct ffmpeg_private {
- AVFormatContext *input_context;
- AVCodec *codec;
- SwrContext *swr;
-- int stream_index;
-
- struct ffmpeg_input *input;
- struct ffmpeg_output *output;
-@@ -115,7 +82,11 @@ static struct ffmpeg_input *ffmpeg_input_create(void)
-
- static void ffmpeg_input_free(struct ffmpeg_input *input)
- {
-+#if LIBAVCODEC_VERSION_MAJOR >= 56
-+ av_packet_unref(&input->pkt);
-+#else
- av_free_packet(&input->pkt);
-+#endif
- free(input);
- }
-
-@@ -157,30 +128,9 @@ static void ffmpeg_init(void)
-
- av_log_set_level(AV_LOG_QUIET);
-
--#if (LIBAVFORMAT_VERSION_INT <= ((50<<16) + (4<<8) + 0))
-- avcodec_init();
-- register_avcodec(&wmav1_decoder);
-- register_avcodec(&wmav2_decoder);
--
-- /* libavformat versions <= 50.4.0 have asf_init(). From SVN revision
-- * 5697->5707 of asf.c, this function was removed, preferring the use of
-- * explicit calls. Note that version 50.5.0 coincides with SVN revision
-- * 5729, so there is a window of incompatibility for revisions 5707 and
5720
-- * of asf.c.
-- */
-- asf_init();
--
-- /* Uncomment this for shorten (.shn) support.
-- register_avcodec(&shorten_decoder);
-- raw_init();
-- */
--
-- register_protocol(&file_protocol);
--#else
- /* 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)
-@@ -197,22 +147,14 @@ static int ffmpeg_open(struct input_plugin_data *ip_da
-
- ffmpeg_init();
-
--#if (LIBAVFORMAT_VERSION_INT <= ((53<<16)+(2<<8)+0))
-- err = av_open_input_file(&ic, ip_data->filename, NULL, 0, NULL);
--#else
- err = avformat_open_input(&ic, ip_data->filename, NULL, NULL);
--#endif
- if (err < 0) {
- d_print("av_open failed: %d\n", err);
- return -IP_ERROR_FILE_FORMAT;
- }
-
- do {
--#if (LIBAVFORMAT_VERSION_INT <= ((53<<16)+(5<<8)+0))
-- err = av_find_stream_info(ic);
--#else
- err = avformat_find_stream_info(ic, NULL);
--#endif
- if (err < 0) {
- d_print("unable to find stream info: %d\n", err);
- err = -IP_ERROR_FILE_FORMAT;
-@@ -235,20 +177,16 @@ static int ffmpeg_open(struct input_plugin_data *ip_da
-
- codec = avcodec_find_decoder(cc->codec_id);
- if (!codec) {
-- d_print("codec not found: %d, %s\n", cc->codec_id,
cc->codec_name);
-+ d_print("codec not found: %d, %s\n", cc->codec_id,
avcodec_get_name(cc->codec_id));
- err = -IP_ERROR_UNSUPPORTED_FILE_TYPE;
- break;
- }
-
-- if (codec->capabilities & CODEC_CAP_TRUNCATED)
-- cc->flags |= CODEC_FLAG_TRUNCATED;
-+ if (codec->capabilities & AV_CODEC_CAP_TRUNCATED)
-+ cc->flags |= AV_CODEC_FLAG_TRUNCATED;
-
--#if (LIBAVCODEC_VERSION_INT < ((53<<16)+(8<<8)+0))
-- if (avcodec_open(cc, codec) < 0) {
--#else
- if (avcodec_open2(cc, codec, NULL) < 0) {
--#endif
-- d_print("could not open codec: %d, %s\n", cc->codec_id,
cc->codec_name);
-+ d_print("could not open codec: %d, %s\n", cc->codec_id,
avcodec_get_name(cc->codec_id));
- err = -IP_ERROR_UNSUPPORTED_FILE_TYPE;
- break;
- }
-@@ -258,11 +196,7 @@ static int ffmpeg_open(struct input_plugin_data *ip_da
-
- if (err < 0) {
- /* Clean up. cc is never opened at this point. (See above
assumption.) */
--#if (LIBAVCODEC_VERSION_INT < ((53<<16)+(25<<8)+0))
-- av_close_input_file(ic);
--#else
- avformat_close_input(&ic);
--#endif
- return err;
- }
-
-@@ -270,18 +204,14 @@ static int ffmpeg_open(struct input_plugin_data *ip_da
- priv->codec_context = cc;
- priv->input_context = ic;
- priv->codec = codec;
-- priv->stream_index = stream_index;
- priv->input = ffmpeg_input_create();
- if (priv->input == NULL) {
- avcodec_close(cc);
--#if (LIBAVCODEC_VERSION_INT < ((53<<16)+(25<<8)+0))
-- av_close_input_file(ic);
--#else
- avformat_close_input(&ic);
--#endif
- free(priv);
- return -IP_ERROR_INTERNAL;
- }
-+ priv->input->stream_index = stream_index;
- priv->output = ffmpeg_output_create();
-
- /* Prepare for resampling. */
-@@ -314,9 +244,7 @@ static int ffmpeg_open(struct input_plugin_data *ip_da
- #ifdef WORDS_BIGENDIAN
- ip_data->sf |= sf_bigendian(1);
- #endif
--#if (LIBAVCODEC_VERSION_INT > ((52<<16)+(1<<8)+0))
- channel_layout = cc->channel_layout;
--#endif
- channel_map_init_waveex(cc->channels, channel_layout,
ip_data->channel_map);
- return 0;
- }
-@@ -326,11 +254,7 @@ static int ffmpeg_close(struct input_plugin_data *ip_d
- struct ffmpeg_private *priv = ip_data->private;
-
- avcodec_close(priv->codec_context);
--#if (LIBAVCODEC_VERSION_INT < ((53<<16)+(25<<8)+0))
-- av_close_input_file(priv->input_context);
--#else
- avformat_close_input(&priv->input_context);
--#endif
- swr_free(&priv->swr);
- ffmpeg_input_free(priv->input);
- ffmpeg_output_free(priv->output);
-@@ -346,62 +270,50 @@ static int ffmpeg_close(struct input_plugin_data *ip_d
- static int ffmpeg_fill_buffer(AVFormatContext *ic, AVCodecContext *cc, struct
ffmpeg_input *input,
- struct ffmpeg_output *output, SwrContext *swr)
- {
--#if (LIBAVCODEC_VERSION_INT >= ((53<<16) + (25<<8) + 0))
-+#if LIBAVCODEC_VERSION_MAJOR >= 56
-+ AVFrame *frame = av_frame_alloc();
-+#else
- AVFrame *frame = avcodec_alloc_frame();
-- int got_frame;
- #endif
-+ int got_frame;
- while (1) {
--#if (LIBAVCODEC_VERSION_INT < ((53<<16) + (25<<8) + 0))
-- /* frame_size specifies the size of output->buffer for
-- * avcodec_decode_audio2. */
-- int frame_size = AVCODEC_MAX_AUDIO_FRAME_SIZE;
--#endif
- int len;
-
- if (input->curr_pkt_size <= 0) {
-+#if LIBAVCODEC_VERSION_MAJOR >= 56
-+ av_packet_unref(&input->pkt);
-+#else
- av_free_packet(&input->pkt);
-+#endif
- if (av_read_frame(ic, &input->pkt) < 0) {
- /* Force EOF once we can read no longer. */
--#if (LIBAVCODEC_VERSION_INT >= ((53<<16) + (25<<8) + 0))
-+#if LIBAVCODEC_VERSION_MAJOR >= 56
-+ av_frame_free(&frame);
-+#else
- avcodec_free_frame(&frame);
- #endif
- return 0;
- }
-- input->curr_pkt_size = input->pkt.size;
-- input->curr_pkt_buf = input->pkt.data;
-- input->curr_size += input->pkt.size;
-- input->curr_duration += input->pkt.duration;
-+ if (input->pkt.stream_index == input->stream_index) {
-+ input->curr_pkt_size = input->pkt.size;
-+ input->curr_pkt_buf = input->pkt.data;
-+ input->curr_size += input->pkt.size;
-+ input->curr_duration += input->pkt.duration;
-+ }
- continue;
- }
-
-- /* The change to avcodec_decode_audio2 occurred between
-- * 51.28.0 and 51.29.0 */
--#if (LIBAVCODEC_VERSION_INT <= ((51<<16) + (28<<8) + 0))
-- len = avcodec_decode_audio(cc, (int16_t *)output->buffer,
&frame_size,
-- input->curr_pkt_buf, input->curr_pkt_size);
-- /* The change to avcodec_decode_audio3 occurred between
-- * 52.25.0 and 52.26.0 */
--#elif (LIBAVCODEC_VERSION_INT <= ((52<<16) + (25<<8) + 0))
-- len = avcodec_decode_audio2(cc, (int16_t *) output->buffer,
&frame_size,
-- input->curr_pkt_buf, input->curr_pkt_size);
--#elif (LIBAVCODEC_VERSION_INT < ((53<<16) + (25<<8) + 0))
- {
- AVPacket avpkt;
-- av_init_packet(&avpkt);
-- avpkt.data = input->curr_pkt_buf;
-- avpkt.size = input->curr_pkt_size;
-- len = avcodec_decode_audio3(cc, (int16_t *)
output->buffer, &frame_size, &avpkt);
-- av_free_packet(&avpkt);
-- }
--#else
-- {
-- AVPacket avpkt;
- av_new_packet(&avpkt, input->curr_pkt_size);
- memcpy(avpkt.data, input->curr_pkt_buf,
input->curr_pkt_size);
- len = avcodec_decode_audio4(cc, frame, &got_frame,
&avpkt);
-+#if LIBAVCODEC_VERSION_MAJOR >= 56
-+ av_packet_unref(&avpkt);
-+#else
- av_free_packet(&avpkt);
-- }
- #endif
-+ }
- if (len < 0) {
- /* this is often reached when seeking, not sure why */
- input->curr_pkt_size = 0;
-@@ -409,13 +321,6 @@ static int ffmpeg_fill_buffer(AVFormatContext *ic, AVC
- }
- input->curr_pkt_size -= len;
- input->curr_pkt_buf += len;
--#if (LIBAVCODEC_VERSION_INT < ((53<<16) + (25<<8) + 0))
-- if (frame_size > 0) {
-- output->buffer_pos = output->buffer;
-- output->buffer_used_len = frame_size;
-- return frame_size;
-- }
--#else
- if (got_frame) {
- int res = swr_convert(swr,
- &output->buffer,
-@@ -426,10 +331,13 @@ static int ffmpeg_fill_buffer(AVFormatContext *ic, AVC
- res = 0;
- output->buffer_pos = output->buffer;
- output->buffer_used_len = res * cc->channels *
sizeof(int16_t);
-+#if LIBAVCODEC_VERSION_MAJOR >= 56
-+ av_frame_free(&frame);
-+#else
- avcodec_free_frame(&frame);
-+#endif
- return output->buffer_used_len;
- }
--#endif
- }
- /* This should never get here. */
- return -IP_ERROR_INTERNAL;
-@@ -459,30 +367,16 @@ static int ffmpeg_read(struct input_plugin_data *ip_da
- static int ffmpeg_seek(struct input_plugin_data *ip_data, double offset)
- {
- struct ffmpeg_private *priv = ip_data->private;
-- AVStream *st = priv->input_context->streams[priv->stream_index];
-+ AVStream *st = priv->input_context->streams[priv->input->stream_index];
- int ret;
-
-- /* There is a bug that was fixed in ffmpeg revision 5099 that affects
seeking.
-- * Apparently, the stream's timebase was not used consistently in asf.c.
-- * Prior to 5099, ASF seeking assumed seconds as inputs. There is a
-- * window of incompatibility, since avformat's version was not updated
at
-- * the same time. Instead, the transition to 50.3.0 occurred at
-- * revision 5028. */
--#if (LIBAVFORMAT_VERSION_INT < ((50<<16)+(3<<8)+0))
-- int64_t pts = (int64_t) offset;
--#else
- int64_t pts = av_rescale_q(offset * AV_TIME_BASE, AV_TIME_BASE_Q,
st->time_base);
--#endif
-
--#if (LIBAVFORMAT_VERSION_INT >= ((53<<16) + (25<<8) + 0))
-- {
-- avcodec_flush_buffers(priv->codec_context);
-- /* Force reading a new packet in next ffmpeg_fill_buffer(). */
-- priv->input->curr_pkt_size = 0;
-- }
--#endif
-+ avcodec_flush_buffers(priv->codec_context);
-+ /* Force reading a new packet in next ffmpeg_fill_buffer(). */
-+ priv->input->curr_pkt_size = 0;
-
-- ret = av_seek_frame(priv->input_context, priv->stream_index, pts, 0);
-+ ret = av_seek_frame(priv->input_context, priv->input->stream_index,
pts, 0);
-
- if (ret < 0) {
- return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-@@ -492,56 +386,30 @@ static int ffmpeg_seek(struct input_plugin_data *ip_da
- }
- }
-
--#if (LIBAVFORMAT_VERSION_INT < ((52<<16)+(31<<8)+0))
--/* Return new i. */
--static int set_comment(struct keyval *comment, int i, const char *key, const
char *val)
-+static void ffmpeg_read_metadata(struct growing_keyvals *c, AVDictionary
*metadata)
- {
-- if (val[0] == 0) {
-- return i;
-+ AVDictionaryEntry *tag = NULL;
-+
-+ while ((tag = av_dict_get(metadata, "", tag, AV_DICT_IGNORE_SUFFIX))) {
-+ if (tag->value[0])
-+ comments_add_const(c, tag->key, tag->value);
- }
-- comment[i].key = xstrdup(key);
-- comment[i].val = xstrdup(val);
-- return i + 1;
- }
--#endif
-
- static int ffmpeg_read_comments(struct input_plugin_data *ip_data, struct
keyval **comments)
- {
- struct ffmpeg_private *priv = ip_data->private;
- AVFormatContext *ic = priv->input_context;
-
--#if (LIBAVFORMAT_VERSION_INT < ((52<<16)+(31<<8)+0))
-- char buff[16];
-- int i = 0;
--
-- *comments = keyvals_new(NUM_FFMPEG_KEYS);
--
-- i = set_comment(*comments, i, "artist", ic->author);
-- i = set_comment(*comments, i, "album", ic->album);
-- i = set_comment(*comments, i, "title", ic->title);
-- i = set_comment(*comments, i, "genre", ic->genre);
--
-- if (ic->year != 0) {
-- snprintf(buff, sizeof(buff), "%d", ic->year);
-- i = set_comment(*comments, i, "date", buff);
-- }
--
-- if (ic->track != 0) {
-- snprintf(buff, sizeof(buff), "%d", ic->track);
-- i = set_comment(*comments, i, "tracknumber", buff);
-- }
--#else
- GROWING_KEYVALS(c);
-- AVDictionaryEntry *tag = NULL;
-
-- while ((tag = av_dict_get(ic->metadata, "", tag,
AV_DICT_IGNORE_SUFFIX))) {
-- if (tag && tag->value[0])
-- comments_add_const(&c, tag->key, tag->value);
-+ ffmpeg_read_metadata(&c, ic->metadata);
-+ for (unsigned i = 0; i < ic->nb_streams; i++) {
-+ ffmpeg_read_metadata(&c, ic->streams[i]->metadata);
- }
-
- keyvals_terminate(&c);
- *comments = c.keyvals;
--#endif
-
- return 0;
- }
-@@ -562,13 +430,15 @@ static long ffmpeg_bitrate(struct input_plugin_data *i
- static long ffmpeg_current_bitrate(struct input_plugin_data *ip_data)
- {
- struct ffmpeg_private *priv = ip_data->private;
-- AVStream *st = priv->input_context->streams[priv->stream_index];
-+ AVStream *st = priv->input_context->streams[priv->input->stream_index];
- long bitrate = -1;
--#if (LIBAVFORMAT_VERSION_INT > ((51<<16)+(43<<8)+0))
- /* ape codec returns silly numbers */
-+#if LIBAVCODEC_VERSION_MAJOR >= 55
-+ if (priv->codec->id == AV_CODEC_ID_APE)
-+#else
- if (priv->codec->id == CODEC_ID_APE)
-- return -1;
- #endif
-+ return -1;
- if (priv->input->curr_duration > 0) {
- double seconds = priv->input->curr_duration *
av_q2d(st->time_base);
- bitrate = (8 * priv->input->curr_size) / seconds;
-@@ -584,32 +454,11 @@ static char *ffmpeg_codec(struct input_plugin_data *ip
- return xstrdup(priv->codec->name);
- }
-
--#if (LIBAVCODEC_VERSION_INT < ((52<<16)+(104<<8)+0))
--static const char *codec_profile_to_str(int profile)
--{
--#if (LIBAVCODEC_VERSION_INT >= ((51<<16)+(41<<8)+0))
-- switch (profile) {
-- case FF_PROFILE_AAC_MAIN: return "Main";
-- case FF_PROFILE_AAC_LOW: return "LC";
-- case FF_PROFILE_AAC_SSR: return "SSR";
-- case FF_PROFILE_AAC_LTP: return "LTP";
-- }
--#endif
-- return NULL;
--}
--#endif
--
- static char *ffmpeg_codec_profile(struct input_plugin_data *ip_data)
- {
- struct ffmpeg_private *priv = ip_data->private;
- const char *profile;
--
--#if (LIBAVCODEC_VERSION_INT < ((52<<16)+(104<<8)+0))
-- profile = codec_profile_to_str(priv->codec_context->profile);
--#else
- profile = av_get_profile_name(priv->codec,
priv->codec_context->profile);
--#endif
--
- return profile ? xstrdup(profile) : NULL;
- }
-
Index: patches/patch-ip_ffmpeg_c
===================================================================
RCS file: patches/patch-ip_ffmpeg_c
diff -N patches/patch-ip_ffmpeg_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-ip_ffmpeg_c 17 Apr 2019 09:58:49 -0000
@@ -0,0 +1,13 @@
+$OpenBSD$
+
+Index: ip/ffmpeg.c
+--- ip/ffmpeg.c.orig
++++ ip/ffmpeg.c
+@@ -62,6 +62,7 @@ struct ffmpeg_private {
+ AVFormatContext *input_context;
+ AVCodec *codec;
+ SwrContext *swr;
++ int stream_index;
+
+ struct ffmpeg_input *input;
+ struct ffmpeg_output *output;
Index: patches/patch-sndio_c
===================================================================
RCS file: patches/patch-sndio_c
diff -N patches/patch-sndio_c
--- patches/patch-sndio_c 18 Feb 2017 10:16:34 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,30 +0,0 @@
-$OpenBSD: patch-sndio_c,v 1.2 2017/02/18 10:16:34 jca Exp $
-
-Support 32-bit/24-bit encoding.
-
-Commits 84f33584be91 and bf87f0d76f87 upstream.
-
---- sndio.c.orig Mon Jul 13 12:00:56 2015
-+++ sndio.c Thu Feb 9 12:11:30 2017
-@@ -20,7 +20,6 @@
-
- #include <sys/types.h>
- #include <sys/ioctl.h>
--#include <sys/audioio.h>
- #include <sys/stat.h>
- #include <errno.h>
- #include <fcntl.h>
-@@ -82,6 +81,13 @@ static int sndio_set_sf(sample_format_t sf)
- par.le = 1;
-
- switch (sf_get_bits(sndio_sf)) {
-+ case 32:
-+ par.bits = 32;
-+ break;
-+ case 24:
-+ par.bits = 24;
-+ par.bps = 3;
-+ break;
- case 16:
- par.bits = 16;
- break;
Index: pkg/PLIST-main
===================================================================
RCS file: /cvs/ports/audio/cmus/pkg/PLIST-main,v
retrieving revision 1.3
diff -u -p -r1.3 PLIST-main
--- pkg/PLIST-main 17 Jan 2016 01:16:38 -0000 1.3
+++ pkg/PLIST-main 17 Apr 2019 09:58:49 -0000
@@ -22,9 +22,13 @@ lib/cmus/op/sndio.so
share/cmus/
share/cmus/cyan.theme
share/cmus/default.theme
+share/cmus/dracula.theme
share/cmus/gray-88.theme
share/cmus/green-mono-88.theme
share/cmus/green.theme
+share/cmus/gruvbox-alt.theme
+share/cmus/gruvbox.theme
+share/cmus/jellybeans.theme
share/cmus/night.theme
share/cmus/rc
share/cmus/solarized-dark.theme
> --
> Paco Esteban.
> https://onna.be/gpgkey.asc
> 9A6B 6083 AD9E FDC2 0EAF 5CB3 5818 130B 8A6D BC03
>