[MEncoder-users] Need some help with ODML for Sansa Fuze

Martijn van Beurden mvanb1 at gmail.com
Wed Jun 17 22:32:26 CEST 2009


Hello everyone,

I'm trying to write a script that allows mencoder to make vids for my
Sandisk Sansa Fuze. Currently I can only convert video's for my Sansa
with the Sansa Media Converter, a converter by InterVideo which encodes
in a special format, it looks like a modded AVI. I already found out how
to bypass this, and my first mencoder-encoded video is already playing!

The problem is that seeking is not working yet. Dumping the RIFF
structure of the original mencoder-encoded file gives this:

RIFF size=37536096
     AVI
     LIST size=382
          hdrl
          avih size=56
          LIST size=192
               strl
               strh size=56
               strf size=40
               vprp size=68
          LIST size=106
               strl
               strh size=56
               strf size=30
     LIST size=36
          INFO
          ISFT size=24 value=MEncoder SVN-r29358-4.3
     JUNK size=3642
     LIST size=36943496
          movi
          01wb size=120
          01wb size=240
          01wb size=192
          01wb size=240
          01wb size=240
          01wb size=240
          01wb size=240
          01wb size=240
          01wb size=240
          01wb size=240
          01wb size=240
          01wb size=240
          01wb size=288
          01wb size=240
          01wb size=240
          01wb size=288
          01wb size=288
          01wb size=240
          01wb size=288
     idx1 size=588496

Modded (just taking the header of the same file encoded with Sansa Media
Converter)

RIFF size=37655446
     AVI
     LIST size=64648
          hdrl
          avih size=56
          LIST size=32148
               strl
               strh size=56
               strf size=40
               indx size=32024
          LIST size=32148
               strl
               strh size=56
               strf size=30
               JUNK size=2
               indx size=32024
          LIST size=260
               odml
               dmlh size=248
     LIST size=24
          INFO
          ISFT size=12 value=InterVideo
     LIST size=37002231
          movi
          ix00 size=32024
          ix01 size=32024
          00dc size=473
          01wb size=288
          01wb size=288
          00dc size=6
          01wb size=288
          01wb size=288
          01wb size=240
          00dc size=6
          01wb size=288
          01wb size=240
          00dc size=6
          01wb size=288
          01wb size=240
          00dc size=6
          01wb size=240
          01wb size=288
          00dc size=6
     idx1 size=588496

While the headers are wrong now, it just plays without much problem.
There are only 2 flaws: I can't seek and the file length displayed is
wrong. As you can see in this dumps, SMC adds ix00 and ix01. I believe
this is for seeking. (it looks like some kind of table, and the values
seem to correspond with the bitposition of the frames) Searching learned
me that these ix.. tables are introduced in ODML. Is there a way to let
mencoder produce this tables? Otherwise I'll have to script something to
search for keyframes and building those, if thats possible.

Oh, and the indx blocks in the LIST chunks seem to point to other ix00
and ix01 blocks somewhere halfway the stream...

Thanks in advance!


More information about the MEncoder-users mailing list