[SVN-Commit] r1414 - in trunk: . audio/alsa-plugins audio/alsa-plugins/files
svn-freebsd-gecko at chruetertee.ch
svn-freebsd-gecko at chruetertee.ch
Sun Dec 1 00:59:57 UTC 2013
Author: jbeich
Date: Sun Dec 1 00:59:50 2013
New Revision: 1414
Log:
always use ariff's patch for alsa-plugins-oss, again
SNDCTL_DSP_GETIPTR is now used by default via IO_PTR option [1] while
BUFSZ_P2 controls behavior that triggers asserts in libcubeb [2].
PR: ports/165247 [1], ports/170473 [2], ports/183861 [2]
Modified:
trunk/Gecko_UPDATING
trunk/audio/alsa-plugins/Makefile
trunk/audio/alsa-plugins/files/alsa-plugins.patch
Modified: trunk/Gecko_UPDATING
==============================================================================
--- trunk/Gecko_UPDATING Sun Dec 1 00:59:42 2013 (r1413)
+++ trunk/Gecko_UPDATING Sun Dec 1 00:59:50 2013 (r1414)
@@ -4,4 +4,4 @@
When using Firefox or SeaMonkey compiled with ALSA option ON it may
crash on assert in alsa_refill_stream as described in ports/170473.
- To workaround disable ARIFF_OSS in audio/alsa-plugins or use PULSEAUDIO.
+ To workaround enable BUFSZ_P2 in audio/alsa-plugins or use PULSEAUDIO.
Modified: trunk/audio/alsa-plugins/Makefile
==============================================================================
--- trunk/audio/alsa-plugins/Makefile Sun Dec 1 00:59:42 2013 (r1413)
+++ trunk/audio/alsa-plugins/Makefile Sun Dec 1 00:59:50 2013 (r1414)
@@ -17,15 +17,36 @@
GNU_CONFIGURE= yes
USES= pkgconfig
LDFLAGS+= -L${LOCALBASE}/lib
+EXTRA_PATCHES+= ${FILESDIR}/alsa-plugins.patch
-OPTIONS_DEFINE= ARIFF_OSS JACK FFMPEG PULSEAUDIO SAMPLERATE SPEEX
+OPTIONS_DEFAULT=BUFSZ_P2 IO_PTR
+OPTIONS_DEFINE= JACK FFMPEG PULSEAUDIO SAMPLERATE SPEEX
OPTIONS_SUB= ${OPTIONS_DEFINE}
-ARIFF_OSS_DESC= FreeBSD-specific OSS plugin
+
+OPTIONS_GROUP= OSS
+OPTIONS_GROUP_OSS=IO_PTR BLKCNT_P2 BUFSZ_P2 VERBOSE
+
+IO_PTR_DESC= Precise playback/recording pointer
+BLKCNT_P2_DESC= Restrict number of fragments to ^2 aligned
+BUFSZ_P2_DESC= Restrict buffer size to ^2 aligned (breaks aplay)
+VERBOSE_DESC= Print debugging messages
.include <bsd.port.options.mk>
-.if ${PORT_OPTIONS:MARIFF_OSS}
-EXTRA_PATCHES+= ${FILESDIR}/alsa-plugins.patch
+.if ${PORT_OPTIONS:MIO_PTR}
+CFLAGS+= -DFREEBSD_OSS_USE_IO_PTR
+.endif
+
+.if ${PORT_OPTIONS:MBLKCNT_P2}
+CFLAGS+= -DFREEBSD_OSS_BLKCNT_P2
+.endif
+
+.if ${PORT_OPTIONS:MBUFSZ_P2}
+CFLAGS+= -DFREEBSD_OSS_BUFSZ_P2
+.endif
+
+.if ${PORT_OPTIONS:MVERBOSE}
+CFLAGS+= -DFREEBSD_OSS_DEBUG_VERBOSE
.endif
.if ${PORT_OPTIONS:MJACK}
Modified: trunk/audio/alsa-plugins/files/alsa-plugins.patch
==============================================================================
--- trunk/audio/alsa-plugins/files/alsa-plugins.patch Sun Dec 1 00:59:42 2013 (r1413)
+++ trunk/audio/alsa-plugins/files/alsa-plugins.patch Sun Dec 1 00:59:50 2013 (r1414)
@@ -42,7 +42,7 @@
oss->ext.private_data = oss;
--- oss/pcm_oss.c.orig 2009-08-31 21:09:41.000000000 +0800
+++ oss/pcm_oss.c 2009-09-28 14:54:12.000000000 +0800
-@@ -22,17 +22,55 @@
+@@ -22,17 +22,48 @@
#include <sys/ioctl.h>
#include <alsa/asoundlib.h>
#include <alsa/pcm_external.h>
@@ -54,18 +54,11 @@
+#define ARRAY_SIZE(x) (sizeof(x) / sizeof(*(x)))
+
+#ifdef __FreeBSD__
-+/* #define FREEBSD_OSS_USE_IO_PTR 1 */
-+/* #define FREEBSD_OSS_BLKCNT_P2 1 */
-+/* #define FREEBSD_OSS_DEBUG_VERBOSE 1 */
-+#undef FREEBSD_OSS_USE_IO_PTR /* _IPTR is buggy ... Grr... */
-+#undef FREEBSD_OSS_BLKCNT_P2
-+#undef FREEBSD_OSS_DEBUG_VERBOSE
-+
+#define FREEBSD_OSS_RATE_MIN 1
+#define FREEBSD_OSS_RATE_MAX 384000
+
+#define FREEBSD_OSS_CHANNELS_MIN 1
-+#if __FreeBSD_version >= 800096
++#ifndef __DragonFly__
+#define FREEBSD_OSS_CHANNELS_MAX 8
+#else
+#define FREEBSD_OSS_CHANNELS_MAX 2
@@ -73,7 +66,7 @@
+
+#define FREEBSD_OSS_BUFSZ_MAX 131072
+#define FREEBSD_OSS_BLKCNT_MIN 2
-+#define FREEBSD_OSS_BLKSZ_MIN 16 /* (FREEBSD_OSS_CHANNEL_MAX * 4) */
++#define FREEBSD_OSS_BLKSZ_MIN 16 /* (FREEBSD_OSS_CHANNELS_MAX * 4) */
+
+#define FREEBSD_OSS_BUFSZ_MIN (FREEBSD_OSS_BLKCNT_MIN * FREEBSD_OSS_BLKSZ_MIN)
+#define FREEBSD_OSS_BLKCNT_MAX (FREEBSD_OSS_BUFSZ_MAX / FREEBSD_OSS_BUFSZ_MIN)
@@ -461,7 +454,7 @@
if ((flags = fcntl(oss->fd, F_GETFL)) < 0) {
err = -errno;
-@@ -229,10 +530,128 @@
+@@ -229,10 +530,146 @@
return 0;
}
@@ -478,6 +471,9 @@
+#ifdef FREEBSD_OSS_BLKCNT_P2
+ unsigned int period_list[30];
+#endif
++#ifdef FREEBSD_OSS_BUFSZ_P2
++ unsigned int bufsz_list[30];
++#endif
+ unsigned int nformats;
+ unsigned int format[ARRAY_SIZE(oss_formats_tab)];
+#if 0
@@ -580,6 +576,21 @@
+ if (err < 0)
+ return err;
+
++#ifdef FREEBSD_OSS_BUFSZ_P2
++ tmp = 0;
++ for (i = 1; i < 31 && tmp < ARRAY_SIZE(bufsz_list); i++) {
++ if ((1 << i) > FREEBSD_OSS_BUFSZ_MAX)
++ break;
++ if ((1 << i) < FREEBSD_OSS_BUFSZ_MIN)
++ continue;
++ bufsz_list[tmp++] = 1 << i;
++ }
++
++ if (tmp > 0)
++ err = snd_pcm_ioplug_set_param_list(io,
++ SND_PCM_IOPLUG_HW_BUFFER_BYTES, tmp, bufsz_list);
++ else
++#endif
+ /* buffer size , not strictly ^2 */
+ err = snd_pcm_ioplug_set_param_minmax(io,
+ SND_PCM_IOPLUG_HW_BUFFER_BYTES, FREEBSD_OSS_BUFSZ_MIN,
More information about the freebsd-gecko
mailing list