mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-11-21 10:55:51 +02:00
Change protocol_mask into protocol, since we always just try a single one per
iteration in make_setup_request(), and cycling between the different protocols is now done in the calling function, therefore the need for a mask goes away. This also makes the function somewhat simpler to read. Discussed and approved in "[PATCH] RTSP alternate protocol 3/4". Originally committed as revision 12505 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
8a8754d80f
commit
8792f52a9b
@ -850,7 +850,7 @@ static void rtsp_close_streams(RTSPState *rt)
|
||||
* @returns 0 on success, <0 on error, 1 if protocol is unavailable.
|
||||
*/
|
||||
static int
|
||||
make_setup_request (AVFormatContext *s, const char *host, int port, int protocol_mask)
|
||||
make_setup_request (AVFormatContext *s, const char *host, int port, int protocol)
|
||||
{
|
||||
RTSPState *rt = s->priv_data;
|
||||
int j, i, err;
|
||||
@ -872,7 +872,7 @@ make_setup_request (AVFormatContext *s, const char *host, int port, int protocol
|
||||
transport[0] = '\0';
|
||||
|
||||
/* RTP/UDP */
|
||||
if (protocol_mask & (1 << RTSP_PROTOCOL_RTP_UDP)) {
|
||||
if (protocol == RTSP_PROTOCOL_RTP_UDP) {
|
||||
char buf[256];
|
||||
|
||||
/* first try in specified port range */
|
||||
@ -903,14 +903,14 @@ make_setup_request (AVFormatContext *s, const char *host, int port, int protocol
|
||||
}
|
||||
|
||||
/* RTP/TCP */
|
||||
else if (protocol_mask & (1 << RTSP_PROTOCOL_RTP_TCP)) {
|
||||
else if (protocol == RTSP_PROTOCOL_RTP_TCP) {
|
||||
if (transport[0] != '\0')
|
||||
av_strlcat(transport, ",", sizeof(transport));
|
||||
snprintf(transport + strlen(transport), sizeof(transport) - strlen(transport) - 1,
|
||||
"RTP/AVP/TCP");
|
||||
}
|
||||
|
||||
else if (protocol_mask & (1 << RTSP_PROTOCOL_RTP_UDP_MULTICAST)) {
|
||||
else if (protocol == RTSP_PROTOCOL_RTP_UDP_MULTICAST) {
|
||||
if (transport[0] != '\0')
|
||||
av_strlcat(transport, ",", sizeof(transport));
|
||||
snprintf(transport + strlen(transport),
|
||||
@ -944,7 +944,7 @@ make_setup_request (AVFormatContext *s, const char *host, int port, int protocol
|
||||
|
||||
/* close RTP connection if not choosen */
|
||||
if (reply->transports[0].protocol != RTSP_PROTOCOL_RTP_UDP &&
|
||||
(protocol_mask & (1 << RTSP_PROTOCOL_RTP_UDP))) {
|
||||
(protocol == RTSP_PROTOCOL_RTP_UDP)) {
|
||||
url_close(rtsp_st->rtp_handle);
|
||||
rtsp_st->rtp_handle = NULL;
|
||||
}
|
||||
@ -1088,12 +1088,12 @@ static int rtsp_read_header(AVFormatContext *s,
|
||||
}
|
||||
|
||||
do {
|
||||
int protocol = protocol_mask & ~(protocol_mask - 1);
|
||||
int protocol = ff_log2_tab[protocol_mask & ~(protocol_mask - 1)];
|
||||
|
||||
err = make_setup_request(s, host, port, protocol);
|
||||
if (err < 0)
|
||||
goto fail;
|
||||
protocol_mask &= ~protocol;
|
||||
protocol_mask &= ~(1 << protocol);
|
||||
if (protocol_mask == 0 && err == 1) {
|
||||
err = AVERROR(EPROTONOSUPPORT);
|
||||
goto fail;
|
||||
|
Loading…
Reference in New Issue
Block a user