From dbed81f7290fcab29ec4f468a793b78f8a61c80b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net> Date: Sat, 10 Oct 2020 21:51:51 +0300 Subject: [PATCH] sout: pass instance to sout_Input*() functions The caller has to have the instance, so let it provide it. This follows the same pattern as the es_out_*() functions: taking both the es_out_t and the es_out_id_t pointers. --- src/input/decoder.c | 14 ++++++++------ src/stream_output/stream_output.c | 23 ++++++++++++----------- src/stream_output/stream_output.h | 10 ++++++---- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/src/input/decoder.c b/src/input/decoder.c index 19b17dda0e3d..793c7e687f9b 100644 --- a/src/input/decoder.c +++ b/src/input/decoder.c @@ -828,7 +828,8 @@ static int DecoderThread_PlaySout( vlc_input_decoder_t *p_owner, block_t *p_sout vlc_mutex_unlock( &p_owner->lock ); /* FIXME --VLC_TICK_INVALID inspect stream_output*/ - return sout_InputSendBuffer( p_owner->p_sout_input, p_sout_block ); + return sout_InputSendBuffer( p_owner->p_sout, p_owner->p_sout_input, + p_sout_block ); } /* This function process a block for sout @@ -901,7 +902,7 @@ static void DecoderThread_ProcessSout( vlc_input_decoder_t *p_owner, block_t *p_ } if( !p_owner->cc.p_sout_input || - sout_InputSendBuffer( p_owner->cc.p_sout_input, p_cc ) ) + sout_InputSendBuffer( p_owner->p_sout, p_owner->cc.p_sout_input, p_cc ) ) { block_Release( p_cc ); } @@ -1453,7 +1454,7 @@ static void DecoderThread_Flush( vlc_input_decoder_t *p_owner ) #ifdef ENABLE_SOUT if ( p_owner->p_sout_input != NULL ) { - sout_InputFlush( p_owner->p_sout_input ); + sout_InputFlush( p_owner->p_sout, p_owner->p_sout_input ); } #endif if( p_dec->fmt_out.i_cat == AUDIO_ES ) @@ -1928,9 +1929,9 @@ static void DeleteDecoder( vlc_input_decoder_t *p_owner ) #ifdef ENABLE_SOUT if( p_owner->p_sout_input ) { - sout_InputDelete( p_owner->p_sout_input ); + sout_InputDelete( p_owner->p_sout, p_owner->p_sout_input ); if( p_owner->cc.p_sout_input ) - sout_InputDelete( p_owner->cc.p_sout_input ); + sout_InputDelete( p_owner->p_sout, p_owner->cc.p_sout_input ); } #endif @@ -2625,7 +2626,8 @@ int vlc_input_decoder_SetSpuHighlight( vlc_input_decoder_t *p_owner, #ifdef ENABLE_SOUT if( p_owner->p_sout_input ) - sout_InputControl( p_owner->p_sout_input, SOUT_INPUT_SET_SPU_HIGHLIGHT, spu_hl ); + sout_InputControl( p_owner->p_sout, p_owner->p_sout_input, + SOUT_INPUT_SET_SPU_HIGHLIGHT, spu_hl ); #endif vlc_mutex_lock( &p_owner->lock ); diff --git a/src/stream_output/stream_output.c b/src/stream_output/stream_output.c index 5dcc327c0f08..a5af737eacbf 100644 --- a/src/stream_output/stream_output.c +++ b/src/stream_output/stream_output.c @@ -194,9 +194,9 @@ sout_packetizer_input_t *sout_InputNew( sout_instance_t *p_sout, /***************************************************************************** * *****************************************************************************/ -int sout_InputDelete( sout_packetizer_input_t *p_input ) +int sout_InputDelete( sout_instance_t *p_sout, + sout_packetizer_input_t *p_input ) { - sout_instance_t *p_sout = p_input->p_sout; msg_Dbg(p_sout->p_stream, "removing an output ES (%p)", (void *)p_input); @@ -209,9 +209,10 @@ int sout_InputDelete( sout_packetizer_input_t *p_input ) return( VLC_SUCCESS); } -static int sout_InputControlVa( sout_packetizer_input_t *p_input, int i_query, va_list args ) +static int sout_InputControlVa( sout_instance_t *p_sout, + sout_packetizer_input_t *p_input, + int i_query, va_list args ) { - sout_instance_t *p_sout = p_input->p_sout; if( i_query == SOUT_INPUT_SET_SPU_HIGHLIGHT ) { vlc_mutex_lock( &p_sout->lock ); @@ -224,21 +225,21 @@ static int sout_InputControlVa( sout_packetizer_input_t *p_input, int i_query, v return VLC_EGENERIC; } -int sout_InputControl( sout_packetizer_input_t *p_input, int i_query, ... ) +int sout_InputControl( sout_instance_t *p_sout, + sout_packetizer_input_t *p_input, int i_query, ... ) { va_list args; int i_result; va_start( args, i_query ); - i_result = sout_InputControlVa( p_input, i_query, args ); + i_result = sout_InputControlVa( p_sout, p_input, i_query, args ); va_end( args ); return i_result; } -void sout_InputFlush( sout_packetizer_input_t *p_input ) +void sout_InputFlush( sout_instance_t *p_sout, + sout_packetizer_input_t *p_input ) { - sout_instance_t *p_sout = p_input->p_sout; - vlc_mutex_lock( &p_sout->lock ); sout_StreamFlush( p_sout->p_stream, p_input->id ); vlc_mutex_unlock( &p_sout->lock ); @@ -248,10 +249,10 @@ void sout_InputFlush( sout_packetizer_input_t *p_input ) /***************************************************************************** * *****************************************************************************/ -int sout_InputSendBuffer( sout_packetizer_input_t *p_input, +int sout_InputSendBuffer( sout_instance_t *p_sout, + sout_packetizer_input_t *p_input, block_t *p_buffer ) { - sout_instance_t *p_sout = p_input->p_sout; int i_ret; if( p_input->b_flushed ) diff --git a/src/stream_output/stream_output.h b/src/stream_output/stream_output.h index 0260165ba4e9..9bee89824db4 100644 --- a/src/stream_output/stream_output.h +++ b/src/stream_output/stream_output.h @@ -58,14 +58,16 @@ void sout_DeleteInstance( sout_instance_t * ); bool sout_instance_ControlsPace( sout_instance_t *sout ); sout_packetizer_input_t *sout_InputNew( sout_instance_t *, const es_format_t * ); -int sout_InputDelete( sout_packetizer_input_t * ); -int sout_InputSendBuffer( sout_packetizer_input_t *, block_t* ); +int sout_InputDelete( sout_instance_t *, sout_packetizer_input_t * ); +int sout_InputSendBuffer( sout_instance_t *, sout_packetizer_input_t *, + block_t * ); enum sout_input_query_e { SOUT_INPUT_SET_SPU_HIGHLIGHT, /* arg1=const vlc_spu_highlight_t *, can fail */ }; -int sout_InputControl( sout_packetizer_input_t *, int i_query, ... ); -void sout_InputFlush( sout_packetizer_input_t * ); +int sout_InputControl( sout_instance_t *, sout_packetizer_input_t *, + int i_query, ... ); +void sout_InputFlush( sout_instance_t *, sout_packetizer_input_t * ); #endif -- GitLab