]> git.sesse.net Git - vlc/commitdiff
Fix demuxdump to work with RTP input, which would dump garbage when RTP
authorMarian Ďurkovič <md@bts.sk>
Fri, 4 Sep 2009 09:36:47 +0000 (11:36 +0200)
committerJP Dinger <jpd@videolan.org>
Fri, 4 Sep 2009 10:10:00 +0000 (12:10 +0200)
input is used. When stream_Read was used alone, it read 1316 bytes from
the RTP input add added garbage upto DUMP_BLOCKSIZE. With stream_Peek it
works as expected and also makes the whole demuxdump faster.

Signed-off-by: JP Dinger <jpd@videolan.org>
modules/demux/demuxdump.c

index 340457707eccc872388eb893c51d94f26a9adecc..0a97bf45b65f7d6a48c63e861258be593740ebe4 100644 (file)
@@ -77,8 +77,6 @@ struct demux_sys_t
     char        *psz_file;
     FILE        *p_file;
     uint64_t    i_write;
-
-    uint8_t     buffer[DUMP_BLOCKSIZE];
 };
 
 /*
@@ -173,14 +171,14 @@ static int Demux( demux_t *p_demux )
 {
     demux_sys_t *p_sys = p_demux->p_sys;
 
+    const uint8_t *p_peek;
     int i_data;
 
-    /* I'm pretty sure that stream_Peek,stream_Read( , NULL ) would be faster*/
-    i_data = stream_Read( p_demux->s, p_sys->buffer, DUMP_BLOCKSIZE );
+    i_data = stream_Peek( p_demux->s, &p_peek, DUMP_BLOCKSIZE );
     if ( i_data <= 0 )
         return i_data;
 
-    i_data = fwrite( p_sys->buffer, 1, i_data, p_sys->p_file );
+    i_data = fwrite( p_peek, 1, i_data, p_sys->p_file );
 
     if( i_data == 0 )
     {
@@ -191,6 +189,7 @@ static int Demux( demux_t *p_demux )
     msg_Dbg( p_demux, "dumped %d bytes", i_data );
 #endif
 
+    stream_Read( p_demux->s, NULL, i_data );
     p_sys->i_write += i_data;
 
     return 1;