|
|
|
@ -1145,7 +1145,7 @@ void ff_rtsp_parse_line(AVFormatContext *s, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/* skip a RTP/TCP interleaved packet */ |
|
|
|
|
void ff_rtsp_skip_packet(AVFormatContext *s) |
|
|
|
|
int ff_rtsp_skip_packet(AVFormatContext *s) |
|
|
|
|
{ |
|
|
|
|
RTSPState *rt = s->priv_data; |
|
|
|
|
int ret, len, len1; |
|
|
|
@ -1153,7 +1153,7 @@ void ff_rtsp_skip_packet(AVFormatContext *s) |
|
|
|
|
|
|
|
|
|
ret = ffurl_read_complete(rt->rtsp_hd, buf, 3); |
|
|
|
|
if (ret != 3) |
|
|
|
|
return; |
|
|
|
|
return ret < 0 ? ret : AVERROR(EIO); |
|
|
|
|
len = AV_RB16(buf + 1); |
|
|
|
|
|
|
|
|
|
av_log(s, AV_LOG_TRACE, "skipping RTP packet len=%d\n", len); |
|
|
|
@ -1165,9 +1165,11 @@ void ff_rtsp_skip_packet(AVFormatContext *s) |
|
|
|
|
len1 = sizeof(buf); |
|
|
|
|
ret = ffurl_read_complete(rt->rtsp_hd, buf, len1); |
|
|
|
|
if (ret != len1) |
|
|
|
|
return; |
|
|
|
|
return ret < 0 ? ret : AVERROR(EIO); |
|
|
|
|
len -= len1; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int ff_rtsp_read_reply(AVFormatContext *s, RTSPMessageHeader *reply, |
|
|
|
@ -1201,8 +1203,11 @@ start: |
|
|
|
|
if (ch == '$' && q == buf) { |
|
|
|
|
if (return_on_interleaved_data) { |
|
|
|
|
return 1; |
|
|
|
|
} else |
|
|
|
|
ff_rtsp_skip_packet(s); |
|
|
|
|
} else { |
|
|
|
|
ret = ff_rtsp_skip_packet(s); |
|
|
|
|
if (ret < 0) |
|
|
|
|
return ret; |
|
|
|
|
} |
|
|
|
|
} else if (ch != '\r') { |
|
|
|
|
if ((q - buf) < sizeof(buf) - 1) |
|
|
|
|
*q++ = ch; |
|
|
|
|