<table cellspacing="0" cellpadding="0" border="0"><tr><td valign="top">I ran into this issue also. Once a buffer underrun occurs, you won't get any more write callbacks until you satisfy the prebuf attribute value. Setting it to 0 certainly will work around this if you don't need a playback buffer. However you can use the buffer underrun callback to write the required amount of data to the playback stream, then playback will start once the number of bytes set by prebuf is received by the server. Write callbacks will resume normally at that point.<div id="yMail_cursorElementTracker_0.32105056662112474"><br></div><div id="yMail_cursorElementTracker_0.32105056662112474">Hope this helps.</div><div id="yMail_cursorElementTracker_0.32105056662112474"><br></div><div id="yMail_cursorElementTracker_0.32105056662112474">Eric<br><br><p><a href="https://overview.mail.yahoo.com/mobile/?.src=Android">Sent from Yahoo Mail on Android</a></p> <hr><table cellspacing="0"
 cellpadding="0" border="0"> <tbody> <tr> <td valign="top"> <div style="font-family:Roboto, sans-serif;color:#7e7d80;"><b>From</b>:"Andrew Kelley" <superjoe30@gmail.com><br><b>Date</b>:Sat, Apr 4, 2015 at 11:14 PM<br><b>Subject</b>:Re: [pulseaudio-discuss] write callback stops getting called<br><br></div> <div dir="ltr">Found this just after I sent the email: <div><br clear="none"></div><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;">To make sure that a particular stream doesn't stop to play when a server side buffer underrun happens on it while the other synchronized streams continue playing and hence deviate, you need to pass a "prebuf" pa_buffer_attr of 0 when connecting it.</blockquote><div><br clear="none"></div></div><div>from <a rel="nofollow" shape="rect" target="_blank"
 href="http://freedesktop.org/software/pulseaudio/doxygen/streams.html#sync_streams">http://freedesktop.org/software/pulseaudio/doxygen/streams.html#sync_streams</a></div><div><br clear="none"></div><div>I tried setting `prebuf` to 0 instead of `(uint_t) -1` and it looks like that did the trick.</div></div><div class="yQTDBase yqt5529217800" id="yqt08264"><div class="gmail_extra"><br clear="none"><div class="gmail_quote">On Sat, Apr 4, 2015 at 8:06 PM, Andrew Kelley <span dir="ltr"><<a rel="nofollow" shape="rect" ymailto="mailto:superjoe30@gmail.com" target="_blank" href="javascript:return">superjoe30@gmail.com</a>></span> wrote:<br clear="none"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div dir="ltr">I have a program which plays an audio file with some filtering using the PulseAudio asynchronous API. When the CPU usage spikes elsewhere in my computer, for example if I do `make -j` to use
 up all processing power, the filter code runs a little slow and might cause a buffer underrun. Sometimes this causes PulseAudio to stop calling the write callback. I checked and I am certainly calling `begin_write` and `write` for each time that the write callback is called.<div><br clear="none"></div><div>How can I ensure that PulseAudio continues to call the write callback?</div></div>
</blockquote></div><br clear="none"></div></div></td>  </tr>   </tbody>   </table></div></td></tr></table>