* udp.c
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: udp.c,v 1.23 2004/03/03 20:39:51 gbazin Exp $
+ * $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org>
int i_handle;
int64_t i_caching;
+ int64_t i_late;
int i_group;
} sout_access_thread_t;
p_sys->p_thread->i_group = atoi( psz_val );
}
+ p_sys->p_thread->i_late = 0;
+ if( ( psz_val = sout_cfg_find_value( p_access->p_cfg, "late" ) ) )
+ {
+ p_sys->p_thread->i_late = atoll( psz_val ) * 1000;
+ }
+
+
p_sys->i_mtu = socket_desc.i_mtu;
#ifdef WIN32
msg_Info( p_access, "Open: addr:`%s' port:`%d'", psz_dst_addr, i_dst_port);
free( psz_dst_addr );
+
+ /* update p_sout->i_out_pace_nocontrol */
+ p_access->p_sout->i_out_pace_nocontrol++;
+
return VLC_SUCCESS;
}
sout_BufferDelete( p_access->p_sout, p_sys->p_buffer );
}
-#if defined( UNDER_CE )
- CloseHandle( (HANDLE)p_sys->p_thread->i_handle );
-#elif defined( WIN32 )
- closesocket( p_sys->p_thread->i_handle );
-#else
- close( p_sys->p_thread->i_handle );
-#endif
+ net_Close( p_sys->p_thread->i_handle );
+
+ /* update p_sout->i_out_pace_nocontrol */
+ p_access->p_sout->i_out_pace_nocontrol--;
free( p_sys );
msg_Info( p_access, "Close" );
}
i_sent = mdate();
- if ( i_sent > i_date + 100000 )
+ if( p_thread->i_late > 0 && i_sent > i_date + p_thread->i_late )
{
if( !i_dropped_packets )
+ {
msg_Dbg( p_thread, "late packet to send (" I64Fd ") -> drop",
i_sent - i_date );
+ }
sout_BufferDelete( p_sout, p_pk );
i_date_last = i_date;
i_dropped_packets++;