MVI2: done

I’m almost done with Motion Pixels at last. Of course I skipped implementing some exotic modes but at least the files I could find play fine and don’t complain about missing modes. I just need to put finishing touches and commit it all, probably on Saturday.

The next post should be dedicated to intricate details of the codec(s) and comparison to its better-known competitors with similar design (Truemotion 1/RT/2/2X and Indeo 2/3) but for now all I need to say that frames may be coded in several modes (RGB or YUV with one chroma sample per 2×1, 2×2, 4×2 or 4×4 block), some parts of it may be use low-resolution delta coding (with its own peculiarities depending on line number and sampling mode); and since that was not enough, they’ve added smooth delta coding mode (which also has its own peculiarities in low-resolution coding mode). And of course there’s single-field coding mode. And some features seem to be duplicated using different flags. Since I’ve not found any samples for most of them, I simply implemented basic modes, 4×4 YUV mode with lowres and all YUV modes with optional lowres and smooth delta coding (since movieCD samples seem to exercise them all).

The best part is that nobody cares. NihAV can’t be interfaced with MPlayer easily, discmaster.textfiles.com is not likely to change anything (e.g. files here are recognised as aviAudio type despite having video track and nihav-encoder being able to decode it just fine. Or BATH06.MOV—no link since it’s the only one in the database—which can be converted with the same tool but it’s not even recognised as QT MOV. So I don’t expect that MVI1/2 files will get a video track either.) And I never was Aware caring about the codec much, not having any content coded with it for starters.

Anyway, with this waste of time is over, so what’s next? While searching for the samples I’ve found a couple other MVI formats that may be good candidates for na_game_tool. There is a lot of janitorial work for NihAV as well (for example, I want to rewrite AVI demuxer—it’s one of the first pieces of code I implemented for the project and now I see that some things could’ve been done differently and better). And I’ve finally decided on a name for a new tool: na_eofdec (NihAV exotic/obscure formats decoder). Now all is left is to RE and implement enough formats for a release of both of those tools.

Don’t expect any of this happening soon though, I am lazy and work on it only when I’m in the mood. For example, this post might’ve been about why wavelet compression for video (and images) inherently sucks—but I still haven’t got in a proper mood for writing it.

4 Responses to “MVI2: done”

  1. Awesome! Looking forward to seeing the write-up on the wiki, as are all the AI crawler bots which constantly hammer the site.

    Will be interesting to see if the next round of AI models will correctly write an MVI2 decoder from a simple coding prompt.

  2. Kostya says:

    I don’t think it will happen, but maybe we’ll see more bullshit about the codec in the search results.

    Speaking of which, Wickedpedia still claims “Indeo Video 3 is a traditional DCT-based transform coding format” but I doubt any of the sources it refers to claims (or ever claimed) that.

  3. Hmm… I decided to ask MS Copilot (my go-to LLM):

    “what type of coding techniques does the Intel Indeo 3 video codec use?”

    Mercifully, the answer did not mention DCT. And then at the end, it referenced the MultimediaWiki.

  4. Kostya says:

    And since I’m not looking for easy solutions, I ask Ghidra instead. Reading binary specifications is not easy but sometimes it pays off.

Leave a Reply