[vlc-devel] commit: Fix specifying a sout RTP port number using a sout MRL ( Rémi Denis-Courmont )
git version control
git at videolan.org
Sun Jun 22 18:00:49 CEST 2008
vlc | branch: master | Rémi Denis-Courmont <rdenis at simphalempin.com> | Sun Jun 22 19:02:50 2008 +0300| [4c8296b58b24175921b37f99dfa7bda5e08f6cdb]
Fix specifying a sout RTP port number using a sout MRL
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=4c8296b58b24175921b37f99dfa7bda5e08f6cdb
---
src/stream_output/stream_output.c | 45 +++++++++++++++++++++++-------------
1 files changed, 29 insertions(+), 16 deletions(-)
diff --git a/src/stream_output/stream_output.c b/src/stream_output/stream_output.c
index f52c017..c6980a9 100644
--- a/src/stream_output/stream_output.c
+++ b/src/stream_output/stream_output.c
@@ -813,34 +813,47 @@ static char *_sout_stream_url_to_chain( vlc_object_t *p_this,
{
mrl_t mrl;
char *psz_chain;
- const char *fmt = "standard{mux=\"%s\",access=\"%s\",dst=\"%s\"}";
- static const char rtpfmt[] = "rtp{mux=\"%s\",proto=\"%s\",dst=\"%s\"}";
mrl_Parse( &mrl, psz_url );
- /* Check if the URLs goes #rtp - otherwise we'll use #standard */
+ /* Check if the URLs goes to #rtp - otherwise we'll use #standard */
+ static const char rtplist[] = "dccp\0sctp\0tcp\0udplite\0";
+ for (const char *a = rtplist; *a; a += strlen (a) + 1)
+ if (strcmp (a, mrl.psz_access) == 0)
+ goto rtp;
+
if (strcmp (mrl.psz_access, "rtp") == 0)
{
+ char *port;
/* For historical reasons, rtp:// means RTP over UDP */
strcpy (mrl.psz_access, "udp");
- fmt = rtpfmt;
+rtp:
+ if (mrl.psz_name[0] == '[')
+ {
+ port = strstr (mrl.psz_name, "]:");
+ if (port != NULL)
+ port++;
+ }
+ else
+ port = strchr (mrl.psz_name, ':');
+ if (port != NULL)
+ *port++ = '\0'; /* erase ':' */
+
+ if (asprintf (&psz_chain,
+ "rtp{mux=\"%s\",proto=\"%s\",dst=\"%s%s%s\"}",
+ mrl.psz_way, mrl.psz_access, mrl.psz_name,
+ port ? "\",port=\"" : "", port ? port : "") == -1)
+ psz_chain = NULL;
}
else
{
- static const char list[] = "dccp\0sctp\0tcp\0udplite\0";
- for (const char *a = list; *a; a += strlen (a) + 1)
- if (strcmp (a, mrl.psz_access) == 0)
- {
- fmt = rtpfmt;
- break;
- }
+ /* Convert the URL to a basic standard sout chain */
+ if (asprintf (&psz_chain,
+ "standard{mux=\"%s\",access=\"%s\",dst=\"%s\"}",
+ mrl.psz_way, mrl.psz_access, mrl.psz_name) == -1)
+ psz_chain = NULL;
}
- /* Convert the URL to a basic sout chain */
- if (asprintf (&psz_chain, fmt,
- mrl.psz_way, mrl.psz_access, mrl.psz_name) == -1)
- psz_chain = NULL;
-
/* Duplicate and wrap if sout-display is on */
if (psz_chain && (config_GetInt( p_this, "sout-display" ) > 0))
{
More information about the vlc-devel
mailing list