Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
videolan
vlc
Commits
e91e53cb
Commit
e91e53cb
authored
Sep 14, 2008
by
Rémi Denis-Courmont
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Remove the useless announce handler object
It merely wrappeded the SAP object.
parent
62a433eb
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
65 additions
and
169 deletions
+65
-169
include/vlc_common.h
include/vlc_common.h
+0
-2
src/libvlc.c
src/libvlc.c
+0
-17
src/libvlc.h
src/libvlc.h
+5
-0
src/misc/objects.c
src/misc/objects.c
+0
-4
src/stream_output/announce.c
src/stream_output/announce.c
+56
-132
src/stream_output/stream_output.h
src/stream_output/stream_output.h
+4
-14
No files found.
include/vlc_common.h
View file @
e91e53cb
...
...
@@ -265,8 +265,6 @@ typedef struct sout_stream_sys_t sout_stream_sys_t;
typedef
struct
config_chain_t
config_chain_t
;
typedef
struct
session_descriptor_t
session_descriptor_t
;
typedef
struct
announce_method_t
announce_method_t
;
typedef
struct
announce_handler_t
announce_handler_t
;
typedef
struct
sap_handler_t
sap_handler_t
;
typedef
struct
sout_param_t
sout_param_t
;
typedef
struct
sout_pcat_t
sout_pcat_t
;
...
...
src/libvlc.c
View file @
e91e53cb
...
...
@@ -83,10 +83,7 @@
#include "audio_output/aout_internal.h"
#include <vlc_vout.h>
#include <vlc_sout.h>
#include "stream_output/stream_output.h"
#include <vlc_charset.h>
#include "libvlc.h"
...
...
@@ -1026,20 +1023,6 @@ int libvlc_InternalCleanup( libvlc_int_t *p_libvlc )
stats_TimersDumpAll
(
p_libvlc
);
stats_TimersCleanAll
(
p_libvlc
);
#ifdef ENABLE_SOUT
announce_handler_t
*
p_announce
;
/* Free announce handler(s?) */
while
(
(
p_announce
=
vlc_object_find
(
p_libvlc
,
VLC_OBJECT_ANNOUNCE
,
FIND_CHILD
)
)
)
{
msg_Dbg
(
p_libvlc
,
"removing announce handler"
);
vlc_object_detach
(
p_announce
);
vlc_object_release
(
p_announce
);
announce_HandlerDestroy
(
p_announce
);
}
#endif
bool
b_clean
=
true
;
FOREACH_ARRAY
(
input_item_t
*
p_del
,
priv
->
input_items
)
msg_Err
(
p_libvlc
,
"input item %p has not been deleted properly: refcount %d, name %s"
,
...
...
src/libvlc.h
View file @
e91e53cb
...
...
@@ -191,6 +191,8 @@ struct vlc_object_internals_t
#define vlc_internals( obj ) (((vlc_object_internals_t*)(VLC_OBJECT(obj)))-1)
typedef
struct
sap_handler_t
sap_handler_t
;
/**
* Private LibVLC instance data.
*/
...
...
@@ -229,6 +231,9 @@ typedef struct libvlc_priv_t
vlm_t
*
p_vlm
;
///< the VLM singleton (or NULL)
interaction_t
*
p_interaction
;
///< interface interaction object
httpd_t
*
p_httpd
;
///< HTTP daemon (src/network/httpd.c)
#ifdef ENABLE_SOUT
sap_handler_t
*
p_sap
;
///< SAP SDP advertiser
#endif
}
libvlc_priv_t
;
static
inline
libvlc_priv_t
*
libvlc_priv
(
libvlc_int_t
*
libvlc
)
...
...
src/misc/objects.c
View file @
e91e53cb
...
...
@@ -238,10 +238,6 @@ void * __vlc_object_create( vlc_object_t *p_this, int i_type )
i_size
=
sizeof
(
vout_thread_t
);
psz_type
=
"opengl"
;
break
;
case
VLC_OBJECT_ANNOUNCE
:
i_size
=
sizeof
(
announce_handler_t
);
psz_type
=
"announce"
;
break
;
default:
assert
(
i_type
>
0
);
/* unknown type?! */
i_size
=
i_type
;
...
...
src/stream_output/announce.c
View file @
e91e53cb
...
...
@@ -31,17 +31,10 @@
#include <vlc_common.h>
#include <vlc_sout.h>
#include "stream_output.h"
#include "libvlc.h"
#include <assert.h>
/* Private functions for the announce handler */
static
announce_handler_t
*
announce_HandlerCreate
(
vlc_object_t
*
);
static
int
announce_Register
(
announce_handler_t
*
p_announce
,
session_descriptor_t
*
p_session
,
announce_method_t
*
p_method
);
static
int
announce_UnRegister
(
announce_handler_t
*
p_announce
,
session_descriptor_t
*
p_session
);
struct
announce_method_t
{
}
sap_method
;
...
...
@@ -50,8 +43,13 @@ struct announce_method_t
* Sout-side functions
****************************************************************************/
static
void
sap_destroy
(
vlc_object_t
*
p_this
)
{
libvlc_priv
(
p_this
->
p_libvlc
)
->
p_sap
=
NULL
;
}
/**
* Register a new session with the announce handler, using a pregenerated SDP
* Register
s
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
...
...
@@ -61,26 +59,16 @@ struct announce_method_t
*/
session_descriptor_t
*
sout_AnnounceRegisterSDP
(
sout_instance_t
*
p_sout
,
const
char
*
psz_sdp
,
const
char
*
psz_dst
,
announce_method_t
*
p_method
)
const
char
*
psz_dst
,
announce_method_t
*
p_method
)
{
session_descriptor_t
*
p_session
;
announce_handler_t
*
p_announce
=
(
announce_handler_t
*
)
vlc_object_find
(
p_sout
,
VLC_OBJECT_ANNOUNCE
,
FIND_ANYWHERE
);
if
(
!
p_announce
)
{
msg_Dbg
(
p_sout
,
"no announce handler found, creating one"
);
p_announce
=
announce_HandlerCreate
(
VLC_OBJECT
(
p_sout
)
);
if
(
!
p_announce
)
{
msg_Err
(
p_sout
,
"Creation failed"
);
return
NULL
;
}
vlc_object_yield
(
p_announce
);
}
assert
(
p_method
==
&
sap_method
);
(
void
)
p_method
;
session_descriptor_t
*
p_session
=
malloc
(
sizeof
(
*
p_session
));
if
(
!
p_session
)
return
NULL
;
p_session
=
malloc
(
sizeof
(
*
p_session
)
);
memset
(
p_session
,
0
,
sizeof
(
*
p_session
)
);
p_session
->
psz_sdp
=
strdup
(
psz_sdp
);
...
...
@@ -94,14 +82,38 @@ sout_AnnounceRegisterSDP( sout_instance_t *p_sout, const char *psz_sdp,
vlc_freeaddrinfo
(
res
);
}
announce_Register
(
p_announce
,
p_session
,
p_method
);
vlc_value_t
lockval
;
if
(
var_Create
(
p_sout
->
p_libvlc
,
"sap_mutex"
,
VLC_VAR_MUTEX
)
||
var_Get
(
p_sout
->
p_libvlc
,
"sap_mutex"
,
&
lockval
))
goto
error
;
vlc_mutex_lock
(
lockval
.
p_address
);
sap_handler_t
*
p_sap
=
libvlc_priv
(
p_sout
->
p_libvlc
)
->
p_sap
;
if
(
p_sap
==
NULL
)
{
p_sap
=
SAP_Create
(
VLC_OBJECT
(
p_sout
->
p_libvlc
));
libvlc_priv
(
p_sout
->
p_libvlc
)
->
p_sap
=
p_sap
;
vlc_object_set_destructor
((
vlc_object_t
*
)
p_sap
,
sap_destroy
);
}
else
vlc_object_yield
((
vlc_object_t
*
)
p_sap
);
vlc_mutex_unlock
(
lockval
.
p_address
);
if
(
p_sap
==
NULL
)
goto
error
;
vlc_object_release
(
p_announce
);
msg_Dbg
(
p_sout
,
"adding SAP session"
);
SAP_Add
(
p_sap
,
p_session
);
return
p_session
;
error:
free
(
p_session
->
psz_sdp
);
free
(
p_session
);
return
NULL
;
}
/**
* Un
Register
an existing session
* Un
registers
an existing session
*
* \param p_sout a sout instance structure
* \param p_session the session descriptor
...
...
@@ -110,23 +122,22 @@ sout_AnnounceRegisterSDP( sout_instance_t *p_sout, const char *psz_sdp,
int
sout_AnnounceUnRegister
(
sout_instance_t
*
p_sout
,
session_descriptor_t
*
p_session
)
{
int
i_ret
;
announce_handler_t
*
p_announce
=
(
announce_handler_t
*
)
vlc_object_find
(
p_sout
,
VLC_OBJECT_ANNOUNCE
,
FIND_ANYWHERE
);
if
(
!
p_announce
)
{
msg_Dbg
(
p_sout
,
"unable to remove announce: no announce handler"
);
return
VLC_ENOOBJ
;
}
i_ret
=
announce_UnRegister
(
p_announce
,
p_session
);
if
(
i_ret
==
0
)
free
(
p_session
);
sap_handler_t
*
p_sap
=
libvlc_priv
(
p_sout
->
p_libvlc
)
->
p_sap
;
msg_Dbg
(
p_sout
,
"removing SAP session"
);
SAP_Del
(
p_sap
,
p_session
);
vlc_object_release
(
p_announce
);
vlc_value_t
lockval
;
var_Create
(
p_sout
->
p_libvlc
,
"sap_mutex"
,
VLC_VAR_MUTEX
);
var_Get
(
p_sout
->
p_libvlc
,
"sap_mutex"
,
&
lockval
);
vlc_mutex_lock
(
lockval
.
p_address
);
vlc_object_release
((
vlc_object_t
*
)
p_sap
);
vlc_mutex_unlock
(
lockval
.
p_address
);
return
i_ret
;
free
(
p_session
->
psz_sdp
);
free
(
p_session
);
return
0
;
}
/**
...
...
@@ -141,90 +152,3 @@ void sout_MethodRelease (announce_method_t *m)
{
assert
(
m
==
&
sap_method
);
}
/************************************************************************
* Announce handler functions (private)
************************************************************************/
/**
* Create the announce handler object
*
* \param p_this a vlc_object structure
* \return the new announce handler or NULL on error
*/
static
announce_handler_t
*
announce_HandlerCreate
(
vlc_object_t
*
p_this
)
{
announce_handler_t
*
p_announce
;
p_announce
=
vlc_object_create
(
p_this
,
VLC_OBJECT_ANNOUNCE
);
if
(
!
p_announce
)
return
NULL
;
p_announce
->
p_sap
=
NULL
;
vlc_object_attach
(
p_announce
,
p_this
->
p_libvlc
);
return
p_announce
;
}
/**
* Destroy a announce handler object
*
* \param p_announce the announce handler to destroy
* \return VLC_SUCCESS or an error
*/
int
announce_HandlerDestroy
(
announce_handler_t
*
p_announce
)
{
if
(
p_announce
->
p_sap
)
SAP_Destroy
(
p_announce
->
p_sap
);
/* Free the structure */
vlc_object_release
(
p_announce
);
return
VLC_SUCCESS
;
}
/* Register an announce */
static
int
announce_Register
(
announce_handler_t
*
p_announce
,
session_descriptor_t
*
p_session
,
announce_method_t
*
p_method
)
{
if
(
p_method
==
NULL
)
return
VLC_EGENERIC
;
msg_Dbg
(
p_announce
,
"registering announce"
);
if
(
p_method
==
&
sap_method
)
{
/* Do we already have a SAP announce handler ? */
if
(
!
p_announce
->
p_sap
)
{
sap_handler_t
*
p_sap
=
SAP_Create
(
VLC_OBJECT
(
p_announce
));
msg_Dbg
(
p_announce
,
"creating SAP announce handler"
);
if
(
!
p_sap
)
{
msg_Err
(
p_announce
,
"SAP handler creation failed"
);
return
VLC_ENOOBJ
;
}
p_announce
->
p_sap
=
p_sap
;
}
/* this will set p_session->p_sap for later deletion */
msg_Dbg
(
p_announce
,
"adding SAP session"
);
SAP_Add
(
p_announce
->
p_sap
,
p_session
);
}
else
{
msg_Err
(
p_announce
,
"announce type unsupported"
);
return
VLC_EGENERIC
;
}
return
VLC_SUCCESS
;
}
/* Unregister an announce */
static
int
announce_UnRegister
(
announce_handler_t
*
p_announce
,
session_descriptor_t
*
p_session
)
{
msg_Dbg
(
p_announce
,
"unregistering announce"
);
SAP_Del
(
p_announce
->
p_sap
,
p_session
);
return
VLC_SUCCESS
;
}
src/stream_output/stream_output.h
View file @
e91e53cb
...
...
@@ -67,19 +67,9 @@ struct session_descriptor_t
bool
b_ssm
;
};
/* The main announce handler object */
struct
announce_handler_t
{
VLC_COMMON_MEMBERS
sap_handler_t
*
p_sap
;
};
int
announce_HandlerDestroy
(
announce_handler_t
*
);
sap_handler_t
*
SAP_Create
(
vlc_object_t
*
);
void
SAP_Destroy
(
sap_handler_t
*
);
int
SAP_Add
(
sap_handler_t
*
,
session_descriptor_t
*
);
void
SAP_Del
(
sap_handler_t
*
,
const
session_descriptor_t
*
);
struct
sap_handler_t
*
SAP_Create
(
vlc_object_t
*
);
void
SAP_Destroy
(
struct
sap_handler_t
*
);
int
SAP_Add
(
struct
sap_handler_t
*
,
session_descriptor_t
*
);
void
SAP_Del
(
struct
sap_handler_t
*
,
const
session_descriptor_t
*
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment