ping !
Anyone using cmus ?
On Wed, 17 Apr 2019, Paco Esteban wrote:
> Here's a diff for cmus port 2.7.1 --> 2.8.0
> According to changelog:
>
> Major new features:
>
> multiple playlists support in playlist view
> new :pl-* commands for playlist management
> CoreAudio output plugin
> BASS input plugin
> D-Bus (MPRIS) support
>
> Notable changes:
>
> use of internal cue parser instead of libcue
> 24-bit playback support for
> FLAC
> JACK
> sndio
> plugin ABI versioning checks
> new themes:
> dracula
> gruvbox
> gruvbox-alt
> jellybeans
> new commands:
> :left-view / :right-view
> :player-pause-playback
> :raise-vte
> :rand
> :version
> :win-half-page-down / :win-half-page-up
> new options:
> color_win_cur_attr
> input.*.priority
> lib_add_filter
> start_view
> time_show_leading_zero
>
> 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.
>
>
> 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 17 Apr 2019 09:58:49 -0000
> @@ -3,11 +3,11 @@
> 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
> +REVISION= 0
>
> GH_ACCOUNT= cmus
> GH_PROJECT= cmus
> @@ -21,12 +21,11 @@ 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
>
> LIB_DEPENDS-main= audio/flac \
> audio/libcdio \
> - audio/libcue \
> audio/libdiscid \
> audio/libmad \
> audio/libogg \
> 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