Date: Saturday, May 17, 2014 @ 14:40:21
  Author: xyne
Revision: 111361

archrelease: copy trunk to community-i686, community-x86_64

Added:
  cmus/repos/community-i686/PKGBUILD
    (from rev 111360, cmus/trunk/PKGBUILD)
  cmus/repos/community-x86_64/PKGBUILD
    (from rev 111360, cmus/trunk/PKGBUILD)
Deleted:
  cmus/repos/community-i686/PKGBUILD
  cmus/repos/community-i686/cdio-git.patch
  cmus/repos/community-i686/cmus-2.5.0-opus-support.patch
  cmus/repos/community-x86_64/PKGBUILD
  cmus/repos/community-x86_64/cdio-git.patch
  cmus/repos/community-x86_64/cmus-2.5.0-opus-support.patch

------------------------------------------------+
 /PKGBUILD                                      |   92 +++++
 community-i686/PKGBUILD                        |   61 ---
 community-i686/cdio-git.patch                  |  137 -------
 community-i686/cmus-2.5.0-opus-support.patch   |  417 -----------------------
 community-x86_64/PKGBUILD                      |   61 ---
 community-x86_64/cdio-git.patch                |  137 -------
 community-x86_64/cmus-2.5.0-opus-support.patch |  417 -----------------------
 7 files changed, 92 insertions(+), 1230 deletions(-)

Deleted: community-i686/PKGBUILD
===================================================================
--- community-i686/PKGBUILD     2014-05-17 12:39:45 UTC (rev 111360)
+++ community-i686/PKGBUILD     2014-05-17 12:40:21 UTC (rev 111361)
@@ -1,61 +0,0 @@
-# $Id$
-# Maintainer: Xyne <ca dot archlinux at xyne, backwards>
-# Contributor:  Bartłomiej Piotrowski <[email protected]>
-# Contributor: Aaron Griffin <[email protected]>
-# Contributor: dorphell <[email protected]>
-
-pkgname=cmus
-pkgver=2.5.0
-pkgrel=7
-pkgdesc='Very feature-rich ncurses-based music player'
-arch=('i686' 'x86_64')
-url="https://cmus.github.io/";
-license=('GPL')
-depends=('ncurses')
-makedepends=(
-  'faad2' 'ffmpeg' 'flac' 'libao' 'libmad' 'libmodplug' 'libcdio-paranoia'
-  'libmp4v2' 'libmpcdec' 'libpulse' 'libvorbis' 'opusfile' 'wavpack'
-)
-optdepends=('alsa-lib: for ALSA output plugin support'
-            'libao: for AO output plugin support'
-            'libpulse: for PulseAudio output plugin support'
-            'faad2: for AAC input plugin support'
-            'ffmpeg: for ffmpeg input plugin support'
-            'flac: for flac input plugin support'
-            'libmad: for mp3 input plugin support'
-            'libmodplug: for modplug input plugin support'
-            'libmp4v2: for mp4 input plugin support'
-            'libmpcdec: for musepack input plugin support'
-            'libvorbis: for vorbis input plugin support'
-            'libcdio-paranoia: for cdio support'
-            'opusfile: for opus input plugin support'
-            'wavpack: for wavpack input plugin support')
-source=(http://downloads.sourceforge.net/project/$pkgname/$pkgname-v$pkgver.tar.bz2
-        cmus-2.5.0-opus-support.patch
-        cdio-git.patch)
-sha1sums=('244975a5ff642567acb047f6bd518e4a3271c25b'
-          '5e524f54d565dfa30760562c223bc0e2e8ed00a0'
-          '77738acc7d4e71f6d396a5cd464dbbce0168b6b7')
-
-prepare() {
-  cd "$srcdir/$pkgname-v$pkgver"
-  # Inherited from Bart or earlier.
-  patch -Np1 -i "$srcdir/cmus-2.5.0-opus-support.patch"
-  # Include changes from git for compatibility with new cdio.
-  patch -N -i "$srcdir/cdio-git.patch"
-
-  # Quick fix for modplug header.
-  sed -i 's@<modplug.h>@<libmodplug/modplug.h>@' 
"$srcdir/$pkgname-v$pkgver/modplug.c"
-}
-
-build() {
-  cd "$srcdir/$pkgname-v$pkgver"
-  ./configure prefix=/usr
-  make
-}
-
-package() {
-  cd "$srcdir/$pkgname-v$pkgver"
-  make DESTDIR="$pkgdir" install
-  install -Dm644 contrib/_cmus "$pkgdir"/usr/share/zsh/site-functions/_cmus
-}

Copied: cmus/repos/community-i686/PKGBUILD (from rev 111360, 
cmus/trunk/PKGBUILD)
===================================================================
--- community-i686/PKGBUILD                             (rev 0)
+++ community-i686/PKGBUILD     2014-05-17 12:40:21 UTC (rev 111361)
@@ -0,0 +1,46 @@
+# $Id$
+# Maintainer: Xyne <ca dot archlinux at xyne, backwards>
+# Contributor:  Bartłomiej Piotrowski <[email protected]>
+# Contributor: Aaron Griffin <[email protected]>
+# Contributor: dorphell <[email protected]>
+
+pkgname=cmus
+pkgver=2.5.1
+pkgrel=1
+pkgdesc='Very feature-rich ncurses-based music player'
+arch=('i686' 'x86_64')
+url="https://cmus.github.io/";
+license=('GPL')
+depends=('ncurses')
+makedepends=(
+  'faad2' 'ffmpeg' 'flac' 'libao' 'libmad' 'libmodplug' 'libcdio-paranoia'
+  'libmp4v2' 'libmpcdec' 'libpulse' 'libvorbis' 'opusfile' 'wavpack'
+)
+optdepends=('alsa-lib: for ALSA output plugin support'
+            'libao: for AO output plugin support'
+            'libpulse: for PulseAudio output plugin support'
+            'faad2: for AAC input plugin support'
+            'ffmpeg: for ffmpeg input plugin support'
+            'flac: for flac input plugin support'
+            'libmad: for mp3 input plugin support'
+            'libmodplug: for modplug input plugin support'
+            'libmp4v2: for mp4 input plugin support'
+            'libmpcdec: for musepack input plugin support'
+            'libvorbis: for vorbis input plugin support'
+            'libcdio-paranoia: for cdio support'
+            'opusfile: for opus input plugin support'
+            'wavpack: for wavpack input plugin support')
+source=("https://github.com/cmus/cmus/archive/v${pkgver}.tar.gz";)
+sha256sums=('2c22b12eb2e2d038b64e8db804d4dc037ac68cbd3a398b3e405c2d0ce5c15229')
+
+build() {
+  cd "$srcdir/$pkgname-$pkgver"
+  ./configure prefix=/usr
+  make
+}
+
+package() {
+  cd "$srcdir/$pkgname-$pkgver"
+  make DESTDIR="$pkgdir" install
+  install -Dm644 contrib/_cmus "$pkgdir"/usr/share/zsh/site-functions/_cmus
+}

Deleted: community-i686/cdio-git.patch
===================================================================
--- community-i686/cdio-git.patch       2014-05-17 12:39:45 UTC (rev 111360)
+++ community-i686/cdio-git.patch       2014-05-17 12:40:21 UTC (rev 111361)
@@ -1,137 +0,0 @@
-*** cdio.c     2012-11-07 08:46:17.000000000 +0000
---- cmus-git/src/cmus/cdio.c   2013-09-30 02:21:10.518785946 +0000
-***************
-*** 1,5 ****
-  /*
-!  * Copyright 2011 Various Authors
-   * Copyright 2011 Johannes Weißl
-   *
-   * Based on cdda.c from XMMS2.
---- 1,5 ----
-  /*
-!  * Copyright 2011-2013 Various Authors
-   * Copyright 2011 Johannes Weißl
-   *
-   * Based on cdda.c from XMMS2.
-***************
-*** 27,35 ****
-  #include "comment.h"
-  #include "discid.h"
-  
-- #include <cdio/cdda.h>
-  #include <cdio/cdio.h>
-  #include <cdio/logging.h>
-  #include <stdio.h>
-  #include <stdlib.h>
-  #include <string.h>
---- 27,40 ----
-  #include "comment.h"
-  #include "discid.h"
-  
-  #include <cdio/cdio.h>
-  #include <cdio/logging.h>
-+ #if LIBCDIO_VERSION_NUM >= 90
-+ #include <cdio/paranoia/cdda.h>
-+ #else
-+ #include <cdio/cdda.h>
-+ #endif
-+ 
-  #include <stdio.h>
-  #include <stdlib.h>
-  #include <string.h>
-***************
-*** 352,375 ****
-       GROWING_KEYVALS(c);
-       const char *artist = NULL, *albumartist = NULL, *album = NULL,
-               *title = NULL, *genre = NULL, *comment = NULL;
-!      const cdtext_t *cdtext_track, *cdtext_album;
-  #ifdef HAVE_CDDB
-       cddb_conn_t *cddb_conn = NULL;
-       cddb_disc_t *cddb_disc = NULL;
-  #endif
-       char buf[64];
-  
-!      cdtext_track = cdio_get_cdtext(priv->cdio, priv->track);
-!      if (cdtext_track) {
-!              char * const *field = cdtext_track->field;
-               artist = field[CDTEXT_PERFORMER];
-               title = field[CDTEXT_TITLE];
-               genre = field[CDTEXT_GENRE];
-               comment = field[CDTEXT_MESSAGE];
-       }
-!      cdtext_album = cdio_get_cdtext(priv->cdio, 0);
-!      if (cdtext_album) {
-!              char * const *field = cdtext_album->field;
-               album = field[CDTEXT_TITLE];
-               albumartist = field[CDTEXT_PERFORMER];
-               if (!artist)
---- 357,403 ----
-       GROWING_KEYVALS(c);
-       const char *artist = NULL, *albumartist = NULL, *album = NULL,
-               *title = NULL, *genre = NULL, *comment = NULL;
-!      int track_comments_found = 0;
-!      const cdtext_t *cdt;
-  #ifdef HAVE_CDDB
-       cddb_conn_t *cddb_conn = NULL;
-       cddb_disc_t *cddb_disc = NULL;
-  #endif
-       char buf[64];
-  
-! #if LIBCDIO_VERSION_NUM >= 90
-!      cdt = cdio_get_cdtext(priv->cdio);
-!      if (cdt) {
-!              artist = cdtext_get(cdt, CDTEXT_FIELD_PERFORMER, priv->track);
-!              title = cdtext_get(cdt, CDTEXT_FIELD_TITLE, priv->track);
-!              genre = cdtext_get(cdt, CDTEXT_FIELD_GENRE, priv->track);
-!              comment = cdtext_get(cdt, CDTEXT_FIELD_MESSAGE, priv->track);
-! 
-!              if (title)
-!                      track_comments_found = 1;
-! 
-!              album = cdtext_get(cdt, CDTEXT_FIELD_TITLE, 0);
-!              albumartist = cdtext_get(cdt, CDTEXT_FIELD_PERFORMER, 0);
-!              if (!artist)
-!                      artist = albumartist;
-!              if (!genre)
-!                      genre = cdtext_get(cdt, CDTEXT_FIELD_GENRE, 0);
-!              if (!comment)
-!                      comment = cdtext_get(cdt, CDTEXT_FIELD_MESSAGE, 0);
-!      }
-! #else
-!      cdt = cdio_get_cdtext(priv->cdio, priv->track);
-!      if (cdt) {
-!              track_comments_found = 1;
-!              char * const *field = cdt->field;
-               artist = field[CDTEXT_PERFORMER];
-               title = field[CDTEXT_TITLE];
-               genre = field[CDTEXT_GENRE];
-               comment = field[CDTEXT_MESSAGE];
-       }
-!      cdt = cdio_get_cdtext(priv->cdio, 0);
-!      if (cdt) {
-!              char * const *field = cdt->field;
-               album = field[CDTEXT_TITLE];
-               albumartist = field[CDTEXT_PERFORMER];
-               if (!artist)
-***************
-*** 379,387 ****
-               if (!comment)
-                       comment = field[CDTEXT_MESSAGE];
-       }
-  
-  #ifdef HAVE_CDDB
-!      if (!cdtext_track && cddb_url && cddb_url[0]) {
-               cddb_track_t *cddb_track;
-               track_t i_tracks = cdio_get_num_tracks(priv->cdio);
-               track_t i_first_track = cdio_get_first_track_num(priv->cdio);
---- 407,416 ----
-               if (!comment)
-                       comment = field[CDTEXT_MESSAGE];
-       }
-+ #endif
-  
-  #ifdef HAVE_CDDB
-!      if (!track_comments_found && cddb_url && cddb_url[0]) {
-               cddb_track_t *cddb_track;
-               track_t i_tracks = cdio_get_num_tracks(priv->cdio);
-               track_t i_first_track = cdio_get_first_track_num(priv->cdio);

Deleted: community-i686/cmus-2.5.0-opus-support.patch
===================================================================
--- community-i686/cmus-2.5.0-opus-support.patch        2014-05-17 12:39:45 UTC 
(rev 111360)
+++ community-i686/cmus-2.5.0-opus-support.patch        2014-05-17 12:40:21 UTC 
(rev 111361)
@@ -1,417 +0,0 @@
-diff -rupN cmus-v2.5.0/Makefile cmus/Makefile
---- cmus-v2.5.0/Makefile       2012-11-07 09:46:17.000000000 +0100
-+++ cmus/Makefile      2013-01-04 07:15:35.293069953 +0100
-@@ -74,6 +74,7 @@ mikmod-objs          := mikmod.lo
- modplug-objs          := modplug.lo
- mpc-objs              := mpc.lo
- vorbis-objs           := vorbis.lo
-+opus-objs             := opus.lo
- wavpack-objs          := wavpack.lo
- wav-objs              := wav.lo
- mp4-objs              := mp4.lo
-@@ -88,6 +89,7 @@ ip-$(CONFIG_MIKMOD)  += mikmod.so
- ip-$(CONFIG_MODPLUG)  += modplug.so
- ip-$(CONFIG_MPC)      += mpc.so
- ip-$(CONFIG_VORBIS)   += vorbis.so
-+ip-$(CONFIG_OPUS)     += opus.so
- ip-$(CONFIG_WAVPACK)  += wavpack.so
- ip-$(CONFIG_WAV)      += wav.so
- ip-$(CONFIG_MP4)      += mp4.so
-@@ -102,6 +104,7 @@ $(mikmod-objs):            CFLAGS += $(MIKMOD_CFLA
- $(modplug-objs):      CFLAGS += $(MODPLUG_CFLAGS)
- $(mpc-objs):          CFLAGS += $(MPC_CFLAGS)
- $(vorbis-objs):               CFLAGS += $(VORBIS_CFLAGS)
-+$(opus-objs):         CFLAGS += $(OPUS_CFLAGS)
- $(wavpack-objs):      CFLAGS += $(WAVPACK_CFLAGS)
- $(mp4-objs):          CFLAGS += $(MP4_CFLAGS)
- $(aac-objs):          CFLAGS += $(AAC_CFLAGS)
-@@ -129,6 +132,9 @@ mpc.so: $(mpc-objs) $(libcmus-y)
- vorbis.so: $(vorbis-objs) $(libcmus-y)
-       $(call cmd,ld_dl,$(VORBIS_LIBS))
- 
-+opus.so: $(opus-objs) $(libcmus-y)
-+      $(call cmd,ld_dl,$(OPUS_LIBS))
-+
- wavpack.so: $(wavpack-objs) $(libcmus-y)
-       $(call cmd,ld_dl,$(WAVPACK_LIBS))
- 
-diff -rupN cmus-v2.5.0/configure cmus/configure
---- cmus-v2.5.0/configure      2012-11-07 09:46:17.000000000 +0100
-+++ cmus/configure     2013-01-04 07:15:35.293069953 +0100
-@@ -228,6 +228,12 @@ check_vorbis()
-       fi
- }
- 
-+check_opus()
-+{
-+      pkg_config OPUS "opusfile"
-+      return $?
-+}
-+
- check_wavpack()
- {
-       pkg_config WAVPACK "wavpack" "" "-lwavpack"
-@@ -425,6 +431,7 @@ Optional Features: y/n
-   CONFIG_MPC          libmpcdec (Musepack .mpc, .mpp, .mp+)           [auto]
-   CONFIG_VORBIS       Ogg/Vorbis (.ogg, application/ogg, audio/x-ogg) [auto]
-   CONFIG_TREMOR       Use Tremor as Ogg/Vorbis input plugin           [n]
-+  CONFIG_OPUS         Opus (.opus)                                    [auto]
-   CONFIG_WAV          WAV                                             [y]
-   CONFIG_WAVPACK      WavPack (.wv, audio/x-wavpack)                  [auto]
-   CONFIG_MP4          MPEG-4 AAC (.mp4, .m4a, .m4b)                   [auto]
-@@ -485,6 +492,7 @@ check check_mikmod  CONFIG_MIKMOD
- check check_modplug CONFIG_MODPLUG
- check check_mpc     CONFIG_MPC
- check check_vorbis  CONFIG_VORBIS
-+check check_opus    CONFIG_OPUS
- check check_wavpack CONFIG_WAVPACK
- check check_mp4     CONFIG_MP4
- check check_aac     CONFIG_AAC
-@@ -534,7 +542,7 @@ config_header config/cue.h CONFIG_CUE
- CFLAGS="${CFLAGS} -DHAVE_CONFIG"
- 
- makefile_vars bindir datadir libdir mandir exampledir
--makefile_vars CONFIG_CDIO CONFIG_FLAC CONFIG_MAD CONFIG_MIKMOD CONFIG_MODPLUG 
CONFIG_MPC CONFIG_VORBIS CONFIG_WAVPACK CONFIG_WAV CONFIG_MP4 CONFIG_AAC 
CONFIG_FFMPEG CONFIG_CUE
-+makefile_vars CONFIG_CDIO CONFIG_FLAC CONFIG_MAD CONFIG_MIKMOD CONFIG_MODPLUG 
CONFIG_MPC CONFIG_VORBIS CONFIG_OPUS CONFIG_WAVPACK CONFIG_WAV CONFIG_MP4 
CONFIG_AAC CONFIG_FFMPEG CONFIG_CUE
- makefile_vars CONFIG_ROAR CONFIG_PULSE CONFIG_ALSA CONFIG_AO CONFIG_ARTS 
CONFIG_OSS CONFIG_SUN CONFIG_WAVEOUT
- 
- generate_config_mk
-diff -rupN cmus-v2.5.0/opus.c cmus/opus.c
---- cmus-v2.5.0/opus.c 1970-01-01 01:00:00.000000000 +0100
-+++ cmus/opus.c        2013-01-04 07:15:35.493069945 +0100
-@@ -0,0 +1,335 @@
-+/*
-+ * Copyright 2008-2012 Various Authors
-+ * Copyright 2004-2005 Timo Hirvonen
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include "ip.h"
-+#include "xmalloc.h"
-+#include "read_wrapper.h"
-+#include "debug.h"
-+#include "comment.h"
-+
-+#include <opusfile.h>
-+
-+#include <errno.h>
-+#include <string.h>
-+#include <sys/types.h>
-+#include <unistd.h>
-+
-+#define SAMPLING_RATE 48000
-+#define CHANNELS 2
-+
-+struct opus_private {
-+      OggOpusFile *of;
-+      int current_link;
-+};
-+
-+static int read_func(void *datasource, unsigned char *ptr, int size)
-+{
-+      struct input_plugin_data *ip_data = datasource;
-+      return read_wrapper(ip_data, ptr, size);
-+}
-+
-+static int seek_func(void *datasource, opus_int64 offset, int whence)
-+{
-+      struct input_plugin_data *ip_data = datasource;
-+      return lseek(ip_data->fd, offset, whence);
-+}
-+
-+static int close_func(void *datasource)
-+{
-+      struct input_plugin_data *ip_data;
-+      int rc;
-+
-+      ip_data = datasource;
-+      rc = close(ip_data->fd);
-+      ip_data->fd = -1;
-+      return rc;
-+}
-+
-+static opus_int64 tell_func(void *datasource)
-+{
-+      struct input_plugin_data *ip_data = datasource;
-+      return lseek(ip_data->fd, 0, SEEK_CUR);
-+}
-+
-+static OpusFileCallbacks callbacks = {
-+      .read = read_func,
-+      .seek = seek_func,
-+      .tell = tell_func,
-+      .close = close_func
-+};
-+
-+static int opus_open(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv;
-+      int rc;
-+      void *source;
-+
-+      priv = xnew(struct opus_private, 1);
-+      priv->current_link = -1;
-+      priv->of = NULL;
-+
-+      source = op_fdopen(&callbacks, ip_data->fd, "r");
-+      if (source == NULL) {
-+              free(priv);
-+              return -IP_ERROR_INTERNAL;
-+      }
-+
-+      priv->of = op_open_callbacks(source, &callbacks, NULL, 0, &rc);
-+      if (rc != 0) {
-+              d_print("op_open_callbacks failed: %d:%s\n", rc, strerror(rc));
-+              free(priv);
-+              /* ogg is a container format, so it is likely to contain
-+               * something else if it isn't opus */
-+              return -IP_ERROR_UNSUPPORTED_FILE_TYPE;
-+      }
-+      ip_data->private = priv;
-+
-+      ip_data->sf = sf_rate(SAMPLING_RATE)
-+              | sf_channels(CHANNELS)
-+              | sf_bits(16)
-+              | sf_signed(1);
-+#ifdef WORDS_BIGENDIAN
-+      ip_data->sf |= sf_bigendian(1);
-+#endif
-+      return 0;
-+}
-+
-+static int opus_close(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv = ip_data->private;
-+      /* this closes ip_data->fd! */
-+      op_free(priv->of);
-+      ip_data->fd = -1;
-+      free(priv);
-+      ip_data->private = NULL;
-+      return 0;
-+}
-+
-+/*
-+ * -n
-+ *     indicates error
-+ * 0
-+ *     indicates EOF
-+ * n
-+ *     indicates actual number of bytes read
-+ */
-+static int opus_read(struct input_plugin_data *ip_data, char *buffer, int 
count)
-+{
-+      struct opus_private *priv;
-+      int samples, current_link, rc;
-+
-+      priv = ip_data->private;
-+
-+      /* samples = number of samples read per channel */
-+      samples = op_read_stereo(priv->of, (opus_int16*)buffer,
-+                                                       count / 
sizeof(opus_int16));
-+      if (samples < 0) {
-+              switch (samples) {
-+              case OP_HOLE:
-+                      errno = EAGAIN;
-+                      rc = -1;
-+                      break;
-+              case OP_EREAD:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_EFAULT:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_EIMPL:
-+                      rc = -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+                      break;
-+              case OP_EINVAL:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_ENOTFORMAT:
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+                      break;
-+              case OP_EBADHEADER:
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+                      break;
-+              case OP_EVERSION:
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+                      break;
-+              case OP_EBADPACKET:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_EBADLINK:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_EBADTIMESTAMP:
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+                      break;
-+              default:
-+                      d_print("error: %d\n", samples);
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+              }
-+      } else if (samples == 0) {
-+              /* EOF or buffer too small */
-+              rc = 0;
-+      } else {
-+              current_link = op_current_link(priv->of);
-+              if (current_link < 0) {
-+                      d_print("error: %d\n", current_link);
-+                      rc = -1;
-+              } else {
-+                      if (ip_data->remote && current_link != 
priv->current_link) {
-+                              ip_data->metadata_changed = 1;
-+                              priv->current_link = current_link;
-+                      }
-+
-+                      /* bytes = samples * channels * sample_size */
-+                      rc = samples * CHANNELS * sizeof(opus_int16);
-+              }
-+      }
-+
-+      return rc;
-+}
-+
-+static int opus_seek(struct input_plugin_data *ip_data, double offset)
-+{
-+      struct opus_private *priv;
-+      int rc;
-+
-+      priv = ip_data->private;
-+
-+      rc = op_pcm_seek(priv->of, offset * SAMPLING_RATE);
-+      switch (rc) {
-+      case OP_ENOSEEK:
-+              return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+      case OP_EINVAL:
-+              return -IP_ERROR_INTERNAL;
-+      case OP_EREAD:
-+              return -IP_ERROR_INTERNAL;
-+      case OP_EFAULT:
-+              return -IP_ERROR_INTERNAL;
-+      case OP_EBADLINK:
-+              return -IP_ERROR_INTERNAL;
-+      }
-+      return 0;
-+}
-+
-+static int opus_read_comments(struct input_plugin_data *ip_data,
-+                                                        struct keyval 
**comments)
-+{
-+      GROWING_KEYVALS(c);
-+      struct opus_private *priv;
-+      const OpusTags *ot;
-+      int i;
-+
-+      priv = ip_data->private;
-+
-+      ot = op_tags(priv->of, -1);
-+      if (ot == NULL) {
-+              d_print("ot == NULL\n");
-+              *comments = keyvals_new(0);
-+              return 0;
-+      }
-+
-+      for (i = 0; i < ot->comments; i++) {
-+              const char *str = ot->user_comments[i];
-+              const char *eq = strchr(str, '=');
-+              char *key;
-+
-+              if (!eq) {
-+                      d_print("invalid comment: '%s' ('=' expected)\n", str);
-+                      continue;
-+              }
-+
-+              key = xstrndup(str, eq - str);
-+              comments_add_const(&c, key, eq + 1);
-+              free(key);
-+      }
-+      keyvals_terminate(&c);
-+      *comments = c.keyvals;
-+      return 0;
-+}
-+
-+static int opus_duration(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv;
-+      ogg_int64_t samples;
-+
-+      priv = ip_data->private;
-+
-+      samples = op_pcm_total(priv->of, -1);
-+      if (samples < 0)
-+              return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+
-+      return samples / SAMPLING_RATE;
-+}
-+
-+static long opus_bitrate(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv;
-+      opus_int32 bitrate;
-+
-+      priv = ip_data->private;
-+
-+      bitrate = op_bitrate(priv->of, -1);
-+      if (bitrate < 0)
-+              return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+      else
-+              return bitrate;
-+}
-+
-+static long opus_current_bitrate(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv;
-+      opus_int32 bitrate;
-+
-+      priv = ip_data->private;
-+
-+      bitrate = op_bitrate_instant(priv->of);
-+      if (bitrate < 0)
-+              return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+      else
-+              return bitrate;
-+}
-+
-+static char *opus_codec(struct input_plugin_data *ip_data)
-+{
-+      return xstrdup("opus");
-+}
-+
-+static char *opus_codec_profile(struct input_plugin_data *ip_data)
-+{
-+      return NULL;
-+}
-+
-+const struct input_plugin_ops ip_ops = {
-+      .open = opus_open,
-+      .close = opus_close,
-+      .read = opus_read,
-+      .seek = opus_seek,
-+      .read_comments = opus_read_comments,
-+      .duration = opus_duration,
-+      .bitrate = opus_bitrate,
-+      .bitrate_current = opus_current_bitrate,
-+      .codec = opus_codec,
-+      .codec_profile = opus_codec_profile
-+};
-+
-+const int ip_priority = 50;
-+const char * const ip_extensions[] = { "opus", NULL };
-+const char * const ip_mime_types[] = { NULL };
-+const char * const ip_options[] = { NULL };

Deleted: community-x86_64/PKGBUILD
===================================================================
--- community-x86_64/PKGBUILD   2014-05-17 12:39:45 UTC (rev 111360)
+++ community-x86_64/PKGBUILD   2014-05-17 12:40:21 UTC (rev 111361)
@@ -1,61 +0,0 @@
-# $Id$
-# Maintainer: Xyne <ca dot archlinux at xyne, backwards>
-# Contributor:  Bartłomiej Piotrowski <[email protected]>
-# Contributor: Aaron Griffin <[email protected]>
-# Contributor: dorphell <[email protected]>
-
-pkgname=cmus
-pkgver=2.5.0
-pkgrel=7
-pkgdesc='Very feature-rich ncurses-based music player'
-arch=('i686' 'x86_64')
-url="https://cmus.github.io/";
-license=('GPL')
-depends=('ncurses')
-makedepends=(
-  'faad2' 'ffmpeg' 'flac' 'libao' 'libmad' 'libmodplug' 'libcdio-paranoia'
-  'libmp4v2' 'libmpcdec' 'libpulse' 'libvorbis' 'opusfile' 'wavpack'
-)
-optdepends=('alsa-lib: for ALSA output plugin support'
-            'libao: for AO output plugin support'
-            'libpulse: for PulseAudio output plugin support'
-            'faad2: for AAC input plugin support'
-            'ffmpeg: for ffmpeg input plugin support'
-            'flac: for flac input plugin support'
-            'libmad: for mp3 input plugin support'
-            'libmodplug: for modplug input plugin support'
-            'libmp4v2: for mp4 input plugin support'
-            'libmpcdec: for musepack input plugin support'
-            'libvorbis: for vorbis input plugin support'
-            'libcdio-paranoia: for cdio support'
-            'opusfile: for opus input plugin support'
-            'wavpack: for wavpack input plugin support')
-source=(http://downloads.sourceforge.net/project/$pkgname/$pkgname-v$pkgver.tar.bz2
-        cmus-2.5.0-opus-support.patch
-        cdio-git.patch)
-sha1sums=('244975a5ff642567acb047f6bd518e4a3271c25b'
-          '5e524f54d565dfa30760562c223bc0e2e8ed00a0'
-          '77738acc7d4e71f6d396a5cd464dbbce0168b6b7')
-
-prepare() {
-  cd "$srcdir/$pkgname-v$pkgver"
-  # Inherited from Bart or earlier.
-  patch -Np1 -i "$srcdir/cmus-2.5.0-opus-support.patch"
-  # Include changes from git for compatibility with new cdio.
-  patch -N -i "$srcdir/cdio-git.patch"
-
-  # Quick fix for modplug header.
-  sed -i 's@<modplug.h>@<libmodplug/modplug.h>@' 
"$srcdir/$pkgname-v$pkgver/modplug.c"
-}
-
-build() {
-  cd "$srcdir/$pkgname-v$pkgver"
-  ./configure prefix=/usr
-  make
-}
-
-package() {
-  cd "$srcdir/$pkgname-v$pkgver"
-  make DESTDIR="$pkgdir" install
-  install -Dm644 contrib/_cmus "$pkgdir"/usr/share/zsh/site-functions/_cmus
-}

Copied: cmus/repos/community-x86_64/PKGBUILD (from rev 111360, 
cmus/trunk/PKGBUILD)
===================================================================
--- community-x86_64/PKGBUILD                           (rev 0)
+++ community-x86_64/PKGBUILD   2014-05-17 12:40:21 UTC (rev 111361)
@@ -0,0 +1,46 @@
+# $Id$
+# Maintainer: Xyne <ca dot archlinux at xyne, backwards>
+# Contributor:  Bartłomiej Piotrowski <[email protected]>
+# Contributor: Aaron Griffin <[email protected]>
+# Contributor: dorphell <[email protected]>
+
+pkgname=cmus
+pkgver=2.5.1
+pkgrel=1
+pkgdesc='Very feature-rich ncurses-based music player'
+arch=('i686' 'x86_64')
+url="https://cmus.github.io/";
+license=('GPL')
+depends=('ncurses')
+makedepends=(
+  'faad2' 'ffmpeg' 'flac' 'libao' 'libmad' 'libmodplug' 'libcdio-paranoia'
+  'libmp4v2' 'libmpcdec' 'libpulse' 'libvorbis' 'opusfile' 'wavpack'
+)
+optdepends=('alsa-lib: for ALSA output plugin support'
+            'libao: for AO output plugin support'
+            'libpulse: for PulseAudio output plugin support'
+            'faad2: for AAC input plugin support'
+            'ffmpeg: for ffmpeg input plugin support'
+            'flac: for flac input plugin support'
+            'libmad: for mp3 input plugin support'
+            'libmodplug: for modplug input plugin support'
+            'libmp4v2: for mp4 input plugin support'
+            'libmpcdec: for musepack input plugin support'
+            'libvorbis: for vorbis input plugin support'
+            'libcdio-paranoia: for cdio support'
+            'opusfile: for opus input plugin support'
+            'wavpack: for wavpack input plugin support')
+source=("https://github.com/cmus/cmus/archive/v${pkgver}.tar.gz";)
+sha256sums=('2c22b12eb2e2d038b64e8db804d4dc037ac68cbd3a398b3e405c2d0ce5c15229')
+
+build() {
+  cd "$srcdir/$pkgname-$pkgver"
+  ./configure prefix=/usr
+  make
+}
+
+package() {
+  cd "$srcdir/$pkgname-$pkgver"
+  make DESTDIR="$pkgdir" install
+  install -Dm644 contrib/_cmus "$pkgdir"/usr/share/zsh/site-functions/_cmus
+}

Deleted: community-x86_64/cdio-git.patch
===================================================================
--- community-x86_64/cdio-git.patch     2014-05-17 12:39:45 UTC (rev 111360)
+++ community-x86_64/cdio-git.patch     2014-05-17 12:40:21 UTC (rev 111361)
@@ -1,137 +0,0 @@
-*** cdio.c     2012-11-07 08:46:17.000000000 +0000
---- cmus-git/src/cmus/cdio.c   2013-09-30 02:21:10.518785946 +0000
-***************
-*** 1,5 ****
-  /*
-!  * Copyright 2011 Various Authors
-   * Copyright 2011 Johannes Weißl
-   *
-   * Based on cdda.c from XMMS2.
---- 1,5 ----
-  /*
-!  * Copyright 2011-2013 Various Authors
-   * Copyright 2011 Johannes Weißl
-   *
-   * Based on cdda.c from XMMS2.
-***************
-*** 27,35 ****
-  #include "comment.h"
-  #include "discid.h"
-  
-- #include <cdio/cdda.h>
-  #include <cdio/cdio.h>
-  #include <cdio/logging.h>
-  #include <stdio.h>
-  #include <stdlib.h>
-  #include <string.h>
---- 27,40 ----
-  #include "comment.h"
-  #include "discid.h"
-  
-  #include <cdio/cdio.h>
-  #include <cdio/logging.h>
-+ #if LIBCDIO_VERSION_NUM >= 90
-+ #include <cdio/paranoia/cdda.h>
-+ #else
-+ #include <cdio/cdda.h>
-+ #endif
-+ 
-  #include <stdio.h>
-  #include <stdlib.h>
-  #include <string.h>
-***************
-*** 352,375 ****
-       GROWING_KEYVALS(c);
-       const char *artist = NULL, *albumartist = NULL, *album = NULL,
-               *title = NULL, *genre = NULL, *comment = NULL;
-!      const cdtext_t *cdtext_track, *cdtext_album;
-  #ifdef HAVE_CDDB
-       cddb_conn_t *cddb_conn = NULL;
-       cddb_disc_t *cddb_disc = NULL;
-  #endif
-       char buf[64];
-  
-!      cdtext_track = cdio_get_cdtext(priv->cdio, priv->track);
-!      if (cdtext_track) {
-!              char * const *field = cdtext_track->field;
-               artist = field[CDTEXT_PERFORMER];
-               title = field[CDTEXT_TITLE];
-               genre = field[CDTEXT_GENRE];
-               comment = field[CDTEXT_MESSAGE];
-       }
-!      cdtext_album = cdio_get_cdtext(priv->cdio, 0);
-!      if (cdtext_album) {
-!              char * const *field = cdtext_album->field;
-               album = field[CDTEXT_TITLE];
-               albumartist = field[CDTEXT_PERFORMER];
-               if (!artist)
---- 357,403 ----
-       GROWING_KEYVALS(c);
-       const char *artist = NULL, *albumartist = NULL, *album = NULL,
-               *title = NULL, *genre = NULL, *comment = NULL;
-!      int track_comments_found = 0;
-!      const cdtext_t *cdt;
-  #ifdef HAVE_CDDB
-       cddb_conn_t *cddb_conn = NULL;
-       cddb_disc_t *cddb_disc = NULL;
-  #endif
-       char buf[64];
-  
-! #if LIBCDIO_VERSION_NUM >= 90
-!      cdt = cdio_get_cdtext(priv->cdio);
-!      if (cdt) {
-!              artist = cdtext_get(cdt, CDTEXT_FIELD_PERFORMER, priv->track);
-!              title = cdtext_get(cdt, CDTEXT_FIELD_TITLE, priv->track);
-!              genre = cdtext_get(cdt, CDTEXT_FIELD_GENRE, priv->track);
-!              comment = cdtext_get(cdt, CDTEXT_FIELD_MESSAGE, priv->track);
-! 
-!              if (title)
-!                      track_comments_found = 1;
-! 
-!              album = cdtext_get(cdt, CDTEXT_FIELD_TITLE, 0);
-!              albumartist = cdtext_get(cdt, CDTEXT_FIELD_PERFORMER, 0);
-!              if (!artist)
-!                      artist = albumartist;
-!              if (!genre)
-!                      genre = cdtext_get(cdt, CDTEXT_FIELD_GENRE, 0);
-!              if (!comment)
-!                      comment = cdtext_get(cdt, CDTEXT_FIELD_MESSAGE, 0);
-!      }
-! #else
-!      cdt = cdio_get_cdtext(priv->cdio, priv->track);
-!      if (cdt) {
-!              track_comments_found = 1;
-!              char * const *field = cdt->field;
-               artist = field[CDTEXT_PERFORMER];
-               title = field[CDTEXT_TITLE];
-               genre = field[CDTEXT_GENRE];
-               comment = field[CDTEXT_MESSAGE];
-       }
-!      cdt = cdio_get_cdtext(priv->cdio, 0);
-!      if (cdt) {
-!              char * const *field = cdt->field;
-               album = field[CDTEXT_TITLE];
-               albumartist = field[CDTEXT_PERFORMER];
-               if (!artist)
-***************
-*** 379,387 ****
-               if (!comment)
-                       comment = field[CDTEXT_MESSAGE];
-       }
-  
-  #ifdef HAVE_CDDB
-!      if (!cdtext_track && cddb_url && cddb_url[0]) {
-               cddb_track_t *cddb_track;
-               track_t i_tracks = cdio_get_num_tracks(priv->cdio);
-               track_t i_first_track = cdio_get_first_track_num(priv->cdio);
---- 407,416 ----
-               if (!comment)
-                       comment = field[CDTEXT_MESSAGE];
-       }
-+ #endif
-  
-  #ifdef HAVE_CDDB
-!      if (!track_comments_found && cddb_url && cddb_url[0]) {
-               cddb_track_t *cddb_track;
-               track_t i_tracks = cdio_get_num_tracks(priv->cdio);
-               track_t i_first_track = cdio_get_first_track_num(priv->cdio);

Deleted: community-x86_64/cmus-2.5.0-opus-support.patch
===================================================================
--- community-x86_64/cmus-2.5.0-opus-support.patch      2014-05-17 12:39:45 UTC 
(rev 111360)
+++ community-x86_64/cmus-2.5.0-opus-support.patch      2014-05-17 12:40:21 UTC 
(rev 111361)
@@ -1,417 +0,0 @@
-diff -rupN cmus-v2.5.0/Makefile cmus/Makefile
---- cmus-v2.5.0/Makefile       2012-11-07 09:46:17.000000000 +0100
-+++ cmus/Makefile      2013-01-04 07:15:35.293069953 +0100
-@@ -74,6 +74,7 @@ mikmod-objs          := mikmod.lo
- modplug-objs          := modplug.lo
- mpc-objs              := mpc.lo
- vorbis-objs           := vorbis.lo
-+opus-objs             := opus.lo
- wavpack-objs          := wavpack.lo
- wav-objs              := wav.lo
- mp4-objs              := mp4.lo
-@@ -88,6 +89,7 @@ ip-$(CONFIG_MIKMOD)  += mikmod.so
- ip-$(CONFIG_MODPLUG)  += modplug.so
- ip-$(CONFIG_MPC)      += mpc.so
- ip-$(CONFIG_VORBIS)   += vorbis.so
-+ip-$(CONFIG_OPUS)     += opus.so
- ip-$(CONFIG_WAVPACK)  += wavpack.so
- ip-$(CONFIG_WAV)      += wav.so
- ip-$(CONFIG_MP4)      += mp4.so
-@@ -102,6 +104,7 @@ $(mikmod-objs):            CFLAGS += $(MIKMOD_CFLA
- $(modplug-objs):      CFLAGS += $(MODPLUG_CFLAGS)
- $(mpc-objs):          CFLAGS += $(MPC_CFLAGS)
- $(vorbis-objs):               CFLAGS += $(VORBIS_CFLAGS)
-+$(opus-objs):         CFLAGS += $(OPUS_CFLAGS)
- $(wavpack-objs):      CFLAGS += $(WAVPACK_CFLAGS)
- $(mp4-objs):          CFLAGS += $(MP4_CFLAGS)
- $(aac-objs):          CFLAGS += $(AAC_CFLAGS)
-@@ -129,6 +132,9 @@ mpc.so: $(mpc-objs) $(libcmus-y)
- vorbis.so: $(vorbis-objs) $(libcmus-y)
-       $(call cmd,ld_dl,$(VORBIS_LIBS))
- 
-+opus.so: $(opus-objs) $(libcmus-y)
-+      $(call cmd,ld_dl,$(OPUS_LIBS))
-+
- wavpack.so: $(wavpack-objs) $(libcmus-y)
-       $(call cmd,ld_dl,$(WAVPACK_LIBS))
- 
-diff -rupN cmus-v2.5.0/configure cmus/configure
---- cmus-v2.5.0/configure      2012-11-07 09:46:17.000000000 +0100
-+++ cmus/configure     2013-01-04 07:15:35.293069953 +0100
-@@ -228,6 +228,12 @@ check_vorbis()
-       fi
- }
- 
-+check_opus()
-+{
-+      pkg_config OPUS "opusfile"
-+      return $?
-+}
-+
- check_wavpack()
- {
-       pkg_config WAVPACK "wavpack" "" "-lwavpack"
-@@ -425,6 +431,7 @@ Optional Features: y/n
-   CONFIG_MPC          libmpcdec (Musepack .mpc, .mpp, .mp+)           [auto]
-   CONFIG_VORBIS       Ogg/Vorbis (.ogg, application/ogg, audio/x-ogg) [auto]
-   CONFIG_TREMOR       Use Tremor as Ogg/Vorbis input plugin           [n]
-+  CONFIG_OPUS         Opus (.opus)                                    [auto]
-   CONFIG_WAV          WAV                                             [y]
-   CONFIG_WAVPACK      WavPack (.wv, audio/x-wavpack)                  [auto]
-   CONFIG_MP4          MPEG-4 AAC (.mp4, .m4a, .m4b)                   [auto]
-@@ -485,6 +492,7 @@ check check_mikmod  CONFIG_MIKMOD
- check check_modplug CONFIG_MODPLUG
- check check_mpc     CONFIG_MPC
- check check_vorbis  CONFIG_VORBIS
-+check check_opus    CONFIG_OPUS
- check check_wavpack CONFIG_WAVPACK
- check check_mp4     CONFIG_MP4
- check check_aac     CONFIG_AAC
-@@ -534,7 +542,7 @@ config_header config/cue.h CONFIG_CUE
- CFLAGS="${CFLAGS} -DHAVE_CONFIG"
- 
- makefile_vars bindir datadir libdir mandir exampledir
--makefile_vars CONFIG_CDIO CONFIG_FLAC CONFIG_MAD CONFIG_MIKMOD CONFIG_MODPLUG 
CONFIG_MPC CONFIG_VORBIS CONFIG_WAVPACK CONFIG_WAV CONFIG_MP4 CONFIG_AAC 
CONFIG_FFMPEG CONFIG_CUE
-+makefile_vars CONFIG_CDIO CONFIG_FLAC CONFIG_MAD CONFIG_MIKMOD CONFIG_MODPLUG 
CONFIG_MPC CONFIG_VORBIS CONFIG_OPUS CONFIG_WAVPACK CONFIG_WAV CONFIG_MP4 
CONFIG_AAC CONFIG_FFMPEG CONFIG_CUE
- makefile_vars CONFIG_ROAR CONFIG_PULSE CONFIG_ALSA CONFIG_AO CONFIG_ARTS 
CONFIG_OSS CONFIG_SUN CONFIG_WAVEOUT
- 
- generate_config_mk
-diff -rupN cmus-v2.5.0/opus.c cmus/opus.c
---- cmus-v2.5.0/opus.c 1970-01-01 01:00:00.000000000 +0100
-+++ cmus/opus.c        2013-01-04 07:15:35.493069945 +0100
-@@ -0,0 +1,335 @@
-+/*
-+ * Copyright 2008-2012 Various Authors
-+ * Copyright 2004-2005 Timo Hirvonen
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License as
-+ * published by the Free Software Foundation; either version 2 of the
-+ * License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful, but
-+ * WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-+ * General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
-+ */
-+
-+#include "ip.h"
-+#include "xmalloc.h"
-+#include "read_wrapper.h"
-+#include "debug.h"
-+#include "comment.h"
-+
-+#include <opusfile.h>
-+
-+#include <errno.h>
-+#include <string.h>
-+#include <sys/types.h>
-+#include <unistd.h>
-+
-+#define SAMPLING_RATE 48000
-+#define CHANNELS 2
-+
-+struct opus_private {
-+      OggOpusFile *of;
-+      int current_link;
-+};
-+
-+static int read_func(void *datasource, unsigned char *ptr, int size)
-+{
-+      struct input_plugin_data *ip_data = datasource;
-+      return read_wrapper(ip_data, ptr, size);
-+}
-+
-+static int seek_func(void *datasource, opus_int64 offset, int whence)
-+{
-+      struct input_plugin_data *ip_data = datasource;
-+      return lseek(ip_data->fd, offset, whence);
-+}
-+
-+static int close_func(void *datasource)
-+{
-+      struct input_plugin_data *ip_data;
-+      int rc;
-+
-+      ip_data = datasource;
-+      rc = close(ip_data->fd);
-+      ip_data->fd = -1;
-+      return rc;
-+}
-+
-+static opus_int64 tell_func(void *datasource)
-+{
-+      struct input_plugin_data *ip_data = datasource;
-+      return lseek(ip_data->fd, 0, SEEK_CUR);
-+}
-+
-+static OpusFileCallbacks callbacks = {
-+      .read = read_func,
-+      .seek = seek_func,
-+      .tell = tell_func,
-+      .close = close_func
-+};
-+
-+static int opus_open(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv;
-+      int rc;
-+      void *source;
-+
-+      priv = xnew(struct opus_private, 1);
-+      priv->current_link = -1;
-+      priv->of = NULL;
-+
-+      source = op_fdopen(&callbacks, ip_data->fd, "r");
-+      if (source == NULL) {
-+              free(priv);
-+              return -IP_ERROR_INTERNAL;
-+      }
-+
-+      priv->of = op_open_callbacks(source, &callbacks, NULL, 0, &rc);
-+      if (rc != 0) {
-+              d_print("op_open_callbacks failed: %d:%s\n", rc, strerror(rc));
-+              free(priv);
-+              /* ogg is a container format, so it is likely to contain
-+               * something else if it isn't opus */
-+              return -IP_ERROR_UNSUPPORTED_FILE_TYPE;
-+      }
-+      ip_data->private = priv;
-+
-+      ip_data->sf = sf_rate(SAMPLING_RATE)
-+              | sf_channels(CHANNELS)
-+              | sf_bits(16)
-+              | sf_signed(1);
-+#ifdef WORDS_BIGENDIAN
-+      ip_data->sf |= sf_bigendian(1);
-+#endif
-+      return 0;
-+}
-+
-+static int opus_close(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv = ip_data->private;
-+      /* this closes ip_data->fd! */
-+      op_free(priv->of);
-+      ip_data->fd = -1;
-+      free(priv);
-+      ip_data->private = NULL;
-+      return 0;
-+}
-+
-+/*
-+ * -n
-+ *     indicates error
-+ * 0
-+ *     indicates EOF
-+ * n
-+ *     indicates actual number of bytes read
-+ */
-+static int opus_read(struct input_plugin_data *ip_data, char *buffer, int 
count)
-+{
-+      struct opus_private *priv;
-+      int samples, current_link, rc;
-+
-+      priv = ip_data->private;
-+
-+      /* samples = number of samples read per channel */
-+      samples = op_read_stereo(priv->of, (opus_int16*)buffer,
-+                                                       count / 
sizeof(opus_int16));
-+      if (samples < 0) {
-+              switch (samples) {
-+              case OP_HOLE:
-+                      errno = EAGAIN;
-+                      rc = -1;
-+                      break;
-+              case OP_EREAD:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_EFAULT:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_EIMPL:
-+                      rc = -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+                      break;
-+              case OP_EINVAL:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_ENOTFORMAT:
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+                      break;
-+              case OP_EBADHEADER:
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+                      break;
-+              case OP_EVERSION:
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+                      break;
-+              case OP_EBADPACKET:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_EBADLINK:
-+                      errno = EINVAL;
-+                      rc = -1;
-+                      break;
-+              case OP_EBADTIMESTAMP:
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+                      break;
-+              default:
-+                      d_print("error: %d\n", samples);
-+                      rc = -IP_ERROR_FILE_FORMAT;
-+              }
-+      } else if (samples == 0) {
-+              /* EOF or buffer too small */
-+              rc = 0;
-+      } else {
-+              current_link = op_current_link(priv->of);
-+              if (current_link < 0) {
-+                      d_print("error: %d\n", current_link);
-+                      rc = -1;
-+              } else {
-+                      if (ip_data->remote && current_link != 
priv->current_link) {
-+                              ip_data->metadata_changed = 1;
-+                              priv->current_link = current_link;
-+                      }
-+
-+                      /* bytes = samples * channels * sample_size */
-+                      rc = samples * CHANNELS * sizeof(opus_int16);
-+              }
-+      }
-+
-+      return rc;
-+}
-+
-+static int opus_seek(struct input_plugin_data *ip_data, double offset)
-+{
-+      struct opus_private *priv;
-+      int rc;
-+
-+      priv = ip_data->private;
-+
-+      rc = op_pcm_seek(priv->of, offset * SAMPLING_RATE);
-+      switch (rc) {
-+      case OP_ENOSEEK:
-+              return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+      case OP_EINVAL:
-+              return -IP_ERROR_INTERNAL;
-+      case OP_EREAD:
-+              return -IP_ERROR_INTERNAL;
-+      case OP_EFAULT:
-+              return -IP_ERROR_INTERNAL;
-+      case OP_EBADLINK:
-+              return -IP_ERROR_INTERNAL;
-+      }
-+      return 0;
-+}
-+
-+static int opus_read_comments(struct input_plugin_data *ip_data,
-+                                                        struct keyval 
**comments)
-+{
-+      GROWING_KEYVALS(c);
-+      struct opus_private *priv;
-+      const OpusTags *ot;
-+      int i;
-+
-+      priv = ip_data->private;
-+
-+      ot = op_tags(priv->of, -1);
-+      if (ot == NULL) {
-+              d_print("ot == NULL\n");
-+              *comments = keyvals_new(0);
-+              return 0;
-+      }
-+
-+      for (i = 0; i < ot->comments; i++) {
-+              const char *str = ot->user_comments[i];
-+              const char *eq = strchr(str, '=');
-+              char *key;
-+
-+              if (!eq) {
-+                      d_print("invalid comment: '%s' ('=' expected)\n", str);
-+                      continue;
-+              }
-+
-+              key = xstrndup(str, eq - str);
-+              comments_add_const(&c, key, eq + 1);
-+              free(key);
-+      }
-+      keyvals_terminate(&c);
-+      *comments = c.keyvals;
-+      return 0;
-+}
-+
-+static int opus_duration(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv;
-+      ogg_int64_t samples;
-+
-+      priv = ip_data->private;
-+
-+      samples = op_pcm_total(priv->of, -1);
-+      if (samples < 0)
-+              return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+
-+      return samples / SAMPLING_RATE;
-+}
-+
-+static long opus_bitrate(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv;
-+      opus_int32 bitrate;
-+
-+      priv = ip_data->private;
-+
-+      bitrate = op_bitrate(priv->of, -1);
-+      if (bitrate < 0)
-+              return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+      else
-+              return bitrate;
-+}
-+
-+static long opus_current_bitrate(struct input_plugin_data *ip_data)
-+{
-+      struct opus_private *priv;
-+      opus_int32 bitrate;
-+
-+      priv = ip_data->private;
-+
-+      bitrate = op_bitrate_instant(priv->of);
-+      if (bitrate < 0)
-+              return -IP_ERROR_FUNCTION_NOT_SUPPORTED;
-+      else
-+              return bitrate;
-+}
-+
-+static char *opus_codec(struct input_plugin_data *ip_data)
-+{
-+      return xstrdup("opus");
-+}
-+
-+static char *opus_codec_profile(struct input_plugin_data *ip_data)
-+{
-+      return NULL;
-+}
-+
-+const struct input_plugin_ops ip_ops = {
-+      .open = opus_open,
-+      .close = opus_close,
-+      .read = opus_read,
-+      .seek = opus_seek,
-+      .read_comments = opus_read_comments,
-+      .duration = opus_duration,
-+      .bitrate = opus_bitrate,
-+      .bitrate_current = opus_current_bitrate,
-+      .codec = opus_codec,
-+      .codec_profile = opus_codec_profile
-+};
-+
-+const int ip_priority = 50;
-+const char * const ip_extensions[] = { "opus", NULL };
-+const char * const ip_mime_types[] = { NULL };
-+const char * const ip_options[] = { NULL };

Reply via email to