]> git.sesse.net Git - vlc/commitdiff
* modules/stream_out/bridge.c: Miscellaneous fixes to avoid late packets.
authorChristophe Massiot <massiot@videolan.org>
Tue, 7 Jun 2005 16:39:32 +0000 (16:39 +0000)
committerChristophe Massiot <massiot@videolan.org>
Tue, 7 Jun 2005 16:39:32 +0000 (16:39 +0000)
modules/stream_out/bridge.c

index 0f949c3630268e9b37dd144bf1ae1078b8cf02d6..b5f9d45f0ed635730fe286ecf9d9011fc799b924 100644 (file)
@@ -427,13 +427,14 @@ static int SendIn( sout_stream_t *p_stream, sout_stream_id_t *id,
             b_no_es = VLC_FALSE;
 
         while ( p_bridge->pp_es[i]->p_block != NULL
-                 && (p_bridge->pp_es[i]->p_block->i_dts < mdate()
+                 && (p_bridge->pp_es[i]->p_block->i_dts + p_sys->i_delay
+                       < mdate()
                       || p_bridge->pp_es[i]->p_block->i_dts + p_sys->i_delay
                           < p_bridge->pp_es[i]->i_last) )
         {
             block_t *p_block = p_bridge->pp_es[i]->p_block;
             msg_Dbg( p_stream, "dropping a packet (" I64Fd ")",
-                     p_bridge->pp_es[i]->i_last - p_block->i_dts );
+                     mdate() - p_block->i_dts - p_sys->i_delay );
             p_bridge->pp_es[i]->p_block
                 = p_bridge->pp_es[i]->p_block->p_next;
             block_Release( p_block );
@@ -452,7 +453,9 @@ static int SendIn( sout_stream_t *p_stream, sout_stream_id_t *id,
             }
             else
             {
-                if ( p_bridge->pp_es[i]->p_block == NULL )
+                /* We need at least two packets to enter the mux. */
+                if ( p_bridge->pp_es[i]->p_block == NULL
+                      || p_bridge->pp_es[i]->p_block->p_next == NULL )
                 {
                     continue;
                 }