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
5363e037
Commit
5363e037
authored
Jul 10, 2004
by
Laurent Aimar
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* all: lot of cosmetics, and added a MUX_GET_MIME (not yet used).
parent
7fdad1d9
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
129 additions
and
116 deletions
+129
-116
include/stream_output.h
include/stream_output.h
+110
-93
src/stream_output/stream_output.c
src/stream_output/stream_output.c
+19
-23
No files found.
include/stream_output.h
View file @
5363e037
...
@@ -29,21 +29,51 @@
...
@@ -29,21 +29,51 @@
#include "vlc_es.h"
#include "vlc_es.h"
/****************************************************************************
* sout_instance_t: p_sout
****************************************************************************/
struct
sout_instance_t
{
VLC_COMMON_MEMBERS
typedef
struct
sout_stream_id_t
sout_stream_id_t
;
char
*
psz_sout
;
char
*
psz_chain
;
/* for mux */
/* meta data (Read only) XXX it won't be set before the first packet received */
struct
sout_input_t
vlc_meta_t
*
p_meta
;
{
sout_instance_t
*
p_sout
;
es_format_t
*
p_fmt
;
int
i_out_pace_nocontrol
;
/* count of output that can't control the space */
block_fifo_t
*
p_fifo
;
void
*
p_sys
;
vlc_mutex_t
lock
;
sout_stream_t
*
p_stream
;
/* sout private */
sout_instance_sys_t
*
p_sys
;
};
};
/* for packetizer */
/****************************************************************************
* sout_cfg_t:
****************************************************************************/
struct
sout_cfg_t
{
sout_cfg_t
*
p_next
;
char
*
psz_name
;
char
*
psz_value
;
};
#define sout_CfgParse( a, b, c, d ) __sout_CfgParse( VLC_OBJECT(a), b, c, d )
VLC_EXPORT
(
void
,
__sout_CfgParse
,
(
vlc_object_t
*
,
char
*
psz_prefix
,
const
char
**
ppsz_options
,
sout_cfg_t
*
)
);
VLC_EXPORT
(
char
*
,
sout_CfgCreate
,
(
char
**
,
sout_cfg_t
**
,
char
*
)
);
/****************************************************************************
* sout_stream_id_t: opaque (private for all sout_stream_t)
****************************************************************************/
typedef
struct
sout_stream_id_t
sout_stream_id_t
;
/****************************************************************************
* sout_packetizer_input_t: p_sout <-> p_packetizer
****************************************************************************/
struct
sout_packetizer_input_t
struct
sout_packetizer_input_t
{
{
sout_instance_t
*
p_sout
;
sout_instance_t
*
p_sout
;
...
@@ -53,12 +83,17 @@ struct sout_packetizer_input_t
...
@@ -53,12 +83,17 @@ struct sout_packetizer_input_t
sout_stream_id_t
*
id
;
sout_stream_id_t
*
id
;
};
};
#define sout_NewInstance(a,b) __sout_NewInstance(VLC_OBJECT(a),b)
VLC_EXPORT
(
sout_instance_t
*
,
__sout_NewInstance
,
(
vlc_object_t
*
,
char
*
)
);
VLC_EXPORT
(
void
,
sout_DeleteInstance
,
(
sout_instance_t
*
)
);
#define SOUT_METHOD_NONE 0x00
VLC_EXPORT
(
sout_packetizer_input_t
*
,
sout_InputNew
,(
sout_instance_t
*
,
es_format_t
*
)
);
#define SOUT_METHOD_FILE 0x10
VLC_EXPORT
(
int
,
sout_InputDelete
,
(
sout_packetizer_input_t
*
)
);
#define SOUT_METHOD_NETWORK 0x20
VLC_EXPORT
(
int
,
sout_InputSendBuffer
,
(
sout_packetizer_input_t
*
,
block_t
*
)
);
typedef
struct
sout_access_out_sys_t
sout_access_out_sys_t
;
/****************************************************************************
* sout_access_out_t:
****************************************************************************/
struct
sout_access_out_t
struct
sout_access_out_t
{
{
VLC_COMMON_MEMBERS
VLC_COMMON_MEMBERS
...
@@ -77,24 +112,15 @@ struct sout_access_out_t
...
@@ -77,24 +112,15 @@ struct sout_access_out_t
int
(
*
pf_write
)(
sout_access_out_t
*
,
block_t
*
);
int
(
*
pf_write
)(
sout_access_out_t
*
,
block_t
*
);
};
};
/*
VLC_EXPORT
(
sout_access_out_t
*
,
sout_AccessOutNew
,
(
sout_instance_t
*
,
char
*
psz_access
,
char
*
psz_name
)
);
* i_query parameter of pf_mux_capacity
VLC_EXPORT
(
void
,
sout_AccessOutDelete
,
(
sout_access_out_t
*
)
);
*/
VLC_EXPORT
(
int
,
sout_AccessOutSeek
,
(
sout_access_out_t
*
,
off_t
)
);
/* SOUT_MUX_CAP_GET_ADD_STREAM_ANY_TIME: p_args=NULL, p_answer=&boolean */
VLC_EXPORT
(
int
,
sout_AccessOutRead
,
(
sout_access_out_t
*
,
block_t
*
)
);
#define SOUT_MUX_CAP_GET_ADD_STREAM_ANY_TIME 0x01
VLC_EXPORT
(
int
,
sout_AccessOutWrite
,
(
sout_access_out_t
*
,
block_t
*
)
);
/* SOUT_MUX_CAP_GET_STREAMABLE: p_args=NULL, p_answer=&boolean */
#define SOUT_MUX_CAP_GET_STREAMABLE 0x02
/****************************************************************************
/* SOUT_MUX_CAP_GET_ADD_STREAM_WAIT: p_args=NULL, p_answer=&boolean */
* mux:
#define SOUT_MUX_CAP_GET_ADD_STREAM_WAIT 0x03
****************************************************************************/
/*
* return error code
*/
#define SOUT_MUX_CAP_ERR_OK 0x00
#define SOUT_MUX_CAP_ERR_UNKNOWN 0x01
#define SOUT_MUX_CAP_ERR_UNIMPLEMENTED 0x02
typedef
struct
sout_mux_sys_t
sout_mux_sys_t
;
struct
sout_mux_t
struct
sout_mux_t
{
{
VLC_COMMON_MEMBERS
VLC_COMMON_MEMBERS
...
@@ -107,10 +133,10 @@ struct sout_mux_t
...
@@ -107,10 +133,10 @@ struct sout_mux_t
sout_access_out_t
*
p_access
;
sout_access_out_t
*
p_access
;
int
(
*
pf_capacity
)(
sout_mux_t
*
,
int
,
void
*
,
void
*
);
int
(
*
pf_addstream
)(
sout_mux_t
*
,
sout_input_t
*
);
int
(
*
pf_addstream
)(
sout_mux_t
*
,
sout_input_t
*
);
int
(
*
pf_delstream
)(
sout_mux_t
*
,
sout_input_t
*
);
int
(
*
pf_delstream
)(
sout_mux_t
*
,
sout_input_t
*
);
int
(
*
pf_mux
)
(
sout_mux_t
*
);
int
(
*
pf_mux
)
(
sout_mux_t
*
);
int
(
*
pf_control
)
(
sout_mux_t
*
,
int
,
va_list
);
/* here are all inputs accepted by muxer */
/* here are all inputs accepted by muxer */
int
i_nb_inputs
;
int
i_nb_inputs
;
...
@@ -129,17 +155,46 @@ struct sout_mux_t
...
@@ -129,17 +155,46 @@ struct sout_mux_t
mtime_t
i_add_stream_start
;
mtime_t
i_add_stream_start
;
};
};
enum
sout_mux_query_e
{
/* capabilities */
MUX_CAN_ADD_STREAM_WHILE_MUXING
,
/* arg1= vlc_bool_t *, res=cannot fail */
/* properties */
MUX_GET_ADD_STREAM_WAIT
,
/* arg1= vlc_bool_t *, res=cannot fail */
MUX_GET_MIME
,
/* arg1= char ** res=can fail */
};
struct
sout_input_t
struct
sout_cfg_t
{
{
sout_
cfg_t
*
p_nex
t
;
sout_
instance_t
*
p_sou
t
;
char
*
psz_name
;
es_format_t
*
p_fmt
;
char
*
psz_value
;
block_fifo_t
*
p_fifo
;
void
*
p_sys
;
};
};
typedef
struct
sout_stream_sys_t
sout_stream_sys_t
;
VLC_EXPORT
(
sout_mux_t
*
,
sout_MuxNew
,
(
sout_instance_t
*
,
char
*
,
sout_access_out_t
*
)
);
VLC_EXPORT
(
sout_input_t
*
,
sout_MuxAddStream
,
(
sout_mux_t
*
,
es_format_t
*
)
);
VLC_EXPORT
(
void
,
sout_MuxDeleteStream
,
(
sout_mux_t
*
,
sout_input_t
*
)
);
VLC_EXPORT
(
void
,
sout_MuxDelete
,
(
sout_mux_t
*
)
);
VLC_EXPORT
(
void
,
sout_MuxSendBuffer
,
(
sout_mux_t
*
,
sout_input_t
*
,
block_t
*
)
);
static
inline
int
sout_MuxControl
(
sout_mux_t
*
p_mux
,
int
i_query
,
...
)
{
va_list
args
;
int
i_result
;
va_start
(
args
,
i_query
);
i_result
=
p_mux
->
pf_control
(
p_mux
,
i_query
,
args
);
va_end
(
args
);
return
i_result
;
}
/****************************************************************************
* sout_stream:
****************************************************************************/
struct
sout_stream_t
struct
sout_stream_t
{
{
VLC_COMMON_MEMBERS
VLC_COMMON_MEMBERS
...
@@ -161,31 +216,25 @@ struct sout_stream_t
...
@@ -161,31 +216,25 @@ struct sout_stream_t
sout_stream_sys_t
*
p_sys
;
sout_stream_sys_t
*
p_sys
;
};
};
typedef
struct
sout_instance_sys_t
sout_instance_sys_t
;
VLC_EXPORT
(
sout_stream_t
*
,
sout_StreamNew
,
(
sout_instance_t
*
,
char
*
psz_chain
)
);
struct
sout_instance_t
VLC_EXPORT
(
void
,
sout_StreamDelete
,
(
sout_stream_t
*
)
);
{
VLC_COMMON_MEMBERS
char
*
psz_sout
;
char
*
psz_chain
;
/* meta data (Read only) XXX it won't be set before the first packet received */
vlc_meta_t
*
p_meta
;
int
i_out_pace_nocontrol
;
/* count of output that can't control the space */
vlc_mutex_t
lock
;
sout_stream_t
*
p_stream
;
/* sout private */
sout_instance_sys_t
*
p_sys
;
};
/* Announce handler structures */
/* Session and method descriptors */
static
inline
sout_stream_id_t
*
sout_StreamIdAdd
(
sout_stream_t
*
s
,
es_format_t
*
fmt
)
{
return
s
->
pf_add
(
s
,
fmt
);
}
static
inline
int
sout_StreamIdDel
(
sout_stream_t
*
s
,
sout_stream_id_t
*
id
)
{
return
s
->
pf_del
(
s
,
id
);
}
static
inline
int
sout_StreamIdSend
(
sout_stream_t
*
s
,
sout_stream_id_t
*
id
,
block_t
*
b
)
{
return
s
->
pf_send
(
s
,
id
,
b
);
}
/****************************************************************************
* Announce handler mess
****************************************************************************/
struct
sap_session_t
;
struct
sap_session_t
;
struct
session_descriptor_t
struct
session_descriptor_t
...
@@ -308,38 +357,6 @@ static inline char *sout_cfg_find_value( sout_cfg_t *p_cfg, char *psz_name )
...
@@ -308,38 +357,6 @@ static inline char *sout_cfg_find_value( sout_cfg_t *p_cfg, char *psz_name )
return
NULL
;
return
NULL
;
}
}
/*****************************************************************************
* Prototypes
*****************************************************************************/
#define sout_NewInstance(a,b) __sout_NewInstance(VLC_OBJECT(a),b)
VLC_EXPORT
(
sout_instance_t
*
,
__sout_NewInstance
,
(
vlc_object_t
*
,
char
*
)
);
VLC_EXPORT
(
void
,
sout_DeleteInstance
,
(
sout_instance_t
*
)
);
VLC_EXPORT
(
sout_packetizer_input_t
*
,
sout_InputNew
,(
sout_instance_t
*
,
es_format_t
*
)
);
VLC_EXPORT
(
int
,
sout_InputDelete
,
(
sout_packetizer_input_t
*
)
);
VLC_EXPORT
(
int
,
sout_InputSendBuffer
,
(
sout_packetizer_input_t
*
,
block_t
*
)
);
VLC_EXPORT
(
sout_access_out_t
*
,
sout_AccessOutNew
,
(
sout_instance_t
*
,
char
*
psz_access
,
char
*
psz_name
)
);
VLC_EXPORT
(
void
,
sout_AccessOutDelete
,
(
sout_access_out_t
*
)
);
VLC_EXPORT
(
int
,
sout_AccessOutSeek
,
(
sout_access_out_t
*
,
off_t
)
);
VLC_EXPORT
(
int
,
sout_AccessOutRead
,
(
sout_access_out_t
*
,
block_t
*
)
);
VLC_EXPORT
(
int
,
sout_AccessOutWrite
,
(
sout_access_out_t
*
,
block_t
*
)
);
VLC_EXPORT
(
sout_mux_t
*
,
sout_MuxNew
,
(
sout_instance_t
*
,
char
*
,
sout_access_out_t
*
)
);
VLC_EXPORT
(
sout_input_t
*
,
sout_MuxAddStream
,
(
sout_mux_t
*
,
es_format_t
*
)
);
VLC_EXPORT
(
void
,
sout_MuxDeleteStream
,
(
sout_mux_t
*
,
sout_input_t
*
)
);
VLC_EXPORT
(
void
,
sout_MuxDelete
,
(
sout_mux_t
*
)
);
VLC_EXPORT
(
void
,
sout_MuxSendBuffer
,
(
sout_mux_t
*
,
sout_input_t
*
,
block_t
*
)
);
#define sout_ParseCfg( a, b, c, d ) __sout_ParseCfg( VLC_OBJECT(a), b, c, d )
VLC_EXPORT
(
void
,
__sout_ParseCfg
,
(
vlc_object_t
*
,
char
*
psz_prefix
,
const
char
**
ppsz_options
,
sout_cfg_t
*
)
);
VLC_EXPORT
(
char
*
,
sout_cfg_parser
,
(
char
**
,
sout_cfg_t
**
,
char
*
)
);
VLC_EXPORT
(
sout_stream_t
*
,
sout_stream_new
,
(
sout_instance_t
*
,
char
*
psz_chain
)
);
VLC_EXPORT
(
void
,
sout_stream_delete
,
(
sout_stream_t
*
p_stream
)
);
/* Announce system */
/* Announce system */
VLC_EXPORT
(
int
,
sout_AnnounceRegister
,
(
sout_instance_t
*
,
session_descriptor_t
*
,
announce_method_t
*
)
);
VLC_EXPORT
(
int
,
sout_AnnounceRegister
,
(
sout_instance_t
*
,
session_descriptor_t
*
,
announce_method_t
*
)
);
VLC_EXPORT
(
session_descriptor_t
*
,
sout_AnnounceRegisterSDP
,
(
sout_instance_t
*
,
char
*
,
announce_method_t
*
)
);
VLC_EXPORT
(
session_descriptor_t
*
,
sout_AnnounceRegisterSDP
,
(
sout_instance_t
*
,
char
*
,
announce_method_t
*
)
);
...
...
src/stream_output/stream_output.c
View file @
5363e037
...
@@ -39,7 +39,7 @@
...
@@ -39,7 +39,7 @@
/*****************************************************************************
/*****************************************************************************
* Local prototypes
* Local prototypes
*****************************************************************************/
*****************************************************************************/
static
void
sout_
cfg_free
(
sout_cfg_t
*
);
static
void
sout_
CfgDestroy
(
sout_cfg_t
*
);
#define sout_stream_url_to_chain( p, s ) _sout_stream_url_to_chain( VLC_OBJECT(p), s )
#define sout_stream_url_to_chain( p, s ) _sout_stream_url_to_chain( VLC_OBJECT(p), s )
static
char
*
_sout_stream_url_to_chain
(
vlc_object_t
*
,
char
*
);
static
char
*
_sout_stream_url_to_chain
(
vlc_object_t
*
,
char
*
);
...
@@ -138,7 +138,7 @@ sout_instance_t *__sout_NewInstance( vlc_object_t *p_parent, char * psz_dest )
...
@@ -138,7 +138,7 @@ sout_instance_t *__sout_NewInstance( vlc_object_t *p_parent, char * psz_dest )
/* attach it for inherit */
/* attach it for inherit */
vlc_object_attach
(
p_sout
,
p_parent
);
vlc_object_attach
(
p_sout
,
p_parent
);
p_sout
->
p_stream
=
sout_
stream_n
ew
(
p_sout
,
p_sout
->
psz_chain
);
p_sout
->
p_stream
=
sout_
StreamN
ew
(
p_sout
,
p_sout
->
psz_chain
);
if
(
p_sout
->
p_stream
==
NULL
)
if
(
p_sout
->
p_stream
==
NULL
)
{
{
...
@@ -163,7 +163,7 @@ void sout_DeleteInstance( sout_instance_t * p_sout )
...
@@ -163,7 +163,7 @@ void sout_DeleteInstance( sout_instance_t * p_sout )
vlc_object_detach
(
p_sout
);
vlc_object_detach
(
p_sout
);
/* remove the stream out chain */
/* remove the stream out chain */
sout_
stream_d
elete
(
p_sout
->
p_stream
);
sout_
StreamD
elete
(
p_sout
->
p_stream
);
/* *** free all string *** */
/* *** free all string *** */
FREE
(
p_sout
->
psz_sout
);
FREE
(
p_sout
->
psz_sout
);
...
@@ -282,7 +282,7 @@ sout_access_out_t *sout_AccessOutNew( sout_instance_t *p_sout,
...
@@ -282,7 +282,7 @@ sout_access_out_t *sout_AccessOutNew( sout_instance_t *p_sout,
return
NULL
;
return
NULL
;
}
}
psz_next
=
sout_
cfg_parser
(
&
p_access
->
psz_access
,
&
p_access
->
p_cfg
,
psz_next
=
sout_
CfgCreate
(
&
p_access
->
psz_access
,
&
p_access
->
p_cfg
,
psz_access
);
psz_access
);
if
(
psz_next
)
if
(
psz_next
)
{
{
...
@@ -323,7 +323,7 @@ void sout_AccessOutDelete( sout_access_out_t *p_access )
...
@@ -323,7 +323,7 @@ void sout_AccessOutDelete( sout_access_out_t *p_access )
}
}
free
(
p_access
->
psz_access
);
free
(
p_access
->
psz_access
);
sout_
cfg_free
(
p_access
->
p_cfg
);
sout_
CfgDestroy
(
p_access
->
p_cfg
);
free
(
p_access
->
psz_name
);
free
(
p_access
->
psz_name
);
...
@@ -373,13 +373,13 @@ sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, char *psz_mux,
...
@@ -373,13 +373,13 @@ sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, char *psz_mux,
}
}
p_mux
->
p_sout
=
p_sout
;
p_mux
->
p_sout
=
p_sout
;
psz_next
=
sout_
cfg_parser
(
&
p_mux
->
psz_mux
,
&
p_mux
->
p_cfg
,
psz_mux
);
psz_next
=
sout_
CfgCreate
(
&
p_mux
->
psz_mux
,
&
p_mux
->
p_cfg
,
psz_mux
);
if
(
psz_next
)
if
(
psz_next
)
{
{
free
(
psz_next
);
free
(
psz_next
);
}
}
p_mux
->
p_access
=
p_access
;
p_mux
->
p_access
=
p_access
;
p_mux
->
pf_c
apacity
=
NULL
;
p_mux
->
pf_c
ontrol
=
NULL
;
p_mux
->
pf_addstream
=
NULL
;
p_mux
->
pf_addstream
=
NULL
;
p_mux
->
pf_delstream
=
NULL
;
p_mux
->
pf_delstream
=
NULL
;
p_mux
->
pf_mux
=
NULL
;
p_mux
->
pf_mux
=
NULL
;
...
@@ -404,12 +404,10 @@ sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, char *psz_mux,
...
@@ -404,12 +404,10 @@ sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, char *psz_mux,
}
}
/* *** probe mux capacity *** */
/* *** probe mux capacity *** */
if
(
p_mux
->
pf_c
apacity
)
if
(
p_mux
->
pf_c
ontrol
)
{
{
int
b_answer
;
int
b_answer
;
if
(
p_mux
->
pf_capacity
(
p_mux
,
if
(
sout_MuxControl
(
p_mux
,
MUX_CAN_ADD_STREAM_WHILE_MUXING
,
&
b_answer
)
)
SOUT_MUX_CAP_GET_ADD_STREAM_ANY_TIME
,
NULL
,
(
void
*
)
&
b_answer
)
!=
SOUT_MUX_CAP_ERR_OK
)
{
{
b_answer
=
VLC_FALSE
;
b_answer
=
VLC_FALSE
;
}
}
...
@@ -419,9 +417,7 @@ sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, char *psz_mux,
...
@@ -419,9 +417,7 @@ sout_mux_t * sout_MuxNew( sout_instance_t *p_sout, char *psz_mux,
p_mux
->
b_add_stream_any_time
=
VLC_TRUE
;
p_mux
->
b_add_stream_any_time
=
VLC_TRUE
;
p_mux
->
b_waiting_stream
=
VLC_FALSE
;
p_mux
->
b_waiting_stream
=
VLC_FALSE
;
if
(
p_mux
->
pf_capacity
(
p_mux
,
if
(
sout_MuxControl
(
p_mux
,
MUX_GET_ADD_STREAM_WAIT
,
&
b_answer
)
)
SOUT_MUX_CAP_GET_ADD_STREAM_WAIT
,
NULL
,
(
void
*
)
&
b_answer
)
!=
SOUT_MUX_CAP_ERR_OK
)
{
{
b_answer
=
VLC_FALSE
;
b_answer
=
VLC_FALSE
;
}
}
...
@@ -460,7 +456,7 @@ void sout_MuxDelete( sout_mux_t *p_mux )
...
@@ -460,7 +456,7 @@ void sout_MuxDelete( sout_mux_t *p_mux )
}
}
free
(
p_mux
->
psz_mux
);
free
(
p_mux
->
psz_mux
);
sout_
cfg_free
(
p_mux
->
p_cfg
);
sout_
CfgDestroy
(
p_mux
->
p_cfg
);
vlc_object_destroy
(
p_mux
);
vlc_object_destroy
(
p_mux
);
}
}
...
@@ -748,7 +744,7 @@ static char *_get_chain_end( char *str )
...
@@ -748,7 +744,7 @@ static char *_get_chain_end( char *str )
}
}
}
}
char
*
sout_
cfg_parser
(
char
**
ppsz_name
,
sout_cfg_t
**
pp_cfg
,
char
*
psz_chain
)
char
*
sout_
CfgCreate
(
char
**
ppsz_name
,
sout_cfg_t
**
pp_cfg
,
char
*
psz_chain
)
{
{
sout_cfg_t
*
p_cfg
=
NULL
;
sout_cfg_t
*
p_cfg
=
NULL
;
char
*
p
=
psz_chain
;
char
*
p
=
psz_chain
;
...
@@ -880,7 +876,7 @@ char *sout_cfg_parser( char **ppsz_name, sout_cfg_t **pp_cfg, char *psz_chain )
...
@@ -880,7 +876,7 @@ char *sout_cfg_parser( char **ppsz_name, sout_cfg_t **pp_cfg, char *psz_chain )
return
NULL
;
return
NULL
;
}
}
static
void
sout_
cfg_free
(
sout_cfg_t
*
p_cfg
)
static
void
sout_
CfgDestroy
(
sout_cfg_t
*
p_cfg
)
{
{
while
(
p_cfg
!=
NULL
)
while
(
p_cfg
!=
NULL
)
{
{
...
@@ -896,7 +892,7 @@ static void sout_cfg_free( sout_cfg_t *p_cfg )
...
@@ -896,7 +892,7 @@ static void sout_cfg_free( sout_cfg_t *p_cfg )
}
}
}
}
void
__sout_
ParseCfg
(
vlc_object_t
*
p_this
,
char
*
psz_prefix
,
void
__sout_
CfgParse
(
vlc_object_t
*
p_this
,
char
*
psz_prefix
,
const
char
**
ppsz_options
,
sout_cfg_t
*
cfg
)
const
char
**
ppsz_options
,
sout_cfg_t
*
cfg
)
{
{
char
*
psz_name
;
char
*
psz_name
;
...
@@ -999,7 +995,7 @@ void __sout_ParseCfg( vlc_object_t *p_this, char *psz_prefix,
...
@@ -999,7 +995,7 @@ void __sout_ParseCfg( vlc_object_t *p_this, char *psz_prefix,
/*
/*
* XXX name and p_cfg are used (-> do NOT free them)
* XXX name and p_cfg are used (-> do NOT free them)
*/
*/
sout_stream_t
*
sout_
stream_n
ew
(
sout_instance_t
*
p_sout
,
char
*
psz_chain
)
sout_stream_t
*
sout_
StreamN
ew
(
sout_instance_t
*
p_sout
,
char
*
psz_chain
)
{
{
sout_stream_t
*
p_stream
;
sout_stream_t
*
p_stream
;
...
@@ -1021,7 +1017,7 @@ sout_stream_t *sout_stream_new( sout_instance_t *p_sout, char *psz_chain )
...
@@ -1021,7 +1017,7 @@ sout_stream_t *sout_stream_new( sout_instance_t *p_sout, char *psz_chain )
p_stream
->
p_sys
=
NULL
;
p_stream
->
p_sys
=
NULL
;
p_stream
->
psz_next
=
p_stream
->
psz_next
=
sout_
cfg_parser
(
&
p_stream
->
psz_name
,
&
p_stream
->
p_cfg
,
psz_chain
);
sout_
CfgCreate
(
&
p_stream
->
psz_name
,
&
p_stream
->
p_cfg
,
psz_chain
);
msg_Dbg
(
p_sout
,
"stream=`%s'"
,
p_stream
->
psz_name
);
msg_Dbg
(
p_sout
,
"stream=`%s'"
,
p_stream
->
psz_name
);
...
@@ -1032,14 +1028,14 @@ sout_stream_t *sout_stream_new( sout_instance_t *p_sout, char *psz_chain )
...
@@ -1032,14 +1028,14 @@ sout_stream_t *sout_stream_new( sout_instance_t *p_sout, char *psz_chain )
if
(
!
p_stream
->
p_module
)
if
(
!
p_stream
->
p_module
)
{
{
sout_
stream_d
elete
(
p_stream
);
sout_
StreamD
elete
(
p_stream
);
return
NULL
;
return
NULL
;
}
}
return
p_stream
;
return
p_stream
;
}
}
void
sout_
stream_d
elete
(
sout_stream_t
*
p_stream
)
void
sout_
StreamD
elete
(
sout_stream_t
*
p_stream
)
{
{
msg_Dbg
(
p_stream
,
"destroying chain... (name=%s)"
,
p_stream
->
psz_name
);
msg_Dbg
(
p_stream
,
"destroying chain... (name=%s)"
,
p_stream
->
psz_name
);
...
@@ -1049,7 +1045,7 @@ void sout_stream_delete( sout_stream_t *p_stream )
...
@@ -1049,7 +1045,7 @@ void sout_stream_delete( sout_stream_t *p_stream )
FREE
(
p_stream
->
psz_name
);
FREE
(
p_stream
->
psz_name
);
FREE
(
p_stream
->
psz_next
);
FREE
(
p_stream
->
psz_next
);
sout_
cfg_free
(
p_stream
->
p_cfg
);
sout_
CfgDestroy
(
p_stream
->
p_cfg
);
msg_Dbg
(
p_stream
,
"destroying chain done"
);
msg_Dbg
(
p_stream
,
"destroying chain done"
);
vlc_object_destroy
(
p_stream
);
vlc_object_destroy
(
p_stream
);
...
...
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