[MPlayer-users] Bugs in file demux_mkv.c(big/small endian problem)

Qing Wang wqfrank at 163.com
Wed May 18 08:30:58 CEST 2005


Hi,
    I think the following line in file demux_mkv.c will make mplayer  
crash in MacOSX.

static void handle_realvideo (demuxer_t *demuxer, mkv_track_t *track,  
uint8_t *buffer,
                   uint32_t size, int block_bref)
{
   ....
   memcpy (dp->buffer + sizeof(*hdr), buffer +(chunks+1)*8, isize);
   memcpy (dp->buffer + sizeof(*hdr) + isize, buffer, (chunks+1)*8);
   .......
}

    since chunks in real video is 32-bits integers, here we use bytes- 
copy(memcpy) to copy the chunks value to the data block. This works  
well if the mkv is created and used on platform with integer store  
format( both small endian or both big endian). But as the MacOSX  
platform uses big-endian integer store format and the integer store  
format in mkv files is in small-endian format, so the format copy  
method will changes the chunks's value sent to the decoder and make  
mplayer crashes.




                                         Yours Sincerely
                                         Qing Wang





More information about the MPlayer-users mailing list