X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fstream_output%2Fsdp.c;h=82be7910c3083d275047bf8af245c0efcb61ec04;hb=2e7e22467bd0ba3d9ef6cb2211fab3133ae40486;hp=02ba40ba180e24943c29b6dddd393608e75fa67e;hpb=bc650c59ca6d2edbf555dc0cec11091f274b42f5;p=vlc diff --git a/src/stream_output/sdp.c b/src/stream_output/sdp.c index 02ba40ba18..82be7910c3 100644 --- a/src/stream_output/sdp.c +++ b/src/stream_output/sdp.c @@ -19,8 +19,13 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + #include +#include #include #include #include @@ -86,6 +91,7 @@ static vlc_bool_t IsSDPString (const char *str) } +static 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, @@ -204,7 +210,8 @@ char *sdp_AddAttribute (char **sdp, const char *name, const char *fmt, ...) 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) + const char *ptname, unsigned clock, unsigned chans, + const char *fmtp) { char *newsdp, *ptr; size_t inlen = strlen (*sdp), outlen = inlen; @@ -236,8 +243,14 @@ char *sdp_AddMedia (char **sdp, ptr += sprintf (ptr, "b=RR:0\r\n"); /* RTP payload type map */ - if (rtpmap != NULL) - sdp_AddAttribute (sdp, "rtpmap", "%u %s", pt, rtpmap); + if (ptname != NULL) + { + if ((strcmp (type, "audio") == 0) && (chans != 1)) + sdp_AddAttribute (sdp, "rtpmap", "%u %s/%u/%u", pt, ptname, clock, + chans); + else + sdp_AddAttribute (sdp, "rtpmap", "%u %s/%u", pt, ptname, clock); + } /* Format parameters */ if (fmtp != NULL) sdp_AddAttribute (sdp, "fmtp", "%u %s", pt, fmtp); @@ -271,10 +284,6 @@ char *vlc_sdp_Start (vlc_object_t *obj, const char *cfgpref, 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); @@ -284,5 +293,17 @@ char *vlc_sdp_Start (vlc_object_t *obj, const char *cfgpref, free (email); free (phone); + if (sdp == NULL) + return NULL; + + /* Totally non-standard */ + strcpy (subvar, "group"); + char *group = var_GetNonEmptyString (obj, varname); + if (group != NULL) + { + sdp_AddAttribute (&sdp, "x-plgroup", "%s", group); + free (group); + } + return sdp; }