Commit a1ba71aa authored by Josh Allmann's avatar Josh Allmann Committed by Martin Storsjö

rtsp: Check the RTCP file handle for new packets, too

Patch by Josh Allmann, joshua dot allmann at gmail

Originally committed as revision 24962 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent 6a1712dd
...@@ -1653,7 +1653,7 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st, ...@@ -1653,7 +1653,7 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
RTSPState *rt = s->priv_data; RTSPState *rt = s->priv_data;
RTSPStream *rtsp_st; RTSPStream *rtsp_st;
fd_set rfds; fd_set rfds;
int fd, fd_max, n, i, ret, tcp_fd, timeout_cnt = 0; int fd, fd_rtcp, fd_max, n, i, ret, tcp_fd, timeout_cnt = 0;
struct timeval tv; struct timeval tv;
for (;;) { for (;;) {
...@@ -1670,12 +1670,12 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st, ...@@ -1670,12 +1670,12 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
for (i = 0; i < rt->nb_rtsp_streams; i++) { for (i = 0; i < rt->nb_rtsp_streams; i++) {
rtsp_st = rt->rtsp_streams[i]; rtsp_st = rt->rtsp_streams[i];
if (rtsp_st->rtp_handle) { if (rtsp_st->rtp_handle) {
/* currently, we cannot probe RTCP handle because of
* blocking restrictions */
fd = url_get_file_handle(rtsp_st->rtp_handle); fd = url_get_file_handle(rtsp_st->rtp_handle);
if (fd > fd_max) fd_rtcp = rtp_get_rtcp_file_handle(rtsp_st->rtp_handle);
fd_max = fd; if (FFMAX(fd, fd_rtcp) > fd_max)
fd_max = FFMAX(fd, fd_rtcp);
FD_SET(fd, &rfds); FD_SET(fd, &rfds);
FD_SET(fd_rtcp, &rfds);
} }
} }
tv.tv_sec = 0; tv.tv_sec = 0;
...@@ -1687,7 +1687,8 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st, ...@@ -1687,7 +1687,8 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
rtsp_st = rt->rtsp_streams[i]; rtsp_st = rt->rtsp_streams[i];
if (rtsp_st->rtp_handle) { if (rtsp_st->rtp_handle) {
fd = url_get_file_handle(rtsp_st->rtp_handle); fd = url_get_file_handle(rtsp_st->rtp_handle);
if (FD_ISSET(fd, &rfds)) { fd_rtcp = rtp_get_rtcp_file_handle(rtsp_st->rtp_handle);
if (FD_ISSET(fd_rtcp, &rfds) || FD_ISSET(fd, &rfds)) {
ret = url_read(rtsp_st->rtp_handle, buf, buf_size); ret = url_read(rtsp_st->rtp_handle, buf, buf_size);
if (ret > 0) { if (ret > 0) {
*prtsp_st = rtsp_st; *prtsp_st = rtsp_st;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment