[MPlayer-dev-eng] [PATCH] make lavf demuxer and mplayer demuxerreturn same format extradata.

Roberto Togni rxt at rtogni.it
Wed Nov 8 23:44:42 CET 2006


On Sun, 5 Nov 2006 14:15:45 +0100
"elupus" <elupus at ecce.se> wrote:

[...]
> I noted something else on that cmsg24 data.
> 
>           if (bih->biCompression <= 0x30335652 && type2 >= 0x20200002)
>             {
>               /* read secondary WxH for the cmsg24[] (see vd_realvid.c) */
>               ((unsigned short *)(bih+1))[4] = 4 * (unsigned short) src[0];
>               ((unsigned short *)(bih+1))[5] = 4 * (unsigned short) src[1];
>             }
>           else
>             memset(&dst[8], 0, 4);
>           track->realmedia = 1;
> 
> That is in demux_mkv.c, and then vd_realvid.c it uses that extradata for
> cmsg24 and once again multiplies it with 4. Thus the final change would be
> 8.

Hmm, this looks totally broken (unless mkv stores real codecs
extradata in a different way than rm does).
1 - as you noted, the W and H for cmsg24 are already multiplied by 4 in
vd_realvid
2 - it passes only the 1st WH pair (i have seen up to 8 values passed
to cmsg24)
3 - it passes them as shorts (2 bytes), while vd_realvid expects chars

So why does it work now? because i found only one sample (RV20 in rm,
not mkv) that requires them, and even that file uses only the 1st pair.

Ciao,
 Roberto



More information about the MPlayer-dev-eng mailing list