Index | Thread | Search

From:
Rafael Sadowski <rafael@sizeofvoid.org>
Subject:
UPDATE: xmms2-0.9.5
To:
The OpenBSD ports mailing-list <ports@openbsd.org>
Date:
Sat, 12 Jul 2025 09:23:59 +0200

Download raw body.

Thread
  • Rafael Sadowski:

    UPDATE: xmms2-0.9.5

Update xmms2-0.9.5.

I feel pretty dirty having done that but it wasn't a big deal. The
good: Py2 is gone, the bad: it still doesn't build with libc++19.

No cython was no longer an option:
-		--no-cython \

OK?

Cheers Rafael

Index: Makefile
===================================================================
RCS file: /cvs/ports/audio/xmms2/Makefile,v
diff -u -p -u -p -r1.66 Makefile
--- Makefile	24 Jun 2025 12:11:14 -0000	1.66
+++ Makefile	12 Jul 2025 07:21:20 -0000
@@ -1,14 +1,12 @@
 COMMENT =		audio player daemon with library management
 
-V =			0.8
-DISTNAME =		xmms2-${V}DrO_o
-PKGNAME =		xmms2-${V}
-REVISION =		20
-
-SHARED_LIBS +=		xmmsclient++		2.0 # 4.0.0
-SHARED_LIBS +=		xmmsclient++-glib	1.0 # 1.0.0
-SHARED_LIBS +=		xmmsclient-glib		1.0 # 1.0.0
-SHARED_LIBS +=		xmmsclient		2.0 # 6.0.0
+V =			0.9.5
+DISTNAME =		xmms2-${V}
+
+SHARED_LIBS +=		xmmsclient++		3.0 # 4.0.0
+SHARED_LIBS +=		xmmsclient++-glib	2.0 # 1.0.0
+SHARED_LIBS +=		xmmsclient-glib		2.0 # 1.0.0
+SHARED_LIBS +=		xmmsclient		3.0 # 6.0.0
 
 CATEGORIES =		audio
 
@@ -19,38 +17,40 @@ PORTROACH =		site:https://github.com/xmm
 PERMIT_PACKAGE =	Yes
 
 WANTLIB += ${COMPILER_LIBCXX} FLAC ao avahi-client avahi-common
-WANTLIB += avahi-glib avcodec avutil c curl ffi gio-2.0 glib-2.0
-WANTLIB += gmodule-2.0 gobject-2.0 gthread-2.0 intl jack m mpg123
-WANTLIB += ogg opus pcre2-8 perl python2.7 readline sndfile sqlite3
-WANTLIB += swresample vorbis vorbisenc vorbisfile xml2 z
+WANTLIB += avahi-glib avcodec c curl fluidsynth gio-2.0 glib-2.0
+WANTLIB += gmodule-2.0 gobject-2.0 intl jack m mpg123 ogg opus
+WANTLIB += opusfile perl readline sndfile util vorbisfile xml2
 
-SITES =			${SITE_SOURCEFORGE:=xmms2/}
+SITES =		https://github.com/xmms2/xmms2-devel/releases/download/${V}/
+EXTRACT_SUFX =	.tar.xz
 
 MODPERL_REGEN_PPPORT =	src/clients/lib/perl/ppport.h
 
-EXTRACT_SUFX =		.tar.bz2
 
 COMPILER =		base-clang ports-gcc base-gcc
 
 MODULES =		lang/python \
 			perl
-MODPY_VERSION =	${MODPY_DEFAULT_VERSION_2}
 
 NO_TEST =		Yes
 
 BUILD_DEPENDS =		devel/boost \
 			textproc/p5-Pod-Parser
 
-LIB_DEPENDS =		devel/glib2 \
-			databases/sqlite3 \
-			graphics/ffmpeg \
-			audio/libao \
+LIB_DEPENDS =		audio/flac \
+			audio/fluidsynth \
 			audio/jack \
-			textproc/libxml \
-			net/curl \
+			audio/libao \
+			audio/libogg \
+			audio/libsndfile \
+			audio/libvorbis \
 			audio/mpg123 \
+			audio/opusfile \
+			devel/glib2 \
+			graphics/ffmpeg \
 			net/avahi,-glib \
-			audio/libsndfile
+			net/curl \
+			textproc/libxml
 
 WSCRIPT_PATCHES =	src/clients/lib/xmmsclient++/wscript \
 			src/clients/lib/xmmsclient++-glib/wscript \
@@ -69,9 +69,8 @@ do-configure:
 		--mandir=${PREFIX}/man \
 		--conf-prefix=${PREFIX} \
 		--with-default-output-plugin=ao \
-		--no-cython \
 		--disable-shmvis-server \
-		--without-optionals=medialib-updater,tests,xmmsclient-cf,xmmsclient-ecore,ruby \
+		--without-optionals=medialib-updater,tests,xmmsclient-cf,xmmsclient-ecore,ruby,sqlite2s4,migrate-collections \
 		--without-plugins=airplay,alsa,cdda,coreaudio,faad,gme,ices,mac,mad,mms,modplug,musepack,nms,ofa,oss,pulse,samba,sid,speex,sun,tremor,vocoder,waveout,wavpack
 
 post-configure:
Index: distinfo
===================================================================
RCS file: /cvs/ports/audio/xmms2/distinfo,v
diff -u -p -u -p -r1.4 distinfo
--- distinfo	18 Jan 2015 03:12:51 -0000	1.4
+++ distinfo	12 Jul 2025 07:21:20 -0000
@@ -1,2 +1,2 @@
-SHA256 (xmms2-0.8DrO_o.tar.bz2) = x35B571XiIidWi94Mxyox0i4chvS5Z82w2rUx8roaUo=
-SIZE (xmms2-0.8DrO_o.tar.bz2) = 1670726
+SHA256 (xmms2-0.9.5.tar.xz) = aV8jBeQIXp16B8q8bFZpoApVdF/n1gE2Ud0h+h9iEzM=
+SIZE (xmms2-0.9.5.tar.xz) = 1741972
Index: patches/patch-src_clients_lib_xmmsclient++-glib_wscript
===================================================================
RCS file: /cvs/ports/audio/xmms2/patches/patch-src_clients_lib_xmmsclient++-glib_wscript,v
diff -u -p -u -p -r1.4 patch-src_clients_lib_xmmsclient++-glib_wscript
--- patches/patch-src_clients_lib_xmmsclient++-glib_wscript	11 Mar 2022 18:20:36 -0000	1.4
+++ patches/patch-src_clients_lib_xmmsclient++-glib_wscript	12 Jul 2025 07:21:20 -0000
@@ -1,5 +1,6 @@
---- src/clients/lib/xmmsclient++-glib/wscript.orig	Thu Oct 20 21:26:08 2011
-+++ src/clients/lib/xmmsclient++-glib/wscript	Tue May  8 01:10:14 2012
+Index: src/clients/lib/xmmsclient++-glib/wscript
+--- src/clients/lib/xmmsclient++-glib/wscript.orig
++++ src/clients/lib/xmmsclient++-glib/wscript
 @@ -6,7 +6,7 @@ def build(bld):
          uselib = 'glib2',
          use = 'xmmsclient xmmsclient-glib',
Index: patches/patch-src_clients_lib_xmmsclient++_wscript
===================================================================
RCS file: /cvs/ports/audio/xmms2/patches/patch-src_clients_lib_xmmsclient++_wscript,v
diff -u -p -u -p -r1.4 patch-src_clients_lib_xmmsclient++_wscript
--- patches/patch-src_clients_lib_xmmsclient++_wscript	11 Mar 2022 18:20:36 -0000	1.4
+++ patches/patch-src_clients_lib_xmmsclient++_wscript	12 Jul 2025 07:21:20 -0000
@@ -1,5 +1,6 @@
---- src/clients/lib/xmmsclient++/wscript.orig	Thu Oct 20 21:26:08 2011
-+++ src/clients/lib/xmmsclient++/wscript	Tue May  8 01:11:05 2012
+Index: src/clients/lib/xmmsclient++/wscript
+--- src/clients/lib/xmmsclient++/wscript.orig
++++ src/clients/lib/xmmsclient++/wscript
 @@ -28,7 +28,7 @@ def build(bld):
          includes = '../../../.. ../../../include ../../../includepriv',
          uselib = 'BOOST socket',
Index: patches/patch-src_clients_lib_xmmsclient-glib_wscript
===================================================================
RCS file: /cvs/ports/audio/xmms2/patches/patch-src_clients_lib_xmmsclient-glib_wscript,v
diff -u -p -u -p -r1.4 patch-src_clients_lib_xmmsclient-glib_wscript
--- patches/patch-src_clients_lib_xmmsclient-glib_wscript	11 Mar 2022 18:20:36 -0000	1.4
+++ patches/patch-src_clients_lib_xmmsclient-glib_wscript	12 Jul 2025 07:21:20 -0000
@@ -1,11 +1,12 @@
---- src/clients/lib/xmmsclient-glib/wscript.orig	Thu Oct 20 21:26:08 2011
-+++ src/clients/lib/xmmsclient-glib/wscript	Tue May  8 01:11:50 2012
+Index: src/clients/lib/xmmsclient-glib/wscript
+--- src/clients/lib/xmmsclient-glib/wscript.orig
++++ src/clients/lib/xmmsclient-glib/wscript
 @@ -7,7 +7,7 @@ def build(bld):
          source = 'xmmsclient-glib.c',
          uselib = 'glib2',
-         use = 'xmmsclient',
--        vnum = '1.0.0'
-+        vnum = '${LIBxmmsclient-glib_VERSION}'
+         use = 'xmmsclient xmmsc-glib',
+-        vnum = '1.0.0',
++        vnum = '${LIBxmmsclient-glib_VERSION}',
+         defines = 'G_LOG_DOMAIN="xmmsclient-glib"'
          )
  
-     tool.add_install_flag(bld, obj)
Index: patches/patch-src_clients_lib_xmmsclient_wscript
===================================================================
RCS file: /cvs/ports/audio/xmms2/patches/patch-src_clients_lib_xmmsclient_wscript,v
diff -u -p -u -p -r1.4 patch-src_clients_lib_xmmsclient_wscript
--- patches/patch-src_clients_lib_xmmsclient_wscript	11 Mar 2022 18:20:36 -0000	1.4
+++ patches/patch-src_clients_lib_xmmsclient_wscript	12 Jul 2025 07:21:20 -0000
@@ -1,11 +1,12 @@
---- src/clients/lib/xmmsclient/wscript.orig	Thu Oct 20 21:26:08 2011
-+++ src/clients/lib/xmmsclient/wscript	Tue May  8 01:12:42 2012
-@@ -31,7 +31,7 @@ def build(bld):
+Index: src/clients/lib/xmmsclient/wscript
+--- src/clients/lib/xmmsclient/wscript.orig
++++ src/clients/lib/xmmsclient/wscript
+@@ -36,7 +36,7 @@ def build(bld):
          source = source,
          uselib = 'socket time',
          use = 'xmmsipc xmmssocket xmmsutils xmmstypes xmmsvisualization',
--        vnum = '6.0.0'
-+        vnum = '${LIBxmmsclient_VERSION}'
-         )
- 
-     tool.add_install_flag(bld, obj)
+-        vnum = '6.0.0',
++        vnum = '${LIBxmmsclient_VERSION}',
+         defines = [
+             'XMMSC_LOG_DOMAIN="xmmsclient"',
+             "HAVE_SEMTIMEDOP=%d" % int(bld.env.have_semtimedop),
Index: patches/patch-src_clients_vistest_wscript
===================================================================
RCS file: /cvs/ports/audio/xmms2/patches/patch-src_clients_vistest_wscript,v
diff -u -p -u -p -r1.1 patch-src_clients_vistest_wscript
--- patches/patch-src_clients_vistest_wscript	24 Jun 2025 12:11:14 -0000	1.1
+++ patches/patch-src_clients_vistest_wscript	12 Jul 2025 07:21:20 -0000
@@ -8,5 +8,5 @@ Index: src/clients/vistest/wscript
 -    conf.check_cfg(package='vorbisenc', uselib_store='vorbisenc',
 +    conf.check_cfg(package='vorbisenc', uselib_store='vorbisenc vorbis ogg',
              args='--cflags --libs', mandatory=False)
- 
-     if conf.check_cfg(package='libvisual-0.4', uselib_store='visual',
+     conf.check_cfg(package='vorbis', uselib_store='vorbis',
+             args='--cflags --libs', mandatory=False)
Index: patches/patch-src_include_xmmsclient_xmmsclient++_coll_h
===================================================================
RCS file: patches/patch-src_include_xmmsclient_xmmsclient++_coll_h
diff -N patches/patch-src_include_xmmsclient_xmmsclient++_coll_h
--- patches/patch-src_include_xmmsclient_xmmsclient++_coll_h	11 Mar 2022 18:20:36 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,14 +0,0 @@
-work-around. maybe coll_ should be const ref ?
-
-Index: src/include/xmmsclient/xmmsclient++/coll.h
---- src/include/xmmsclient/xmmsclient++/coll.h.orig
-+++ src/include/xmmsclient/xmmsclient++/coll.h
-@@ -612,7 +612,7 @@ namespace Xmms 
- 
- 		template< typename keyT, typename valT >
- 		AbstractElement< keyT, valT >::AbstractElement( const Coll& coll, keyT index )
--			: coll_ (coll), index_( index )
-+			: coll_ (const_cast<Coll&>(coll)), index_( index )
- 		{
- 			xmmsv_coll_ref( coll_.getColl() );
- 		}
Index: patches/patch-src_plugins_asf_libasf_asf_c
===================================================================
RCS file: patches/patch-src_plugins_asf_libasf_asf_c
diff -N patches/patch-src_plugins_asf_libasf_asf_c
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_plugins_asf_libasf_asf_c	12 Jul 2025 07:21:20 -0000
@@ -0,0 +1,12 @@
+Index: src/plugins/asf/libasf/asf.c
+--- src/plugins/asf/libasf/asf.c.orig
++++ src/plugins/asf/libasf/asf.c
+@@ -34,7 +34,7 @@ asf_fileio_read_cb(void *stream, void *buffer, int siz
+ 	int ret;
+ 
+ 	ret = fread(buffer, 1, size, stream);
+-	if (!ret && !feof(stream))
++	if (!ret && !feof((FILE*)stream))
+ 		return -1;
+ 
+ 	return ret;
Index: patches/patch-src_plugins_avcodec_avcodec_c
===================================================================
RCS file: patches/patch-src_plugins_avcodec_avcodec_c
diff -N patches/patch-src_plugins_avcodec_avcodec_c
--- patches/patch-src_plugins_avcodec_avcodec_c	14 May 2024 11:17:42 -0000	1.6
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,521 +0,0 @@
-Deal with newer FFmpeg API.
-
-Index: src/plugins/avcodec/avcodec.c
---- src/plugins/avcodec/avcodec.c.orig
-+++ src/plugins/avcodec/avcodec.c
-@@ -23,6 +23,7 @@
- #include <stdlib.h>
- #include <string.h>
- #include <glib.h>
-+#include <libavutil/mem.h>
- 
- #include "avcodec_compat.h"
- 
-@@ -30,12 +31,15 @@
- 
- typedef struct {
- 	AVCodecContext *codecctx;
-+	AVPacket packet;
- 
- 	guchar *buffer;
- 	guint buffer_length;
- 	guint buffer_size;
- 	gboolean no_demuxer;
- 
-+	AVFrame *read_out_frame;
-+
- 	guint channels;
- 	guint samplerate;
- 	xmms_sample_format_t sampleformat;
-@@ -53,10 +57,14 @@ typedef struct {
- static gboolean xmms_avcodec_plugin_setup (xmms_xform_plugin_t *xform_plugin);
- static gboolean xmms_avcodec_init (xmms_xform_t *xform);
- static void xmms_avcodec_destroy (xmms_xform_t *xform);
-+static gint xmms_avcodec_internal_read_some (xmms_xform_t *xform, xmms_avcodec_data_t *data, xmms_error_t *error);
-+static gint xmms_avcodec_internal_decode_some (xmms_avcodec_data_t *data);
-+static void xmms_avcodec_internal_append (xmms_avcodec_data_t *data);
- static gint xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t *buf, gint len,
-                                xmms_error_t *error);
- static gint64 xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples,
-                                  xmms_xform_seek_mode_t whence, xmms_error_t *err);
-+static xmms_sample_format_t xmms_avcodec_translate_sample_format (enum AVSampleFormat av_sample_format);
- 
- /*
-  * Plugin header
-@@ -85,13 +93,23 @@ xmms_avcodec_plugin_setup (xmms_xform_plugin_t *xform_
- 	xmms_magic_add ("A/52 (AC-3) header", "audio/x-ffmpeg-ac3",
- 	                "0 beshort 0x0b77", NULL);
- 	xmms_magic_add ("DTS header", "audio/x-ffmpeg-dca",
--	                "0 belong 0x7ffe8001", NULL); 
-+	                "0 belong 0x7ffe8001", NULL);
- 
- 	xmms_xform_plugin_indata_add (xform_plugin,
- 	                              XMMS_STREAM_TYPE_MIMETYPE,
- 	                              "audio/x-ffmpeg-*",
- 	                              NULL);
- 
-+	XMMS_DBG ("avcodec version at build time is %d.%d.%d",
-+	          (LIBAVCODEC_VERSION_INT >> 16),
-+	          (LIBAVCODEC_VERSION_INT >> 8) & 0xff,
-+	          LIBAVCODEC_VERSION_INT & 0xff);
-+	XMMS_DBG ("avcodec version at run time is %d.%d.%d",
-+	          (avcodec_version() >> 16),
-+	          (avcodec_version() >> 8) & 0xff,
-+	          avcodec_version() & 0xff);
-+	XMMS_DBG ("avcodec configuration is %s", avcodec_configuration());
-+
- 	return TRUE;
- }
- 
-@@ -107,6 +125,7 @@ xmms_avcodec_destroy (xmms_xform_t *xform)
- 
- 	avcodec_close (data->codecctx);
- 	av_free (data->codecctx);
-+	av_frame_free (&data->read_out_frame);
- 
- 	g_string_free (data->outbuf, TRUE);
- 	g_free (data->buffer);
-@@ -118,7 +137,7 @@ static gboolean
- xmms_avcodec_init (xmms_xform_t *xform)
- {
- 	xmms_avcodec_data_t *data;
--	AVCodec *codec;
-+	const AVCodec *codec;
- 	const gchar *mimetype;
- 	const guchar *tmpbuf;
- 	gsize tmpbuflen;
-@@ -131,12 +150,12 @@ xmms_avcodec_init (xmms_xform_t *xform)
- 	data->buffer = g_malloc (AVCODEC_BUFFER_SIZE);
- 	data->buffer_size = AVCODEC_BUFFER_SIZE;
- 	data->codecctx = NULL;
-+	data->packet.size = 0;
- 
-+	data->read_out_frame = av_frame_alloc ();
-+
- 	xmms_xform_private_data_set (xform, data);
- 
--	avcodec_init ();
--	avcodec_register_all ();
--
- 	mimetype = xmms_xform_indata_get_str (xform,
- 	                                      XMMS_STREAM_TYPE_MIMETYPE);
- 	data->codec_id = mimetype + strlen ("audio/x-ffmpeg-");
-@@ -161,12 +180,12 @@ xmms_avcodec_init (xmms_xform_t *xform)
- 		data->channels = ret;
- 	}
- 
--	/* bitrate required for WMA files */
-+	/* Required by WMA xform. */
- 	xmms_xform_auxdata_get_int (xform,
- 	                            "bitrate",
- 	                            &data->bitrate);
- 
--	/* ALAC and MAC require bits per sample field to be 16 */
-+	/* Required by tta and apefile xforms. */
- 	xmms_xform_auxdata_get_int (xform,
- 	                            "samplebits",
- 	                            &data->samplebits);
-@@ -188,7 +207,8 @@ xmms_avcodec_init (xmms_xform_t *xform)
- 		    !strcmp (data->codec_id, "adpcm_swf") ||
- 		    !strcmp (data->codec_id, "pcm_s16le") ||
- 		    !strcmp (data->codec_id, "ac3") ||
--		    !strcmp (data->codec_id, "dca")) {
-+		    !strcmp (data->codec_id, "dca") ||
-+		    !strcmp (data->codec_id, "nellymoser")) {
- 			/* number 1024 taken from libavformat raw.c RAW_PACKET_SIZE */
- 			data->extradata = g_malloc0 (1024);
- 			data->extradata_size = 1024;
-@@ -196,22 +216,22 @@ xmms_avcodec_init (xmms_xform_t *xform)
- 		} else {
- 			/* A demuxer plugin forgot to give decoder config? */
- 			xmms_log_error ("Decoder config data not found!");
--			return FALSE;
-+			goto err;
- 		}
- 	}
- 
--	data->codecctx = avcodec_alloc_context ();
-+	data->codecctx = avcodec_alloc_context3 (codec);
- 	data->codecctx->sample_rate = data->samplerate;
- 	data->codecctx->channels = data->channels;
- 	data->codecctx->bit_rate = data->bitrate;
--	CONTEXT_BPS (data->codecctx) = data->samplebits;
-+	data->codecctx->bits_per_coded_sample = data->samplebits;
- 	data->codecctx->block_align = data->block_align;
- 	data->codecctx->extradata = data->extradata;
- 	data->codecctx->extradata_size = data->extradata_size;
- 	data->codecctx->codec_id = codec->id;
- 	data->codecctx->codec_type = codec->type;
- 
--	if (avcodec_open (data->codecctx, codec) < 0) {
-+	if (avcodec_open2 (data->codecctx, codec, NULL) < 0) {
- 		XMMS_DBG ("Opening decoder '%s' failed", codec->name);
- 		goto err;
- 	} else {
-@@ -220,7 +240,7 @@ xmms_avcodec_init (xmms_xform_t *xform)
- 
- 		/* some codecs need to have something read before they set
- 		 * the samplerate and channels correctly, unfortunately... */
--		if ((ret = xmms_avcodec_read (xform, buf, 42, &error)) > 0) {
-+		if ((ret = xmms_avcodec_read (xform, buf, sizeof (buf), &error)) > 0) {
- 			g_string_insert_len (data->outbuf, 0, buf, ret);
- 		} else {
- 			XMMS_DBG ("First read failed, codec is not working...");
-@@ -231,19 +251,27 @@ xmms_avcodec_init (xmms_xform_t *xform)
- 
- 	data->samplerate = data->codecctx->sample_rate;
- 	data->channels = data->codecctx->channels;
-+	data->sampleformat = xmms_avcodec_translate_sample_format (data->codecctx->sample_fmt);
-+	if (data->sampleformat == XMMS_SAMPLE_FORMAT_UNKNOWN) {
-+		avcodec_close (data->codecctx);
-+		goto err;
-+	}
- 
- 	xmms_xform_outdata_type_add (xform,
- 	                             XMMS_STREAM_TYPE_MIMETYPE,
- 	                             "audio/pcm",
- 	                             XMMS_STREAM_TYPE_FMT_FORMAT,
--	                             XMMS_SAMPLE_FORMAT_S16,
-+	                             data->sampleformat,
- 	                             XMMS_STREAM_TYPE_FMT_CHANNELS,
- 	                             data->channels,
- 	                             XMMS_STREAM_TYPE_FMT_SAMPLERATE,
- 	                             data->samplerate,
- 	                             XMMS_STREAM_TYPE_END);
- 
--	XMMS_DBG ("Decoder '%s' initialized successfully!", codec->name);
-+	XMMS_DBG ("Decoder %s at rate %d with %d channels of format %s initialized",
-+	          codec->name, data->codecctx->sample_rate,
-+	          data->codecctx->channels,
-+	          av_get_sample_fmt_name (data->codecctx->sample_fmt));
- 
- 	return TRUE;
- 
-@@ -251,6 +279,9 @@ err:
- 	if (data->codecctx) {
- 		av_free (data->codecctx);
- 	}
-+	if (data->read_out_frame) {
-+		avcodec_free_frame (&data->read_out_frame);
-+	}
- 	g_string_free (data->outbuf, TRUE);
- 	g_free (data->extradata);
- 	g_free (data);
-@@ -263,102 +294,24 @@ xmms_avcodec_read (xmms_xform_t *xform, xmms_sample_t 
-                    xmms_error_t *error)
- {
- 	xmms_avcodec_data_t *data;
--	char outbuf[AVCODEC_MAX_AUDIO_FRAME_SIZE];
--	gint outbufsize, bytes_read = 0;
- 	guint size;
- 
- 	data = xmms_xform_private_data_get (xform);
- 	g_return_val_if_fail (data, -1);
- 
--	size = MIN (data->outbuf->len, len);
--	while (size == 0) {
--		AVPacket packet;
--		av_init_packet (&packet);
-+	while (0 == (size = MIN (data->outbuf->len, len))) {
-+		gint res;
- 
- 		if (data->no_demuxer || data->buffer_length == 0) {
--			gint read_total;
-+			gint bytes_read;
- 
--			bytes_read = xmms_xform_read (xform,
--			                              (gchar *) (data->buffer + data->buffer_length),
--			                              data->buffer_size - data->buffer_length,
--			                              error);
--
--			if (bytes_read < 0) {
--				XMMS_DBG ("Error while reading data");
--				return bytes_read;
--			} else if (bytes_read == 0) {
--				XMMS_DBG ("EOF");
--				return 0;
--			}
--
--			read_total = bytes_read;
--
--			/* If we have a demuxer plugin, make sure we read the whole packet */
--			while (read_total == data->buffer_size && !data->no_demuxer) {
--				/* multiply the buffer size and try to read again */
--				data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
--				bytes_read = xmms_xform_read (xform,
--				                              (gchar *) data->buffer +
--				                                data->buffer_size,
--				                              data->buffer_size,
--				                              error);
--				data->buffer_size *= 2;
--
--				if (bytes_read < 0) {
--					XMMS_DBG ("Error while reading data");
--					return bytes_read;
--				}
--
--				read_total += bytes_read;
--
--				if (read_total < data->buffer_size) {
--					/* finally double the buffer size for performance reasons, the
--					 * hotspot handling likes to fit two frames in the buffer */
--					data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
--					data->buffer_size *= 2;
--					XMMS_DBG ("Reallocated avcodec internal buffer to be %d bytes",
--					          data->buffer_size);
--
--					break;
--				}
--			}
--
--			/* Update the buffer length */
--			data->buffer_length += read_total;
-+			bytes_read = xmms_avcodec_internal_read_some (xform, data, error);
-+			if (bytes_read <= 0) { return bytes_read; }
- 		}
- 
--		packet.data = data->buffer;
--		packet.size = data->buffer_length;
--
--		outbufsize = sizeof (outbuf);
--		bytes_read = avcodec_decode_audio3 (data->codecctx, (short *) outbuf,
--		                                    &outbufsize, &packet);
--
--		/* The DTS decoder of ffmpeg is buggy and always returns
--		 * the input buffer length, get frame length from header */
--		if (!strcmp (data->codec_id, "dca") && bytes_read > 0) {
--			bytes_read = ((int)data->buffer[5] << 12) |
--			             ((int)data->buffer[6] << 4) |
--			             ((int)data->buffer[7] >> 4);
--			bytes_read = (bytes_read & 0x3fff) + 1;
--		}
--
--		if (bytes_read < 0 || bytes_read > data->buffer_length) {
--			XMMS_DBG ("Error decoding data!");
--			return -1;
--		} else if (bytes_read != data->buffer_length) {
--			g_memmove (data->buffer,
--			           data->buffer + bytes_read,
--			           data->buffer_length - bytes_read);
--		}
--
--		data->buffer_length -= bytes_read;
--
--		if (outbufsize > 0) {
--			g_string_append_len (data->outbuf, outbuf, outbufsize);
--		}
--
--		size = MIN (data->outbuf->len, len);
-+		res = xmms_avcodec_internal_decode_some (data);
-+		if (res < 0) { return res; }
-+		if (res > 0) { xmms_avcodec_internal_append (data); }
- 	}
- 
- 	memcpy (buf, data->outbuf->str, size);
-@@ -371,8 +324,6 @@ static gint64
- xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples, xmms_xform_seek_mode_t whence, xmms_error_t *err)
- {
- 	xmms_avcodec_data_t *data;
--	char outbuf[AVCODEC_MAX_AUDIO_FRAME_SIZE];
--	gint outbufsize, bytes_read = 0;
- 	gint64 ret = -1;
- 
- 	g_return_val_if_fail (xform, -1);
-@@ -390,23 +341,11 @@ xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples
- 
- 	/* The buggy ape decoder doesn't flush buffers, so we need to finish decoding
- 	 * the frame before seeking to avoid segfaults... this hack sucks */
-+	/* FIXME: Is ^^^ still true? */
- 	while (data->buffer_length > 0) {
--		AVPacket packet;
--		av_init_packet (&packet);
--		packet.data = data->buffer;
--		packet.size = data->buffer_length;
--
--		outbufsize = sizeof (outbuf);
--		bytes_read = avcodec_decode_audio3 (data->codecctx, (short *) outbuf,
--		                                    &outbufsize, &packet);
--
--		if (bytes_read < 0 || bytes_read > data->buffer_length) {
--			XMMS_DBG ("Error decoding data!");
-+		if (xmms_avcodec_internal_decode_some (data) < 0) {
- 			return -1;
- 		}
--
--		data->buffer_length -= bytes_read;
--		g_memmove (data->buffer, data->buffer + bytes_read, data->buffer_length);
- 	}
- 
- 	ret = xmms_xform_seek (xform, samples, whence, err);
-@@ -419,4 +358,171 @@ xmms_avcodec_seek (xmms_xform_t *xform, gint64 samples
- 	}
- 
- 	return ret;
-+}
-+
-+static xmms_sample_format_t
-+xmms_avcodec_translate_sample_format (enum AVSampleFormat av_sample_format)
-+{
-+	switch (av_sample_format) {
-+	case AV_SAMPLE_FMT_U8:
-+	case AV_SAMPLE_FMT_U8P:
-+		return XMMS_SAMPLE_FORMAT_U8;
-+	case AV_SAMPLE_FMT_S16:
-+	case AV_SAMPLE_FMT_S16P:
-+		return XMMS_SAMPLE_FORMAT_S16;
-+	case AV_SAMPLE_FMT_S32:
-+	case AV_SAMPLE_FMT_S32P:
-+		return XMMS_SAMPLE_FORMAT_S32;
-+	case AV_SAMPLE_FMT_FLT:
-+	case AV_SAMPLE_FMT_FLTP:
-+		return XMMS_SAMPLE_FORMAT_FLOAT;
-+	case AV_SAMPLE_FMT_DBL:
-+	case AV_SAMPLE_FMT_DBLP:
-+		return XMMS_SAMPLE_FORMAT_DOUBLE;
-+	default:
-+		XMMS_DBG ("AVSampleFormat (%i: %s) not supported.", av_sample_format,
-+		          av_get_sample_fmt_name (av_sample_format));
-+		return XMMS_SAMPLE_FORMAT_UNKNOWN;
-+	}
-+}
-+
-+/*
-+Read some data from our source of data to data->buffer, updating buffer_length
-+and buffer_size as needed.
-+
-+Returns: on error: negative
-+         on EOF: zero
-+         otherwise: number of bytes read.
-+*/
-+static gint
-+xmms_avcodec_internal_read_some (xmms_xform_t *xform,
-+                                 xmms_avcodec_data_t *data,
-+                                 xmms_error_t *error)
-+{
-+	gint bytes_read, read_total;
-+
-+	bytes_read = xmms_xform_read (xform,
-+	                              (gchar *) (data->buffer + data->buffer_length),
-+	                              data->buffer_size - data->buffer_length,
-+	                              error);
-+
-+	if (bytes_read < 0) {
-+		XMMS_DBG ("Error while reading data");
-+		return bytes_read;
-+	} else if (bytes_read == 0) {
-+		XMMS_DBG ("EOF");
-+		return 0;
-+	}
-+
-+	read_total = bytes_read;
-+
-+	/* If we have a demuxer plugin, make sure we read the whole packet */
-+	while (read_total == data->buffer_size && !data->no_demuxer) {
-+		/* multiply the buffer size and try to read again */
-+		data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
-+		bytes_read = xmms_xform_read (xform,
-+		                              (gchar *) data->buffer +
-+		                                data->buffer_size,
-+		                              data->buffer_size,
-+		                              error);
-+		data->buffer_size *= 2;
-+
-+		if (bytes_read < 0) {
-+			XMMS_DBG ("Error while reading data");
-+			return bytes_read;
-+		}
-+
-+		read_total += bytes_read;
-+
-+		if (read_total < data->buffer_size) {
-+			/* finally double the buffer size for performance reasons, the
-+			 * hotspot handling likes to fit two frames in the buffer */
-+			data->buffer = g_realloc (data->buffer, data->buffer_size * 2);
-+			data->buffer_size *= 2;
-+			XMMS_DBG ("Reallocated avcodec internal buffer to be %d bytes",
-+			          data->buffer_size);
-+
-+			break;
-+		}
-+	}
-+
-+	/* Update the buffer length */
-+	data->buffer_length += read_total;
-+
-+	return read_total;
-+}
-+
-+/*
-+Decode some data from data->buffer[0..data->buffer_length-1] to
-+data->read_out_frame
-+
-+Returns: on error: negative
-+         on no new data produced: zero
-+         otherwise: positive
-+
-+FIXME: data->buffer should be at least data->buffer_length +
-+FF_INPUT_BUFFER_PADDING_SIZE long.
-+*/
-+static gint
-+xmms_avcodec_internal_decode_some (xmms_avcodec_data_t *data)
-+{
-+	int rc = 0;
-+
-+	if (data->packet.size == 0) {
-+		av_init_packet (&data->packet);
-+		data->packet.data = data->buffer;
-+		data->packet.size = data->buffer_length;
-+
-+		rc = avcodec_send_packet(data->codecctx, &data->packet);
-+		if (rc == AVERROR_EOF)
-+			rc = 0;
-+	}
-+
-+	if (rc == 0) {
-+		rc = avcodec_receive_frame(data->codecctx, data->read_out_frame);
-+		if (rc < 0) {
-+			data->packet.size = 0;
-+			data->buffer_length = 0;
-+			if (rc == AVERROR(EAGAIN)) rc = 0;
-+			else if (rc == AVERROR_EOF) rc = 1;
-+		}
-+		else
-+			rc = 1;
-+	}
-+
-+	if (rc < 0) {
-+		data->packet.size = 0;
-+		XMMS_DBG ("Error decoding data!");
-+		return -1;
-+	}
-+
-+	return rc;
-+}
-+
-+static void
-+xmms_avcodec_internal_append (xmms_avcodec_data_t *data)
-+{
-+	enum AVSampleFormat fmt = (enum AVSampleFormat) data->read_out_frame->format;
-+	int samples = data->read_out_frame->nb_samples;
-+	int channels = data->codecctx->channels;
-+	int bps = av_get_bytes_per_sample (fmt);
-+
-+	if (av_sample_fmt_is_planar (fmt)) {
-+		/* Convert from planar to packed format */
-+		gint i, j;
-+
-+		for (i = 0; i < samples; i++) {
-+			for (j = 0; j < channels; j++) {
-+				g_string_append_len (
-+					data->outbuf,
-+					(gchar *) (data->read_out_frame->extended_data[j] + i*bps),
-+					bps
-+				);
-+			}
-+		}
-+	} else {
-+		g_string_append_len (data->outbuf,
-+		                     (gchar *) data->read_out_frame->extended_data[0],
-+		                     samples * channels * bps);
-+	}
- }
Index: patches/patch-src_plugins_avcodec_avcodec_compat_h
===================================================================
RCS file: patches/patch-src_plugins_avcodec_avcodec_compat_h
diff -N patches/patch-src_plugins_avcodec_avcodec_compat_h
--- patches/patch-src_plugins_avcodec_avcodec_compat_h	11 Mar 2022 18:20:36 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,62 +0,0 @@
-Deal with newer FFmpeg API.
-
---- src/plugins/avcodec/avcodec_compat.h.orig	Thu Mar 27 01:42:51 2014
-+++ src/plugins/avcodec/avcodec_compat.h	Thu Mar 27 01:46:20 2014
-@@ -21,47 +21,16 @@
- # include "avcodec.h"
- #endif
- 
--/* Map avcodec_decode_audio2 into the deprecated version
-- * avcodec_decode_audio in versions earlier than 51.28 */
--#if LIBAVCODEC_VERSION_INT < 0x331c00
--# define avcodec_decode_audio2 avcodec_decode_audio
-+/* Map avcodec_free_frame to av_freep if the former doesn't exist.
-+ * (This is in versions earlier than 54.28.0 (libav) or 54.59.100 (ffmpeg)) */
-+#if ! HAVE_AVCODEC_FREE_FRAME
-+# define avcodec_free_frame av_freep
- #endif
- 
--/* Handle API change that happened in libavcodec 52.00 */
--#if LIBAVCODEC_VERSION_INT < 0x340000
--# define CONTEXT_BPS(codecctx) (codecctx)->bits_per_sample
--#else
--# define CONTEXT_BPS(codecctx) (codecctx)->bits_per_coded_sample
-+/* Map av_frame_alloc, av_frame_unref, av_frame_free into their
-+ * deprecated versions in versions earlier than 55.28.1 */
-+#if LIBAVCODEC_VERSION_INT < 0x371c01
-+# define av_frame_alloc avcodec_alloc_frame
-+# define av_frame_unref avcodec_get_frame_defaults
-+# define av_frame_free avcodec_free_frame
- #endif
--
--/* Before 52.23 AVPacket was defined in avformat.h which we
-- * do not want to depend on, so we define part of it manually
-- * on versions smaller than 52.23 (this makes me cry) */
--#if LIBAVCODEC_VERSION_INT < 0x341700
--typedef struct AVPacket {
--        uint8_t *data;
--        int size;
--} AVPacket;
--#endif
--
--/* Same thing as above for av_init_packet and version 52.25 */
--#if LIBAVCODEC_VERSION_INT < 0x341900
--# define av_init_packet(pkt) do { \
--    (pkt)->data = NULL; \
--    (pkt)->size = 0; \
--  } while(0)
--#endif
--
--/* Map avcodec_decode_audio3 into the deprecated version
-- * avcodec_decode_audio2 in versions earlier than 52.26 */
--#if LIBAVCODEC_VERSION_INT < 0x341a00
--# define avcodec_decode_audio3(avctx, samples, frame_size_ptr, avpkt) \
--    avcodec_decode_audio2(avctx, samples, frame_size_ptr, \
--                          (avpkt)->data, (avpkt)->size)
--#endif
--
--/* Handle API change that happened in libavcodec 52.64 */
--#if LIBAVCODEC_VERSION_INT < 0x344000
--# define AVMEDIA_TYPE_AUDIO CODEC_TYPE_AUDIO
--#endif
--
Index: patches/patch-src_plugins_avcodec_wscript
===================================================================
RCS file: patches/patch-src_plugins_avcodec_wscript
diff -N patches/patch-src_plugins_avcodec_wscript
--- patches/patch-src_plugins_avcodec_wscript	14 May 2024 11:17:42 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,62 +0,0 @@
-Deal with newer FFmpeg API.
-
-Index: src/plugins/avcodec/wscript
---- src/plugins/avcodec/wscript.orig
-+++ src/plugins/avcodec/wscript
-@@ -1,10 +1,56 @@
- from waftools.plugin import plugin
- 
-+## Code fragments for configuration
-+avcodec_send_packet_fragment = """
-+#ifdef HAVE_LIBAVCODEC_AVCODEC_H
-+# include "libavcodec/avcodec.h"
-+#else
-+# include "avcodec.h"
-+#endif
-+int main(void) {
-+    AVCodecContext *ctx;
-+    AVPacket *pkt;
-+
-+    avcodec_send_packet (ctx, pkt);
-+
-+    return 0;
-+}
-+"""
-+
-+avcodec_free_frame_fragment = """
-+#ifdef HAVE_LIBAVCODEC_AVCODEC_H
-+# include "libavcodec/avcodec.h"
-+#else
-+# include "avcodec.h"
-+#endif
-+int main(void) {
-+    AVFrame *frame;
-+
-+    avcodec_free_frame (&frame);
-+
-+    return 0;
-+}
-+"""
-+
- def plugin_configure(conf):
-     conf.check_cfg(package="libavcodec", uselib_store="avcodec",
-             args="--cflags --libs")
-     conf.check_cc(header_name="avcodec.h", uselib="avcodec", type="cshlib", mandatory=False)
-     conf.check_cc(header_name="libavcodec/avcodec.h", uselib="avcodec", type="cshlib", mandatory=False)
-+
-+    # mandatory function avcodec_send_packet available since
-+    # * ffmpeg: commit 7fc329e, lavc 57.37.100, release 3.1
-+    # * libav: commit 05f6670, lavc 57.16.0, release 12
-+    conf.check_cc(fragment=avcodec_send_packet_fragment, uselib="avcodec",
-+                  uselib_store="avcodec_send_packet",
-+                  msg="Checking for function avcodec_send_packet", mandatory=True)
-+
-+    # non-mandatory function avcodec_free_frame since
-+    # * ffmpeg: commit 46a3595, lavc 54.59.100, release 1.0
-+    # * libav: commit a42aada, lavc 54.28.0, release 9
-+    conf.check_cc(fragment=avcodec_free_frame_fragment, uselib="avcodec",
-+                  uselib_store="avcodec_free_frame",
-+                  msg="Checking for function avcodec_free_frame", mandatory=False)
- 
- configure, build = plugin('avcodec', configure=plugin_configure,
-                           libs=["avcodec"])
Index: patches/patch-waftools_man_py
===================================================================
RCS file: /cvs/ports/audio/xmms2/patches/patch-waftools_man_py,v
diff -u -p -u -p -r1.3 patch-waftools_man_py
--- patches/patch-waftools_man_py	11 Mar 2022 18:20:36 -0000	1.3
+++ patches/patch-waftools_man_py	12 Jul 2025 07:21:20 -0000
@@ -1,13 +1,14 @@
 Bypass the gzip function that compress man files.
 
---- waftools/man.py.orig	Thu Oct 20 21:26:08 2011
-+++ waftools/man.py	Tue May  8 12:50:16 2012
-@@ -24,11 +24,11 @@ def gzip_func(task):
+Index: waftools/man.py
+--- waftools/man.py.orig
++++ waftools/man.py
+@@ -29,11 +29,12 @@ def gzip_func(task):
          if outf:
              outf.close()
  
 -Task.task_factory('man', gzip_func, color='BLUE')
--
+ 
  @feature('man')
  @before_method('process_source')
  def process_man(self):
@@ -16,12 +17,10 @@ Bypass the gzip function that compress m
      source = self.to_nodes(getattr(self, 'source', []))
      self.source = []
  
-@@ -43,13 +43,7 @@ def process_man(self):
-         if not s:
-             raise Errors.BuildError('cannot determine man section from filename')
+@@ -50,11 +51,7 @@ def process_man(self):
+ 
+         out = self.path.find_or_declare(node.name + '.gz')
  
--        out = self.path.find_or_declare(node.name + '.gz')
--
 -        tsk = self.create_task('man')
 -        tsk.set_inputs(node)
 -        tsk.set_outputs(out)
Index: patches/patch-wscript
===================================================================
RCS file: patches/patch-wscript
diff -N patches/patch-wscript
--- patches/patch-wscript	11 Mar 2022 18:20:36 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,10 +0,0 @@
---- wscript.orig	Thu Oct 20 21:26:08 2011
-+++ wscript	Tue May  8 01:22:59 2012
-@@ -342,6 +342,7 @@ def configure(conf):
-     if Options.platform != 'win32':
-         conf.env.append_unique('CFLAGS_cstlib', ['-fPIC', '-DPIC'])
-         conf.env.append_unique('CPPFLAGS_cxxshlib', ['-fPIC', '-DPIC'])
-+        conf.env["LINKFLAGS"] += ['-fPIC']
-     else:
-         # As we have to change target platform after the tools
-         # have been loaded there are a few variables that needs
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/audio/xmms2/pkg/PLIST,v
diff -u -p -u -p -r1.9 PLIST
--- pkg/PLIST	11 Mar 2022 18:20:36 -0000	1.9
+++ pkg/PLIST	12 Jul 2025 07:21:20 -0000
@@ -1,4 +1,4 @@
-bin/nyxmms2
+@bin bin/s4
 @bin bin/xmms2
 @bin bin/xmms2-et
 @bin bin/xmms2-find-avahi
@@ -21,11 +21,14 @@ include/xmms2/xmms/xmms_streamtype.h
 include/xmms2/xmms/xmms_util.h
 include/xmms2/xmms/xmms_xformplugin.h
 include/xmms2/xmmsc/
+include/xmms2/xmmsc/xmmsc-glib.h
 include/xmms2/xmmsc/xmmsc_compiler.h
 include/xmms2/xmmsc/xmmsc_errorcodes.h
 include/xmms2/xmmsc/xmmsc_idnumbers.h
+include/xmms2/xmmsc/xmmsc_idnumbers_extra.h
 include/xmms2/xmmsc/xmmsc_ipc_msg.h
 include/xmms2/xmmsc/xmmsc_ipc_transport.h
+include/xmms2/xmmsc/xmmsc_log.h
 include/xmms2/xmmsc/xmmsc_sockets.h
 include/xmms2/xmmsc/xmmsc_stdbool.h
 include/xmms2/xmmsc/xmmsc_stdint.h
@@ -37,11 +40,13 @@ include/xmms2/xmmsc/xmmsc_visualization.
 include/xmms2/xmmsc/xmmsv.h
 include/xmms2/xmmsc/xmmsv_bitbuffer.h
 include/xmms2/xmmsc/xmmsv_build.h
+include/xmms2/xmmsc/xmmsv_c2c.h
 include/xmms2/xmmsc/xmmsv_coll.h
 include/xmms2/xmmsc/xmmsv_deprecated.h
 include/xmms2/xmmsc/xmmsv_dict.h
 include/xmms2/xmmsc/xmmsv_general.h
 include/xmms2/xmmsc/xmmsv_list.h
+include/xmms2/xmmsc/xmmsv_service.h
 include/xmms2/xmmsc/xmmsv_util.h
 include/xmms2/xmmsclient/
 include/xmms2/xmmsclient/xmmsclient++/
@@ -76,9 +81,9 @@ include/xmms2/xmmsclient/xmmsclient.h
 @lib lib/libxmmsclient++-glib.so.${LIBxmmsclient++-glib_VERSION}
 @comment lib/libxmmsclient++.so
 @comment lib/libxmmsclient++.so.2
-@lib lib/libxmmsclient++.so.${LIBxmmsclient++_VERSION}
 @comment lib/libxmmsclient-glib.so
 @comment lib/libxmmsclient-glib.so.1
+@lib lib/libxmmsclient++.so.${LIBxmmsclient++_VERSION}
 @lib lib/libxmmsclient-glib.so.${LIBxmmsclient-glib_VERSION}
 @comment lib/libxmmsclient.so
 @comment lib/libxmmsclient.so.2
@@ -95,9 +100,14 @@ lib/python${MODPY_VERSION}/site-packages
 lib/python${MODPY_VERSION}/site-packages/xmmsclient/glib.py
 lib/python${MODPY_VERSION}/site-packages/xmmsclient/propdict.py
 lib/python${MODPY_VERSION}/site-packages/xmmsclient/qt3.py
+lib/python${MODPY_VERSION}/site-packages/xmmsclient/samples/
+lib/python${MODPY_VERSION}/site-packages/xmmsclient/samples/__init__.py
+lib/python${MODPY_VERSION}/site-packages/xmmsclient/samples/scwatch.py
+lib/python${MODPY_VERSION}/site-packages/xmmsclient/samples/service.py
+lib/python${MODPY_VERSION}/site-packages/xmmsclient/service.py
 lib/python${MODPY_VERSION}/site-packages/xmmsclient/sync.py
-@so lib/python${MODPY_VERSION}/site-packages/xmmsclient/xmmsapi.so
-@so lib/python${MODPY_VERSION}/site-packages/xmmsclient/xmmsvalue.so
+@so lib/python${MODPY_VERSION}/site-packages/xmmsclient/xmmsapi.${MODPY_PYC_MAGIC_TAG}so
+@so lib/python${MODPY_VERSION}/site-packages/xmmsclient/xmmsvalue.${MODPY_PYC_MAGIC_TAG}so
 lib/xmms2/
 @so lib/xmms2/libxmms_ao.so
 @so lib/xmms2/libxmms_apefile.so
@@ -108,9 +118,9 @@ lib/xmms2/
 @so lib/xmms2/libxmms_curl.so
 @so lib/xmms2/libxmms_daap.so
 @so lib/xmms2/libxmms_diskwrite.so
-@so lib/xmms2/libxmms_equalizer.so
 @so lib/xmms2/libxmms_file.so
 @so lib/xmms2/libxmms_flac.so
+@so lib/xmms2/libxmms_fluidsynth.so
 @so lib/xmms2/libxmms_flv.so
 @so lib/xmms2/libxmms_gvfs.so
 @so lib/xmms2/libxmms_html.so
@@ -119,13 +129,15 @@ lib/xmms2/
 @so lib/xmms2/libxmms_jack.so
 @so lib/xmms2/libxmms_karaoke.so
 @so lib/xmms2/libxmms_m3u.so
+@so lib/xmms2/libxmms_mid1.so
+@so lib/xmms2/libxmms_midsquash.so
 @so lib/xmms2/libxmms_mp4.so
 @so lib/xmms2/libxmms_mpg123.so
 @so lib/xmms2/libxmms_normalize.so
 @so lib/xmms2/libxmms_null.so
 @so lib/xmms2/libxmms_nulstripper.so
+@so lib/xmms2/libxmms_opus.so
 @so lib/xmms2/libxmms_pls.so
-@so lib/xmms2/libxmms_replaygain.so
 @so lib/xmms2/libxmms_rss.so
 @so lib/xmms2/libxmms_sndfile.so
 @so lib/xmms2/libxmms_tta.so