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 );
}
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;
}