summaryrefslogtreecommitdiffstats
path: root/gst/udp/gstudpsink.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2005-05-12 10:45:25 +0000
committerWim Taymans <wim.taymans@gmail.com>2005-05-12 10:45:25 +0000
commit943f0445a965c319dcf31cc1e1839212aa479de4 (patch)
tree5b58509768b2bf74d1d172c6032ecfe2ad3a3ce3 /gst/udp/gstudpsink.c
parent99283f6e38c9faf77c41829a9d61dae8ca304f4d (diff)
gst/: Make UDP and TCP elements use PushSrc.
Original commit message from CVS: * gst/rtsp/README: * gst/tcp/gsttcpclientsrc.c: (gst_tcpclientsrc_get_type), (gst_tcpclientsrc_base_init), (gst_tcpclientsrc_class_init), (gst_tcpclientsrc_init), (gst_tcpclientsrc_getcaps), (gst_tcpclientsrc_stop), (gst_tcpclientsrc_eos), (gst_tcpclientsrc_create), (gst_tcpclientsrc_start): * gst/tcp/gsttcpclientsrc.h: * gst/tcp/gsttcpserversrc.c: (gst_tcpserversrc_get_type), (gst_tcpserversrc_base_init), (gst_tcpserversrc_class_init), (gst_tcpserversrc_init), (gst_tcpserversrc_create), (gst_tcpserversrc_start), (gst_tcpserversrc_stop): * gst/tcp/gsttcpserversrc.h: * gst/tcp/gsttcpsrc.c: (gst_tcpsrc_get_type), (gst_tcpsrc_base_init), (gst_tcpsrc_class_init), (gst_tcpsrc_init), (gst_tcpsrc_create), (gst_tcpsrc_start), (gst_tcpsrc_stop): * gst/tcp/gsttcpsrc.h: * gst/udp/gstudpsink.c: (gst_udpsink_base_init), (gst_udpsink_init), (gst_udpsink_get_times), (gst_udpsink_render), (gst_udpsink_set_property), (gst_udpsink_get_property), (gst_udpsink_change_state): * gst/udp/gstudpsink.h: * gst/udp/gstudpsrc.c: (gst_udpsrc_get_type), (gst_udpsrc_base_init), (gst_udpsrc_class_init), (gst_udpsrc_init), (gst_udpsrc_create), (gst_udpsrc_set_uri), (gst_udpsrc_start), (gst_udpsrc_stop): * gst/udp/gstudpsrc.h: Make UDP and TCP elements use PushSrc.
Diffstat (limited to 'gst/udp/gstudpsink.c')
-rw-r--r--gst/udp/gstudpsink.c41
1 files changed, 17 insertions, 24 deletions
diff --git a/gst/udp/gstudpsink.c b/gst/udp/gstudpsink.c
index 93fb654b..0d57cd66 100644
--- a/gst/udp/gstudpsink.c
+++ b/gst/udp/gstudpsink.c
@@ -50,8 +50,7 @@ enum
ARG_0,
ARG_HOST,
ARG_PORT,
- ARG_MTU
- /* FILL ME */
+ /* FILL ME */
};
static void gst_udpsink_base_init (gpointer g_class);
@@ -146,7 +145,6 @@ gst_udpsink_init (GstUDPSink * udpsink)
{
udpsink->host = g_strdup (UDP_DEFAULT_HOST);
udpsink->port = UDP_DEFAULT_PORT;
- udpsink->mtu = 1024;
}
static void
@@ -161,30 +159,31 @@ static GstFlowReturn
gst_udpsink_render (GstBaseSink * sink, GstBuffer * buffer)
{
GstUDPSink *udpsink;
- gint tosend;
+ gint ret, size;
guint8 *data;
udpsink = GST_UDPSINK (sink);
- tosend = GST_BUFFER_SIZE (buffer);
+ size = GST_BUFFER_SIZE (buffer);
data = GST_BUFFER_DATA (buffer);
- /* send in chunks of MTU */
- while (tosend > 0) {
- gint psize;
-
- psize = MIN (udpsink->mtu, tosend);
- if (sendto (udpsink->sock, data, psize, 0,
- (struct sockaddr *) &udpsink->theiraddr,
- sizeof (udpsink->theiraddr)) == -1) {
- perror ("sending");
- }
+ while (TRUE) {
+ ret = sendto (udpsink->sock, data, size, 0,
+ (struct sockaddr *) &udpsink->theiraddr, sizeof (udpsink->theiraddr));
- data += psize;
- tosend -= psize;
+ if (ret < 0) {
+ if (errno != EINTR && errno != EAGAIN)
+ goto send_error;
+ } else
+ break;
}
-
return GST_FLOW_OK;
+
+send_error:
+ {
+ GST_DEBUG ("got send error");
+ return GST_FLOW_ERROR;
+ }
}
static void
@@ -207,9 +206,6 @@ gst_udpsink_set_property (GObject * object, guint prop_id, const GValue * value,
case ARG_PORT:
udpsink->port = g_value_get_int (value);
break;
- case ARG_MTU:
- udpsink->mtu = g_value_get_int (value);
- break;
default:
break;
}
@@ -230,9 +226,6 @@ gst_udpsink_get_property (GObject * object, guint prop_id, GValue * value,
case ARG_PORT:
g_value_set_int (value, udpsink->port);
break;
- case ARG_MTU:
- g_value_set_int (value, udpsink->mtu);
- break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;