[vlc-commits] demux: merge single program into list
    Rémi Denis-Courmont 
    git at videolan.org
       
    Sun Jun 10 12:10:45 CEST 2018
    
    
  
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sat Jun  9 12:04:12 2018 +0300| [90b1145a727ae284fc36e32416f3afcd4516320f] | committer: Rémi Denis-Courmont
demux: merge single program into list
So far, DEMUX_SET_GROUP accepts four different prototypes of sorts:
*  0, dummy: select the default program
* -1, NULL:  select all progams
* -1, &list: select programs in list
*  i, dummy: select program i
This patch folds the last case into the third one: a single program is
a list one of program.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=90b1145a727ae284fc36e32416f3afcd4516320f
---
 src/input/input.c | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/src/input/input.c b/src/input/input.c
index 7d9314ce8b..4d49ba21ec 100644
--- a/src/input/input.c
+++ b/src/input/input.c
@@ -1269,8 +1269,18 @@ static void InitPrograms( input_thread_t * p_input )
     }
     else
     {
-        demux_Control( input_priv(p_input)->master->p_demux, DEMUX_SET_GROUP,
-                       es_out_GetGroupForced( input_priv(p_input)->p_es_out ), NULL );
+        int program = es_out_GetGroupForced( input_priv(p_input)->p_es_out );
+        if( program == 0 )
+            demux_Control( input_priv(p_input)->master->p_demux,
+                           DEMUX_SET_GROUP, 0, NULL );
+        else
+        {
+            vlc_value_t val = { .i_int = program };
+            list.i_count = 1, list.p_values = &val;
+
+            demux_Control( input_priv(p_input)->master->p_demux,
+                           DEMUX_SET_GROUP, -1, &list );
+        }
     }
 }
 
@@ -2015,8 +2025,16 @@ static bool Control( input_thread_t *p_input,
             es_out_Control( input_priv(p_input)->p_es_out,
                             ES_OUT_SET_GROUP, val.i_int );
 
-            demux_Control( input_priv(p_input)->master->p_demux, DEMUX_SET_GROUP, val.i_int,
-                            NULL );
+            if( val.i_int == 0 )
+                demux_Control( input_priv(p_input)->master->p_demux,
+                               DEMUX_SET_GROUP, 0, NULL );
+            else
+            {
+                vlc_list_t list = { .i_count = 1, list.p_values = &val };
+
+                demux_Control( input_priv(p_input)->master->p_demux,
+                               DEMUX_SET_GROUP, -1, &list );
+            }
             break;
 
         case INPUT_CONTROL_SET_ES:
    
    
More information about the vlc-commits
mailing list