On Sat, 4 May 2019 15:40:08 +0100
Edd Barrett <[email protected]> wrote:

> Hi,
> 
> On Sat, May 04, 2019 at 02:29:10PM +0200, Charlene Wendling wrote:
> > +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;
> 
> ^ This patch seems redundant? I removed it and it still builds.

I've missed it.

It's not, but i don't get why it has been added, no upstream issue
references it, so it's zapped now.

> ---8<---
> $ make port-lib-depends-check
> ...
> cmus-2.8.0(audio/cmus,-main):
> Extra:  ogg.6 vorbis.9
> --->8---
> 
> Seems fishy... I can play my vorbis files fine...

> > cmus dlopen's modules for input and output.  Adding the affected
> > libraries to WANTLIB-main makes sense so that a vorbis or ogg update
> > triggers a signature change and an update, but adding a comment to
> > explain the rationale would help.

Thanks, i did it that way.

> -- 
> Best Regards
> Edd Barrett
> 
> http://www.theunixzoo.co.uk


Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/cmus/Makefile,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 Makefile
--- Makefile    16 Apr 2019 20:19:01 -0000      1.20
+++ Makefile    4 May 2019 16:37:21 -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,17 @@ PERMIT_PACKAGE_CDROM=       Yes
 
 MULTI_PACKAGES=                -main -ffmpeg
 
-WANTLIB-main+=         c cdio cdio_cdda cue curses discid FLAC iconv m mad
-WANTLIB-main+=         ogg opusfile pthread sndio vorbis vorbisfile wavpack
+WANTLIB-main+=         c cdio cdio_cdda curses discid FLAC iconv m mad
+WANTLIB-main+=         opusfile pthread sndio vorbisfile wavpack
 
+# Seen as EXTRAs but should be kept as cmus dlopen(3)'s its modules for
+# input and output, so cmus needs an update if one of those are bumped
+WANTLIB-main+=         ogg vorbis
+
+# C11
+COMPILER=              base-clang ports-gcc
 LIB_DEPENDS-main=      audio/flac \
                        audio/libcdio \
-                       audio/libcue \
                        audio/libdiscid \
                        audio/libmad \
                        audio/libogg \
@@ -42,7 +46,8 @@ 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 +73,13 @@ 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-main += atomic
+WANTLIB-ffmpeg += 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 -u -p -r1.4 distinfo
--- distinfo    17 Jan 2016 01:16:38 -0000      1.4
+++ distinfo    4 May 2019 16:37:21 -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 -u -p -r1.2 patch-Makefile
--- patches/patch-Makefile      17 Jan 2016 01:16:38 -0000      1.2
+++ patches/patch-Makefile      4 May 2019 16:37:21 -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 -u -p -r1.5 patch-configure
--- patches/patch-configure     6 Jun 2018 12:14:44 -0000       1.5
+++ patches/patch-configure     4 May 2019 16:37:21 -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-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 -u -p -r1.3 PLIST-main
--- pkg/PLIST-main      17 Jan 2016 01:16:38 -0000      1.3
+++ pkg/PLIST-main      4 May 2019 16:37:21 -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

Reply via email to