diff --git a/include/vlc_sout.h b/include/vlc_sout.h index 0569e288ff..9523999fca 100644 --- a/include/vlc_sout.h +++ b/include/vlc_sout.h @@ -175,6 +175,7 @@ VLC_API void sout_MuxDeleteStream( sout_mux_t *, sout_input_t * ); VLC_API void sout_MuxDelete( sout_mux_t * ); VLC_API int sout_MuxSendBuffer( sout_mux_t *, sout_input_t *, block_t * ); VLC_API int sout_MuxGetStream(sout_mux_t *, unsigned, mtime_t *); +VLC_API void sout_MuxFlush( sout_mux_t *, sout_input_t * ); static inline int sout_MuxControl( sout_mux_t *p_mux, int i_query, ... ) { diff --git a/modules/stream_out/standard.c b/modules/stream_out/standard.c index c86adf910d..e8805ba249 100644 --- a/modules/stream_out/standard.c +++ b/modules/stream_out/standard.c @@ -143,6 +143,12 @@ static int Send( sout_stream_t *p_stream, sout_stream_id_sys_t *id, { return sout_MuxSendBuffer( p_stream->p_sys->p_mux, (sout_input_t*)id, p_buffer ); } + +static void Flush( sout_stream_t *p_stream, sout_stream_id_sys_t *id ) +{ + sout_MuxFlush( p_stream->p_sys->p_mux, (sout_input_t*)id ); +} + static void create_SDP(sout_stream_t *p_stream, sout_access_out_t *p_access) { sout_stream_sys_t *p_sys = p_stream->p_sys; @@ -405,6 +411,7 @@ static int Open( vlc_object_t *p_this ) p_stream->pf_add = Add; p_stream->pf_del = Del; p_stream->pf_send = Send; + p_stream->pf_flush = Flush; if( !sout_AccessOutCanControlPace( p_access ) ) p_stream->pace_nocontrol = true; diff --git a/src/libvlccore.sym b/src/libvlccore.sym index 432ff07a6e..43b1ba0839 100644 --- a/src/libvlccore.sym +++ b/src/libvlccore.sym @@ -384,6 +384,7 @@ sout_MuxDeleteStream sout_MuxGetStream sout_MuxNew sout_MuxSendBuffer +sout_MuxFlush sout_StreamChainDelete sout_StreamChainNew spu_Create diff --git a/src/stream_output/stream_output.c b/src/stream_output/stream_output.c index c20f3f1c05..bc3c5024de 100644 --- a/src/stream_output/stream_output.c +++ b/src/stream_output/stream_output.c @@ -562,6 +562,11 @@ int sout_MuxSendBuffer( sout_mux_t *p_mux, sout_input_t *p_input, return p_mux->pf_mux( p_mux ); } +void sout_MuxFlush( sout_mux_t *p_mux, sout_input_t *p_input ) +{ + VLC_UNUSED(p_mux); + block_FifoEmpty( p_input->p_fifo ); +} /***************************************************************************** * sout_MuxGetStream: find stream to be muxed