X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fdemux%2Favformat%2Fmux.c;h=1c75c26edddae2a850e775cb9cb0c23add556345;hb=160b9b62c03107027d7899d754a52efb9ea6c7b9;hp=54a79e040b70b3f522a4376d73ec1b44fe8ca7f5;hpb=17b5ee09d8f74c1e0a7d1d6c1610b6078075ac3b;p=vlc diff --git a/modules/demux/avformat/mux.c b/modules/demux/avformat/mux.c index 54a79e040b..1c75c26edd 100644 --- a/modules/demux/avformat/mux.c +++ b/modules/demux/avformat/mux.c @@ -303,44 +303,6 @@ static int DelStream( sout_mux_t *p_mux, sout_input_t *p_input ) return VLC_SUCCESS; } -/* - * TODO move this function to src/stream_output.c (used by nearly all muxers) - */ -static int MuxGetStream( sout_mux_t *p_mux, int *pi_stream, mtime_t *pi_dts ) -{ - mtime_t i_dts; - int i_stream, i; - - for( i = 0, i_dts = 0, i_stream = -1; i < p_mux->i_nb_inputs; i++ ) - { - block_fifo_t *p_fifo; - - p_fifo = p_mux->pp_inputs[i]->p_fifo; - - /* We don't really need to have anything in the SPU fifo */ - if( p_mux->pp_inputs[i]->p_fmt->i_cat == SPU_ES && - block_FifoCount( p_fifo ) == 0 ) continue; - - if( block_FifoCount( p_fifo ) ) - { - block_t *p_buf; - - p_buf = block_FifoShow( p_fifo ); - if( i_stream < 0 || p_buf->i_dts < i_dts ) - { - i_dts = p_buf->i_dts; - i_stream = i; - } - } - else return -1; - - } - if( pi_stream ) *pi_stream = i_stream; - if( pi_dts ) *pi_dts = i_dts; - if( !p_mux->p_sys->i_initial_dts ) p_mux->p_sys->i_initial_dts = i_dts; - return i_stream; -} - static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input ) { sout_mux_sys_t *p_sys = p_mux->p_sys; @@ -392,7 +354,6 @@ static int MuxBlock( sout_mux_t *p_mux, sout_input_t *p_input ) static int Mux( sout_mux_t *p_mux ) { sout_mux_sys_t *p_sys = p_mux->p_sys; - int i_stream; if( p_sys->b_error ) return VLC_EGENERIC; @@ -418,7 +379,15 @@ static int Mux( sout_mux_t *p_mux ) for( ;; ) { - if( MuxGetStream( p_mux, &i_stream, 0 ) < 0 ) return VLC_SUCCESS; + mtime_t i_dts; + + int i_stream = sout_MuxGetStream( p_mux, 1, &i_dts ); + if( i_stream < 0 ) + return VLC_SUCCESS; + + if( !p_mux->p_sys->i_initial_dts ) + p_mux->p_sys->i_initial_dts = i_dts; + MuxBlock( p_mux, p_mux->pp_inputs[i_stream] ); }