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,
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-gecko
To unsubscribe, send any mail to "[email protected]"

Reply via email to