From 90abbdba1e7f9df2c32bdb0a9b7c68297cd135c8 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Tue, 30 Sep 2008 13:18:41 +0000 Subject: [PATCH] Rename RTSPProtocol to RTSPLowerTransport, so that its name properly tells us 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 | 40 ++++++++++++++-------------- libavformat/rtsp.c | 66 +++++++++++++++++++++++----------------------- libavformat/rtsp.h | 12 ++++----- 3 files changed, 59 insertions(+), 59 deletions(-) diff --git a/ffserver.c b/ffserver.c index 89836c6f2a..cdfb277e5c 100644 --- a/ffserver.c +++ b/ffserver.c @@ -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;inb_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; diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index 7f29c4bb63..a494c74843 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -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 diff --git a/libavformat/rtsp.h b/libavformat/rtsp.h index 1923acbbc8..476154a564 100644 --- a/libavformat/rtsp.h +++ b/libavformat/rtsp.h @@ -25,14 +25,14 @@ #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 {