<p></p>
<p>> 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?</p>
<p>int snd_pcm_sw_params_set_start_threshold ( snd_pcm_t * pcm, snd_pcm_sw_params_t * params, snd_pcm_uframes_t val )</p>
<p>val is snd_pcm_uframes_t,  negative number is not  valid parameter</p>
<p><a href="http://git.alsa-project.org/?p=alsa-lib.git;a=blob_plain;f=src/pcm/pcm.c;hb=HEAD">http://git.alsa-project.org/?p=alsa-lib.git;a=blob_plain;f=src/pcm/pcm.c;hb=HEAD</a></p>
<p>In function snd_pcm_write_areas() ,</p>
<p>snd_pcm_sframes_t hw_avail = pcm->buffer_size - avail;<br>
hw_avail += frames;<br>
/* some plugins might automatically start the stream */<br>
state = snd_pcm_state(pcm);<br>
if (state == SND_PCM_STATE_PREPARED &&<br>
    hw_avail >= (snd_pcm_sframes_t) pcm->start_threshold) {<br>
err = snd_pcm_start(pcm);<br>
if (err < 0)<br>
goto _end;<br>
}</p>
<p>><br>
> 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.<br>
></p>
<p><a href="http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081501.html">http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081501.html</a></p>
<p>Using your program pcm_avail.c  and set start threshold to -1,  your program still run without calling snd_pcm_start </p>
<p>Calling snd_pcm_start when pcm state is running return error -77</p>
<p>> 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?</p>
<p>set start threshold to any value greater than buffer size need the application  to explicitly call snd_pcm_start</p>
<p>Not sure what behaviour expected by pulseaudio </p>