Breaking Eggs And Making Omelettes

Topics On Multimedia Technology and Reverse Engineering


Archives:

XIntra8 In FFmpeg

November 9th, 2007 by Multimedia Mike

Rejoice! Thanks to the inimitable multimedia hacker Allan Smithee, FFmpeg now supports the XIntra8 coding scheme! Why is this important? Also known informally as the J-frame (and X8Intra and IntraX8), the XIntra8 coding mode has long been the missing piece of the Microsoft WMV2 puzzle and is apparently also used in certain variations of WMV3.

Update: Check out Kostya’s rant on the matter for better details on exactly what XIntra8 is, and why it is so painful.

This has been a longstanding problem for FFmpeg’s open source WMV2 decoder. You would be watching a WMV2-encoded video and suddenly, obnoxiously, there would be a severe glitch where you could watch blocks of incorrect colors moving around the screen. For example:


Britney Spears -- Not A Girl, Not Yet A Woman -- XIntra8 blocky decode

The XIntra8 is a different type of intraframe from the usual I-frame found in WMV2. Since the decoder could not handle the data, the policy was to just copy over the previous interframe and proceed with more frames, and hope that a regular I-frame was not too far in the future.

But now, I can finally properly watch this WMV2 encode of Britney Spears old music video for “Not A Girl, Not Yet A Woman”:


Britney Spears -- Not A Girl, Not Yet A Woman -- XIntra8 correct decode

Oh, don’t try to claim that you don’t have an extensive collection of her works. It’s okay to state that you have amassed the collection strictly for the academic purpose of multimedia study. That’s my story and I’m sticking to it.

Posted in Open Source Multimedia, Windows Media | 4 Comments »

4 Responses

  1. Kostya Says:

    Heh, and what would be my story then? At least I have more J.S.Bach cantatas in my sample collection.

  2. Multimedia Mike Says:

    Check the samples I sent you– I know this video is in there somewhere. :-) (I sent you all of my known WMV2 samples.)

  3. iive Says:

    May I ask, where did you get the idea that these frames are called Xintra8? The committed files are called intrax8, there is some mentioning in ms drafts about x8intra, but xintra8 points only to this site.
    I think I haven’t seen them been called 8intax or 8xintra, so I do that now.
    :)

  4. Multimedia Mike Says:

    http://wiki.multimedia.cx/index.php?title=XINTRA8

    That’s where. I guess we should make an effort to standardize on one name.