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),
(gst_rtp_dec_class_init):
* gst/rtsp/gstrtpdec.h:
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;
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;