Showing posts from December, 2017

What I learned in 2017

Shipping an Audio Pipeline In 2017 I shipped a new audio rendering pipeline for the iOS version of  Google Play Music . I use it to render a particular flavor of fragmented MP4 that we use in the Google Play Music streaming music service. It was quite a learning experience to write and ship real-time audio code on iOS. If you are looking to write an audio pipeline for iOS, I highly recommend basing it on  The Amazing Audio Engine 2 . Core Audio is a powerful library with an peculiar API. TAAE2 provides a much nicer API on top of Core Audio, without adding much overhead. I had designed and implemented much of my new audio pipeline in 2016, but 2017 was the year that I deployed the pipeline to production. I learned that shipping an audio rendering pipeline comes with a long tail of bugs, most of which have the same symptom: "I was listening to a song when it stopped". I was able to find and fix most of my bugs by using a combination of: Great base libraries. (TAAE2 an