[vlc-devel] [PATCH 4/9] input: add input_resource_PutSout()

remi at remlab.net remi at remlab.net
Tue Jan 19 18:21:09 UTC 2021


From: RĂ©mi Denis-Courmont <remi at remlab.net>

This mimicks input_resource_PutVout(), except in the case that the
second parameter is NULL:
- PutVout() asserts that that is not the case.
- PutSout() destroys the resource sout.
It is unclear if this is really intended. If not, this should be
addressed later on (this patch makes no functional changes).
---
 src/input/input.c    | 12 ++++++------
 src/input/resource.c |  7 +++++++
 src/input/resource.h |  1 +
 3 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/src/input/input.c b/src/input/input.c
index 08d5300d7d..4ac78a14c6 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -1356,8 +1356,8 @@ error:
     if( input_priv(p_input)->p_resource )
     {
         if( input_priv(p_input)->p_sout )
-            input_resource_RequestSout( input_priv(p_input)->p_resource,
-                                         input_priv(p_input)->p_sout, NULL );
+            input_resource_PutSout( input_priv(p_input)->p_resource,
+                                    input_priv(p_input)->p_sout );
         input_resource_SetInput( input_priv(p_input)->p_resource, NULL );
         if( input_priv(p_input)->p_resource )
         {
@@ -1424,8 +1424,8 @@ static void End( input_thread_t * p_input )
     vlc_mutex_unlock( &input_priv(p_input)->p_item->lock );
 
     /* */
-    input_resource_RequestSout( input_priv(p_input)->p_resource,
-                                 input_priv(p_input)->p_sout, NULL );
+    input_resource_PutSout( input_priv(p_input)->p_resource,
+                            input_priv(p_input)->p_sout );
     input_resource_SetInput( input_priv(p_input)->p_resource, NULL );
     if( input_priv(p_input)->p_resource )
     {
@@ -1797,8 +1797,8 @@ static void ControlUpdateRenderer( input_thread_t *p_input, bool b_enable )
     }
     else
     {
-        input_resource_RequestSout( input_priv(p_input)->p_resource,
-                                    input_priv(p_input)->p_sout, NULL );
+        input_resource_PutSout( input_priv(p_input)->p_resource,
+                                input_priv(p_input)->p_sout );
         input_priv(p_input)->p_sout = NULL;
     }
 }
diff --git a/src/input/resource.c b/src/input/resource.c
index 044fb8b7e5..8c16802452 100644
--- a/src/input/resource.c
+++ b/src/input/resource.c
@@ -630,6 +630,13 @@ sout_instance_t *input_resource_RequestSout( input_resource_t *p_resource, sout_
     return p_ret;
 }
 
+void input_resource_PutSout(input_resource_t *resource, sout_instance_t *sout)
+{
+    vlc_mutex_lock(&resource->lock);
+    RequestSout(resource, sout, NULL);
+    vlc_mutex_unlock(&resource->lock);
+}
+
 void input_resource_TerminateSout( input_resource_t *p_resource )
 {
     vlc_mutex_lock( &p_resource->lock );
diff --git a/src/input/resource.h b/src/input/resource.h
index f6f3b4be60..66fdf997f8 100644
--- a/src/input/resource.h
+++ b/src/input/resource.h
@@ -36,6 +36,7 @@ void input_resource_SetInput( input_resource_t *, input_thread_t * );
  * This function handles sout request.
  */
 sout_instance_t *input_resource_RequestSout( input_resource_t *, sout_instance_t *, const char *psz_sout );
+void input_resource_PutSout(input_resource_t *, sout_instance_t *);
 
 vout_thread_t *input_resource_RequestVout(input_resource_t *, vlc_video_context *,
                                          const vout_configuration_t *,
-- 
2.30.0



More information about the vlc-devel mailing list