diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2005-05-12 10:45:25 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2005-05-12 10:45:25 +0000 |
commit | 943f0445a965c319dcf31cc1e1839212aa479de4 (patch) | |
tree | 5b58509768b2bf74d1d172c6032ecfe2ad3a3ce3 /gst/udp/gstudpsink.c | |
parent | 99283f6e38c9faf77c41829a9d61dae8ca304f4d (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.c | 41 |
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; |