From 979f5cc201141379f1153ad721b1a6ec4032e20f Mon Sep 17 00:00:00 2001 From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= Date: Sat, 15 Sep 2007 20:10:50 +0000 Subject: [PATCH] Announce API simplification --- include/vlc_sout.h | 3 +-- modules/stream_out/rtp.c | 5 ++--- modules/stream_out/standard.c | 3 --- src/libvlc.sym | 1 - src/stream_output/announce.c | 33 +++++++-------------------------- 5 files changed, 10 insertions(+), 35 deletions(-) diff --git a/include/vlc_sout.h b/include/vlc_sout.h index 0decbe7581..5b441a4e55 100644 --- a/include/vlc_sout.h +++ b/include/vlc_sout.h @@ -208,12 +208,11 @@ static inline int sout_StreamIdSend( sout_stream_t *s, sout_stream_id_t *id, blo } /**************************************************************************** - * Announce handler mess + * Announce handler ****************************************************************************/ VLC_EXPORT(session_descriptor_t*,sout_AnnounceRegisterSDP, (sout_instance_t *, const char *, const char *, const char *, announce_method_t* ) ); VLC_EXPORT( int, sout_AnnounceUnRegister, (sout_instance_t *,session_descriptor_t* ) ); -VLC_EXPORT(void, sout_AnnounceSessionDestroy, (session_descriptor_t *) ); VLC_EXPORT(announce_method_t*, sout_SAPMethod, (void) ); VLC_EXPORT(void, sout_MethodRelease, (announce_method_t *) ); diff --git a/modules/stream_out/rtp.c b/modules/stream_out/rtp.c index 90a893a6ce..0d2365fe9b 100644 --- a/modules/stream_out/rtp.c +++ b/modules/stream_out/rtp.c @@ -1196,25 +1196,24 @@ static int SapSetup( sout_stream_t *p_stream ) { sout_stream_sys_t *p_sys = p_stream->p_sys; sout_instance_t *p_sout = p_stream->p_sout; - announce_method_t *p_method = sout_SAPMethod(); /* Remove the previous session */ if( p_sys->p_session != NULL) { sout_AnnounceUnRegister( p_sout, p_sys->p_session); - sout_AnnounceSessionDestroy( p_sys->p_session ); p_sys->p_session = NULL; } if( ( p_sys->i_es > 0 || p_sys->p_mux ) && p_sys->psz_sdp && *p_sys->psz_sdp ) { + announce_method_t *p_method = sout_SAPMethod(); p_sys->p_session = sout_AnnounceRegisterSDP( p_sout, SOUT_CFG_PREFIX, p_sys->psz_sdp, p_sys->psz_destination, p_method ); + sout_MethodRelease( p_method ); } - sout_MethodRelease( p_method ); return VLC_SUCCESS; } diff --git a/modules/stream_out/standard.c b/modules/stream_out/standard.c index 2ee7a25ff0..800f0d01c1 100644 --- a/modules/stream_out/standard.c +++ b/modules/stream_out/standard.c @@ -408,10 +408,7 @@ static void Close( vlc_object_t * p_this ) sout_access_out_t *p_access = p_sys->p_mux->p_access; if( p_sys->p_session != NULL ) - { sout_AnnounceUnRegister( p_stream->p_sout, p_sys->p_session ); - sout_AnnounceSessionDestroy( p_sys->p_session ); - } sout_MuxDelete( p_sys->p_mux ); sout_AccessOutDelete( p_access ); diff --git a/src/libvlc.sym b/src/libvlc.sym index 3f688b7195..8522d9c42b 100644 --- a/src/libvlc.sym +++ b/src/libvlc.sym @@ -265,7 +265,6 @@ sout_AccessOutRead sout_AccessOutSeek sout_AccessOutWrite sout_AnnounceRegisterSDP -sout_AnnounceSessionDestroy sout_AnnounceUnRegister sout_MuxAddStream sout_MuxDelete diff --git a/src/stream_output/announce.c b/src/stream_output/announce.c index b1d6d97d50..f6afa5b7b0 100644 --- a/src/stream_output/announce.c +++ b/src/stream_output/announce.c @@ -46,29 +46,18 @@ struct announce_method_t * Sout-side functions ****************************************************************************/ -/** - * Create and initialize a session descriptor - * - * \return a new session descriptor - */ -static session_descriptor_t * sout_AnnounceSessionCreate (vlc_object_t *obj, - const char *cfgpref) -{ - return calloc (1, sizeof (session_descriptor_t)); -} - /** * Register a new session with the announce handler, using a pregenerated SDP * * \param p_sout a sout instance structure * \param psz_sdp the SDP to register - * \param psz_uri session address (needed for SAP address auto detection) + * \param psz_dst session address (needed for SAP address auto detection) * \param p_method an announce method descriptor * \return the new session descriptor structure */ session_descriptor_t * sout_AnnounceRegisterSDP( sout_instance_t *p_sout, const char *cfgpref, - const char *psz_sdp, const char *psz_uri, + const char *psz_sdp, const char *psz_dst, announce_method_t *p_method ) { session_descriptor_t *p_session; @@ -88,12 +77,13 @@ sout_AnnounceRegisterSDP( sout_instance_t *p_sout, const char *cfgpref, vlc_object_yield( p_announce ); } - p_session = sout_AnnounceSessionCreate(VLC_OBJECT (p_sout), cfgpref); + p_session = malloc( sizeof( *p_session ) ); + memset( p_session, 0, sizeof( *p_session ) ); p_session->psz_sdp = strdup( psz_sdp ); /* GRUIK. We should not convert back-and-forth from string to numbers */ struct addrinfo *res; - if (vlc_getaddrinfo (VLC_OBJECT (p_sout), psz_uri, 0, NULL, &res) == 0) + if (vlc_getaddrinfo (VLC_OBJECT (p_sout), psz_dst, 0, NULL, &res) == 0) { if (res->ai_addrlen <= sizeof (p_session->addr)) memcpy (&p_session->addr, res->ai_addr, @@ -128,23 +118,14 @@ int sout_AnnounceUnRegister( sout_instance_t *p_sout, return VLC_ENOOBJ; } i_ret = announce_UnRegister( p_announce, p_session ); + if( i_ret == 0 ) + free( p_session ); vlc_object_release( p_announce ); return i_ret; } -/** - * Destroy a session descriptor and free all - * - * \param p_session the session to destroy - * \return Nothing - */ -void sout_AnnounceSessionDestroy( session_descriptor_t *p_session ) -{ - free( p_session ); -} - /** * \return the SAP announce method */ -- 2.39.2