Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
V
vlc-2-2
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-2-2
Commits
a2dd9177
Commit
a2dd9177
authored
Oct 17, 2007
by
Jean-Paul Saman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add Icecast support to profiles.
parent
7b3eb71e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
113 additions
and
26 deletions
+113
-26
include/vlc_streaming.h
include/vlc_streaming.h
+66
-19
src/stream_output/profiles.c
src/stream_output/profiles.c
+47
-7
No files found.
include/vlc_streaming.h
View file @
a2dd9177
...
@@ -121,14 +121,20 @@ enum { I_VB, I_AB, I_CHANNELS, F_SCALE, B_SOVERLAY, PSZ_VC, PSZ_AC, PSZ_SC,
...
@@ -121,14 +121,20 @@ enum { I_VB, I_AB, I_CHANNELS, F_SCALE, B_SOVERLAY, PSZ_VC, PSZ_AC, PSZ_SC,
PSZ_VE
,
PSZ_AE
};
PSZ_VE
,
PSZ_AE
};
struct
sout_transcode_t
struct
sout_transcode_t
{
{
int
i_vb
,
i_ab
,
i_channels
;
int32_t
i_vb
;
int32_t
i_ab
;
int32_t
i_channels
;
float
f_scale
;
float
f_scale
;
vlc_bool_t
b_soverlay
;
vlc_bool_t
b_soverlay
;
char
*
psz_vcodec
;
char
*
psz_vcodec
;
char
*
psz_acodec
,
*
psz_scodec
,
*
psz_venc
,
*
psz_aenc
;
char
*
psz_acodec
;
char
*
psz_scodec
;
char
*
psz_venc
;
char
*
psz_aenc
;
char
*
psz_additional
;
char
*
psz_additional
;
int
i_params
;
sout_param_t
**
pp_params
;
int32_t
i_params
;
sout_param_t
**
pp_params
;
};
};
void
streaming_TranscodeParametersApply
(
sout_transcode_t
*
p_module
);
void
streaming_TranscodeParametersApply
(
sout_transcode_t
*
p_module
);
...
@@ -136,9 +142,13 @@ void streaming_TranscodeParametersApply( sout_transcode_t *p_module );
...
@@ -136,9 +142,13 @@ void streaming_TranscodeParametersApply( sout_transcode_t *p_module );
enum
{
PSZ_MUX
,
PSZ_ACCESS
,
PSZ_URL
,
PSZ_NAME
,
PSZ_GROUP
};
enum
{
PSZ_MUX
,
PSZ_ACCESS
,
PSZ_URL
,
PSZ_NAME
,
PSZ_GROUP
};
struct
sout_std_t
struct
sout_std_t
{
{
char
*
psz_mux
,
*
psz_access
;
char
*
psz_mux
;
char
*
psz_url
,
*
psz_name
,
*
psz_group
;
char
*
psz_access
;
int
i_params
;
sout_param_t
**
pp_params
;
char
*
psz_url
;
char
*
psz_name
;
char
*
psz_group
;
int
i_params
;
sout_param_t
**
pp_params
;
};
};
void
streaming_StdParametersApply
(
sout_std_t
*
p_module
);
void
streaming_StdParametersApply
(
sout_std_t
*
p_module
);
...
@@ -150,7 +160,8 @@ struct sout_display_t
...
@@ -150,7 +160,8 @@ struct sout_display_t
/* Duplicate */
/* Duplicate */
struct
sout_duplicate_t
struct
sout_duplicate_t
{
{
int
i_children
,
i_conditions
;
int
i_children
;
int
i_conditions
;
sout_chain_t
**
pp_children
;
sout_chain_t
**
pp_children
;
char
**
ppsz_conditions
;
char
**
ppsz_conditions
;
};
};
...
@@ -201,27 +212,63 @@ struct streaming_profile_t
...
@@ -201,27 +212,63 @@ struct streaming_profile_t
sout_chain_t
*
p_chain
;
sout_chain_t
*
p_chain
;
};
};
/** struct for holding account information needed to access the services */
struct
streaming_account_t
{
char
*
psz_username
;
/*< username of account */
char
*
psz_password
;
/*< password of account */
};
/**************** GUI interaction *****************/
/**************** GUI interaction *****************/
/** struct to hold user interface information */
struct
sout_gui_descr_t
struct
sout_gui_descr_t
{
{
/* Access */
/* Access types */
vlc_bool_t
b_local
,
b_file
,
b_http
,
b_mms
,
b_rtp
,
b_udp
,
b_dump
;
vlc_bool_t
b_local
;
/*< local access module */
char
*
psz_file
,
*
psz_http
,
*
psz_mms
,
*
psz_rtp
,
*
psz_udp
;
vlc_bool_t
b_file
;
/*< file access module */
int
i_http
,
i_mms
,
i_rtp
,
i_udp
;
vlc_bool_t
b_http
;
/*< http access module */
vlc_bool_t
b_mms
;
/*< mms access module */
vlc_bool_t
b_rtp
;
/*< rtp access module */
vlc_bool_t
b_udp
;
/*< udp access module */
vlc_bool_t
b_dump
;
/*< dump access module */
vlc_bool_t
b_icecast
;
/*< icecast access module */
char
*
psz_file
;
/*< filename */
char
*
psz_http
;
/*< HTTP servername or ipaddress */
char
*
psz_mms
;
/*< MMS servername or ipaddress */
char
*
psz_rtp
;
/*< RTP servername or ipaddress */
char
*
psz_udp
;
/*< UDP servername or ipaddress */
char
*
psz_icecast
;
/*< Icecast servername or ipaddress*/
int32_t
i_http
;
/*< http port number */
int32_t
i_mms
;
/*< mms port number */
int32_t
i_rtp
;
/*< rtp port number */
int32_t
i_udp
;
/*< udp port number */
int32_t
i_icecast
;
/*< icecast port number */
/* Mux */
/* Mux */
char
*
psz_mux
;
char
*
psz_mux
;
/*< name of muxer to use in streaming */
/* Transcode */
/* Transcode */
vlc_bool_t
b_soverlay
;
vlc_bool_t
b_soverlay
;
/*< enable burning overlay in the video */
char
*
psz_vcodec
,
*
psz_acodec
,
*
psz_scodec
;
char
*
psz_vcodec
;
/*< video codec to use in transcoding */
int
i_vb
,
i_ab
,
i_channels
;
char
*
psz_acodec
;
/*< audio codec to use in transcoding */
float
f_scale
;
char
*
psz_scodec
;
/*< subtitle codec to use in transcoding */
int32_t
i_vb
;
/*< video bitrate to use in transcoding */
int32_t
i_ab
;
/*< audio bitrate to use in transcoding */
int32_t
i_channels
;
/*< number of audio channels to use in transcoding */
float
f_scale
;
/*< scaling factor to use in transcoding */
/* Misc */
/* Misc */
vlc_bool_t
b_sap
,
b_all_es
;
vlc_bool_t
b_sap
;
/*< send SAP announcement */
char
*
psz_group
,
*
psz_name
;
vlc_bool_t
b_all_es
;
/*< send all elementary streams from source stream */
int
i_ttl
;
char
*
psz_group
;
/*< SAP Group name */
char
*
psz_name
;
/*< SAP name */
int32_t
i_ttl
;
/*< Time To Live (TTL) for network traversal */
/* Icecast */
char
*
psz_mountpoint
;
/*< path to Icecast mountpoint */
struct
streaming_account_t
sa_icecast
;
/*< Icecast account information */
};
};
VLC_EXPORT
(
void
,
streaming_GuiDescToChain
,(
vlc_object_t
*
,
sout_chain_t
*
,
sout_gui_descr_t
*
));
VLC_EXPORT
(
void
,
streaming_GuiDescToChain
,(
vlc_object_t
*
,
sout_chain_t
*
,
sout_gui_descr_t
*
));
...
...
src/stream_output/profiles.c
View file @
a2dd9177
...
@@ -264,15 +264,15 @@ void streaming_ParameterApply( sout_param_t *p_param, char **ppsz_dest,
...
@@ -264,15 +264,15 @@ void streaming_ParameterApply( sout_param_t *p_param, char **ppsz_dest,
{ \
{ \
pd->b_file = VLC_TRUE; pd->psz_file = strdup( STDM->psz_url ); \
pd->b_file = VLC_TRUE; pd->psz_file = strdup( STDM->psz_url ); \
} \
} \
else if(
!strcmp( STDM->psz_access, "http" ) )\
else if( !strcmp( STDM->psz_access, "http" ) )\
{ \
{ \
pd->b_http = VLC_TRUE; pd->psz_http = strdup( STDM->psz_url ); \
pd->b_http = VLC_TRUE; pd->psz_http = strdup( STDM->psz_url ); \
} \
} \
else if(
!strcmp( STDM->psz_access, "mms" ) )\
else if( !strcmp( STDM->psz_access, "mms" ) )\
{ \
{ \
pd->b_mms = VLC_TRUE; pd->psz_mms = strdup( STDM->psz_url ); \
pd->b_mms = VLC_TRUE; pd->psz_mms = strdup( STDM->psz_url ); \
} \
} \
else if(
!strcmp( STDM->psz_access, "udp" ) )\
else if( !strcmp( STDM->psz_access, "udp" ) )\
{ \
{ \
pd->b_udp = VLC_TRUE; pd->psz_udp = strdup( STDM->psz_url ); \
pd->b_udp = VLC_TRUE; pd->psz_udp = strdup( STDM->psz_url ); \
} \
} \
...
@@ -378,6 +378,7 @@ void streaming_GuiDescToChain( vlc_object_t *p_obj, sout_chain_t *p_chain,
...
@@ -378,6 +378,7 @@ void streaming_GuiDescToChain( vlc_object_t *p_obj, sout_chain_t *p_chain,
{
{
sout_duplicate_t
*
p_dup
=
NULL
;
sout_duplicate_t
*
p_dup
=
NULL
;
(
void
)
p_obj
;
(
void
)
p_obj
;
/* Clean up the chain */
/* Clean up the chain */
streaming_ChainClean
(
p_chain
);
streaming_ChainClean
(
p_chain
);
...
@@ -392,7 +393,7 @@ void streaming_GuiDescToChain( vlc_object_t *p_obj, sout_chain_t *p_chain,
...
@@ -392,7 +393,7 @@ void streaming_GuiDescToChain( vlc_object_t *p_obj, sout_chain_t *p_chain,
}
}
/* #std{} */
/* #std{} */
if
(
pd
->
b_local
+
pd
->
b_file
+
pd
->
b_http
+
pd
->
b_mms
+
pd
->
b_rtp
+
if
(
pd
->
b_local
+
pd
->
b_file
+
pd
->
b_http
+
pd
->
b_mms
+
pd
->
b_rtp
+
pd
->
b_udp
>
1
)
pd
->
b_udp
+
pd
->
b_icecast
>
1
)
{
{
p_dup
=
streaming_ChainAddDup
(
p_chain
);
p_dup
=
streaming_ChainAddDup
(
p_chain
);
}
}
...
@@ -424,7 +425,8 @@ void streaming_GuiDescToChain( vlc_object_t *p_obj, sout_chain_t *p_chain,
...
@@ -424,7 +425,8 @@ void streaming_GuiDescToChain( vlc_object_t *p_obj, sout_chain_t *p_chain,
p_std
=
streaming_ChainAddStd
(
DUP_OR_CHAIN
,
"udp"
,
p_std
=
streaming_ChainAddStd
(
DUP_OR_CHAIN
,
"udp"
,
pd
->
psz_mux
,
pd
->
psz_udp
);
pd
->
psz_mux
,
pd
->
psz_udp
);
}
}
if
(
pd
->
i_ttl
)
ADD_OPT
(
"ttl=%i"
,
pd
->
i_ttl
);
if
(
pd
->
i_ttl
)
ADD_OPT
(
"ttl=%i"
,
pd
->
i_ttl
);
if
(
pd
->
b_sap
)
if
(
pd
->
b_sap
)
{
{
pd
->
b_sap
=
VLC_TRUE
;
pd
->
b_sap
=
VLC_TRUE
;
...
@@ -432,6 +434,43 @@ void streaming_GuiDescToChain( vlc_object_t *p_obj, sout_chain_t *p_chain,
...
@@ -432,6 +434,43 @@ void streaming_GuiDescToChain( vlc_object_t *p_obj, sout_chain_t *p_chain,
p_std
->
psz_group
=
pd
->
psz_group
?
strdup
(
pd
->
psz_group
)
:
NULL
;
p_std
->
psz_group
=
pd
->
psz_group
?
strdup
(
pd
->
psz_group
)
:
NULL
;
}
}
}
}
if
(
pd
->
b_icecast
)
{
sout_std_t
*
p_std
;
char
*
psz_username
;
if
(
p_dup
)
streaming_DupAddChild
(
p_dup
);
if
(
!
strcmp
(
pd
->
sa_icecast
.
psz_username
,
""
)
)
{
asprintf
(
&
psz_username
,
"%s"
,
""
);
}
else
{
asprintf
(
&
psz_username
,
"%s:%s@"
,
pd
->
sa_icecast
.
psz_username
,
pd
->
sa_icecast
.
psz_password
);
}
if
(
pd
->
i_icecast
>
0
)
{
char
*
psz_url
;
asprintf
(
&
psz_url
,
"%s%s:%i%s"
,
psz_username
,
pd
->
psz_icecast
,
pd
->
i_icecast
,
pd
->
psz_mountpoint
);
p_std
=
streaming_ChainAddStd
(
DUP_OR_CHAIN
,
"shout"
,
pd
->
psz_mux
,
psz_url
);
free
(
psz_url
);
}
else
{
char
*
psz_url
;
asprintf
(
&
psz_url
,
"%s:%s@%s%s"
,
pd
->
sa_icecast
.
psz_username
,
pd
->
sa_icecast
.
psz_password
,
pd
->
psz_icecast
,
pd
->
psz_mountpoint
);
p_std
=
streaming_ChainAddStd
(
DUP_OR_CHAIN
,
"shout"
,
pd
->
psz_mux
,
psz_url
);
free
(
psz_url
);
}
free
(
psz_username
);
}
HANDLE_GUI_URL
(
http
,
"http"
)
HANDLE_GUI_URL
(
http
,
"http"
)
HANDLE_GUI_URL
(
mms
,
"mms"
)
HANDLE_GUI_URL
(
mms
,
"mms"
)
}
}
...
@@ -490,11 +529,12 @@ static char * ChainToPsz( sout_chain_t *p_chain, vlc_bool_t b_root )
...
@@ -490,11 +529,12 @@ static char * ChainToPsz( sout_chain_t *p_chain, vlc_bool_t b_root )
break
;
break
;
case
SOUT_MOD_DISPLAY
:
case
SOUT_MOD_DISPLAY
:
CHAIN_APPEND
(
"display"
)
CHAIN_APPEND
(
"display"
)
;
break
;
break
;
case
SOUT_MOD_STD
:
case
SOUT_MOD_STD
:
CHAIN_APPEND
(
"std{access=%s,
url
=%s,mux=%s}"
,
STDM
->
psz_access
,
CHAIN_APPEND
(
"std{access=%s,
dst
=%s,mux=%s}"
,
STDM
->
psz_access
,
STDM
->
psz_url
,
STDM
->
psz_mux
);
STDM
->
psz_url
,
STDM
->
psz_mux
);
break
;
}
}
if
(
i
!=
p_chain
->
i_modules
-
1
)
CHAIN_APPEND
(
":"
);
if
(
i
!=
p_chain
->
i_modules
-
1
)
CHAIN_APPEND
(
":"
);
}
}
...
...
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