/** SDP */
+VLC_EXPORT( char *, vlc_sdp_Start, ( vlc_object_t *obj, const char *cfgpref, const struct sockaddr *src, size_t srclen, const struct sockaddr *addr, size_t addrlen ) );
VLC_EXPORT( char *, sdp_Start, (const char *name, const char *description, const char *url, const char *email, const char *phone, const struct sockaddr *orig, size_t origlen, const struct sockaddr *addr, size_t addrlen) );
VLC_EXPORT( char *, sdp_AddMedia, (char **sdp, const char *type, const char *protocol, int dport, unsigned pt, vlc_bool_t bw_indep, unsigned bw, const char *rtpmap, const char *fmtp) );
VLC_EXPORT( char *, sdp_AddAttribute, (char **sdp, const char *name, const char *fmt, ...) ATTRIBUTE_FORMAT( 3, 4 ) );
#define NAME_LONGTEXT N_( \
"This is the name of the session that will be announced in the SDP " \
"(Session Descriptor)." )
-#define DESC_TEXT N_("Session description")
+#define DESC_TEXT N_("Session descriptipn")
#define DESC_LONGTEXT N_( \
- "This allows you to give a broader description of the stream, that will " \
- "be announced in the SDP (Session Descriptor)." )
+ "This allows you to give a short description with details about the stream, " \
+ "that will be announced in the SDP (Session Descriptor)." )
#define URL_TEXT N_("Session URL")
#define URL_LONGTEXT N_( \
"This allows you to give an URL with more details about the stream " \
"be announced in the SDP (Session Descriptor)." )
#define EMAIL_TEXT N_("Session email")
#define EMAIL_LONGTEXT N_( \
- "This allows you to give a contact mail address for the stream, that will " \
- "be announced in the SDP (Session Descriptor)." )
+ "This allows you to give a contact mail address for the stream, that will " \
+ "be announced in the SDP (Session Descriptor)." )
+#define PHONE_TEXT N_("Session phone number")
+#define PHONE_LONGTEXT N_( \
+ "This allows you to give a contact telephone number for the stream, that will " \
+ "be announced in the SDP (Session Descriptor)." )
+
#define PORT_TEXT N_("Port")
#define PORT_LONGTEXT N_( \
"This allows you to specify the base port for the RTP streaming." )
URL_LONGTEXT, VLC_TRUE );
add_string( SOUT_CFG_PREFIX "email", "", NULL, EMAIL_TEXT,
EMAIL_LONGTEXT, VLC_TRUE );
+ add_string( SOUT_CFG_PREFIX "phone", "", NULL, PHONE_TEXT,
+ PHONE_LONGTEXT, VLC_TRUE );
add_integer( SOUT_CFG_PREFIX "port", 1234, NULL, PORT_TEXT,
PORT_LONGTEXT, VLC_TRUE );
*****************************************************************************/
static const char *ppsz_sout_options[] = {
"dst", "name", "port", "port-audio", "port-video", "*sdp", "ttl", "mux",
- "description", "url", "email",
+ "description", "url", "email", "phone",
"dccp", "tcp", "udplite",
"mp4a-latm", NULL
};
dstlen = sizeof( struct sockaddr_in );
}
- psz_sdp = sdp_Start( p_sys->psz_session_name,
- p_sys->psz_session_description,
- p_sys->psz_session_url, p_sys->psz_session_email,
- NULL, NULL, 0, (struct sockaddr *)&dst, dstlen );
+ psz_sdp = vlc_sdp_Start( VLC_OBJECT( p_stream ), SOUT_CFG_PREFIX,
+ NULL, 0, (struct sockaddr *)&dst, dstlen );
if( psz_sdp == NULL )
return NULL;
-
/* TODO: a=source-filter */
if( rtsp_url != NULL )
char *sdp_Start (const char *name, const char *description, const char *url,
- const char *email, const char *phone,
- const struct sockaddr *src, size_t srclen,
- const struct sockaddr *addr, size_t addrlen)
+ const char *email, const char *phone,
+ const struct sockaddr *src, size_t srclen,
+ const struct sockaddr *addr, size_t addrlen)
{
uint64_t now = NTPtime64 ();
char *sdp;
return newsdp;
}
+
+
+char *vlc_sdp_Start (vlc_object_t *obj, const char *cfgpref,
+ const struct sockaddr *src, size_t srclen,
+ const struct sockaddr *addr, size_t addrlen)
+{
+ size_t cfglen = strlen (cfgpref);
+ if (cfglen > 100)
+ return NULL;
+
+ char varname[cfglen + sizeof ("description")], *subvar = varname + cfglen;
+ strcpy (varname, cfgpref);
+
+ session_descriptor_t *p_session = calloc (1, sizeof (*p_session));
+ if (p_session == NULL)
+ return NULL;
+
+ strcpy (subvar, "name");
+ char *name = var_GetNonEmptyString (obj, varname);
+ strcpy (subvar, "description");
+ char *description = var_GetNonEmptyString (obj, varname);
+ strcpy (subvar, "url");
+ char *url = var_GetNonEmptyString (obj, varname);
+ strcpy (subvar, "email");
+ char *email = var_GetNonEmptyString (obj, varname);
+ strcpy (subvar, "phone");
+ char *phone = var_GetNonEmptyString (obj, varname);
+#if 0
+ strcpy (subvar, "group");
+ char *group = var_GetNonEmptyString (obj, varname);
+#endif
+
+ char *sdp = sdp_Start (name, description, url, email, phone,
+ src, srclen, addr, addrlen);
+ free (name);
+ free (description);
+ free (url);
+ free (email);
+ free (phone);
+
+ return sdp;
+}