Arun Raghavan
arunraghavan.net · Personal blog · on HN since 2012
Arun Raghavan, a developer of PulseAudio and GStreamer, writes about Linux and Android audio, latency, synchronization, and multimedia software.
What HN saysCommenters praise his accessible explanations of audio stacks and cite his latency measurements on Android; one points to his oscilloscope-based synchronization testing in GStreamer.
20HN people shared it
7linked it in comments
21stories submitted
174story points
5 months agolast shared
2012people per year2026
Most-shared posts
- 1PulseAudio vs. AudioFlinger (Android)5 people · 9 points · first shared 2012 · 1 comments on HN
- 2Measuring audio sync with an oscilloscope3 people · 4 points · first shared 2017 · discussion on HN
- 3To Conference Organisers Everywhere3 people · 4 points · first shared 2023 · discussion on HN
- 4The Unbearable Anger of Broken Audio2 people · 16 points · first shared 2025 · 3 comments on HN
- 5GStreamer and WebRTC HTTP Signalling2 people · 5 points · first shared 2024 · discussion on HN
- 6Stricter JSON Parsing with Haskell and Aeson2 people · 4 points · first shared 2017 · discussion on HN
- 7PulseAudio on Android (part 2)2 people · 1 points · first shared 2012 · discussion on HN
- 8Improvements to PulseAudio's Echo Cancellation2 people · 1 points · first shared 2016 · discussion on HN
- 9Beamforming in PulseAudio1 people · 121 points · first shared 2016 · 32 comments on HN
- 10Update from the PipeWire hackfest1 people · 3 points · first shared 2018 · discussion on HN
- 11Notes from the PipeWire Hackfest 20261 people · 2 points · first shared 2026 · discussion on HN
- 12A Brimful of ASHA1 people · 2 points · first shared 2025 · discussion on HN
- 13Synchronised Playback and Video Walls1 people · 1 points · first shared 2016 · discussion on HN
- 14Applicate Functors for Fun and Parsing1 people · 1 points · first shared 2018 · discussion on HN
- 15Hello hello hello1 people · first shared 2016
What HN people wrote when they linked it
sandGorgon · 2015-04-16
interestingly, a 2012 article[1] by Arun Raghavan mentions:
On the Galaxy Nexus, for example, the best latency I can get appears to be 176 ms. This is pretty high for certain types of applications, particularly ones that generate tones based on user input. With PulseAudio, where we dynamically adjust buffering based on what clients request, I was able to drive down the total buffering to approximately 20 ms (too much lower, and we started getting dropouts). There is likely room for improvement here, and it is something on my todo list, but even out-of-the-box, we’re doing quite well.
Let's get systemd on android and then see !
[1] http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/
surrealize · 2012-12-30
More Android<->(non-android)Linux compatibility would be great. Given that the linux desktop is moving toward wayland, and given that android's SurfaceFlinger is a lot closer to wayland than to X, I'm not sure that X is the best way forward. It would be interesting to see how much work it would take to implement SurfaceFlinger apis in terms of wayland or vice versa.
Kind of like this work implementing the AudioFlinger api on top of pulseaudio:
http://arunraghavan.net/2012/04/pulseaudio-on-android-part-2/
exDM69 · 2015-12-04
The infographic looked so much like an ad that I skipped over it.
So this is one of the "good" Android audio stacks, getting 36ms latency. But half of that is "wasted" in user space, in AudioFlinger as well as the app ring buffer (which seems pretty big to me). I'd like to see the comparison to a "bad" Android device.
Doing some internet searches, I found someone who had plugged in PulseAudio to an Android phone and got 20 ms latency instead of the 170+ ms latency from AudioFlinger on the same device [0]. That's pretty huge.
Ideally, there should be no user space middleware component processing audio in between, this could half the latency (according to the diagram), bringing the latency to acceptable levels. But ALSA isn't really intended for routing audio on the fly conveniently (e.g. when plugging/unplugging headphones), so there is some room for improvement too.
Overall, the situation is pretty sad. Linux can do better than that but a modern multimedia device (desktop or mobile) has several audio outputs and hot-plugging, which makes the situation rather difficult using ALSA only. And the userspace audio components just aren't great.
http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/
jcelerier · 2019-05-04
gstreamer already does that fairly well (https://arunraghavan.net/2017/01/quantifying-synchronisation-oscillosc… is there a reason to duplicate the work ?
mmastrac · 2016-06-29
Kudos to the author. It takes a lot to write about something in a way that makes it accessible to folks not skilled in the art.
He's written some other interesting posts on PulseAudio features too, but this is more well-written and approachable:
https://arunraghavan.net/2016/05/improvements-to-pulseaudios-echo-canc…
https://arunraghavan.net/2011/08/hello-hello-hello/
krakensden · 2015-04-16
ALSA isn't the problem- JACK runs on top of ALSA, and people comfortably run well under 10ms. The problem is higher up in the stack. Even switching to the much-maligned pulseaudio could be a huge improvement: http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/
hansjorg · 2013-07-25
It's a bit surprising that sound latency on Android is as bad as it is. It's not just apps for audio production that suffers, most any kind of audio toy is useless.
For people who want to tinker with audio on Android, it's possible to swap AudioFlinger with PulseAudio[1] for lower latency (20ms vs 176ms)[2], but so far you have to build and flash your own AOSP image, so it's not exactly plug and play.
[1]: http://www.freedesktop.org/wiki/Software/PulseAudio/Ports/Android/
[2]: http://arunraghavan.net/2012/01/pulseaudio-vs-audioflinger-fight/