[MPlayer-dev-eng] real demux problem/solution and a [PATCH]
Rudolf Marek
MAREKR2 at cs.felk.cvut.cz
Thu Apr 10 22:52:04 CEST 2003
Hello,
I was unable to play this stream:
pnm://rm.bbc.net.uk/news/media/video/39060000/rm/_39060081_attack18_simpson_vi.rm
Because It had an junk in MDPR header (all header full with audiency info)
Also it has some strange (not yet implemented) ID for RV20.
So I created that patch. It playes fine now. Realplayer is conviced that
the fps is 12.5, but mplayer reports only 12.
Maybe it is because there are 2 field containing FPS.
First says: 0x000C
Second one is said to be valid only if not negative.
int tmp=stream_read_word(demuxer->stream);
if(tmp>0){
sh->fps=tmp; sh->frametime = 1.0f/sh->fps;
I have in stream 0x800C. What if second byte 0x80 is as fixed point ?
That it is simply 12 and half ?
btw watch that video too. Its worth to see.
Regards
Rudolf
-------------- next part --------------
--- demux_real.cold 2003-03-10 01:10:05.000000000 +0100
+++ demux_real.c 2003-04-10 22:05:09.000000000 +0200
@@ -715,7 +715,7 @@
// stream_skip(demuxer->stream, 4); /* number of headers */
/* parse chunks */
- for (i = 1; i < num_of_headers; i++)
+ for (i = 0; i < num_of_headers; i++)
{
int chunk_id, chunk_pos, chunk_size;
@@ -852,7 +852,7 @@
#if 1
// skip unknown shit - FIXME: find a better/cleaner way!
{ int len=codec_data_size;
- while(--len>=8){
+ while(--len>=6){
if(tmp==MKTAG(0xfd, 'a', 'r', '.')) break; // audio
if(tmp==MKTAG('O', 'D', 'I', 'V')) break; // video
tmp=(tmp<<8)|stream_read_char(demuxer->stream);
@@ -1097,6 +1097,7 @@
case 0x20001000:
case 0x20100001:
case 0x20200002:
+ case 0x20201002:
/* codec id: rv20 */
break;
case 0x30202002:
More information about the MPlayer-dev-eng
mailing list