[Mplayer-cvslog] CVS: main/libmpdemux demux_real.c,1.23,1.24

Arpi of Ize arpi at mplayerhq.hu
Sun Aug 25 02:07:18 CEST 2002


Update of /cvsroot/mplayer/main/libmpdemux
In directory mail:/var/tmp.root/cvs-serv5713

Modified Files:
	demux_real.c 
Log Message:
some files has some shit before teh audio/video headers...


Index: demux_real.c
===================================================================
RCS file: /cvsroot/mplayer/main/libmpdemux/demux_real.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- demux_real.c	24 Aug 2002 23:07:34 -0000	1.23
+++ demux_real.c	25 Aug 2002 00:07:15 -0000	1.24
@@ -8,6 +8,9 @@
     TODO: fix the whole syncing mechanism
     
     $Log$
+    Revision 1.24  2002/08/25 00:07:15  arpi
+    some files has some shit before teh audio/video headers...
+
     Revision 1.23  2002/08/24 23:07:34  arpi
     10l - fixed chunktab size calculation
 
@@ -885,9 +888,23 @@
 		codec_pos = stream_tell(demuxer->stream);
 
 		tmp = stream_read_dword(demuxer->stream);
+		
+		mp_msg(MSGT_DEMUX,MSGL_DBG2,"demux_real: type_spec: len=%d  fpos=0x%X  first_dword=0x%X (%.4s)  \n",
+		    (int)codec_data_size,(int)codec_pos,tmp,&tmp);
 
-#define stream_skip(st,siz) { int i; for(i=0;i<siz;i++) mp_msg(MSGT_DEMUX,MSGL_V," %02X",stream_read_char(st)); mp_msg(MSGT_DEMUX,MSGL_V,"\n");}
+#if 1
+		// skip unknown shit - FIXME: find a better/cleaner way!
+		{   int len=codec_data_size;
+		    while(--len>=8){
+			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);
+		    }
+		}
+#endif
 
+#define stream_skip(st,siz) { int i; for(i=0;i<siz;i++) mp_msg(MSGT_DEMUX,MSGL_V," %02X",stream_read_char(st)); mp_msg(MSGT_DEMUX,MSGL_V,"\n");}
+		
 		if (tmp == MKTAG(0xfd, 'a', 'r', '.'))
 		{
 		    /* audio header */
@@ -1036,18 +1053,11 @@
 		}
 		else
 //		case MKTAG('V', 'I', 'D', 'O'):
+		if(tmp == MKTAG('O', 'D', 'I', 'V'))
 		{
 		    /* video header */
 		    sh_video_t *sh = new_sh_video(demuxer, stream_id);
 
-		    tmp = stream_read_dword_le(demuxer->stream);
-		    mp_msg(MSGT_DEMUX,MSGL_V,"video: %.4s (%x)\n", (char *)&tmp, tmp);
-		    if (tmp != MKTAG('V', 'I', 'D', 'O'))
-		    {
-			mp_msg(MSGT_DEMUX, MSGL_ERR, "Not audio/video stream or unsupported!\n");
-			goto skip_this_chunk;
-		    }
-		    
 		    sh->format = stream_read_dword_le(demuxer->stream); /* fourcc */
 		    mp_msg(MSGT_DEMUX,MSGL_V,"video fourcc: %.4s (%x)\n", (char *)&sh->format, sh->format);
 
@@ -1126,6 +1136,9 @@
 			priv->last_v_stream++;
 		    }
 //	    	    priv->current_vid = stream_id;
+		}
+		else {
+		    mp_msg(MSGT_DEMUX, MSGL_ERR, "Not audio/video stream or unsupported!\n");
 		}
 //		break;
 //	    default:




More information about the MPlayer-cvslog mailing list