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: Changes between 0.5.3 and 0.6.0:
--------------------------------- ---------------------------------
...@@ -36,7 +36,7 @@ Stream output: ...@@ -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. * 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. * The stream output now allows to transcode content on the fly.
* Fixed major bug that prevented streaming mpeg 1/2 video with pulldown content. * 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: Miscellaneous:
* New reset option for the preferences * New reset option for the preferences
...@@ -44,6 +44,7 @@ Miscellaneous: ...@@ -44,6 +44,7 @@ Miscellaneous:
* New video chroma conversion module using ffmpeg * New video chroma conversion module using ffmpeg
* Added a Gentoo ebuild to the distribution * Added a Gentoo ebuild to the distribution
* Added a new smaller subtitles font (now the default) + scripts to generate your own * Added a new smaller subtitles font (now the default) + scripts to generate your own
* SAP/SDP IPv6 support
UNIX ports: UNIX ports:
* Basic support for the X11 Xinerama extension. * Basic support for the X11 Xinerama extension.
......
...@@ -2,11 +2,9 @@ ...@@ -2,11 +2,9 @@
* announce.h : Session announcement * announce.h : Session announcement
***************************************************************************** *****************************************************************************
* Copyright (C) 2002 VideoLAN * 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> * Authors: Clment Stenac <zorglub@via.ecp.fr>
* Laurent Aimar <fenrir@via.ecp.fr>
* Eric Petit <titer@videolan.org>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
...@@ -56,6 +54,8 @@ struct sap_session_t ...@@ -56,6 +54,8 @@ struct sap_session_t
unsigned int socket; unsigned int socket;
unsigned int sendnow; unsigned int sendnow;
struct sockaddr_in addr; struct sockaddr_in addr;
struct sockaddr_in6 addr6;
int i_ip_version;
}; };
...@@ -63,6 +63,6 @@ struct sap_session_t ...@@ -63,6 +63,6 @@ struct sap_session_t
/***************************************************************************** /*****************************************************************************
* Prototypes * Prototypes
*****************************************************************************/ *****************************************************************************/
VLC_EXPORT( sap_session_t *, sout_SAPNew, ( sout_instance_t *,char * , char * , char * ) ); 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_SAPSend, ( sout_instance_t *,sap_session_t *) );
VLC_EXPORT( void, sout_SAPDelete, ( sout_instance_t *,sap_session_t * ) ); VLC_EXPORT( void, sout_SAPDelete, ( sout_instance_t *,sap_session_t * ) );
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* standard.c * standard.c
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * 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> * Authors: Laurent Aimar <fenrir@via.ecp.fr>
* *
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#include <vlc/sout.h> #include <vlc/sout.h>
#include <announce.h> #include <announce.h>
#define DEFAULT_IPV6_SCOPE "8"
/***************************************************************************** /*****************************************************************************
* Exported prototypes * Exported prototypes
*****************************************************************************/ *****************************************************************************/
...@@ -69,12 +71,14 @@ static int Open( vlc_object_t *p_this ) ...@@ -69,12 +71,14 @@ static int Open( vlc_object_t *p_this )
sout_instance_t *p_sout = p_stream->p_sout; sout_instance_t *p_sout = p_stream->p_sout;
sout_stream_sys_t *p_sys = malloc( sizeof( sout_stream_sys_t) ); 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_mux = sout_cfg_find_value( p_stream->p_cfg, "mux" );
char *psz_access = sout_cfg_find_value( p_stream->p_cfg, "access" ); 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_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" ); sout_cfg_t *p_sap_cfg = sout_cfg_find( p_stream->p_cfg, "sap" );
char *psz_sap = NULL; char *psz_sap = NULL;
char *psz_port = "1234"; char *psz_port = "1234";
...@@ -83,9 +87,12 @@ static int Open( vlc_object_t *p_this ) ...@@ -83,9 +87,12 @@ static int Open( vlc_object_t *p_this )
sout_access_out_t *p_access; sout_access_out_t *p_access;
sout_mux_t *p_mux; sout_mux_t *p_mux;
p_sys->b_sap=0; p_sys->b_sap=0;
/* SAP is only valid for UDP or RTP streaming */ /* 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" ))) if(p_sap_cfg && (strstr(psz_access,"udp") || strstr( psz_access , "rtp" )))
{ {
msg_Info( p_this, "SAP Enabled"); msg_Info( p_this, "SAP Enabled");
...@@ -99,6 +106,13 @@ static int Open( vlc_object_t *p_this ) ...@@ -99,6 +106,13 @@ static int Open( vlc_object_t *p_this )
psz_sap = strdup ( psz_url ); 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'", msg_Dbg( p_this, "creating `%s/%s://%s'",
psz_access, psz_mux, psz_url ); psz_access, psz_mux, psz_url );
...@@ -127,8 +141,8 @@ static int Open( vlc_object_t *p_this ) ...@@ -127,8 +141,8 @@ static int Open( vlc_object_t *p_this )
/* *** Create the SAP Session structure *** */ /* *** Create the SAP Session structure *** */
if(p_sys->b_sap) if(p_sys->b_sap)
{ {
msg_Dbg( p_sout , "Creating 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 ); p_sap = sout_SAPNew( p_sout , psz_url , psz_port , psz_sap, atoi(psz_ipv), psz_v6_scope );
if(!p_sap) if(!p_sap)
{ {
msg_Err( p_sout,"Unable to initialize SAP. SAP disabled"); msg_Err( p_sout,"Unable to initialize SAP. SAP disabled");
...@@ -163,7 +177,7 @@ static void Close( vlc_object_t * p_this ) ...@@ -163,7 +177,7 @@ static void Close( vlc_object_t * p_this )
sout_access_out_t *p_access = p_sys->p_mux->p_access; sout_access_out_t *p_access = p_sys->p_mux->p_access;
if(p_sys -> b_sap) 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_MuxDelete( p_sys->p_mux );
sout_AccessOutDelete( p_access ); 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