*
* 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
+ * 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 Lesser General Public License
/*****************************************************************************
* 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>
"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;
};
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)",
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 )
/*****************************************************************************
* 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;