Update: audio/cmus

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Update: audio/cmus

Paco Esteban
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

Reply | Threaded
Open this post in threaded view
|

Re: Update: audio/cmus

Paco Esteban
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

Reply | Threaded
Open this post in threaded view
|

Re: Update: audio/cmus

Matthias Schmidt
Hi Paco,

* Paco Esteban wrote:
> ping !
>
> Anyone using cmus ?

Yes, active user here.  I compiled the port using your patch and
upgraded to 2.8.0.  Up to now, now signs of regressions here and I love
the multi playlist feature.

Cheers and thanks

        Matthias

Reply | Threaded
Open this post in threaded view
|

Re: Update: audio/cmus

Charlene Wendling
In reply to this post by Paco Esteban
Hi,

On Wed, 17 Apr 2019 12:14:42 +0200 (CEST)
Paco Esteban <[hidden email]> 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
>

Reply | Threaded
Open this post in threaded view
|

Re: Update: audio/cmus

Charlene Wendling
On Thu, 2 May 2019 21:24:45 +0200
Charlene Wendling <[hidden email]> wrote:

> Hi,
>
> On Wed, 17 Apr 2019 12:14:42 +0200 (CEST)
> Paco Esteban <[hidden email]> 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.
>

I've tested cmus on amd64 with the current version of libcdio, i've no
issues at all, including the playback of m4a files (cmus-ffmpeg).

Here is an updated diff that makes portcheck(1) and
port-lib-depends-check happier:

- use WANTLIB on a per-subpackage basis
- Break line in CONFIGURE_ENV

OK?

Charlène.


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 12:18:05 -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,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 +69,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 12:18:05 -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 12:18:05 -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 12:18:05 -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 4 May 2019 12:18:05 -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 -u -p -r1.3 PLIST-main
--- pkg/PLIST-main 17 Jan 2016 01:16:38 -0000 1.3
+++ pkg/PLIST-main 4 May 2019 12:18:05 -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 | Threaded
Open this post in threaded view
|

Re: Update: audio/cmus

Edd Barrett-3
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.

---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...

--
Best Regards
Edd Barrett

http://www.theunixzoo.co.uk

Reply | Threaded
Open this post in threaded view
|

Re: Update: audio/cmus

Jeremie Courreges-Anglas-2
On Sat, May 04 2019, Edd Barrett <[hidden email]> 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.
>
> ---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.

--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE

Reply | Threaded
Open this post in threaded view
|

Re: Update: audio/cmus

Charlene Wendling
In reply to this post by Edd Barrett-3
On Sat, 4 May 2019 15:40:08 +0100
Edd Barrett <[hidden email]> 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 | Threaded
Open this post in threaded view
|

Re: Update: audio/cmus

Jeremie Courreges-Anglas-5
On Sat, May 04 2019, Charlene Wendling <[hidden email]> wrote:

[...]

>> ---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.

For audacity I used

--8<--
# dlopened
WANTLIB += mp3lame
-->8--

trusting that people would not remove that unless they understand what
they are doing.  I guess your more explicit wording is safer, I'm fine
with it.  :)

(I haven't looked at the rest of the update.)

[...]

> +# 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

--
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE