summaryrefslogtreecommitdiff
path: root/libavformat/udp.c
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2012-03-15 13:07:10 +0100
committerNicolas George <nicolas.george@normalesup.org>2012-03-22 17:36:23 +0100
commit63afc4f6384c4e3b37173e52782cc110406f573f (patch)
tree2c6558dfb3adee811ee6ab6bc55db0e5fccfbc6d /libavformat/udp.c
parentaa1297882fc95b3f301d39f3a74730ef72f44b70 (diff)
udp: use non-blocking read instead of select.
Diffstat (limited to 'libavformat/udp.c')
-rw-r--r--libavformat/udp.c21
1 files changed, 1 insertions, 20 deletions
diff --git a/libavformat/udp.c b/libavformat/udp.c
index 0a831e8ea5..dad79ffc41 100644
--- a/libavformat/udp.c
+++ b/libavformat/udp.c
@@ -327,33 +327,14 @@ static void *circular_buffer_task( void *_URLContext)
{
URLContext *h = _URLContext;
UDPContext *s = h->priv_data;
- fd_set rfds;
- struct timeval tv;
int old_cancelstate;
pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old_cancelstate);
+ ff_socket_nonblock(s->udp_fd, 0);
while(1) {
int left;
- int ret;
int len;
- FD_ZERO(&rfds);
- FD_SET(s->udp_fd, &rfds);
- tv.tv_sec = 1;
- tv.tv_usec = 0;
- pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old_cancelstate);
- ret = select(s->udp_fd + 1, &rfds, NULL, NULL, &tv);
- pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &old_cancelstate);
- if (ret < 0) {
- if (ff_neterrno() == AVERROR(EINTR))
- continue;
- s->circular_buffer_error = AVERROR(EIO);
- goto end;
- }
-
- if (!(ret > 0 && FD_ISSET(s->udp_fd, &rfds)))
- continue;
-
/* How much do we have left to the end of the buffer */
/* Whats the minimum we can read so that we dont comletely fill the buffer */
left = av_fifo_space(s->fifo);