Subscribe to
NSLog(); Header Image

Playing iTunes Plus Songs on the Xbox 360 via Rivet

For awhile now, we've noticed that iTunes Plus songs - despite being "AAC files" according to Apple - will not play on the Xbox 360 when streamed from Rivet.

There were work-arounds. Primary among these was choosing "Convert to AAC" from within iTunes. This method has the unfortunate side effects of re-encoding and re-compressing the music ((I'm not certain if re-encoding at 256 kpbs technically re-encoded the file, resulting in a loss of quality.)) and losing your metadata.

What reason did we have for the work-arounds? It turns out Apple's doing something a bit funky with the files. A little research led to the post of a Nokia N95 user named Joshua, who discovered that the pinf atom is listed as a sibling instead of a child, "breaking" the AAC file (at least as far as the Xbox 360 and Nokia N95 are concerned).

I'm not sure why Apple chose to do this, but since it's been this way since version 7.2, I'm no longer holding my breath for a fix ((If a fix is even needed - maybe this conforms to the AAC specification?)) from them. It's been too long ((Though, admittedly, the new wave of people upgrading to iTunes Plus songs may put more pressure on them.)) and I doubt Apple cares much about the Xbox 360 or other products ((And again, that's if it's even off-spec.)).

Fortunately, Joshua's put together a Java application (works on 10.5.6) that copies the file, fixing the "incorrect" bit in the process, and leaves you with both copies.

What I'm doing is simple:

  1. Create a playlist in iTunes where the kind contains "Purchased AAC."
  2. Copy the list of songs immediately to another (non-smart) playlist.
  3. Choose cmd-R in iTunes on each file to locate the song in the Finder.
  4. Run the Java application to fix the bit.
  5. Compress the resulting ".purchased" song for safe keeping (and so that it doesn't show up in iTunes).
  6. Double-click the song from the second playlist. The file type will change (if you're showing that column) from "Purchased AAC audio file" to "AAC audio file."

Worst case, I can recover my "purchased" songs by doing a search for all ".zip" files within the iTunes Music folder.

11 Responses to "Playing iTunes Plus Songs on the Xbox 360 via Rivet"

  1. I would file a bug with apple none the less so it gets some attention and get fixed at some point !

  2. [...] Erik Barzeski says that, although iTunes music is becoming DRM-free, the purchased AAC files are broken such that they don’t play on other systems like the Xbox 360 until they’ve been run through a program that fixes the position of the 'pinf' atom. [...]

  3. I have not had this problem with Connect360. I bought several new tracks shortly after the keynote and have been able to stream them fine (unmodified) to the Xbox 360.

    1. [quote comment="52246"]I have not had this problem with Connect360.[/quote]

      Connect360 transcodes files to MP3 - it doesn't stream the raw files. Rivet does not transcode (i.e. re-encode) your files for several reasons, lossy re-encoding and its effect on quality being one of them.

      In other words, your files are modified, and it's the Xbox 360 causing problems, not Rivet.

  4. Filed this as a bug in Apple's system (Bug ID 6487962), and got the following responses:

    Engineering has determined that this issue behaves as intended based on the following information:

    The fact that QTPro writes the PINF as a child of the ESDS is incorrect, and it was a bug that was corrected in a later version of QuickTime. The PINF is a sibling of the ESDS in the "extension" area of the sample description atom (stsd), as it should be per the MPEG-4 spec. The fact that the Nokia phone cannot play, it is a bug in the phone, not iTunes.

    In my original filling I gave link to the article.

    1. This might be true. I was originally going to call BS on it, but I've done some more digging and playing around tonight. A couple of the things I thought when I first found this no longer hold true.

      It ends up that the xbox issue with the itunes+ is different from the nokia one. I got my xbox back from repair today and was able to test the PINF sibling/child fix and it still doesn't play them. I'm trying to figure out now what might be causing the problem since it's no longer the PINF.

  5. [quote comment="52285"]

    It ends up that the xbox issue with the itunes+ is different from the nokia one. I got my xbox back from repair today and was able to test the PINF sibling/child fix and it still doesn't play them. I'm trying to figure out now what might be causing the problem since it's no longer the PINF.[/quote]

    Brad - any luck with determining how to play on xbox? I have also tried the pinf fix with no luck for the xbox. Any help appreciated.

    I converted to high bitrate mp3, which is not ideal, but does provide a solution until a more permanent fix.

  6. I got to say, has anyone confirmed any loss in quality in the "Create AAC version" function within iTunes, it's a very elegant work around for me, do the above process but instead of messing around with pinf atom bits or WETF just create AAC version. From what I can tell it does not lose any metadata (it's kept the number of times I've played the songs etc) and listening to a comparison of two tracks I can't spot any difference (I have some good Senheiser in ear buds).
    Would be eager to hear anyones findings on this.

  7. I really like Connect360. After a year or so of owning and dealing with their PS3 app – MediaLink – I've grown to absolutely despise Nullriver and their lack of support – but Connect360 works consistantly very well. Thank God for that… I'd not want to have to try to get support if it stopped.

    That being said… because of said support issues, I don't plan on ever buying another product from Nullriver again.

  8. I'm having similar issues. I just upgraded to 2.5.1 from, I believe, 2.4.4 and I was at first unsuccessful at playing any of my Itunes Plus music (Yes I have the ffmpeg file). So I decided it must need to reboot the system. I rebooted my xbox, and my Macbook Pro (10.5.8) and was able to play one Itunes plus song. Then I tried to load a playlist of Itunes plus music and my CPU shot up to 116% on Rivet and the program has hanged. I just quit the process through the activity monitor (be nice if it would show up in the normal force quit menu). Is the transcode just too much work for the processor? I'm running a late 2008 MBP and all my software is up to date (except I haven't gone to Snow Leopard).

  9. Does this still work with the latest iTunes? I hope you can update this post so that they can play iTunes Plus songs on xbox 360.