[FFmpeg-devel] [PATCH] rmdec.c: support for multirate files

Michael Niedermayer michaelni
Tue Dec 30 23:10:52 CET 2008

On Tue, Dec 30, 2008 at 11:51:12AM -0500, Ronald S. Bultje wrote:
> Hi,
> On Tue, Dec 30, 2008 at 9:52 AM, Michael Niedermayer <michaelni at gmx.at> wrote:
> > What we need is as i said support for non interleaved rm files.
> > see avidec.c as an example on how to demux non interleaved data.
> Is attached OK (for the interleaving, I didn't do seeking, yet, working on it)?
> Output example, for a file where the first (default) chunk contains
> stream 4 and the multirate chunks contain (in that order) chunk 0, 1,
> 2, 3 and 5, with the stdout giving (for each RM packet) the offset,
> packet length, stream ID of packet and its PTS:
> 0x     b68: packet len=0480 id=4 pts=000000
> 0x     d54: packet len=0480 id=4 pts=000191
> 0x   5db03: packet len=0580 id=0 pts=000000
> 0x   5dd54: packet len=0580 id=0 pts=000232
> 0x   ba595: packet len=0564 id=1 pts=000000
> 0x   ba7d6: packet len=0564 id=1 pts=000278
> 0x  105dbf: packet len=0352 id=2 pts=000000
> 0x  105f2c: packet len=0352 id=2 pts=000255
> 0x  139e79: packet len=0564 id=3 pts=000000
> 0x  13a0ba: packet len=0564 id=3 pts=000139
> 0x  1d1c41: packet len=0480 id=5 pts=000000
> 0x  1d1e2e: packet len=0480 id=5 pts=000191
> 0x  13a2fb: packet len=0564 id=3 pts=000278
> 0x     f40: packet len=0480 id=4 pts=000382
> 0x  1d201b: packet len=0480 id=5 pts=000382
> 0x   5dfa5: packet len=0580 id=0 pts=000464
> 0x  106099: packet len=0352 id=2 pts=000510
> 0x   baa17: packet len=0564 id=1 pts=000557
> 0x  13a53c: packet len=0564 id=3 pts=000417
> 0x    112c: packet len=0480 id=4 pts=000574
> 0x  1d2208: packet len=0480 id=5 pts=000574
> 0x  13a77d: packet len=0564 id=3 pts=000556
> 0x   5e1f6: packet len=0580 id=0 pts=000696
> 0x  106206: packet len=0352 id=2 pts=000766
> 0x  13a9be: packet len=0564 id=3 pts=000696
> 0x   bac58: packet len=0564 id=1 pts=000835
> Are these small variations in PTS acceptable or do you want me to
> read-ahead to see which PTS (in future) will be smallest?

the question is, if theres any chance a decoder could end up starved
that is having packets sufficiently out of sync so that its buffers
are too small ...

> @@ -449,20 +489,28 @@
>                  if(len<0)
>                      continue;
>                  goto skip;
> -            }
> +            } else if (state == MKBETAG('D','A','T','A'))
> +                return -1; // multirate next DATA chunk, shouldn't happen

this definitly is not a reasonably choice, i mean you fail hard because the
string "DATA" occured somewhere while the demuxer tried to resync.

Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Observe your enemies, for they first find out your faults. -- Antisthenes
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20081230/fe2b2264/attachment.pgp>

More information about the ffmpeg-devel mailing list