Rename RTSPProtocol to RTSPLowerTransport, so that its name properly tells us
authorRonald S. Bultje <rsbultje@gmail.com>
Tue, 30 Sep 2008 13:18:41 +0000 (13:18 +0000)
committerRonald S. Bultje <rsbultje@gmail.com>
Tue, 30 Sep 2008 13:18:41 +0000 (13:18 +0000)
that it only describes the lower-level transport (TCP vs. UDP) and not the
actual data layout (e.g. RDT vs. RTP). See discussion in "Realmedia patch"
thread on ML.

Originally committed as revision 15481 to svn://svn.ffmpeg.org/ffmpeg/trunk

ffserver.c
libavformat/rtsp.c
libavformat/rtsp.h

index 89836c6..cdfb277 100644 (file)
@@ -157,7 +157,7 @@ typedef struct HTTPContext {
     int seq; /* RTSP sequence number */
 
     /* RTP state specific */
-    enum RTSPProtocol rtp_protocol;
+    enum RTSPLowerTransport rtp_protocol;
     char session_id[32]; /* session id */
     AVFormatContext *rtp_ctx[MAX_STREAMS];
 
@@ -278,7 +278,7 @@ static int prepare_sdp_description(FFStream *stream, uint8_t **pbuffer,
 /* RTP handling */
 static HTTPContext *rtp_new_connection(struct sockaddr_in *from_addr,
                                        FFStream *stream, const char *session_id,
-                                       enum RTSPProtocol rtp_protocol);
+                                       enum RTSPLowerTransport rtp_protocol);
 static int rtp_new_av_stream(HTTPContext *c,
                              int stream_index, struct sockaddr_in *dest_addr,
                              HTTPContext *rtsp_c);
@@ -509,7 +509,7 @@ static void start_multicast(void)
             dest_addr.sin_port = htons(stream->multicast_port);
 
             rtp_c = rtp_new_connection(&dest_addr, stream, session_id,
-                                       RTSP_PROTOCOL_RTP_UDP_MULTICAST);
+                                       RTSP_LOWER_TRANSPORT_UDP_MULTICAST);
             if (!rtp_c)
                 continue;
 
@@ -2202,7 +2202,7 @@ static int http_prepare_data(HTTPContext *c)
 
                     if (c->is_packetized) {
                         int max_packet_size;
-                        if (c->rtp_protocol == RTSP_PROTOCOL_RTP_TCP)
+                        if (c->rtp_protocol == RTSP_LOWER_TRANSPORT_TCP)
                             max_packet_size = RTSP_TCP_MAX_PACKET_SIZE;
                         else
                             max_packet_size = url_get_max_packet_size(c->rtp_handles[c->packet_stream_index]);
@@ -2306,7 +2306,7 @@ static int http_send_data(HTTPContext *c)
                 if (c->stream)
                     c->stream->bytes_served += len;
 
-                if (c->rtp_protocol == RTSP_PROTOCOL_RTP_TCP) {
+                if (c->rtp_protocol == RTSP_LOWER_TRANSPORT_TCP) {
                     /* RTP packets are sent inside the RTSP TCP connection */
                     ByteIOContext *pb;
                     int interleaved_index, size;
@@ -2798,14 +2798,14 @@ static HTTPContext *find_rtp_session(const char *session_id)
     return NULL;
 }
 
-static RTSPTransportField *find_transport(RTSPHeader *h, enum RTSPProtocol protocol)
+static RTSPTransportField *find_transport(RTSPHeader *h, enum RTSPLowerTransport lower_transport)
 {
     RTSPTransportField *th;
     int i;
 
     for(i=0;i<h->nb_transports;i++) {
         th = &h->transports[i];
-        if (th->protocol == protocol)
+        if (th->lower_transport == lower_transport)
             return th;
     }
     return NULL;
@@ -2867,9 +2867,9 @@ static void rtsp_cmd_setup(HTTPContext *c, const char *url,
     rtp_c = find_rtp_session(h->session_id);
     if (!rtp_c) {
         /* always prefer UDP */
-        th = find_transport(h, RTSP_PROTOCOL_RTP_UDP);
+        th = find_transport(h, RTSP_LOWER_TRANSPORT_UDP);
         if (!th) {
-            th = find_transport(h, RTSP_PROTOCOL_RTP_TCP);
+            th = find_transport(h, RTSP_LOWER_TRANSPORT_TCP);
             if (!th) {
                 rtsp_reply_error(c, RTSP_STATUS_TRANSPORT);
                 return;
@@ -2877,7 +2877,7 @@ static void rtsp_cmd_setup(HTTPContext *c, const char *url,
         }
 
         rtp_c = rtp_new_connection(&c->from_addr, stream, h->session_id,
-                                   th->protocol);
+                                   th->lower_transport);
         if (!rtp_c) {
             rtsp_reply_error(c, RTSP_STATUS_BANDWIDTH);
             return;
@@ -2905,7 +2905,7 @@ static void rtsp_cmd_setup(HTTPContext *c, const char *url,
 
     /* check transport */
     th = find_transport(h, rtp_c->rtp_protocol);
-    if (!th || (th->protocol == RTSP_PROTOCOL_RTP_UDP &&
+    if (!th || (th->lower_transport == RTSP_LOWER_TRANSPORT_UDP &&
                 th->client_port_min <= 0)) {
         rtsp_reply_error(c, RTSP_STATUS_TRANSPORT);
         return;
@@ -2928,14 +2928,14 @@ static void rtsp_cmd_setup(HTTPContext *c, const char *url,
     url_fprintf(c->pb, "Session: %s\r\n", rtp_c->session_id);
 
     switch(rtp_c->rtp_protocol) {
-    case RTSP_PROTOCOL_RTP_UDP:
+    case RTSP_LOWER_TRANSPORT_UDP:
         port = rtp_get_local_port(rtp_c->rtp_handles[stream_index]);
         url_fprintf(c->pb, "Transport: RTP/AVP/UDP;unicast;"
                     "client_port=%d-%d;server_port=%d-%d",
                     th->client_port_min, th->client_port_min + 1,
                     port, port + 1);
         break;
-    case RTSP_PROTOCOL_RTP_TCP:
+    case RTSP_LOWER_TRANSPORT_TCP:
         url_fprintf(c->pb, "Transport: RTP/AVP/TCP;interleaved=%d-%d",
                     stream_index * 2, stream_index * 2 + 1);
         break;
@@ -3071,7 +3071,7 @@ static void rtsp_cmd_teardown(HTTPContext *c, const char *url, RTSPHeader *h)
 
 static HTTPContext *rtp_new_connection(struct sockaddr_in *from_addr,
                                        FFStream *stream, const char *session_id,
-                                       enum RTSPProtocol rtp_protocol)
+                                       enum RTSPLowerTransport rtp_protocol)
 {
     HTTPContext *c = NULL;
     const char *proto_str;
@@ -3102,13 +3102,13 @@ static HTTPContext *rtp_new_connection(struct sockaddr_in *from_addr,
 
     /* protocol is shown in statistics */
     switch(c->rtp_protocol) {
-    case RTSP_PROTOCOL_RTP_UDP_MULTICAST:
+    case RTSP_LOWER_TRANSPORT_UDP_MULTICAST:
         proto_str = "MCAST";
         break;
-    case RTSP_PROTOCOL_RTP_UDP:
+    case RTSP_LOWER_TRANSPORT_UDP:
         proto_str = "UDP";
         break;
-    case RTSP_PROTOCOL_RTP_TCP:
+    case RTSP_LOWER_TRANSPORT_TCP:
         proto_str = "TCP";
         break;
     default:
@@ -3172,8 +3172,8 @@ static int rtp_new_av_stream(HTTPContext *c,
     ipaddr = inet_ntoa(dest_addr->sin_addr);
 
     switch(c->rtp_protocol) {
-    case RTSP_PROTOCOL_RTP_UDP:
-    case RTSP_PROTOCOL_RTP_UDP_MULTICAST:
+    case RTSP_LOWER_TRANSPORT_UDP:
+    case RTSP_LOWER_TRANSPORT_UDP_MULTICAST:
         /* RTP/UDP case */
 
         /* XXX: also pass as parameter to function ? */
@@ -3195,7 +3195,7 @@ static int rtp_new_av_stream(HTTPContext *c,
         c->rtp_handles[stream_index] = h;
         max_packet_size = url_get_max_packet_size(h);
         break;
-    case RTSP_PROTOCOL_RTP_TCP:
+    case RTSP_LOWER_TRANSPORT_TCP:
         /* RTP/TCP case */
         c->rtsp_c = rtsp_c;
         max_packet_size = RTSP_TCP_MAX_PACKET_SIZE;
index 7f29c4b..a494c74 100644 (file)
@@ -63,7 +63,7 @@ typedef struct RTSPState {
     //    ByteIOContext rtsp_gb;
     int seq;        /* RTSP command sequence number */
     char session_id[512];
-    enum RTSPProtocol protocol;
+    enum RTSPLowerTransport lower_transport;
     enum RTSPServerType server_type;
     char last_reply[2048]; /* XXX: allocate ? */
     RTPDemuxContext *cur_rtp;
@@ -94,7 +94,7 @@ static int rtsp_read_play(AVFormatContext *s);
    changing this variable */
 
 #if LIBAVFORMAT_VERSION_INT < (53 << 16)
-int rtsp_default_protocols = (1 << RTSP_PROTOCOL_RTP_UDP);
+int rtsp_default_protocols = (1 << RTSP_LOWER_TRANSPORT_UDP);
 #endif
 
 static int rtsp_probe(AVProbeData *p)
@@ -643,9 +643,9 @@ static void rtsp_parse_transport(RTSPHeader *reply, const char *p)
             profile[0] = '\0';
         }
         if (!strcasecmp(lower_transport, "TCP"))
-            th->protocol = RTSP_PROTOCOL_RTP_TCP;
+            th->lower_transport = RTSP_LOWER_TRANSPORT_TCP;
         else
-            th->protocol = RTSP_PROTOCOL_RTP_UDP;
+            th->lower_transport = RTSP_LOWER_TRANSPORT_UDP;
 
         if (*p == ';')
             p++;
@@ -676,8 +676,8 @@ static void rtsp_parse_transport(RTSPHeader *reply, const char *p)
                                      &th->interleaved_max, &p);
                 }
             } else if (!strcmp(parameter, "multicast")) {
-                if (th->protocol == RTSP_PROTOCOL_RTP_UDP)
-                    th->protocol = RTSP_PROTOCOL_RTP_UDP_MULTICAST;
+                if (th->lower_transport == RTSP_LOWER_TRANSPORT_UDP)
+                    th->lower_transport = RTSP_LOWER_TRANSPORT_UDP_MULTICAST;
             } else if (!strcmp(parameter, "ttl")) {
                 if (*p == '=') {
                     p++;
@@ -899,7 +899,7 @@ rtsp_open_transport_ctx(AVFormatContext *s, RTSPStream *rtsp_st)
  */
 static int
 make_setup_request (AVFormatContext *s, const char *host, int port,
-                    int protocol, const char *real_challenge)
+                    int lower_transport, const char *real_challenge)
 {
     RTSPState *rt = s->priv_data;
     int j, i, err;
@@ -923,7 +923,7 @@ make_setup_request (AVFormatContext *s, const char *host, int port,
         rtsp_st = rt->rtsp_streams[i];
 
         /* RTP/UDP */
-        if (protocol == RTSP_PROTOCOL_RTP_UDP) {
+        if (lower_transport == RTSP_LOWER_TRANSPORT_UDP) {
             char buf[256];
 
             /* first try in specified port range */
@@ -954,12 +954,12 @@ make_setup_request (AVFormatContext *s, const char *host, int port,
         }
 
         /* RTP/TCP */
-        else if (protocol == RTSP_PROTOCOL_RTP_TCP) {
+        else if (lower_transport == RTSP_LOWER_TRANSPORT_TCP) {
             snprintf(transport, sizeof(transport) - 1,
                      "%s/TCP", trans_pref);
         }
 
-        else if (protocol == RTSP_PROTOCOL_RTP_UDP_MULTICAST) {
+        else if (lower_transport == RTSP_LOWER_TRANSPORT_UDP_MULTICAST) {
             snprintf(transport, sizeof(transport) - 1,
                      "%s/UDP;multicast", trans_pref);
         }
@@ -990,28 +990,28 @@ make_setup_request (AVFormatContext *s, const char *host, int port,
 
         /* XXX: same protocol for all streams is required */
         if (i > 0) {
-            if (reply->transports[0].protocol != rt->protocol) {
+            if (reply->transports[0].lower_transport != rt->lower_transport) {
                 err = AVERROR_INVALIDDATA;
                 goto fail;
             }
         } else {
-            rt->protocol = reply->transports[0].protocol;
+            rt->lower_transport = reply->transports[0].lower_transport;
         }
 
         /* close RTP connection if not choosen */
-        if (reply->transports[0].protocol != RTSP_PROTOCOL_RTP_UDP &&
-            (protocol == RTSP_PROTOCOL_RTP_UDP)) {
+        if (reply->transports[0].lower_transport != RTSP_LOWER_TRANSPORT_UDP &&
+            (lower_transport == RTSP_LOWER_TRANSPORT_UDP)) {
             url_close(rtsp_st->rtp_handle);
             rtsp_st->rtp_handle = NULL;
         }
 
-        switch(reply->transports[0].protocol) {
-        case RTSP_PROTOCOL_RTP_TCP:
+        switch(reply->transports[0].lower_transport) {
+        case RTSP_LOWER_TRANSPORT_TCP:
             rtsp_st->interleaved_min = reply->transports[0].interleaved_min;
             rtsp_st->interleaved_max = reply->transports[0].interleaved_max;
             break;
 
-        case RTSP_PROTOCOL_RTP_UDP:
+        case RTSP_LOWER_TRANSPORT_UDP:
             {
                 char url[1024];
 
@@ -1024,7 +1024,7 @@ make_setup_request (AVFormatContext *s, const char *host, int port,
                 }
             }
             break;
-        case RTSP_PROTOCOL_RTP_UDP_MULTICAST:
+        case RTSP_LOWER_TRANSPORT_UDP_MULTICAST:
             {
                 char url[1024];
                 struct in_addr in;
@@ -1070,7 +1070,7 @@ static int rtsp_read_header(AVFormatContext *s,
     int port, ret, err;
     RTSPHeader reply1, *reply = &reply1;
     unsigned char *content = NULL;
-    int protocol_mask = 0;
+    int lower_transport_mask = 0;
     char real_challenge[64];
 
     /* extract hostname and port */
@@ -1092,16 +1092,16 @@ static int rtsp_read_header(AVFormatContext *s,
                 *(option_list++) = 0;
             /* handle the options */
             if (strcmp(option, "udp") == 0)
-                protocol_mask = (1<< RTSP_PROTOCOL_RTP_UDP);
+                lower_transport_mask = (1<< RTSP_LOWER_TRANSPORT_UDP);
             else if (strcmp(option, "multicast") == 0)
-                protocol_mask = (1<< RTSP_PROTOCOL_RTP_UDP_MULTICAST);
+                lower_transport_mask = (1<< RTSP_LOWER_TRANSPORT_UDP_MULTICAST);
             else if (strcmp(option, "tcp") == 0)
-                protocol_mask = (1<< RTSP_PROTOCOL_RTP_TCP);
+                lower_transport_mask = (1<< RTSP_LOWER_TRANSPORT_TCP);
         }
     }
 
-    if (!protocol_mask)
-        protocol_mask = (1 << RTSP_PROTOCOL_RTP_LAST) - 1;
+    if (!lower_transport_mask)
+        lower_transport_mask = (1 << RTSP_LOWER_TRANSPORT_LAST) - 1;
 
     /* open the tcp connexion */
     snprintf(tcpname, sizeof(tcpname), "tcp://%s:%d", host, port);
@@ -1179,15 +1179,15 @@ static int rtsp_read_header(AVFormatContext *s,
     }
 
     do {
-        int protocol = ff_log2_tab[protocol_mask & ~(protocol_mask - 1)];
+        int lower_transport = ff_log2_tab[lower_transport_mask & ~(lower_transport_mask - 1)];
 
-        err = make_setup_request(s, host, port, protocol,
+        err = make_setup_request(s, host, port, lower_transport,
                                  rt->server_type == RTSP_SERVER_REAL ?
                                      real_challenge : NULL);
         if (err < 0)
             goto fail;
-        protocol_mask &= ~(1 << protocol);
-        if (protocol_mask == 0 && err == 1) {
+        lower_transport_mask &= ~(1 << lower_transport);
+        if (lower_transport_mask == 0 && err == 1) {
             err = AVERROR(FF_NETERROR(EPROTONOSUPPORT));
             goto fail;
         }
@@ -1353,13 +1353,13 @@ static int rtsp_read_packet(AVFormatContext *s,
 
     /* read next RTP packet */
  redo:
-    switch(rt->protocol) {
+    switch(rt->lower_transport) {
     default:
-    case RTSP_PROTOCOL_RTP_TCP:
+    case RTSP_LOWER_TRANSPORT_TCP:
         len = tcp_read_packet(s, &rtsp_st, buf, sizeof(buf));
         break;
-    case RTSP_PROTOCOL_RTP_UDP:
-    case RTSP_PROTOCOL_RTP_UDP_MULTICAST:
+    case RTSP_LOWER_TRANSPORT_UDP:
+    case RTSP_LOWER_TRANSPORT_UDP_MULTICAST:
         len = udp_read_packet(s, &rtsp_st, buf, sizeof(buf));
         if (len >=0 && rtsp_st->rtp_ctx)
             rtp_check_and_send_back_rr(rtsp_st->rtp_ctx, len);
@@ -1462,7 +1462,7 @@ static int rtsp_read_close(AVFormatContext *s)
 
 #if 0
     /* NOTE: it is valid to flush the buffer here */
-    if (rt->protocol == RTSP_PROTOCOL_RTP_TCP) {
+    if (rt->lower_transport == RTSP_LOWER_TRANSPORT_TCP) {
         url_fclose(&rt->rtsp_gb);
     }
 #endif
index 1923acb..476154a 100644 (file)
 #include "avformat.h"
 #include "rtspcodes.h"
 
-enum RTSPProtocol {
-    RTSP_PROTOCOL_RTP_UDP = 0,
-    RTSP_PROTOCOL_RTP_TCP = 1,
-    RTSP_PROTOCOL_RTP_UDP_MULTICAST = 2,
+enum RTSPLowerTransport {
+    RTSP_LOWER_TRANSPORT_UDP = 0,
+    RTSP_LOWER_TRANSPORT_TCP = 1,
+    RTSP_LOWER_TRANSPORT_UDP_MULTICAST = 2,
     /**
      * This is not part of public API and shouldn't be used outside of ffmpeg.
      */
-    RTSP_PROTOCOL_RTP_LAST
+    RTSP_LOWER_TRANSPORT_LAST
 };
 
 #define RTSP_DEFAULT_PORT   554
@@ -50,7 +50,7 @@ typedef struct RTSPTransportField {
     int server_port_min, server_port_max; /**< RTP ports */
     int ttl; /**< ttl value */
     uint32_t destination; /**< destination IP address */
-    enum RTSPProtocol protocol;
+    enum RTSPLowerTransport lower_transport;
 } RTSPTransportField;
 
 typedef struct RTSPHeader {