At Fri, 29 Jun 2007 11:24:09 -0400, J. Scott Merritt wrote: > > On Fri, 29 Jun 2007 11:25:16 +0200 > Takashi Iwai <tiwai@xxxxxxx> wrote: > > > At Thu, 28 Jun 2007 15:01:08 -0400, > > J. Scott Merritt wrote: > > > > > > Dear List, > > > > > > Using SALSA-Lib 0.0.3, I call: > > > > > > snd_pcm_open (&playback_handle, argv[1], SND_PCM_STREAM_PLAYBACK, 0); > > > snd_pcm_hw_params_malloc (&hw_params); > > > snd_pcm_hw_params_any (playback_handle, hw_params); > > > snd_pcm_hw_params_set_access (playback_handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED); > > > snd_pcm_hw_params_set_format (playback_handle, hw_params, SND_PCM_FORMAT_S16_LE)); > > > snd_pcm_hw_params_set_rate_near (playback_handle, hw_params, 44100, 0); > > > snd_pcm_hw_params_set_channels (playback_handle, hw_params, 2); > > > snd_pcm_hw_params_set_buffer_size_last (playback_handle, hw_params, &bfrsize); > > > snd_pcm_hw_params_get_buffer_size (hw_params, &bfrsize); > > > snd_pcm_hw_params (playback_handle, hw_params); > > > snd_pcm_hw_params_free (hw_params); > > > > > > snd_pcm_sw_params_malloc (&sw_params); > > > snd_pcm_sw_params_current (playback_handle, sw_params); > > > snd_pcm_sw_params_set_avail_min (playback_handle, sw_params, 4096); > > > snd_pcm_sw_params_set_start_threshold (playback_handle, sw_params, 10000U); > > > snd_pcm_sw_params_set_xfer_align (playback_handle, sw_params, 1); > > > snd_pcm_sw_params (playback_handle, sw_params); > > > > > > state = snd_pcm_state (playback_handle); > > > frames_to_deliver = snd_pcm_avail_update (playback_handle); > > > > > > while ((frames_to_deliver = snd_pcm_avail_update (playback_handle)) > 4096) { > > > snd_pcm_writei (playback_handle, &buf, 4096) } > > > > > > > > > As soon as the buffer start threshold is reached, or alternatively > > > if I manually start PCM stream, the PCM stream reports an overrun > > > (i.e. "Broken Pipe"). If I then examine the PCM state, it is in the > > > overrun (XRUN) state. > > > > What are the buffer and period sizes? Did you try alsa-lib with hw, > > too, right? > > In sample program above, buffer size is set to "last", which results > in a buffer size of 32768 (which matches the allocation in the kernel driver). > The sample programs above does not establish a period size and is unknown. > > I added code to set the period size to 1024 frames and experienced the > same (overrun) result. I also forced the buffer size to 8192 and lowered > the sample rate to 16 kHz and did not see any improvement. > > Yes, the same exact code runs properly on the target hardware with > alsa-lib 1.0.13. OK, looks like a bug in salsa-lib, then. I fixed some remaining bugs and release 0.0.4 now. Please give it a try. (Note that it might take some time until the ftp server is exported / mirrored.) thanks, Takashi _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx http://mailman.alsa-project.org/mailman/listinfo/alsa-devel