[vlc-devel] [PATCH 29/30] sout: pass instance to sout_Input*() functions

RĂ©mi Denis-Courmont remi at remlab.net
Sat Oct 10 21:14:14 CEST 2020


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 19b17dda0e..793c7e687f 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 5dcc327c0f..a5af737eac 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 0260165ba4..9bee89824d 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
-- 
2.28.0



More information about the vlc-devel mailing list