[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