Changeset fe63f4c516d7a328fc743a90ec08e1df725376c0

Show
Ignore:
Timestamp:
09/11/07 19:05:09 (1 year ago)
Author:
Rémi Denis-Courmont <rem@videolan.org>
git-committer:
Rémi Denis-Courmont <rem@videolan.org> 1189530309 +0000
git-parent:

[4a7e8ae30ad231844cdb6abfdec00d5c287232e9]

git-author:
Rémi Denis-Courmont <rem@videolan.org> 1189530309 +0000
Message:

Try to improve and export the SDP formatting helpers

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • include/vlc_sout.h

    r7681a9b rfe63f4c  
    221221VLC_EXPORT(void,                 sout_MethodRelease, (announce_method_t *) ); 
    222222 
     223/** SDP */ 
     224 
     225VLC_EXPORT( char *, sdp_Start, (const char *name, const char *description, const char *url, const char *email, const char *phone, const struct sockaddr *orig, socklen_t origlen, const struct sockaddr *addr, socklen_t addrlen) ); 
     226VLC_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) ); 
     227VLC_EXPORT( char *, sdp_AddAttribute, (char **sdp, const char *name, const char *fmt, ...) ); 
     228 
     229 
    223230#ifdef __cplusplus 
    224231} 
  • src/libvlc.sym

    r27e278e rfe63f4c  
    256256resolve_xml_special_chars 
    257257secstotimestr 
     258sdp_Start 
     259sdp_AddAttribute 
     260sdp_AddMedia 
    258261sout_AccessOutDelete 
    259262sout_AccessOutNew 
  • src/stream_output/sap.c

    r0a84a03 rfe63f4c  
    598598    char *psz_group, *psz_name, *psz_sdp; 
    599599 
    600      char *head = StartSDP (p_session->psz_name, p_session->description, 
     600     char *head = sdp_Start (p_session->psz_name, p_session->description, 
    601601        p_session->url, p_session->email, p_session->phone, 
    602602        (const struct sockaddr *)&p_session->orig, p_session->origlen, 
  • src/stream_output/sdp.c

    rf96cead rfe63f4c  
    8787 
    8888 
    89 char *StartSDP (const char *name, const char *description, const char *url, 
     89char *sdp_Start (const char *name, const char *description, const char *url, 
    9090                const char *email, const char *phone, 
    9191                const struct sockaddr *src, socklen_t srclen, 
     
    158158 
    159159 
    160 char *vAddSDPMedia (char **sdp, 
    161                     const char *type, int dport, const char *protocol, 
    162                     unsigned pt, const char *rtpmap, 
    163                     const char *fmtpfmt, va_list ap) 
     160static char * 
     161vsdp_AddAttribute (char **sdp, const char *name, const char *fmt, va_list ap) 
     162
     163    size_t oldlen = strlen (*sdp); 
     164    size_t addlen = 
     165        sizeof ("a=:\r\n") + strlen (name) + vsnprintf (NULL, 0, fmt, ap); 
     166    char *ret = realloc (*sdp, oldlen + addlen); 
     167 
     168    if (ret == NULL) 
     169        return NULL; 
     170 
     171    oldlen += sprintf (ret + oldlen, "a=%s:", name); 
     172    sprintf (ret + oldlen, fmt, ap); 
     173    return *sdp = ret; 
     174
     175 
     176 
     177char *sdp_AddAttribute (char **sdp, const char *name, const char *fmt, ...) 
     178
     179    char *ret; 
     180 
     181    if (fmt != NULL) 
     182    { 
     183        va_list ap; 
     184 
     185        va_start (ap, fmt); 
     186        ret = vsdp_AddAttribute (sdp, name, fmt, ap); 
     187        va_end (ap); 
     188    } 
     189    else 
     190    { 
     191        size_t oldlen = strlen (*sdp); 
     192        ret = realloc (*sdp, oldlen + strlen (name) + sizeof ("a=\r\n")); 
     193        if (ret == NULL) 
     194            return NULL; 
     195 
     196        sprintf (ret + oldlen, "a=%s\r\n", name); 
     197    } 
     198    return ret; 
     199
     200 
     201 
     202char *sdp_AddMedia (char **sdp, 
     203                    const char *type, const char *protocol, int dport, 
     204                    unsigned pt, vlc_bool_t bw_indep, unsigned bw, 
     205                    const char *rtpmap, const char *fmtp) 
    164206{ 
    165207    char *newsdp, *ptr; 
     
    178220                        type, dport, protocol, pt); 
    179221 
     222    newsdp = realloc (*sdp, outlen + 1); 
     223    if (newsdp == NULL) 
     224        return NULL; 
     225 
     226    *sdp = newsdp; 
     227    ptr = newsdp + inlen; 
     228 
     229    ptr += sprintf (ptr, "m=%s %u %s %d\r\n" 
     230                         "b=RR:0\r\n", 
     231                         type, dport, protocol, pt); 
     232 
    180233    /* RTP payload type map */ 
    181234    if (rtpmap != NULL) 
    182         outlen += snprintf (NULL, 0, "a=rtpmap:%u %s\r\n", pt, rtpmap); 
    183  
     235        sdp_AddAttribute ("rtpmap", "%u %s", pt, rtpmap); 
    184236    /* Format parameters */ 
    185     if (fmtpfmt != NULL) 
    186     { 
    187         outlen += sizeof ("a=fmtp:123 *\r\n"); 
    188         outlen += vsnprintf (NULL, 0, fmtpfmt, ap); 
    189     } 
    190  
    191     newsdp = realloc (*sdp, outlen + 1); 
    192     if (newsdp == NULL) 
    193         return NULL; 
    194  
    195     *sdp = newsdp; 
    196     ptr = newsdp + inlen; 
    197  
    198     /* RTP payload type map */ 
    199     ptr += sprintf (ptr, "a=rtpmap:%u %s\r\n", pt, rtpmap); 
    200  
    201     /* Format parameters */ 
    202     if (fmtpfmt != NULL) 
    203     { 
    204         ptr += sprintf (ptr, "a=fmtp:%u ", pt); 
    205         ptr += vsprintf (ptr, fmtpfmt, ap); 
    206     } 
     237    if (fmtp != NULL) 
     238        sdp_AddAttribute ("fmtp", "%u %s", pt, fmtp); 
    207239 
    208240    return newsdp; 
    209241} 
    210  
    211  
    212 char *AddSDPMedia (char **sdp, const char *type, int dport, const char *proto, 
    213                    unsigned pt, const char *rtpmap, const char *fmtpfmt, ...) 
    214 { 
    215     va_list ap; 
    216     char *ret; 
    217  
    218     va_start (ap, fmtpfmt); 
    219     ret = vAddSDPMedia (sdp, type, dport, proto, pt, rtpmap, fmtpfmt, ap); 
    220     va_end (ap); 
    221  
    222     return ret; 
    223 } 
  • src/stream_output/stream_output.h

    rf96cead rfe63f4c  
    116116void announce_SAPHandlerDestroy( sap_handler_t *p_sap ); 
    117117 
    118 #include <stdarg.h> 
    119  
    120 char *StartSDP (const char *name, const char *description, const char *url, 
    121                 const char *email, const char *phone, 
    122                 const struct sockaddr *orig, socklen_t origlen, 
    123                 const struct sockaddr *addr, socklen_t addrlen); 
    124  
    125 char *vAddSDPMedia (char **sdp, const char *type, int dport, const char *prot, 
    126                     unsigned pt, const char *rtpmap, 
    127                     const char *fmtpfmt, va_list ap); 
    128 char *AddSDPMedia (char **sdp, const char *type, int dport, const char *proto, 
    129                    unsigned pt, const char *rtpmap, const char *fmtpfmt, ...); 
    130  
    131118#endif