Changeset 8da8aa9818c5f129db745331bf2b87f173eaf0c0

Show
Ignore:
Timestamp:
04/10/07 19:46:20 (1 year ago)
Author:
Rémi Denis-Courmont <rem@videolan.org>
git-committer:
Rémi Denis-Courmont <rem@videolan.org> 1191519980 +0000
git-parent:

[5d33b82e889d2d8c3d9f040eaa0d6a6e51d270b0]

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

Factorize rtpmap formatting

Files:

Legend:

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

    r5d33b82 r8da8aa9  
    220220 
    221221VLC_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 ) ); 
    222 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) ); 
     222VLC_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 *ptname, unsigned clockrate, unsigned channels, const char *fmtp) ); 
    223223VLC_EXPORT( char *, sdp_AddAttribute, (char **sdp, const char *name, const char *fmt, ...) ATTRIBUTE_FORMAT( 3, 4 ) ); 
    224224 
  • modules/stream_out/rtp.c

    reaffd94 r8da8aa9  
    283283 
    284284    /* for sdp */ 
    285     char        *psz_rtpmap
     285    const char  *psz_enc
    286286    char        *psz_fmtp; 
    287287    int          i_clock_rate; 
     
    744744        sdp_AddMedia( &psz_sdp, mime_major, proto, inclport * id->i_port, 
    745745                      id->i_payload_type, VLC_FALSE, id->i_bitrate, 
    746                       id->psz_rtpmap, id->psz_fmtp); 
     746                      id->psz_enc, id->i_clock_rate, id->i_channels, 
     747                      id->psz_fmtp); 
    747748 
    748749        if( rtsp_url != NULL ) 
     
    853854    id->ssrc[3] = rand()&0xff; 
    854855 
    855     id->psz_rtpmap = NULL; 
     856    id->psz_enc    = NULL; 
    856857    id->psz_fmtp   = NULL; 
    857858    id->i_clock_rate = 90000; /* most common case for video */ 
     
    930931        { 
    931932            id->i_payload_type = 33; 
    932             id->psz_rtpmap = strdup( "MP2T/90000" )
     933            id->psz_enc = "MP2T"
    933934        } 
    934935        else 
    935936        { 
    936             id->psz_rtpmap = strdup( "MP2P/90000" )
     937            id->psz_enc = "MP2P"
    937938        } 
    938939    } 
     
    943944            if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 8000 ) 
    944945                id->i_payload_type = 0; 
    945             if( asprintf( &id->psz_rtpmap, "PCMU/%d/%d", p_fmt->audio.i_rate, 
    946                           p_fmt->audio.i_channels ) == -1 ) 
    947                 id->psz_rtpmap = NULL; 
     946            id->psz_enc = "PCMU"; 
    948947            id->pf_packetize = rtp_packetize_l8; 
    949948            break; 
     
    951950            if( p_fmt->audio.i_channels == 1 && p_fmt->audio.i_rate == 8000 ) 
    952951                id->i_payload_type = 8; 
    953             if( asprintf( &id->psz_rtpmap, "PCMA/%d/%d", p_fmt->audio.i_rate, 
    954                           p_fmt->audio.i_channels ) == -1 ) 
    955                 id->psz_rtpmap = NULL; 
     952            id->psz_enc = "PCMA"; 
    956953            id->pf_packetize = rtp_packetize_l8; 
    957954            break; 
     
    966963                id->i_payload_type = 10; 
    967964            } 
    968             if( asprintf( &id->psz_rtpmap, "L16/%d/%d", p_fmt->audio.i_rate, 
    969                           p_fmt->audio.i_channels ) == -1 ) 
    970                 id->psz_rtpmap = NULL; 
     965            id->psz_enc = "L16"; 
    971966            id->pf_packetize = rtp_packetize_l16; 
    972967            break; 
    973968        case VLC_FOURCC( 'u', '8', ' ', ' ' ): 
    974             if( asprintf( &id->psz_rtpmap, "L8/%d/%d", p_fmt->audio.i_rate, 
    975                           p_fmt->audio.i_channels ) == -1 ) 
    976                 id->psz_rtpmap = NULL; 
     969            id->psz_enc = "L8"; 
    977970            id->pf_packetize = rtp_packetize_l8; 
    978971            break; 
    979972        case VLC_FOURCC( 'm', 'p', 'g', 'a' ): 
    980973            id->i_payload_type = 14; 
    981             id->psz_rtpmap = strdup( "MPA/90000" )
     974            id->psz_enc = "MPA"
    982975            id->pf_packetize = rtp_packetize_mpa; 
    983976            break; 
    984977        case VLC_FOURCC( 'm', 'p', 'g', 'v' ): 
    985978            id->i_payload_type = 32; 
    986             id->psz_rtpmap = strdup( "MPV/90000" )
     979            id->psz_enc = "MPV"
    987980            id->pf_packetize = rtp_packetize_mpv; 
    988981            break; 
    989982        case VLC_FOURCC( 'a', '5', '2', ' ' ): 
    990             id->psz_rtpmap = strdup( "ac3/90000" )
     983            id->psz_enc = "ac3"
    991984            id->pf_packetize = rtp_packetize_ac3; 
    992985            break; 
    993986        case VLC_FOURCC( 'H', '2', '6', '3' ): 
    994             id->psz_rtpmap = strdup( "H263-1998/90000" )
     987            id->psz_enc = "H263-1998"
    995988            id->pf_packetize = rtp_packetize_h263; 
    996989            break; 
    997990        case VLC_FOURCC( 'h', '2', '6', '4' ): 
    998             id->psz_rtpmap = strdup( "H264/90000" )
     991            id->psz_enc = "H264"
    999992            id->pf_packetize = rtp_packetize_h264; 
    1000993            id->psz_fmtp = NULL; 
     
    10581051            char hexa[2*p_fmt->i_extra +1]; 
    10591052 
    1060             id->psz_rtpmap = strdup( "MP4V-ES/90000" )
     1053            id->psz_enc = "MP4V-ES"
    10611054            id->pf_packetize = rtp_packetize_split; 
    10621055            if( p_fmt->i_extra > 0 ) 
     
    10751068                char hexa[2*p_fmt->i_extra +1]; 
    10761069 
    1077                 if( asprintf( &id->psz_rtpmap, "mpeg4-generic/%d", 
    1078                               p_fmt->audio.i_rate ) == -1 ) 
    1079                     id->psz_rtpmap = NULL; 
     1070                id->psz_enc = "mpeg4-generic"; 
    10801071                id->pf_packetize = rtp_packetize_mp4a; 
    10811072                sprintf_hexa( hexa, p_fmt->p_extra, p_fmt->i_extra ); 
     
    11071098                config[5]=0xc0; 
    11081099 
    1109                 if( asprintf( &id->psz_rtpmap, "MP4A-LATM/%d/%d", 
    1110                               p_fmt->audio.i_rate, 
    1111                               p_fmt->audio.i_channels ) == -1) 
    1112                     id->psz_rtpmap = NULL; 
     1100                id->psz_enc = "MP4A-LATM"; 
    11131101                id->pf_packetize = rtp_packetize_mp4a_latm; 
    11141102                sprintf_hexa( hexa, config, 6 ); 
     
    11201108        } 
    11211109        case VLC_FOURCC( 's', 'a', 'm', 'r' ): 
    1122             id->psz_rtpmap = strdup( p_fmt->audio.i_channels == 2 ? 
    1123                                      "AMR/8000/2" : "AMR/8000" ); 
     1110            id->psz_enc = "AMR"; 
    11241111            id->psz_fmtp = strdup( "octet-align=1" ); 
    11251112            id->pf_packetize = rtp_packetize_amr; 
    11261113            break; 
    11271114        case VLC_FOURCC( 's', 'a', 'w', 'b' ): 
    1128             id->psz_rtpmap = strdup( p_fmt->audio.i_channels == 2 ? 
    1129                                      "AMR-WB/16000/2" : "AMR-WB/16000" ); 
     1115            id->psz_enc = "AMR-WB"; 
    11301116            id->psz_fmtp = strdup( "octet-align=1" ); 
    11311117            id->pf_packetize = rtp_packetize_amr; 
     
    11331119        case VLC_FOURCC( 's', 'p', 'x', ' ' ): 
    11341120            id->i_payload_type = p_sys->i_payload_type++; 
    1135             if( asprintf( &id->psz_rtpmap, "SPEEX/%d", 
    1136                           p_fmt->audio.i_rate ) == -1) 
    1137                 id->psz_rtpmap = NULL; 
     1121            id->psz_enc = "SPEEX"; 
    11381122            id->pf_packetize = rtp_packetize_spx; 
    11391123            break; 
    11401124        case VLC_FOURCC( 't', '1', '4', '0' ): 
    1141             id->psz_rtpmap = strdup( "t140/1000" )
     1125            id->psz_enc = "t140"
    11421126            id->i_clock_rate = 1000; 
    11431127            id->pf_packetize = rtp_packetize_t140; 
     
    12191203    } 
    12201204 
    1221     free( id->psz_rtpmap ); 
    12221205    free( id->psz_fmtp ); 
    12231206 
  • src/stream_output/sdp.c

    r5d33b82 r8da8aa9  
    206206                    const char *type, const char *protocol, int dport, 
    207207                    unsigned pt, vlc_bool_t bw_indep, unsigned bw, 
    208                     const char *rtpmap, const char *fmtp) 
     208                    const char *ptname, unsigned clock, unsigned chans, 
     209                    const char *fmtp) 
    209210{ 
    210211    char *newsdp, *ptr; 
     
    238239 
    239240    /* RTP payload type map */ 
    240     if (rtpmap != NULL) 
    241         sdp_AddAttribute (sdp, "rtpmap", "%u %s", pt, rtpmap); 
     241    if (ptname != NULL) 
     242    { 
     243        if ((strcmp (type, "audio") == 0) && (chans != 1)) 
     244            sdp_AddAttribute (sdp, "rtpmap", "%u %s/%u/%u", pt, ptname, clock, 
     245                              chans); 
     246        else 
     247            sdp_AddAttribute (sdp, "rtpmap", "%u %s/%u", pt, ptname, clock); 
     248    } 
    242249    /* Format parameters */ 
    243250    if (fmtp != NULL)