On Tue, 3 Feb 2004, Stephen Stocker wrote:

> On Tue, 3 Feb 2004, Jaroslav Kysela wrote:
> 
> > On Tue, 3 Feb 2004, Stephen Stocker wrote:
> >
> > >   Hi,
> > >
> > >   I've just got a Soundblaster 16 (Vibra16C, isapnp). Sure seems like
> > > something about it's wrong, although it'll record/play S16_LE at 44.1 kHZ
> > > maximum. The computer's an old 200MHz Pentium MMX, running Slackware, if
> > > that helps.
> > >
> > >   Really, it's a small issue, but it'd be so great to figure out how to do
> > > this without ESD or whatever. Thanks again.
> >
> > At first: Set "16-bit DMA Allocation" to "Playback" using alsamixer or
> > amixer. It will force the playback to use the 16-bit sample resolution.
> >
> > The other stream (capture) will have only 8-bit resolution (it's
> > limitation of hardware). Then add 'format U8' to your dsnoop pcm
> > definition (slave.pcm section) to inform the dsnoop plugin to use the
> > 8-bit capture stream.
> >
> >                                             Jaroslav
> 
>   That's it, and I should've thought of it. I've still got an error,
> because dsnoop doesn't support 8-bit, but I understand that!

Oops. It was typo in our sources. dsnoop support all PCM formats, but dmix 
is restricted to s16 and s32 formats.

> $ arecord -Dduplex test.wav
> ALSA lib pcm_dsnoop.c:843:(_snd_pcm_dsnoop_open) invalid format, specify s16 or
> s32
> arecord: main:502: audio open error: Invalid argument

This is wrong. Thank you for this report. This patch should fix it:

Index: pcm_dmix.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_dmix.c,v
retrieving revision 1.50
diff -u -r1.50 pcm_dmix.c
--- pcm_dmix.c  24 Jan 2004 16:35:11 -0000      1.50
+++ pcm_dmix.c  3 Feb 2004 14:42:23 -0000
@@ -1215,6 +1215,14 @@
        if (err < 0)
                return err;
 
+       /* sorry, limited features */
+        if (params.format != SND_PCM_FORMAT_S16 &&
+            params.format != SND_PCM_FORMAT_S32) {
+               SNDERR("invalid format, specify s16 or s32");
+               snd_config_delete(sconf);
+               return -EINVAL;
+       }
+
        params.period_size = psize;
        params.buffer_size = bsize;
 
Index: pcm_dsnoop.c
===================================================================
RCS file: /cvsroot/alsa/alsa-lib/src/pcm/pcm_dsnoop.c,v
retrieving revision 1.15
diff -u -r1.15 pcm_dsnoop.c
--- pcm_dsnoop.c        23 Jan 2004 13:05:20 -0000      1.15
+++ pcm_dsnoop.c        3 Feb 2004 14:42:23 -0000
@@ -837,14 +837,6 @@
        if (err < 0)
                return err;
 
-       /* sorry, limited features */
-       if (params.format != SND_PCM_FORMAT_S16 &&
-           params.format != SND_PCM_FORMAT_S32) {
-               SNDERR("invalid format, specify s16 or s32");
-               snd_config_delete(sconf);
-               return -EINVAL;
-       }
-
        params.period_size = psize;
        params.buffer_size = bsize;
        err = snd_pcm_dsnoop_open(pcmp, name, ipc_key, ipc_perm, &params, bindings, 
slowptr, root, sconf, stream, mode);



                                                Jaroslav

-----
Jaroslav Kysela <[EMAIL PROTECTED]>
Linux Kernel Sound Maintainer
ALSA Project, SuSE Labs


-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Alsa-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-user

Reply via email to