On 2010-12-09 14:54, David Henningsson wrote: > As some of you have seen on IRC, I spent the some of the last week > fighting rewinds. > > An never-ending stream of rewinds seems to be one of the most common > reasons PulseAudio crashes or produces crackling/stuttering output, so > there is a strong incentive to fix it. > > However, the problem is quite complex and there does not seem to be one > perfect fix, it's more of an optimisation problem. GStreamer in > particular sends out many small data packages, and PulseAudio does not > handle that very well. > > When the sink-input buffer is empty, going from there to a full buffer > is an uphill battle in terms of CPU power, as PulseAudio will try to > rewind (at RT priority!) and mix the new data into it; all with the very > best intent, but the end result of taking CPU power away from the client. > > GStreamer has at least two problems: > * It starts/uncorks the stream when the buffer is empty (this might have > been fixed by Wim a day or two ago) > * It sends out very small packages (c:a 1 - 4K). > > Here are three patches trying to help out on the PA side. > > * The first one is a relatively simple optimisation than can cut the > rewinds in half by allowing both a seek and a post to be merged into one > rewind. > * The second one builds on the first, and adds the possibility for > several data packages to share a rewind by checking if there are more > data packets in queue before doing a rewind. > * The third makes sure that after an underrun, there is a little > headroom before asking for a rewind. > > Hopefully this will improve the situation for at least a few users. The > idea is to let you do initial comment and review, then make a package > and ask some Ubuntu users to test it. After that I'll report back and we > can consider inclusion into stable-queue. I never saw any feedback on the patches, is this because of lack of time, interest (i e you're not affected by the problem anyway), or knowledge (i e you don't know how the stuff works), or something else? For users running Ubuntu Maverick, there is a ppa for easy testing here: https://launchpad.net/~diwic/+archive/fighting-rewinds It also includes two fixes on the gstreamer side. -- David Henningsson, Canonical Ltd. http://launchpad.net/~diwic