X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fstream_output%2Fsdp.c;h=d2c0610655df1ac88588dc4120ba48bdf1fcebca;hb=2151d6fe01a3b730b6d241b561ce18f5cc424faf;hp=93c929b1f05a8c3d85158fcf27d2fec936d677fc;hpb=5d33b82e889d2d8c3d9f040eaa0d6a6e51d270b0;p=vlc diff --git a/src/stream_output/sdp.c b/src/stream_output/sdp.c index 93c929b1f0..d2c0610655 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. *****************************************************************************/ -#include +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include #include #include #include @@ -74,15 +79,15 @@ char *AddressToSDP (const struct sockaddr *addr, socklen_t addrlen, char *buf) } -static vlc_bool_t IsSDPString (const char *str) +static bool IsSDPString (const char *str) { if (strchr (str, '\r') != NULL) - return VLC_FALSE; + return false; if (strchr (str, '\n') != NULL) - return VLC_FALSE; + return false; if (!IsUTF8 (str)) - return VLC_FALSE; - return VLC_TRUE; + return false; + return true; } @@ -127,7 +132,7 @@ char *sdp_Start (const char *name, const char *description, const char *url, } if (asprintf (&sdp, "v=0" - "\r\no=- "I64Fu" "I64Fu" IN IP%c %s" + "\r\no=- %"PRIu64" %"PRIu64" IN IP%c %s" "\r\ns=%s" "\r\ni=%s" "%s%s" // optional URL @@ -204,8 +209,9 @@ 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) + unsigned pt, bool bw_indep, unsigned bw, + const char *ptname, unsigned clock, unsigned chans, + const char *fmtp) { char *newsdp, *ptr; size_t inlen = strlen (*sdp), outlen = inlen; @@ -237,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); @@ -258,10 +270,6 @@ char *vlc_sdp_Start (vlc_object_t *obj, const char *cfgpref, 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");