]> 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 bc5871d917335230737c5919718d22fa09c973d0..15b21ecfb096600e0acff04f3ba6b2031a6cc950 100644 (file)
@@ -1,35 +1,35 @@
 /*****************************************************************************
  * langfromtelx.c: dynamic language setting from telx
  *****************************************************************************
- * Copyright (C) 2009, 2011 VideoLAN
+ * Copyright © 2009-2011 VLC authors and VideoLAN
  * $Id$
  *
  * Authors: Christophe Massiot <massiot@via.ecp.fr>
  *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as published by
  * the Free Software Foundation; either version 2.1 of the License, or
  * (at your option) any later version.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
 
 /*****************************************************************************
  * Preamble
  *****************************************************************************/
-#include <ctype.h>
-
 #ifdef HAVE_CONFIG_H
 # include "config.h"
 #endif
 
+#include <ctype.h>
+
 #include <vlc_common.h>
 #include <vlc_plugin.h>
 #include <vlc_sout.h>
@@ -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 )
@@ -190,7 +192,7 @@ static void SetLanguage( sout_stream_t *p_stream, char *psz_language )
     if ( strncmp( p_sys->psz_language, psz_language, 3 ) )
         msg_Dbg( p_stream, "changing language to %s", psz_language );
 
-    strncpy( p_sys->psz_language, psz_language, 3 );
+    strncpy( p_sys->psz_language, (const char *)psz_language, 3 );
 }
 
 /*****************************************************************************
@@ -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;