gst/udp/gstudpsrc.c: Improve UDP performance by avoiding a select() when we have data available immediatly.

Original commit message from CVS:
* gst/udp/gstudpsrc.c: (gst_udpsrc_create):
Improve UDP performance by avoiding a select() when we have data
available immediatly.
This commit is contained in:
Wim Taymans 2007-08-16 11:49:01 +00:00
parent 41f0496738
commit 042d3a461c
2 changed files with 17 additions and 2 deletions

View file

@ -1,3 +1,9 @@
2007-08-16 Wim Taymans <wim.taymans@gmail.com>
* gst/udp/gstudpsrc.c: (gst_udpsrc_create):
Improve UDP performance by avoiding a select() when we have data
available immediatly.
2007-08-16 Wim Taymans <wim.taymans@gmail.com>
* gst/rtsp/gstrtpdec.c: (gst_rtp_dec_marshal_VOID__UINT_UINT),

View file

@ -368,6 +368,14 @@ gst_udpsrc_create (GstPushSrc * psrc, GstBuffer ** buf)
udpsrc = GST_UDPSRC (psrc);
/* quick check, avoid going in select when we already have data */
readsize = 0;
if ((ret = IOCTL_SOCKET (udpsrc->sock, FIONREAD, &readsize)) < 0)
goto ioctl_failed;
if (readsize > 0)
goto no_select;
do {
gboolean stop;
struct timeval timeval, *timeout;
@ -433,11 +441,12 @@ gst_udpsrc_create (GstPushSrc * psrc, GstBuffer ** buf)
if ((ret = IOCTL_SOCKET (udpsrc->sock, FIONREAD, &readsize)) < 0)
goto ioctl_failed;
GST_LOG_OBJECT (udpsrc, "ioctl says %d bytes available", (int) readsize);
if (!readsize)
goto nothing_to_read;
no_select:
GST_LOG_OBJECT (udpsrc, "ioctl says %d bytes available", (int) readsize);
pktdata = g_malloc (readsize);
pktsize = readsize;