Commit 0c0ca771 authored by Clément Stenac's avatar Clément Stenac

* Stream output now support IPv6 SAP announces

* Code cleanup in SAP
parent 206fe3c1
$Id: NEWS,v 1.53 2003/06/22 18:07:23 gbazin Exp $
$Id: NEWS,v 1.54 2003/06/23 11:41:25 zorglub Exp $
Changes between 0.5.3 and 0.6.0:
---------------------------------
......@@ -36,7 +36,7 @@ Stream output:
* New stream output scheme. It is now possible to build a chain of stream outputs allowing for instance to stream and display some content at the same time.
* The stream output now allows to transcode content on the fly.
* Fixed major bug that prevented streaming mpeg 1/2 video with pulldown content.
* SAP (Session Announcement Protocol) support.
* SAP/SDP announcing support. (both IPv4 and IPv6)
Miscellaneous:
* New reset option for the preferences
......@@ -44,6 +44,7 @@ Miscellaneous:
* New video chroma conversion module using ffmpeg
* Added a Gentoo ebuild to the distribution
* Added a new smaller subtitles font (now the default) + scripts to generate your own
* SAP/SDP IPv6 support
UNIX ports:
* Basic support for the X11 Xinerama extension.
......
......@@ -2,11 +2,9 @@
* announce.h : Session announcement
*****************************************************************************
* Copyright (C) 2002 VideoLAN
* $Id: announce.h,v 1.3 2003/06/12 11:37:48 zorglub Exp $
* $Id: announce.h,v 1.4 2003/06/23 11:41:26 zorglub Exp $
*
* Authors: Christophe Massiot <massiot@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org>
* Authors: Clment Stenac <zorglub@via.ecp.fr>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
......@@ -56,6 +54,8 @@ struct sap_session_t
unsigned int socket;
unsigned int sendnow;
struct sockaddr_in addr;
struct sockaddr_in6 addr6;
int i_ip_version;
};
......@@ -63,6 +63,6 @@ struct sap_session_t
/*****************************************************************************
* Prototypes
*****************************************************************************/
VLC_EXPORT( sap_session_t *, sout_SAPNew, ( sout_instance_t *,char * , char * , char * ) );
VLC_EXPORT( void, sout_SAPSend, ( sout_instance_t *,sap_session_t * ) );
VLC_EXPORT( sap_session_t *, sout_SAPNew, ( sout_instance_t *,char * , char * , char * ,int , char *) );
VLC_EXPORT( void, sout_SAPSend, ( sout_instance_t *,sap_session_t *) );
VLC_EXPORT( void, sout_SAPDelete, ( sout_instance_t *,sap_session_t * ) );
......@@ -2,7 +2,7 @@
* standard.c
*****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN
* $Id: standard.c,v 1.4 2003/06/12 11:37:48 zorglub Exp $
* $Id: standard.c,v 1.5 2003/06/23 11:41:26 zorglub Exp $
*
* Authors: Laurent Aimar <fenrir@via.ecp.fr>
*
......@@ -32,6 +32,8 @@
#include <vlc/sout.h>
#include <announce.h>
#define DEFAULT_IPV6_SCOPE "8"
/*****************************************************************************
* Exported prototypes
*****************************************************************************/
......@@ -69,12 +71,14 @@ static int Open( vlc_object_t *p_this )
sout_instance_t *p_sout = p_stream->p_sout;
sout_stream_sys_t *p_sys = malloc( sizeof( sout_stream_sys_t) );
char *psz_mux = sout_cfg_find_value( p_stream->p_cfg, "mux" );
char *psz_access = sout_cfg_find_value( p_stream->p_cfg, "access" );
char *psz_url = sout_cfg_find_value( p_stream->p_cfg, "url" );
char *psz_mux = sout_cfg_find_value( p_stream->p_cfg, "mux" );
char *psz_access = sout_cfg_find_value( p_stream->p_cfg, "access" );
char *psz_url = sout_cfg_find_value( p_stream->p_cfg, "url" );
char *psz_ipv = sout_cfg_find_value( p_stream->p_cfg, "sap_ipv" );
char *psz_v6_scope = sout_cfg_find_value( p_stream->p_cfg, "sap_v6scope");
sout_cfg_t *p_sap_cfg = sout_cfg_find( p_stream->p_cfg, "sap" );
char *psz_sap = NULL;
char *psz_port = "1234";
......@@ -83,9 +87,12 @@ static int Open( vlc_object_t *p_this )
sout_access_out_t *p_access;
sout_mux_t *p_mux;
p_sys->b_sap=0;
/* SAP is only valid for UDP or RTP streaming */
if( psz_access == NULL )
psz_access="udp";
if(p_sap_cfg && (strstr(psz_access,"udp") || strstr( psz_access , "rtp" )))
{
msg_Info( p_this, "SAP Enabled");
......@@ -99,6 +106,13 @@ static int Open( vlc_object_t *p_this )
psz_sap = strdup ( psz_url );
}
}
/* Get SAP IP version to use */
if(psz_ipv == NULL)
psz_ipv = "4";
if(psz_v6_scope == NULL)
psz_v6_scope= DEFAULT_IPV6_SCOPE;
msg_Dbg( p_this, "creating `%s/%s://%s'",
psz_access, psz_mux, psz_url );
......@@ -127,8 +141,8 @@ static int Open( vlc_object_t *p_this )
/* *** Create the SAP Session structure *** */
if(p_sys->b_sap)
{
msg_Dbg( p_sout , "Creating SAP" );
p_sap = sout_SAPNew( p_sout , psz_url , psz_port , psz_sap );
msg_Dbg( p_sout , "Creating SAP with IPv%i",atoi(psz_ipv) );
p_sap = sout_SAPNew( p_sout , psz_url , psz_port , psz_sap, atoi(psz_ipv), psz_v6_scope );
if(!p_sap)
{
msg_Err( p_sout,"Unable to initialize SAP. SAP disabled");
......@@ -163,7 +177,7 @@ static void Close( vlc_object_t * p_this )
sout_access_out_t *p_access = p_sys->p_mux->p_access;
if(p_sys -> b_sap)
sout_SAPDelete( p_this ,p_sys->p_sap );
sout_SAPDelete( (sout_instance_t *)p_this ,p_sys->p_sap );
sout_MuxDelete( p_sys->p_mux );
sout_AccessOutDelete( p_access );
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment