Google music

Google has verified that it is working to make changes so streaming audio services like Pandora and TuneWiki will no longer have poor quality while streaming over 3G.  You geeky and curious types can check out the code changes for the framework at Android's git repository.  No word on when to expect these changes, but Google has committed them into the Android source, so it shouldn't be too far off.  Of course, this is going to depend on everyone from the manufacturer, the carrier, and maybe even the night janitor at the Pentagon to approve and build the changes, and then to distribute them.

When the tip about this came in, I jumped over to Google's Android bug tracker page and started reading.  I was very curious, because I have no issues playing my music, either streaming or from my SD card.  What I found upsets me slightly, and I'm going to rant a bit after the break.  (Yes, I'm allowed to complain, too.) [Google Code via Android Central Forums]

Google has decided to switch to a different media framework, named Stagefright.  I'm not sure why this change was made, but I'm thinking it has something to do with the Google Music service rumors that have been flying around.  In any case, the change was made.  It turns out that the way Stagefright is set up, certain file types (HE-AAC v1 and HE-AAC v2) no longer are decoded correctly.  Big bug, right?  Not so fast.

When you're streaming from Slacker (I'll be using them as an example, not singling them out) on WiMax or WiFi, everything sounds great, because it uses a higher quality audio codec to stream.  But streaming over 3G (and EDGE -- I checked and it damn near killed me) sounds pretty poor. This is because they are using a lower quality audio codec -- see above -- when connected via cell data.  Also, playing the cached "stations" from an app that are on your card can sound like crap as well, because they are cached in the lower quality format.  Through reports from others, and my own tests, I can confirm that it works just dandy. 

Here comes the ranting part. 

There are two obvious choices here.  The first is that application developers change their apps and use the higher quality codecs when streaming over a cellular network.  This fixes the issue while streaming, both from the airwaves and from the SD card.  The second is that Google goes back and supports legacy file types.  Yes, legacy. The bad kind of legacy.  The kind of legacy that adds in un-needed bloat, and when done often enough, affects performance.  Why the hell are we going with the legacy solution?  I can't play Leisure Suit Larry on a Windows 7 PC without some third party wizardry to support the older, worse performing bits left over from DOS 5 that the game depends on.  All your PalmOS apps needed re-written to work with WebOS.  Microsoft has all but abandoned Windows Mobile 6.5 application support in the upcoming Windows Phone 7.  This is the right way to move forward.  We pick on Apple a lot here (it's all out of love, Rene, I swear!), but Steve would never go backwards to appease software vendors, and neither should Andy.

I don't care if you call it a bug, a feature or a pony.  It was done that way for a reason in the first place.  Google even lists the new method as a feature of Froyo.  Google does nothing without an eye towards the future, not because they love us, but because they don't want to waste money doing it twice. One of the commenters at the Google Code page about the issue has verified that the application vendors are unwilling to do anything about it, so Google will have to re-configure the OS to continue support for something they didn't want to support in the first place.  Fix your damn apps, vendors.  Don't force my favorite mobile OS to make changes and provide legacy support because you want to take the easy way out.  Rdio works just fine, it sounds great, and they aren't causing a listed feature to be changed because they are lazy coders or want to go cheap on bandwidth.  They just earned my 5 bucks a month.

Now feel free to tear me apart, but at least try to explain the benefit of changing everyone's software vs. developers changing their apps to keep up.

 
There are 41 comments

jxc says:

I agree and good article Jerry. I am going to drop my rating on these apps and others that want to make a point should too.

breakerfall says:

Yep, you're absolutely correct. The first thing I thought when I read/saw about Pandora saying they weren't going to change their app was "Well, I never really liked Pandora anyway. Now they'll just fade away." I mean, since when does an OS change to support an application? How is that even an option?

Because Pandora and all other app developers assumed the codec would be continued to be supported. This is an acceptable assumption as it is SUPPOSED to be. Yes, Froyo was supposed to support this, it was NOT phased out as Jerry reported.

It's not like it isn't being decoded at all. It's being decoded improperly.

There's many other reasons wrong with this too, like:

A. They need to support the most used formats, not the ones they like most. Should they kill off MP3 too? That would be stupid.
B. Google obviously sides with app developers, that's why they fixed this bug and acknowledged it as such, instead of dismissing it as intentional.
C. You can't expect app developers to re-encode their entire thousand+ GB music library because Google can't maintain a good AAC+ decoder.
D. The codec isn't even legacy to begin with!

blobpet says:

Some internet radio stations that broadcast in MP3 format will actually transcode the audio on the fly when the music is broadcast. For instance, if you're using OtsDJ, you can use a plugin from Winamp.

I don't know if broadcasters like Pandora already do something similar for AAC+, but it doesn't seem like too difficult a thing to do.

TvTechGuru says:

Very well written and argued Jerry! I'm with you, why should Google go backwards and support legacy? The app developers should indeed use the higher quality codecs, it only makes sense! I trust Google to do what they think is the better solution for everyone. (meaning us)

A. Because it's not legacy, Jerry got it wrong.
B. Because Google said they'd support it. Which is why it attempts to decode it in the first place.
C. Because it's an extremely popular format. Should they stop supporting MP3 as well?

laydros says:

I'm a software dev at my day job and I still totally agree with you Jerry. OS should stay as simple and clean and stable as possible, and allow for add-ons/plugins at a higher level. The latter part is why I was willing to fudge my Apple ecosystem and give up my iPhone for Android. But this is also why I am a big fan of Apple in general and still use and love their desktop OS. As you mentioned, MS has even shifted in this direction. It has made some people upset, but the ones they should be upset at are the shoddy developers that use hacks and non-standard stuff and are just too lazy to maintain software.

A. Pandora is not using hacks or "non-standard" stuff. AAC+ is a standardized, supported codec by Google. They broke the decoder, and it was not intentional.
B. I don't consider Pandora lazy for not wanting to re-encode thousands of GB of music for one platform.
C. I guess we should phase out MP3 too? At least that one is actually old and outdated!

y2whisper says:

Great points Jerry! if google wants to fix something audio related, how about the codecs being used for video recording? with "200,000" devices being activated daily, google should have no need to back down especially since froyo is just starting to roll out, so developers do have the opportunity to make the necessary changes.

I have a 16GB card full of music and video, in lots of different formats, from my years of different devices. Devices like the original (pre-touch) iPods, my Treo 750, my old BlackBerry, and now my HTC EVO. I have AAC, MP3, WMA, WMV.

How much 'bloat' are we talking here? Include a few headers and reference a few functions that are already there. The C code is negligible.

I think the real thing here is some sort of pandering to either [some] vendors or carriers, or something like that, that we are unaware of. Seriously.

Apple didn't go with Flash on the iPhone because of either a p!ssing contest between The Steve and Adobe or some sort of money [licensing] thing. Why else would Apple deliberately screw their users over like that? It's either hubris or money.

I am a developer, but I am also a user, and when I heard the iPhone was not going to support Flash, that concerned me. I go to many websites, on a daily basis, that use Flash. Sure, it would be great if they just used plain HTML or HTML5, but they don't. And they might not ever convert their websites. Who suffers? The users and the websites that use Flash. Some of my fav websites: Break, Hulu, Boy Genius, Gizmodo, Make, Android Central, Androinica.

I was one of the sorry fools that bought a Nokia N770 Internet Tablet. Can I use it today? Yeah, if I can find a website that is running Flash 6.0 or earlier, or is written in HTML 4.0. So the answer is no. And Nokia is never going to update the N770 OS.

My wife has an iPhone 3GS, and she is always complaining about websites that she cannot render, and borrows my EVO to go there. She was going to get an iPhone 4, but now, will probably get an Android phone. So Apple's decision to ignore Flash is hurting Apple, AT&T, the users and the websites that use Flash.

This just seems like Google going down a similar path as Apple.

zerojay says:

Jerry, Rdio is $10 a month for streaming to phones and desktops, $5 for streaming to desktop alone.

kerbero9 says:

Jerry,

First of all, Did you just refer to AAC as legacy!? I would hardy describe AAC as "legacy". It is supported by pretty much every hardware device out there and provides excellent "sound quality for the bandwidth buck". We're not talking about RealAudio streams here.

I don't blame the vendors one bit.. they should not need to change their stream because Google sloppily implemented support for the codec.

Lastly, let's not forget..this is classified as a BUG. This is not a feature request. Google did not purposely gimp AAC in Stagefright because it "has an eye on the future" and wanted to phase it out...

I'm glad Google has finally fixed the BUG in their software. I feel bad for the poor EVO and Droid owners who received 2.2 and now have to deal with this while HTC and Motorola take thier sweet time rolling out a fix.

HedonismBot says:

I agree, I'm very confused by this whole editorial and the comments that followed. HE-AAC [v2] is on the shortlist of codecs that can provide an acceptable to excellent sound quality at low bitrates where your average mp3 sounds like garbage. The "HE" in HE-AAC [v2] stands for high efficiency. I'd argue that using HE-AAC v2 when on the cellular network is just plain Doing It Right™ by providing the best experience at available bandwidth. Google says so too: http://developer.android.com/guide/practices/design/seamlessness.html#ne...

Developers aren't choosing "low quality" codecs because they're lazy or it is somehow cheaper, they're just using the APIs and available formats to make lemonade out of 2g/3g lemons. Stream raw WAVs from a CD when you're on wifi for all I care.

This is a bug that needs to be fixed. It's uncomfortably fanboy-ish to blame the OS bug on developers, or jump right to how little everyone should care about Pandora.

If you'll excuse me, I now have to go back to reconsidering my choice of media formats for an app :( I appreciate the news, I just happen to disagree with the opinions that followed.

bwaldron says:

Jerry,

Your larger point is one with which I agree.

However, with respect to the specific at hand...no. AAC is not a legacy codec, its compression is used to maintain quality using 3G, and Google is at fault here, not the app developers.

UncleMike says:

Obviously I'm in the minority here, so I feel I'm missing something, but how can decoding something incorrectly not be considered a bug? Also, aren't the affected apps using the codecs they are to conserve bandwidth when using mobile data when compared to the higher quality codecs used on wifi or wimax? And if so, doesn't bandwidth efficiency benefit everyone?

mupi says:

I think that the really salient point here is in the line "are no longer decoded correctly" It's one thing if Google decided "those are legacy formats, we are no longer going to support them." However, that's not the case here. If the format isn't supported, it won't play, period. If you're going to support ("play") a given media format, then it damn well better play CORRECTLY.

It's a bit of a stretch, but its a lot like the government saying "we are going to support driving on the left hand side of the street, if you want", and then failing to make any suitable provisions for it. Is it my fault as a driver if I get into an accident driving on the left hand side of the street, instead of the right, when there are no "left hand traffic" lanes marked? Or is it the governments responsibility, if they are going to claim support for left hand driving, to put the infrastructure in place to support it, BEFORE they claim support for it?

This is even more so, if the change to the music framework was because Google is looking to support their own forthcoming service, and not for any sound technical basis (indeed, it sounds as though there may well have been sound technical basis for sticking with the old framework).

I also suspect that Google is under pressure from the carriers to keep down the necessary amount of 3G data, and forcing apps to use higher quality codecs almost necessarily means they will be streaming more data*, which will make Google (to say nothing of the app) less popular with the carriers. And lets look at, for example, skype on the iphone. you don't think ATT could go to Google or Pandora and demand that the app become WiFi only, or be removed from the market for ATT phones? You don't think that ATT users, stuck in their tiered 3G pricing, aren't going to appreciate being able to stream lower bit-rate audio?

In short, this issue is much bigger than just a question of "legacy" support.

*I recognize that high quality does not necessarily mean higher bit-rate, if the codec is superior. But lets face it, if the codec was superior, and gave higher-quality results for a lower bit-rate than the old codec, the app developers would be falling all over themselves to add support for it; and indeed, the app defaults would likely not change between 3G and WiFi streaming. The ONLY reason to select a "lower quality" protocol when 3G streaming is to reduce bandwidth.

in light of knowing this. I can assume that my "quick fix" for iHeartRadio is going to be more of a long term fix. Anyone know how Radiotime works on froyo. I had wanted to avoid having to move all my favorite stations in light of trying to find the national feeds. But I travel alot and like certain shows!

r546 says:

kerbero9, you are exactly right. The author has this completely wrong. This is not an issue of Google trying to move forward and vendors refusing. AAC is not legacy and Froyo/Stagefright was shipped as listing support for it. Google didn't even try to drop it. If Google really wanted to end support for it, then they should've stated that months before the 2.2 release, notified all vendors, and given them sufficient time to update their apps. Instead, it shipped with support listed, and totally broke it, ruining the experience for tons of users (myself included). So what exactly should the app developers have done differently? You should be pitying the vendors for having to deal with this unfortunate circumstance and maybe losing some customers in the process. It's a bug and fault lies solely on Google's part, a result of disappointingly poor QA.

There needs to be less ranting on app developers, this is baseless.

A. AAC+ is not a legacy codec in any form or function.
B. Why in the world should application developers be forced to re-encode their ENTIRE audio library for one platform? Seriously, you're insisting that a place like Pandora should re-encode everything. That's THOUSANDS of GB of audio.
C. This is like saying that Android should stop supporting MP3 because there are better codecs out nowadays. It doesn't matter what is "better", it matters what everyone /uses/. Tons of apps use these AAC+ codecs, and they should continue to support it.

I can only hope that Jerry here will learn from his mistake, fix his article, and not make such a mistake in the future. It's even more annoying when they link my thread as a source of the article. I don't want to be associated with such a baseless ranting unprofessional article.

nutflush920 says:

Very good article. I just want my Sirius XM app to work again. This looping is driving me nuts. I know that Sirius should fix the app but, at this point, if Google can do it, then please do. You and I agree how this all works but, in the common customers view, all they see is a problem with their music playing on their Google Android phone. This leads to them telling their friends and might discourage them from buying an Android phone.

prettyb says:

I feel like this just goes to show how much respect first party developers like Pandora feel about Android. It was another platform belonging to a certain fruit, Pandora wouldn't have had a problem with changing the app. I hate how certain developers treat the Android platform.

A. Pandora can't afford to re-encode thousands of GB of music for one platform.
B. Pandora shouldn't have to make a hacky fix for a /bug/. Yes, this is a bug, unlike Jerry stated. AAC+ is not a legacy codec, not by a long shot. Even Google themselves recommend using it!
C. If Apple tried to do this to Pandora, Pandora wouldn't do it either.
D. This affects far more than just Pandora as well.

r-nice says:

Who cares, just fix it so it works again. Consumers are suffering.

Daniel C says:

Where did this "legacy" idea come from? Reading the thread on the Android issue and looking at the changes made to fix it, it sure looks like it was just a bug. It's already fixed anyway.

Gunner says:

Except it could be quite some time before the fix makes it to end users. The code change is in the Android branch, but that does nothing for end users. Because now the various hardware manufacturers have to update their builds, run thru QA testing, send RC's to the carriers, then the carriers have to do their QA testing, etc. It could be months before the fix makes it to end users, and depending upon the phone, the fix might never happen for some people.

I agree w/ most here that Google really screwed the pooch on this one. It's not the devs fault.

uansari1 says:

I'm right there with you Jerry...

apyoung88 says:

Wow, regardless of the accuracy of the article, there is a typhoon of AC hate in this article lol.

Also, repeating your arguments 4+ times is annoying.

That is all....

dmoulton says:

I have been streaming mog.com over 3G to my Froyo'd original Droid for a few days now. It sounds fine to me. Am I missing something?

MikeNYC#AC says:

Hello to all....as a former Blackberry Tour owner now with
TEAM EVO...lol.....this is a great and informative article but????

can we get a audio update for the rear speaker and maybe ear peice...turn up the decibals up.........please!!!!!

also how about a sound booster EQ like blackberry's have when u wear a headset.....that would be nice....????

are there any apps for sound improvement....helppppppp

MikeNYC is down with TEAM EVO..

I knew when I wrote this, that some people would take exception to my opinion, and told myself that I would stay out of the fecal slinging that was sure to come. But a couple points --
  • ACC/ACC+/FLAC play just fine. It's the compressed versions that vendors are using for low-bandwidth streaming that don't. Why don't we demand that YouTube streams in 3gp while on 3g to save bandwidth? If I wanted compressed, bandwidth saving devices and applications I would stick with Blackberry.
  • Streaming is fine on WiFi, so exactly why would vendors need to recode their entire library?
  • Rdio plays streams just fine over 3G, so it can be done.
  • I'm still waiting for anyone to explain why changing the OS on millions of phones is better than 4 or 5 app vendors changing their code to match other apps, that work just fine.
  • Whether some of you like it or not, I am allowed to have an opinion -- even if it disagrees with your own. But don't worry, I won't repost this comment 5 times to push it on anyone.
  • Carry on.

    nixlo says:

    HE-AAC/HE-AAC v2 are specific supersets of AAC LC (and definitely not legacy). Decoding HE-AAC as AAC LC while claiming support for HE-AAC is a bug plain and simple. What the hell is so hard to understand about this?

    kerbero9 says:

    I really can't believe you are still blaming the vendors here...

    1) HE-AAC and HE-AAC v2 played just fine on 2.1. Google botched the DECODING and now all of the sudden it's the vendors fault for delivering content in the most efficient manner? Really? God forbid we try to provide users with a quality experience. You do realize we are talking about cellular networks here? How would you like your streaming audio delivered to you over 3G Jerry?

    2) Vendors don't need to recode their entire library. I'm sure they encode on the fly. I'm also pretty sure the app is programmed check whether or not the phone is on 3g or wifi. Things are fine on wifi because they are probably streaming an mp3 to you.

    3) The BUG (and I will keep stressing that fact, this is a BUG) affects HE-AAC and HE-AAC v2, so maybe Rdio doesn't use that codec to stream.

    4) If I'm encoding my music using an industry standard codec and your OS isn't decoding it properly then the problem is with you. If your OS has a bug in it then it's your responsibility to fix it. It's not my responsibility to provide a work around for the sake of your carelessness. That's why.

    You can have your own opinion but back it with at least some technical integrity. I'm blown away at your lack of understanding of what the real issue is here.

    Froyo has bug. Jerry like bug! Google fix bug. Google bad! Jerry like bug! Pandora don't play nice with bug. Pandora bad! Jerry like bug! Rdio play nice with bug. Rdio good! Jerry like bug! Pandora should be more like Rdio!

    UncleMike says:

    It seems I'm not in the minority any more.

    "changing the OS on millions of phones is better than 4 or 5 app vendors changing their code to match other apps" is better because that's where the fault lies - in the OS.

    I install data cabling for a living and every once in a while I make a mistake while wiring the jacks. Testing reveals the problem before the installation is presented to the customer as being complete. Sometimes the miswire is at a patch panel, and other times it's at a more easily accessible end user location. I can make it work by making adjustments at either end, but I correct the problem where the problem lies, even if it's at a less-accessible patch panel.

    I'll admit that having app vendors adjust to deal with this will get a "solution" into the hands of users more quickly, but I would rather live with a problem a little longer and know that it's being handled properly.

    Google already fell down on the testing. Let's not let them off the hook for the fix.

    bryanc says:

    sure, you're definitely allowed to have your opinion, but it's so poorly thought out and misinformed that it reads as drivel.

    the boundary conditions that you've set forth in your argument lead me to believe that you have no idea what you're talking about.

    bhake76 says:

    If you have a rooted android phone, there is a quick fix/bandaid for this on xda forums. See here:

    http://forum.xda-developers.com/showthread.php?t=737111

    Some users really notice a difference. Me, personally, I do notice a slight improvement with my N1. So worth a try. :)

    NickF227 says:

    AAC is legacy now? Wow, you're cool.

    And Pandora is free, jackass, it can't AFFORD more bandwidth.

    Tracker69 says:

    I got the $36 annual Pandora subscription two weeks prior to the Froyo 2.2 downgrade on my EVO. I recall that the high quality audio option available with subscription was at 192Kbps, which sounds quite good and "near-CD" for the flexible portability. After Froyo, it sounds awful, like a 32Kbps stream, or worse. This is on either 3G or WiFi, so the text of this article is a mystery to me. I can turn off 3G and use only WiFi, with a maximum signal, and it still sounds just as bad. It seems more likely that the well-documented AAC codec bug is responsible for this, rather than the radio being used. Slacker sounds nearly as bad as Pandora, but last.fm surprisingly sounds much better than either. Perhaps they aren't using the same codec? I suspect that when the already completed Google patch finally comes through OTA to re-enable AAC codec support, Pandora should sound very good again, but given that Google/HTC/Sprint have to agree on when this will happen as part of a larger overall update, I'm bummed that it will probably be much too long of a wait. BTW, I just updated to Pandora 1.4, and it made no improvement in audio quality, not that I expected it to, since they're waiting for the completed Google fix to filter down.

    bryanc says:

    wow. most of you, including Jerry, have no idea what you're talking about. First of all AAC isn't a legacy codec, and as one of you (who actually knows something about this), pointed out, HE-AAC v2 is one of the few codecs that can undergo major compression and still retain a listenable quality. it's also fairly new (read for those of who on here are dense: NOT LEGACY).

    second of all, it's a BUG on google for a reason. some of these providers have invested a lot of money to encode terabytes of content. jerry, you are arguing that they should re-encode that because google screwed up?

    amazing.