]> git.sesse.net Git - vlc/blobdiff - modules/stream_out/langfromtelx.c
sout: constify format parameter to sout_stream_t.pf_add
[vlc] / modules / stream_out / langfromtelx.c
index 7ba8e191bd68d88019d81c018002362e74dd1884..15b21ecfb096600e0acff04f3ba6b2031a6cc950 100644 (file)
@@ -84,15 +84,15 @@ static const char *ppsz_sout_options[] = {
     "id", "magazine", "page", "row", NULL
 };
 
-static sout_stream_id_t *Add   ( sout_stream_t *, es_format_t * );
-static int               Del   ( sout_stream_t *, sout_stream_id_t * );
-static int               Send  ( sout_stream_t *, sout_stream_id_t *, block_t * );
+static sout_stream_id_sys_t *Add   ( sout_stream_t *, es_format_t * );
+static void              Del   ( sout_stream_t *, sout_stream_id_sys_t * );
+static int               Send  ( sout_stream_t *, sout_stream_id_sys_t *, block_t * );
 
 struct sout_stream_sys_t
 {
     int i_id, i_magazine, i_page, i_row;
     char *psz_language, *psz_old_language;
-    sout_stream_id_t *p_id, *p_telx;
+    sout_stream_id_sys_t *p_id, *p_telx;
     int i_current_page;
 };
 
@@ -143,12 +143,16 @@ static void Close( vlc_object_t * p_this )
     free( p_sys );
 }
 
-static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt )
+static sout_stream_id_sys_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt )
 {
     sout_stream_sys_t *p_sys = (sout_stream_sys_t *)p_stream->p_sys;
+    sout_stream_id_sys_t *id;
+    es_format_t fmt;
 
     if ( p_fmt->i_id == p_sys->i_id )
     {
+        fmt = *p_fmt;
+
         p_sys->psz_old_language = p_fmt->psz_language;
         msg_Dbg( p_stream,
                  "changing language of ID %d (magazine %d page %x row %d)",
@@ -159,28 +163,26 @@ static sout_stream_id_t * Add( sout_stream_t *p_stream, es_format_t *p_fmt )
         else
             strcpy( p_fmt->psz_language, "unk" );
         p_fmt->psz_language[3] = '\0';
-
-        p_sys->p_id = p_stream->p_next->pf_add( p_stream->p_next, p_fmt );
-        return p_sys->p_id;
     }
 
-    if ( p_fmt->i_codec == VLC_CODEC_TELETEXT )
-    {
-        p_sys->p_telx = p_stream->p_next->pf_add( p_stream->p_next, p_fmt );
-        return p_sys->p_telx;
-    }
+    id = sout_StreamIdAdd( p_stream->p_next, p_fmt );
+
+    if( p_fmt->i_id == p_sys->i_id )
+        p_sys->p_id = id;
+    if( p_fmt->i_codec == VLC_CODEC_TELETEXT )
+        p_sys->p_telx = id;
 
-    return p_stream->p_next->pf_add( p_stream->p_next, p_fmt );
+    return id;
 }
 
-static int Del( sout_stream_t *p_stream, sout_stream_id_t *id )
+static void Del( sout_stream_t *p_stream, sout_stream_id_sys_t *id )
 {
     sout_stream_sys_t *p_sys = (sout_stream_sys_t *)p_stream->p_sys;
 
     if ( id == p_sys->p_id ) p_sys->p_id = NULL;
     if ( id == p_sys->p_telx ) p_sys->p_telx = NULL;
 
-    return p_stream->p_next->pf_del( p_stream->p_next, id );
+    p_stream->p_next->pf_del( p_stream->p_next, id );
 }
 
 static void SetLanguage( sout_stream_t *p_stream, char *psz_language )
@@ -303,7 +305,7 @@ static void HandleTelx( sout_stream_t *p_stream, block_t *p_block )
 /*****************************************************************************
  * Send:
  *****************************************************************************/
-static int Send( sout_stream_t *p_stream, sout_stream_id_t *id,
+static int Send( sout_stream_t *p_stream, sout_stream_id_sys_t *id,
                  block_t *p_buffer )
 {
     sout_stream_sys_t *p_sys = (sout_stream_sys_t *)p_stream->p_sys;