Earlier quoted context omitted.
Probably by custom and known hardware. Let's say it takes 1000 working hours to produce a low latency driver/firmware; Apple only needs to do that for a few devices, but every Android manufacturer has different audio chips and most of them only care that audio works, not that it works well - so they do not invest that time for each device type. Having known hardware also works for the application developers, because…
The latency problems arise with ALSA (mostly hardware-independent) and AudioFlinger (totally hardware-independent).
Android’s 10 Millisecond Problem explained
61–70 of 311 posts
Re: Android’s 10 Millisecond Problem explained
#62Reading about this takes me back to the late 90s. I had just gotten serious about recording music on my computer and purchased an 866mhz dell pc. I was a using windows 98 and ASIO was still mostly a Steinberg only development and I couldn't afford cubase. I got a hand me down version of cakewalk pro audio 8. I remember the latency of that set up was about 35ms and thinking this is pretty good. There was some degree o…
> There are fewer layers in it vs android. Fewer layers usually also means less flexibility.
Re: Android’s 10 Millisecond Problem explained
#63If you’re interested in this topic, you should listen to episode 20 of the Android Developers Backstage podcast. [1] Raph Levien talks about audio latency and how they started working on minimising it in Lollipop. He mentions that it’s still an ongoing process. The relevant part starts at 35 minutes into the episode. [1]: http://androidbackstage.blogspot.com/2015/01/episode-20-font...
Related presentation at Google I/O 2013. https://developers.google.com/events/io/2013/sessions/325993...
This was probably the best presentation I saw during Google I/O.
Re: Android’s 10 Millisecond Problem explained
#64Re: Android’s 10 Millisecond Problem explained
#65Earlier quoted context omitted.
> There are fewer layers in it vs android. Fewer layers usually also means less flexibility.
Actually you have it inverted. Fewer layers means fewer abstractions. Less abstraction means you're lower level, thereby having increased flexibility. Edit: Anyone care to elaborate why the downvotes? From a technical standpoint, I'm absolutely right.
Re: Android’s 10 Millisecond Problem explained
#66Re: Android’s 10 Millisecond Problem explained
#67Earlier quoted context omitted.
> There are fewer layers in it vs android. Fewer layers usually also means less flexibility.
Actually you have it inverted. Fewer layers means fewer abstractions. Less abstraction means you're lower level, thereby having increased flexibility. Edit: Anyone care to elaborate why the downvotes? From a technical standpoint, I'm absolutely right.
Re: Android’s 10 Millisecond Problem explained
#68Earlier quoted context omitted.
Actually you have it inverted. Fewer layers means fewer abstractions. Less abstraction means you're lower level, thereby having increased flexibility. Edit: Anyone care to elaborate why the downvotes? From a technical standpoint, I'm absolutely right.
Then assembly is more flexible than your favorite high-level language? It's true that you can, by definition, do more with low-level access. And I suppose that's one definition of "flexibility". But I think most developers would use the word to mean that various pieces of functionality can be put together easily. So they might say, for example, that Unix pipes are "flexible". I think I'd usually agree with that meani…
The fact that Apple totally controls both sides of the symbiotic audio hardware & SDK running on a tiny set of products, while Android must have an SDK which accommodates an unknown range of hardware for hundreds of products, means iOS will have an inherent advantage.
Re: Android’s 10 Millisecond Problem explained
#69Earlier quoted context omitted.
Some answers on quora. TLDR Apple have been working on audio a long time. http://www.quora.com/Why-do-iPhones-have-better-professional...
Or, rather, actually care about audio. Google (/Motorola Mobility, when it was owned by it) doesn't even care if a phone ships with a broken headphone port and refuses to fix it.
Re: Android’s 10 Millisecond Problem explained
#70Earlier quoted context omitted.
By controlling the hardware, they need fewer drivers and they can skip one of the abstraction layers.
> they need fewer drivers This suggests that you can work focused on one driver and therefore save developer-time. However, the drivers on Android are made by a bigger workforce, which must be taken into account. > they can skip one of the abstraction layers The post explicitly states that the HAL ought to add no latency at all.
Consider e.g. AmigaOS.
AmigaOS let you obtain a pointer directly to the screen bitmap to update your window contents with no buffering or clipping. It could do that because originally all the hardware was the same, or close enough.
Then graphics cards came along, and you didn't necessarily have a way of writing directly to the bitmap. Suddenly you had to use WritePixel() and ReadPixel() and similar, which would obtain the screen pointer for the window, and obtain the display the screen is on, and find the driver corresponding to the screen, and call the appropriate driver function via a jump table.
Similarly, the AmigaOS had functions to e.g. install copper lists (the copper was a very primitive co-processor that could be used to do things like change the palette at specific scan lines), which also wouldn't work at all on graphics cards.
This is why knowing the hardware is part of a limited set matters: You can define your API to match the hardware very precisely, or even expose hardware features directly.