[vlc-devel] [PATCH 06/18] mosaic bridge: implement SOUT_STREAM_IS_SYNCHRONOUS

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


---
 modules/stream_out/es.c            |  7 ++++---
 modules/stream_out/mosaic_bridge.c | 21 ++++++++++++++++++---
 2 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/modules/stream_out/es.c b/modules/stream_out/es.c
index f242d05434..dd4b0381bc 100644
--- a/modules/stream_out/es.c
+++ b/modules/stream_out/es.c
@@ -39,6 +39,7 @@ typedef struct
     int  i_count_audio;
     int  i_count_video;
     int  i_count;
+    unsigned int count_sync;
 
     char *psz_mux;
     char *psz_mux_audio;
@@ -237,13 +238,13 @@ static void *Add( sout_stream_t *p_stream, const es_format_t *p_fmt )
         return NULL;
     }
 
-    p_stream->p_sout->i_out_pace_nocontrol += id->synchronous;
+    p_sys->count_sync += id->synchronous;
     return id;
 }
 
 static void Del( sout_stream_t *p_stream, void *_id )
 {
-    VLC_UNUSED(p_stream);
+    sout_stream_sys_t *sys = p_stream->p_sys;
     sout_stream_id_sys_t *id = (sout_stream_id_sys_t *)_id;
     sout_access_out_t *p_access = id->p_mux->p_access;
 
@@ -251,7 +252,7 @@ static void Del( sout_stream_t *p_stream, void *_id )
     sout_MuxDelete( id->p_mux );
     sout_AccessOutDelete( p_access );
 
-    p_stream->p_sout->i_out_pace_nocontrol -= id->synchronous;
+    sys->count_sync -= id->synchronous;
     free( id );
 }
 
diff --git a/modules/stream_out/mosaic_bridge.c b/modules/stream_out/mosaic_bridge.c
index 2f3a0007d6..74e780566c 100644
--- a/modules/stream_out/mosaic_bridge.c
+++ b/modules/stream_out/mosaic_bridge.c
@@ -168,8 +168,25 @@ vlc_module_begin ()
     set_callbacks( Open, Close )
 vlc_module_end ()
 
+static int Control(sout_stream_t *stream, int query, va_list args)
+{
+    (void) stream;
+
+    switch (query)
+    {
+        case SOUT_STREAM_IS_SYNCHRONOUS:
+            *va_arg(args, bool *) = true;
+            break;
+
+        default:
+            return VLC_EGENERIC;
+    }
+
+    return VLC_SUCCESS;
+}
+
 static const struct sout_stream_operations ops = {
-    Add, Del, Send, NULL, NULL,
+    Add, Del, Send, Control, NULL,
 };
 
 static const char *const ppsz_sout_options[] = {
@@ -252,8 +269,6 @@ static int Open( vlc_object_t *p_this )
 #undef INT_COMMAND
 
     p_stream->ops = &ops;
-    p_stream->pace_nocontrol = true;
-
     return VLC_SUCCESS;
 }
 
-- 
2.28.0



More information about the vlc-devel mailing list