[alsa-devel] Using 8bit mono at 8000Hz with arecord and aplay - Full duplex operation
Takashi Iwai
tiwai at suse.de
Wed Aug 19 12:15:23 CEST 2009
At Wed, 19 Aug 2009 14:28:52 +0530,
Shilpa Kedar Walvekar wrote:
>
> The driver and the hardware supports it as we have played audio file of this format using raw open/read/write calls (without using ALSA).
> Since we want Full duplex so we switched to alsa.
>
> We tried to use plug as well as follows:
> pcm_slave.sl3 {
> pcm
> format U8
> channels 1
> rate 8000
> }
>
> pcm.complex_convert {
> type plug
> slave sl3
> }
>
> Then still the same error, " Sample format non available"
Are you sure that you are opening the PCM with "complex_convert"?
Better to show exactly what you did and what you got.
Takashi
> Now we are trying to record and play .wav audio file in full duplex mode: We have two threads, one is playing the file continuously (S16_LE, 48000) and other thread is trying to record to a wav file (here using S16_LE, 44100). Now we get error "Broken pipe" for each snd_pcm_readi call.
> We are stuck here and cannot move forward.
>
> Code used for recording is:
>
> /* open sound device */
> if ((err = snd_pcm_open(&handle, "hw:0,0", SND_PCM_STREAM_CAPTURE, 0))
< 0) {
> printf("Capture open error: %s\n", snd_strerror(err));
> exit(EXIT_FAILURE);
> }
>
>
> if ((err = snd_pcm_set_params(handle,
> SND_PCM_FORMAT_S16_LE,
> SND_PCM_ACCESS_RW_INTERLEAVED,
> 2, //channels
> 44100,
> 1,
> 0)) < 0) {
>
> printf("set_param_Capture open error: %s\n", snd_strerror(err));
> exit(EXIT_FAILURE);
> }
>
>
> /* open file for recording */
> write_fd = open(writefile,O_WRONLY | O_CREAT , 0777);
> if(write_fd < 0)
> {
> fprintf(stderr,"Can't open %s\ns",writefile);
> exit(1);
> }
>
>
> while(1)
> {
> if ((err = snd_pcm_prepare (handle)) < 0) {
> fprintf (stderr, "cannot prepare audio interface for use (%s)\n",
> snd_strerror (err));
>
> }
>
>
> if ((err = snd_pcm_readi (handle, buf_mic, mic_samples)) != mic_samples) {
> fprintf (stderr, "read from audio interface failed (%s)\n",
> snd_strerror (err));
> }
>
> }
>
> Note: recording works successfully using arecord.
>
> Please help us to resolve:
> 1. Recording and Playing 8bit mono audio at 8000Hz
> 2. Full duplex functionality using alsa apis
>
>
> Thanks & Regards,
> --Shilpa.
>
> -----Original Message-----
> From: Stefan Schoenleitner [mailto:dev.c0debabe at gmail.com]
> Sent: Tuesday, August 18, 2009 3:30 PM
> To: Shilpa Kedar Walvekar
> Cc: alsa-devel at alsa-project.org
> Subject: Re: [alsa-devel] Using 8bit mono at 8000Hz with arecord and aplay
>
> Shilpa Kedar Walvekar wrote:
> > Hello,
> >
> > We tried to record and play the recorded file using arecord and aplay as follows:
> > arecord -f cd /home/test.wav
> > aplay -f cd /home/test.wav
> >
> > The file gets recorded and played correctly.
> >
> > But if I try to record file of format S8 or U8, I get error:
> >
> > # arecord -f U8 /home/test_alsa_record_2
> > Recording WAVE '/home/test_alsa_record_2' : Unsigned 8 bit, Rate 8000 Hz, Mono
> > arecord: set_params:979: Sample format non available
> >
> > # arecord -f S8 /home/alsa_record_2
> > Recording WAVE '/home/alsa_record_2' : Signed 8 bit, Rate 8000 Hz, Mono
> > arecord: set_params:979: Sample format non available
> >
> > Is there any other way to set the format as S8 or U8? Or only cd/cdr/dat formats can be played using alsa?
>
> Basically it should be possible to play these formats.
> If you look at the aplay help output, it also lists the recognized
> sample formats (which include U8 and S8).
>
> However, it also says "Some of these may not be available on selected
> hardware".
>
> For this reason I assume that your hardware (or at least the driver)
> does not support these formats.
>
> A workaround is to use one of the ALSA format conversion plugins.
> (see here: http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html)
>
> Specifically have a look at the rate or plug plugin.
>
> The idea is that you can play arbitrary formats and the plugin
> automatically converts the PCM streams to a fixed format that your
> hardware can deal with (e.g. 16 bit at 48 kHz).
>
> cheers,
> stefan
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel at alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
More information about the Alsa-devel
mailing list