[vlc-commits] autodel: use vlc_list

Rémi Denis-Courmont git at videolan.org
Sun Oct 11 20:47:20 CEST 2020


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Sun Oct 11 21:39:17 2020 +0300| [6ea3a011225899e1b85dd391d54aa216b191f8dc] | committer: Rémi Denis-Courmont

autodel: use vlc_list

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=6ea3a011225899e1b85dd391d54aa216b191f8dc
---

 modules/stream_out/autodel.c | 31 ++++++++++++-------------------
 1 file changed, 12 insertions(+), 19 deletions(-)

diff --git a/modules/stream_out/autodel.c b/modules/stream_out/autodel.c
index 6c4ce40c60..046217544d 100644
--- a/modules/stream_out/autodel.c
+++ b/modules/stream_out/autodel.c
@@ -32,6 +32,7 @@
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
 #include <vlc_block.h>
+#include <vlc_list.h>
 
 typedef struct sout_stream_id_sys_t sout_stream_id_sys_t;
 struct sout_stream_id_sys_t
@@ -40,12 +41,12 @@ struct sout_stream_id_sys_t
     es_format_t fmt;
     vlc_tick_t i_last;
     bool b_error;
+    struct vlc_list node;
 };
 
 typedef struct
 {
-    sout_stream_id_sys_t **pp_es;
-    int i_es_num;
+    struct vlc_list ids;
 } sout_stream_sys_t;
 
 static void *Add( sout_stream_t *p_stream, const es_format_t *p_fmt )
@@ -60,20 +61,18 @@ static void *Add( sout_stream_t *p_stream, const es_format_t *p_fmt )
     p_es->id = NULL;
     p_es->i_last = VLC_TICK_INVALID;
     p_es->b_error = false;
-    TAB_APPEND( p_sys->i_es_num, p_sys->pp_es, p_es );
-
+    vlc_list_append(&p_es->node, &p_sys->ids);
     return p_es;
 }
 
 static void Del( sout_stream_t *p_stream, void *_p_es )
 {
-    sout_stream_sys_t *p_sys = (sout_stream_sys_t *)p_stream->p_sys;
     sout_stream_id_sys_t *p_es = (sout_stream_id_sys_t *)_p_es;
 
     if( p_es->id != NULL )
         sout_StreamIdDel( p_stream->p_next, p_es->id );
 
-    TAB_REMOVE( p_sys->i_es_num, p_sys->pp_es, p_es );
+    vlc_list_remove(&p_es->node);
     es_format_Clean( &p_es->fmt );
     free( p_es );
 }
@@ -83,7 +82,6 @@ static int Send( sout_stream_t *p_stream, void *_p_es, block_t *p_buffer )
     sout_stream_sys_t *p_sys = (sout_stream_sys_t *)p_stream->p_sys;
     sout_stream_id_sys_t *p_es = (sout_stream_id_sys_t *)_p_es;
     vlc_tick_t i_current = vlc_tick_now();
-    int i;
 
     p_es->i_last = p_buffer->i_dts;
     if ( !p_es->id && !p_es->b_error )
@@ -102,17 +100,14 @@ static int Send( sout_stream_t *p_stream, void *_p_es, block_t *p_buffer )
     else
         block_ChainRelease( p_buffer );
 
-    for ( i = 0; i < p_sys->i_es_num; i++ )
-    {
-        if ( p_sys->pp_es[i]->id != NULL
-              && (p_sys->pp_es[i]->fmt.i_cat == VIDEO_ES
-                   || p_sys->pp_es[i]->fmt.i_cat == AUDIO_ES)
-              && p_sys->pp_es[i]->i_last < i_current )
+    vlc_list_foreach (p_es, &p_sys->ids, node)
+        if (p_es->id != NULL
+         && (p_es->fmt.i_cat == VIDEO_ES || p_es->fmt.i_cat == AUDIO_ES)
+         && p_es->i_last < i_current)
         {
-            sout_StreamIdDel( p_stream->p_next, p_sys->pp_es[i]->id );
-            p_sys->pp_es[i]->id = NULL;
+            sout_StreamIdDel(p_stream->p_next, p_es->id);
+            p_es->id = NULL;
         }
-    }
 
     return VLC_SUCCESS;
 }
@@ -129,9 +124,7 @@ static int Open( vlc_object_t *p_this )
     if (unlikely(p_sys == NULL))
         return VLC_ENOMEM;
 
-    p_sys->pp_es = NULL;
-    p_sys->i_es_num = 0;
-
+    vlc_list_init(&p_sys->ids);
     p_stream->ops = &ops;
     p_stream->p_sys = p_sys;
 



More information about the vlc-commits mailing list