It turns out it really does enable AVC High profile playback, as opposed to before where that didn't work. Prior to this update, I thought the PS3's problem with AVC was the lack of support for "level 5.1". But it was the high profile.
AVC has "profiles" and every profile has levels. There are like four different high profiles according to the wikipedia, but only one is referred to as "High". More info can be found here http://en.wikipedia.org/wiki/H.264
Anyway, most MKV files out there, use either High profile or Main profile at level 5.1. Now, the MKV container is not a standard, but it's popular because it supports a wide range of formats, specially AC3, which people seem to love. The iso mp4 container doesn't support AC3. It usually uses AAC but I guess it supports MP3 too.
If you have a high def (720p and up) video encoded in AVC, in an MKV container, a PS3 and a HDTV, you may want to watch that video in the PS3 in all its glory someday.
All I've said is nothing we didn't already know. Anyway, prior to the release of FW 1.82, the playback of High profile avc videos was only limited to BD and AVCHD video format. Now, you can play high profile from MP4 files too, with certain limitations. This means that it is possible to re-multiplex (get the streams from the MKV file and "put them" in an MP4 container) those files to watch them on the PS3.
The procedure is simple:
- Demux the MKV into different tracks: the AVC video stream and the audio stream.
- If the audio stream is encoded in AC3, recode (you can use an open source tool for this, faac) it to AAC. I think that the ps3 won't support the file if the bitrate of the audio track is above 160 kbps.
- Now you have two streams, the AVC video stream and the AAC audio stream.
- You can multiplex these files into an mp4 container using MP4Box.
If the stream was originally Main/High profile at level 5.1, the PS3 WILL REFUSE to play the file (reporting "unsupported data"). This is because even though it supports up to the highest profile, it won't play files that are marked as level 5.1, no matter what profile we're using.
That said, there's a chance that marking the video stream as level 4.1 or 4.2 will solve all of our problems. At least, it is assured that the ps3 will try to play it, lol. No more "Unsupported data" or "corrupted data".
I'm still not sure WHY this is possible. Technically, the level is just a 'label' based on factors such as macroblocks and such things (I dont even know what those are). Higher levels "include" the lower levels. So you can have a level 4.1 file, and mark it as level 5.1. But a file that doesn't meet the level 4.1 conditions but does meet the level 5.1 ones, changing it to level 5.1 may cause errors in the playback.
So my theory is that most files "out there" wrongly mark the files as highest level (5.1).
To change the level, you can hex edit the .h264 stream, or use a tool called "h264info" which allows you to do this by just typing what level you want. This is done by changing some bytes in the file, it doesn't "touch" the video data. Technically, these tools are going to be improved to detect the "lowest possible level" the file can be marked as.
Anyway, to sum up
- Get the separate streams, the .h264 video stream and the audio stream.
- Recode the audio stream to AAC (<160kbps) if neccesary.
- Change the level of the video stream to 4.1 or 4.2, using h264info or modifying the file using a hex editing program.
- Remux them with mp4box, be careful with the FPS (wrong FPS may cause the audio to be out of synch)
- Play the mp4 in the ps3.
- The audio plays, but there's a black image: I still haven't figured this one out, but it happens with files that are 1080p
- The audio plays, but the image is full of errors (green blocks, etc). I think this means that the file is irremediably level 5.1. Try level 4.2, just in case
Well , these arent "my" discoveries. I found out that RedKawa (ps3 video 9) was using the "hex hack" to remux MKV files that were encoded in main profile, now it's just the same, but on high profile too. I guess a new version is to be expected