* ts.c: MPEG-II TS Muxer
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
- * $Id: ts.c,v 1.30 2003/08/26 00:52:38 fenrir Exp $
+ * $Id: ts.c,v 1.31 2003/08/26 01:04:29 fenrir Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org>
ts_stream_t *p_pcr_stream = (ts_stream_t*)p_sys->p_pcr_input->p_sys;
ts_stream_t *p_stream = (ts_stream_t*)p_input->p_sys;
- mtime_t i_dts, i_dts_next,i_length;
- sout_buffer_t *p_data, *p_next;
+ mtime_t i_dts, i_length;
+ sout_buffer_t *p_data;
vlc_bool_t b_pcr = VLC_FALSE;
vlc_bool_t b_pcr_soft = VLC_FALSE;
/* We need more data */
return VLC_EGENERIC;
}
- else
+ else if( p_input->p_fifo->i_depth <= 0 )
{
+ /* spu, only one packet is needed */
return VLC_SUCCESS;
}
}
i_dts = p_data->i_dts;
i_length = p_data->i_length;
- p_next = sout_FifoShow( p_input->p_fifo );
- i_dts_next = p_next->i_dts;
-
if( p_stream->i_pid == p_pcr_stream->i_pid &&
p_stream->chain_ts.p_first == NULL )
{
/* I need that length == dts_next - dts, but be carefull if
* some dts are broken length >= 0.5s are suspicious */
+ sout_buffer_t *p_next;
+ mtime_t i_dts_next;
+
+ p_next = sout_FifoShow( p_input->p_fifo );
+ i_dts_next = p_next->i_dts;
+
if( i_dts_next > i_dts &&
i_dts_next - i_dts < (mtime_t)500000 )
{