Update of /cvsroot/alsa/alsa-utils/aplay
In directory sc8-pr-cvs1:/tmp/cvs-serv3324

Modified Files:
        aplay.c 
Log Message:
- fixed the capture to stdout in WAV.
- allow more than 32bit int in the raw capture mode.



Index: aplay.c
===================================================================
RCS file: /cvsroot/alsa/alsa-utils/aplay/aplay.c,v
retrieving revision 1.162
retrieving revision 1.163
diff -u -r1.162 -r1.163
--- aplay.c     10 Mar 2003 14:25:45 -0000      1.162
+++ aplay.c     19 Mar 2003 14:42:00 -0000      1.163
@@ -1527,6 +1527,10 @@
        u_int tmp;
        u_short tmp2;
 
+       /* WAVE cannot handle greater than 32bit (signed?) int */
+       if (cnt == (size_t)-2)
+               cnt = 0x7fffff00;
+
        bits = 8;
        switch ((unsigned long) hwparams.format) {
        case SND_PCM_FORMAT_U8:
@@ -1754,28 +1758,29 @@
 
 void capture_go(int fd, size_t count, int rtype, char *name)
 {
-       size_t c;
+       size_t c, cur;
        ssize_t r, err;
 
        header(rtype, name);
        set_params();
 
-       while (count > 0) {
-               c = count;
-               if (c > chunk_bytes)
-                       c = chunk_bytes;
-               c = c * 8 / bits_per_frame;
-               if ((size_t)(r = pcm_read(audiobuf, c)) != c)
-                       break;
-               r = r * bits_per_frame / 8;
-               if ((err = write(fd, audiobuf, r)) != r) {
-                       perror(name);
-                       exit(EXIT_FAILURE);
+       do {
+               for (cur = count; cur > 0; cur -= r) {
+                       c = cur;
+                       if (c > chunk_bytes)
+                               c = chunk_bytes;
+                       c = c * 8 / bits_per_frame;
+                       if ((size_t)(r = pcm_read(audiobuf, c)) != c)
+                               break;
+                       r = r * bits_per_frame / 8;
+                       if ((err = write(fd, audiobuf, r)) != r) {
+                               perror(name);
+                               exit(EXIT_FAILURE);
+                       }
+                       if (err > 0)
+                               fdcount += err;
                }
-               if (err > 0)
-                       fdcount += err;
-               count -= r;
-       }
+       } while (rtype == FORMAT_RAW && !timelimit);
 }
 
 /*



-------------------------------------------------------
This SF.net email is sponsored by: Does your code think in ink? 
You could win a Tablet PC. Get a free Tablet PC hat just for playing. 
What are you waiting for?
http://ads.sourceforge.net/cgi-bin/redirect.pl?micr5043en
_______________________________________________
Alsa-cvslog mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-cvslog

Reply via email to