On Sat, 2003-02-08 at 02:21, Pete Barnard wrote: > I am using ALSA 0.9.0rc7 and Red Hat Linux 7.2. My sound card is a CS461x. > My computer is a reasonably powerful beast with 512M of RAM and 1Gig clock > speed. > I have written a simple capture program which reads interleaved samples from > the sound card and goes around in a continuous while(1) loop. My program > works perfectly - until it crashes after several hours with the message: > > "read from audio interface failed: broken pipe". > > I have narrowed it down to the following piece of code. The size of buf is 256 >(shorts). Why would the snd_pcm_readi suddenly (randomly?) fail with a broken pipe??? > Any ideas or suggestions would be greatly appreciated as I'm struggling with this > annoying (and difficult to debug) problem. > > Regards, > > Pete > > while (1) > { > if ((err = snd_pcm_readi(capture_handle,buf,128)) != 128 > { > // this is where it fails after several hours of working > successfully > cout << "read from audio interface failed: " << snd_strerror(err) << > endl; > exit(1); > } > } >
If I remember correctly the EPIPE error code is returned when an xrun occurs. In the case of a read it would be a buffer overrun. Your code should check for this return value and I believe you have to start the stream again with "snd_pcm_prepare". Check out the ALSA site for HOWTOs and the like. Cheers. Josh Green ------------------------------------------------------- This SF.NET email is sponsored by: SourceForge Enterprise Edition + IBM + LinuxWorld = Something 2 See! http://www.vasoftware.com _______________________________________________ Alsa-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/alsa-devel