Sunday, February 28, 2010

This makes me sad

My wife and I recently bought a Honda Civic Hybrid. Among other features, it has the ability to play music files off a USB mass storage device. Yay! Easy way to play the music on my Android phone through the car speakers, right?

Wrong. You see, about a year ago I upgraded the disk server to 1.5TB and re-ripped our 800+ CD music collection to FLAC. At the same time I also transcoded to AAC, because AAC turned out slightly better to my ears than MP3 in some comparative testing I did.

Now, the Civic's owner manual claims that the stereo can play AAC files, and even lists the bitrates, sampling rates, etc. that are supported. However when I actually tried to play these files, it gives the error "UNPLAYABLE FORMAT".

If you look more closely, you notice the disclaimer that says only iTunes AAC files are supported. As best I can tell, what's going on specifically is that iTunes doesn't support encoding AAC files with VBR, despite the fact that VBR is required by the AAC spec (according to WikiPedia, at least.)

Rather than support VBR, Honda's stereo vendor chose to simply implement AAC without VBR. I have to wonder why. There are plenty of spec-compliant AAC implementations out there, including some that are open source. Did Apple actually give them this code? The thing supports deeper integration with iPods so it's possible they got some code for that from Apple that included playback of Apple-forked AAC files, and are just reusing that same AAC-playback for USB mass storage playback too. This is just speculation of course -- I have no way of knowing, except that the manual says straight up that only Apple's non-standard fork is supported.

Regardless of what the technical reality is, the retail leader in digital audio forked a standard, and then used their market power (whether intentionally, or accidentally) to cause another vendor to propagate their fork. Shame on Apple for not supporting AAC properly, and shame on Honda for propagating the breakage.

Now please excuse me while I go transcode my FLACs to MP3, just so I can try to play them in my car. God help a regular person who tried to do this, without the know-how to write a Python script to do it...

Update: It was pointed out to me that iTunes does support VBR, and has an option for it in the UI. However, according to WikiPedia, it's not true VBR. Here's the quote from WikiPedia, to make things clear as mud:
iTunes supports a "Variable bit rate" (VBR) encoding option which encodes AAC tracks in an "Average bit rate" (ABR) scheme. As of September 2009, Apple has added support for HE-AAC (which is fully part of the MP4 standard) but iTunes still lacks support for true VBR encoding. The underlying QuickTime API does offer a true VBR encoding profile however.
So it could be that, or it could be one of the other changes Apple made to the AAC file format that I've read about. But as I said, I'm just speculating; all I know for sure is that my car only supports whatever hacked format Apple's introduced, and it makes me sad.

No comments: