/*****************************************************************************
* standard.c: standard stream output module
*****************************************************************************
- * Copyright (C) 2003-2004 VideoLAN
+ * Copyright (C) 2003-2004 the VideoLAN team
* $Id$
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*****************************************************************************/
#include <stdlib.h>
#include <string.h>
-#include <unistd.h>
#include <vlc/vlc.h>
#include <vlc/sout.h>
+#ifdef HAVE_UNISTD_H
+# include <unistd.h>
+#endif
+
#include "announce.h"
#include "network.h"
#define NAME_LONGTEXT N_( \
"Name of the session that will be announced with SAP or SLP" )
+#define GROUP_TEXT N_("Session groupname")
+#define GROUP_LONGTEXT N_( \
+ "Name of the group that will be announced for the session" )
+
#define SAP_TEXT N_("SAP announcing")
#define SAP_LONGTEXT N_("Announce this session with SAP")
-#define SAPv6_TEXT N_("SAP IPv6 announcing")
-#define SAPv6_LONGTEXT N_("Use IPv6 to announce this session with SAP")
-
#define SLP_TEXT N_("SLP announcing")
#define SLP_LONGTEXT N_("Announce this session with SLP")
#define SOUT_CFG_PREFIX "sout-standard-"
vlc_module_begin();
+ set_shortname( _("Standard"));
set_description( _("Standard stream output") );
set_capability( "sout stream", 50 );
add_shortcut( "standard" );
add_shortcut( "std" );
+ set_category( CAT_SOUT );
+ set_subcategory( SUBCAT_SOUT_STREAM );
add_string( SOUT_CFG_PREFIX "access", "", NULL, ACCESS_TEXT,
ACCESS_LONGTEXT, VLC_FALSE );
URL_LONGTEXT, VLC_FALSE );
add_bool( SOUT_CFG_PREFIX "sap", 0, NULL, SAP_TEXT, SAP_LONGTEXT, VLC_TRUE );
- add_string( SOUT_CFG_PREFIX "name", "", NULL, NAME_TEXT,NAME_LONGTEXT
- , VLC_TRUE );
- add_bool( SOUT_CFG_PREFIX "sap-ipv6", 0, NULL, SAPv6_TEXT, SAPv6_LONGTEXT,
+ add_string( SOUT_CFG_PREFIX "name", "", NULL, NAME_TEXT, NAME_LONGTEXT,
VLC_TRUE );
+ add_string( SOUT_CFG_PREFIX "group", "", NULL, GROUP_TEXT, GROUP_LONGTEXT,
+ VLC_TRUE );
+ add_suppressed_bool( SOUT_CFG_PREFIX "sap-ipv6" );
add_bool( SOUT_CFG_PREFIX "slp", 0, NULL, SLP_TEXT, SLP_LONGTEXT, VLC_TRUE );
*****************************************************************************/
static const char *ppsz_sout_options[] = {
"access", "mux", "url",
- "sap", "name", "sap-ipv6",
- "slp",NULL
+ "sap", "name", "group", "slp", NULL
};
-#define DEFAULT_IPV6_SCOPE '8'
#define DEFAULT_PORT 1234
static sout_stream_id_t *Add ( sout_stream_t *, es_format_t * );
}
}
- /* fix or warm of incompatible couple */
+ /* fix or warn of incompatible couple */
if( psz_mux && psz_access )
{
if( !strncmp( psz_access, "mmsh", 4 ) &&
var_Get( p_stream, SOUT_CFG_PREFIX "name", &val );
if( *val.psz_string )
{
- p_session->psz_name = val.psz_string;
+ p_session->psz_name = strdup( val.psz_string );
}
else
{
- free( val.psz_string );
p_session->psz_name = strdup( psz_url );
}
- var_Get( p_stream, SOUT_CFG_PREFIX "sap-ipv6", &val );
- p_method->i_ip_version = val.b_bool ? 6 : 4;
+ free( val.psz_string );
+
+ var_Get( p_stream, SOUT_CFG_PREFIX "group", &val );
+ if( *val.psz_string )
+ {
+ p_session->psz_group = strdup( val.psz_string );
+ }
+ free( val.psz_string );
/* Now, parse the URL to extract host and port */
vlc_UrlParse( &url, psz_url , 0);
{
if( url.i_port == 0 ) url.i_port = DEFAULT_PORT;
- p_session->psz_uri = url.psz_host;
+ p_session->psz_uri = strdup( url.psz_host );
p_session->i_port = url.i_port;
p_session->psz_sdp = NULL;
msg_Info( p_this, "SAP Enabled");
sout_AnnounceRegister( p_sout, p_session, p_method );
-
- /* FIXME: Free p_method */
-
p_stream->p_sys->p_session = p_session;
}
vlc_UrlClean( &url );
+
+ /* FIXME: Free p_method */
+ if( p_method->psz_address) free( p_method->psz_address );
+ free( p_method );
}
/* *** Register with slp *** */
if( psz_mux ) free( psz_mux );
if( psz_url ) free( psz_url );
+
return VLC_SUCCESS;
}
if( p_sys->p_session != NULL )
{
sout_AnnounceUnRegister( p_stream->p_sout, p_sys->p_session );
+ sout_AnnounceSessionDestroy( p_sys->p_session );
}
#ifdef HAVE_SLP_H