Commit ec06c01a authored by Loïc Minier's avatar Loïc Minier

* configure.ac.in:

    . renamed access_slp to slp
    . slp is enabled by default if slp.h is present
  * modules/access/slp.c:
    . slp is now an access and a demux and forces the use of itself
    . cleanups and bug corrections
    . disappears of the playlist
      Thanks to fenrir for the help in debugging!
parent 1e97f6ad
...@@ -2499,14 +2499,14 @@ dnl ...@@ -2499,14 +2499,14 @@ dnl
dnl SLP access plugin dnl SLP access plugin
dnl dnl
AC_ARG_ENABLE(slp, AC_ARG_ENABLE(slp,
[ --enable-slp SLP service discovery support (default disabled)]) [ --enable-slp SLP service discovery support (default enabled)])
if test "x${enable_slp}" = "xyes" if test "x${enable_slp}" != "xno"
then then
AC_CHECK_HEADER(slp.h, have_slp="true", have_slp="false") AC_CHECK_HEADER(slp.h, have_slp="true", have_slp="false")
if test "x${have_slp}" = "xtrue" if test "x${have_slp}" = "xtrue"
then then
PLUGINS="${PLUGINS} access_slp" PLUGINS="${PLUGINS} slp"
LDFLAGS_access_slp="${LDFLAGS_access_slp} -lslp" LDFLAGS_slp="${LDFLAGS_slp} -lslp"
fi fi
fi fi
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
* control the pace of reading. * control the pace of reading.
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000 VideoLAN * Copyright (C) 1999, 2000 VideoLAN
* $Id: input_ext-intf.h,v 1.83 2003/01/07 21:49:01 fenrir Exp $ * $Id: input_ext-intf.h,v 1.84 2003/01/16 23:25:54 lool Exp $
* *
* Authors: Christophe Massiot <massiot@via.ecp.fr> * Authors: Christophe Massiot <massiot@via.ecp.fr>
* *
...@@ -352,6 +352,7 @@ struct input_thread_t ...@@ -352,6 +352,7 @@ struct input_thread_t
#define INPUT_METHOD_VLAN_BCAST 0x34 /* UDP broadcast with VLANs */ #define INPUT_METHOD_VLAN_BCAST 0x34 /* UDP broadcast with VLANs */
#define INPUT_METHOD_SATELLITE 0x40 /* stream is read from a */ #define INPUT_METHOD_SATELLITE 0x40 /* stream is read from a */
/* satellite card */ /* satellite card */
#define INPUT_METHOD_SLP 0x50 /* SLP stream */
/* Status changing methods */ /* Status changing methods */
#define INPUT_STATUS_END 0 #define INPUT_STATUS_END 0
......
...@@ -2,4 +2,4 @@ SOURCES_access_file = modules/access/file.c ...@@ -2,4 +2,4 @@ SOURCES_access_file = modules/access/file.c
SOURCES_access_udp = modules/access/udp.c SOURCES_access_udp = modules/access/udp.c
SOURCES_access_http = modules/access/http.c SOURCES_access_http = modules/access/http.c
SOURCES_access_ftp = modules/access/ftp.c SOURCES_access_ftp = modules/access/ftp.c
SOURCES_access_slp = modules/access/slp.c SOURCES_slp = modules/access/slp.c
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* slp.c: SLP access plugin * slp.c: SLP access plugin
***************************************************************************** *****************************************************************************
* Copyright (C) 2001, 2002 VideoLAN * Copyright (C) 2001, 2002 VideoLAN
* $Id: slp.c,v 1.2 2003/01/10 06:16:55 lool Exp $ * $Id: slp.c,v 1.3 2003/01/16 23:25:55 lool Exp $
* *
* Authors: Loc Minier <lool@videolan.org> * Authors: Loc Minier <lool@videolan.org>
* *
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#include <vlc/vlc.h> #include <vlc/vlc.h>
#include <vlc/input.h> #include <vlc/input.h>
#include <vlc_playlist.h>
#include <slp.h> #include <slp.h>
/***************************************************************************** /*****************************************************************************
...@@ -34,6 +36,11 @@ ...@@ -34,6 +36,11 @@
*****************************************************************************/ *****************************************************************************/
static int Open ( vlc_object_t * ); static int Open ( vlc_object_t * );
static void Close ( vlc_object_t * ); static void Close ( vlc_object_t * );
static ssize_t Read ( input_thread_t *, byte_t *, size_t );
static int Init ( vlc_object_t * );
static void End ( vlc_object_t * );
static int Demux ( input_thread_t * );
/***************************************************************************** /*****************************************************************************
* Module descriptor * Module descriptor
...@@ -59,15 +66,19 @@ static void Close ( vlc_object_t * ); ...@@ -59,15 +66,19 @@ static void Close ( vlc_object_t * );
vlc_module_begin(); vlc_module_begin();
set_description( _("SLP access module") ); set_description( _("SLP access module") );
add_category_hint( N_("slp"), NULL ); add_category_hint( N_("slp"), NULL );
set_capability( "access", 0 );
add_shortcut( "slp" );
add_string( "slp-srvtype", "service:vls.services.videolan.org:udpm", add_string( "slp-srvtype", "service:vls.services.videolan.org:udpm",
NULL, SRVTYPE_TEXT, SRVTYPE_LONGTEXT ); NULL, SRVTYPE_TEXT, SRVTYPE_LONGTEXT );
add_string( "slp-scopelist", "", NULL, SCOPELIST_TEXT, add_string( "slp-scopelist", "", NULL, SCOPELIST_TEXT,
SCOPELIST_LONGTEXT ); SCOPELIST_LONGTEXT );
add_string( "slp-filter", "", NULL, FILTER_TEXT, FILTER_LONGTEXT ); add_string( "slp-filter", "", NULL, FILTER_TEXT, FILTER_LONGTEXT );
add_string( "slp-lang", "", NULL, LANG_TEXT, LANG_LONGTEXT ); add_string( "slp-lang", "", NULL, LANG_TEXT, LANG_LONGTEXT );
add_submodule();
set_capability( "access", 0 );
set_callbacks( Open, Close ); set_callbacks( Open, Close );
add_submodule();
add_shortcut( "demux_slp" );
set_capability( "demux", 0 );
set_callbacks( Init, End );
vlc_module_end(); vlc_module_end();
/***************************************************************************** /*****************************************************************************
...@@ -123,7 +134,7 @@ static SLPBoolean SrvUrlCallback( SLPHandle hslp, ...@@ -123,7 +134,7 @@ static SLPBoolean SrvUrlCallback( SLPHandle hslp,
} }
/***************************************************************************** /*****************************************************************************
* Open: initialize library * Open: initialize library for the access module
*****************************************************************************/ *****************************************************************************/
static int Open( vlc_object_t * p_this ) static int Open( vlc_object_t * p_this )
{ {
...@@ -131,6 +142,19 @@ static int Open( vlc_object_t * p_this ) ...@@ -131,6 +142,19 @@ static int Open( vlc_object_t * p_this )
char * psz_name = strdup(p_input->psz_name); char * psz_name = strdup(p_input->psz_name);
SLPError slpe_result; SLPError slpe_result;
SLPHandle slph_slp; SLPHandle slph_slp;
playlist_t * p_playlist;
/* remove the "slp:" entry of the playlist */
p_playlist = (playlist_t *) vlc_object_find( p_input, VLC_OBJECT_PLAYLIST,
FIND_ANYWHERE );
if( !p_playlist )
{
msg_Err( p_input, "can't find playlist" );
return -1;
}
p_playlist->pp_items[p_playlist->i_index]->b_autodeletion = VLC_TRUE;
vlc_object_release( (vlc_object_t *)p_playlist );
/* get a new handle to the library */ /* get a new handle to the library */
if( SLPOpen( config_GetPsz( p_input, "slp-lang" ), if( SLPOpen( config_GetPsz( p_input, "slp-lang" ),
...@@ -155,14 +179,77 @@ static int Open( vlc_object_t * p_this ) ...@@ -155,14 +179,77 @@ static int Open( vlc_object_t * p_this )
SLPClose( slph_slp ); SLPClose( slph_slp );
} }
return( -1 ); if( !p_input->psz_demux || !*p_input->psz_demux )
{
p_input->psz_demux = "demux_slp";
}
p_input->pf_read = Read;
p_input->pf_set_program = NULL;
p_input->pf_set_area = NULL;
p_input->pf_seek = NULL;
vlc_mutex_lock( &p_input->stream.stream_lock );
p_input->stream.b_pace_control = VLC_FALSE;
p_input->stream.b_seekable = VLC_FALSE;
p_input->stream.b_connected = VLC_TRUE;
p_input->stream.p_selected_area->i_tell = 0;
p_input->stream.p_selected_area->i_size = 0;
p_input->stream.i_method = INPUT_METHOD_SLP;
vlc_mutex_unlock( &p_input->stream.stream_lock );
p_input->i_mtu = 0;
return 0;
} }
/***************************************************************************** /*****************************************************************************
* Close: free unused data structures * Close: close access
*****************************************************************************/ *****************************************************************************/
static void Close( vlc_object_t * p_this ) static void Close( vlc_object_t * p_this )
{ {
return;
}
/*****************************************************************************
* Read: should fill but zeroes the buffer
*****************************************************************************/
static ssize_t Read ( input_thread_t *p_input, byte_t *p_buffer, size_t s )
{
memset( p_buffer, 0, s );
return s;
}
/*****************************************************************************
* Init: initialize demux
*****************************************************************************/
int Init ( vlc_object_t *p_this )
{
input_thread_t *p_input = (input_thread_t *)p_this;
if( p_input->stream.i_method != INPUT_METHOD_SLP )
{
return -1;
}
p_input->pf_demux = Demux;
p_input->pf_rewind = NULL;
return 0;
}
/*****************************************************************************
* Demux: should demux but does nothing
*****************************************************************************/
static int Demux ( input_thread_t * p_input )
{
return 0;
}
/*****************************************************************************
* End: end demux
*****************************************************************************/
static void End ( vlc_object_t *p_this )
{
return;
} }
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