> On the other hand, I have suspicion that it is an ALSA bug that you are possibly trying to work around. Is it that no other plugins end up in the already-running state, or that all other plugins ignore snd_pcm_start() when they are already started? int snd_pcm_sw_params_set_start_threshold ( snd_pcm_t * pcm, snd_pcm_sw_params_t * params, snd_pcm_uframes_t val ) val is snd_pcm_uframes_t, negative number is not valid parameter http://git.alsa-project.org/?p=alsa-lib.git;a=blob_plain;f=src/pcm/pcm.c;hb=HEAD In function snd_pcm_write_areas() , snd_pcm_sframes_t hw_avail = pcm->buffer_size - avail; hw_avail += frames; /* some plugins might automatically start the stream */ state = snd_pcm_state(pcm); if (state == SND_PCM_STATE_PREPARED && hw_avail >= (snd_pcm_sframes_t) pcm->start_threshold) { err = snd_pcm_start(pcm); if (err < 0) goto _end; } > > It would be very nice if you isolate the hardware and software parameters that PulseAudio tries to apply, write a simple ALSA test program that applies them, possibly writes some sound data and calls snd_pcm_start(), and test all available plugins using that program, so that we know whether this is limited to the multi plugin. > http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081501.html Using your program pcm_avail.c and set start threshold to -1, your program still run without calling snd_pcm_start Calling snd_pcm_start when pcm state is running return error -77 > if the expected behavior is not to start stream automatically, try to change -1 with the value obtained from snd_pcm_sw_params_get_boundary() (after calling snd_pcm_sw_params_current()). Does it work better? set start threshold to any value greater than buffer size need the application to explicitly call snd_pcm_start Not sure what behaviour expected by pulseaudio -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20141128/14f71c7d/attachment.html>