summaryrefslogtreecommitdiffstats
path: root/gst/udp/gstudpsink.c
diff options
context:
space:
mode:
authorThomas Vander Stichele <thomas@apestaart.org>2004-03-14 22:34:33 +0000
committerThomas Vander Stichele <thomas@apestaart.org>2004-03-14 22:34:33 +0000
commit5d25c00e4b613b9cdf2c04fa3a68dffa03834a68 (patch)
tree74a5b1eaf3a324b520e64e87404fd0b3018a7829 /gst/udp/gstudpsink.c
parent1e83b097f7b732ae49e294a5a398bdc3e88854a8 (diff)
gst-indent
Original commit message from CVS: gst-indent
Diffstat (limited to 'gst/udp/gstudpsink.c')
-rw-r--r--gst/udp/gstudpsink.c325
1 files changed, 165 insertions, 160 deletions
diff --git a/gst/udp/gstudpsink.c b/gst/udp/gstudpsink.c
index 86238af2..af365613 100644
--- a/gst/udp/gstudpsink.c
+++ b/gst/udp/gstudpsink.c
@@ -28,32 +28,34 @@
#define UDP_DEFAULT_CONTROL 1
/* elementfactory information */
-static GstElementDetails gst_udpsink_details = GST_ELEMENT_DETAILS (
- "UDP packet sender",
- "Sink/Network",
- "Send data over the network via UDP",
- "Wim Taymans <wim.taymans@chello.be>"
-);
+static GstElementDetails gst_udpsink_details =
+GST_ELEMENT_DETAILS ("UDP packet sender",
+ "Sink/Network",
+ "Send data over the network via UDP",
+ "Wim Taymans <wim.taymans@chello.be>");
/* UDPSink signals and args */
-enum {
+enum
+{
FRAME_ENCODED,
/* FILL ME */
LAST_SIGNAL
};
-enum {
+enum
+{
ARG_0,
ARG_HOST,
ARG_PORT,
ARG_CONTROL,
ARG_MTU
- /* FILL ME */
+ /* FILL ME */
};
#define GST_TYPE_UDPSINK_CONTROL (gst_udpsink_control_get_type())
static GType
-gst_udpsink_control_get_type(void) {
+gst_udpsink_control_get_type (void)
+{
static GType udpsink_control_type = 0;
static GEnumValue udpsink_control[] = {
{CONTROL_NONE, "1", "none"},
@@ -62,27 +64,29 @@ gst_udpsink_control_get_type(void) {
{CONTROL_ZERO, NULL, NULL},
};
if (!udpsink_control_type) {
- udpsink_control_type = g_enum_register_static("GstUDPSinkControl", udpsink_control);
+ udpsink_control_type =
+ g_enum_register_static ("GstUDPSinkControl", udpsink_control);
}
return udpsink_control_type;
}
-static void gst_udpsink_base_init (gpointer g_class);
-static void gst_udpsink_class_init (GstUDPSink *klass);
-static void gst_udpsink_init (GstUDPSink *udpsink);
+static void gst_udpsink_base_init (gpointer g_class);
+static void gst_udpsink_class_init (GstUDPSink * klass);
+static void gst_udpsink_init (GstUDPSink * udpsink);
-static void gst_udpsink_set_clock (GstElement *element, GstClock *clock);
+static void gst_udpsink_set_clock (GstElement * element, GstClock * clock);
-static void gst_udpsink_chain (GstPad *pad,GstData *_data);
-static GstElementStateReturn gst_udpsink_change_state (GstElement *element);
+static void gst_udpsink_chain (GstPad * pad, GstData * _data);
+static GstElementStateReturn gst_udpsink_change_state (GstElement * element);
-static void gst_udpsink_set_property (GObject *object, guint prop_id,
- const GValue *value, GParamSpec *pspec);
-static void gst_udpsink_get_property (GObject *object, guint prop_id,
- GValue *value, GParamSpec *pspec);
+static void gst_udpsink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_udpsink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static GstElementClass *parent_class = NULL;
+
/*static guint gst_udpsink_signals[LAST_SIGNAL] = { 0 }; */
GType
@@ -92,18 +96,20 @@ gst_udpsink_get_type (void)
if (!udpsink_type) {
static const GTypeInfo udpsink_info = {
- sizeof(GstUDPSinkClass),
+ sizeof (GstUDPSinkClass),
gst_udpsink_base_init,
NULL,
- (GClassInitFunc)gst_udpsink_class_init,
+ (GClassInitFunc) gst_udpsink_class_init,
NULL,
NULL,
- sizeof(GstUDPSink),
+ sizeof (GstUDPSink),
0,
- (GInstanceInitFunc)gst_udpsink_init,
+ (GInstanceInitFunc) gst_udpsink_init,
NULL
};
- udpsink_type = g_type_register_static (GST_TYPE_ELEMENT, "GstUDPSink", &udpsink_info, 0);
+ udpsink_type =
+ g_type_register_static (GST_TYPE_ELEMENT, "GstUDPSink", &udpsink_info,
+ 0);
}
return udpsink_type;
}
@@ -117,29 +123,27 @@ gst_udpsink_base_init (gpointer g_class)
}
static void
-gst_udpsink_class_init (GstUDPSink *klass)
+gst_udpsink_class_init (GstUDPSink * klass)
{
GObjectClass *gobject_class;
GstElementClass *gstelement_class;
- gobject_class = (GObjectClass*) klass;
- gstelement_class = (GstElementClass*) klass;
+ gobject_class = (GObjectClass *) klass;
+ gstelement_class = (GstElementClass *) klass;
parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_HOST,
- g_param_spec_string ("host", "host",
- "The host/IP/Multicast group to send the packets to",
- UDP_DEFAULT_HOST, G_PARAM_READWRITE));
+ g_param_spec_string ("host", "host",
+ "The host/IP/Multicast group to send the packets to",
+ UDP_DEFAULT_HOST, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_PORT,
- g_param_spec_int ("port", "port", "The port to send the packets to",
- 0, 32768, UDP_DEFAULT_PORT, G_PARAM_READWRITE));
+ g_param_spec_int ("port", "port", "The port to send the packets to",
+ 0, 32768, UDP_DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, ARG_CONTROL,
- g_param_spec_enum ("control", "control", "The type of control",
- GST_TYPE_UDPSINK_CONTROL, CONTROL_UDP, G_PARAM_READWRITE));
- g_object_class_install_property (gobject_class, ARG_MTU,
- g_param_spec_int ("mtu", "mtu", "maximun transmit unit", G_MININT, G_MAXINT,
- 0, G_PARAM_READWRITE)); /* CHECKME */
+ g_param_spec_enum ("control", "control", "The type of control",
+ GST_TYPE_UDPSINK_CONTROL, CONTROL_UDP, G_PARAM_READWRITE));
+ g_object_class_install_property (gobject_class, ARG_MTU, g_param_spec_int ("mtu", "mtu", "maximun transmit unit", G_MININT, G_MAXINT, 0, G_PARAM_READWRITE)); /* CHECKME */
gobject_class->set_property = gst_udpsink_set_property;
gobject_class->get_property = gst_udpsink_get_property;
@@ -150,7 +154,7 @@ gst_udpsink_class_init (GstUDPSink *klass)
static GstPadLinkReturn
-gst_udpsink_sink_link (GstPad *pad, const GstCaps *caps)
+gst_udpsink_sink_link (GstPad * pad, const GstCaps * caps)
{
GstUDPSink *udpsink;
struct sockaddr_in serv_addr;
@@ -158,27 +162,28 @@ gst_udpsink_sink_link (GstPad *pad, const GstCaps *caps)
int fd;
FILE *f;
guint bc_val;
+
#ifndef GST_DISABLE_LOADSAVE
xmlDocPtr doc;
xmlChar *buf;
int buf_size;
udpsink = GST_UDPSINK (gst_pad_get_parent (pad));
-
- memset(&serv_addr, 0, sizeof(serv_addr));
-
+
+ memset (&serv_addr, 0, sizeof (serv_addr));
+
/* its a name rather than an ipnum */
- serverhost = gethostbyname(udpsink->host);
- if (serverhost == (struct hostent *)0) {
- perror("gethostbyname");
- return GST_PAD_LINK_REFUSED;
+ serverhost = gethostbyname (udpsink->host);
+ if (serverhost == (struct hostent *) 0) {
+ perror ("gethostbyname");
+ return GST_PAD_LINK_REFUSED;
}
-
- memmove(&serv_addr.sin_addr,serverhost->h_addr, serverhost->h_length);
+
+ memmove (&serv_addr.sin_addr, serverhost->h_addr, serverhost->h_length);
serv_addr.sin_family = AF_INET;
- serv_addr.sin_port = htons(udpsink->port+1);
-
+ serv_addr.sin_port = htons (udpsink->port + 1);
+
doc = xmlNewDoc ("1.0");
doc->xmlRootNode = xmlNewDocNode (doc, NULL, "NewCaps", NULL);
@@ -186,66 +191,66 @@ gst_udpsink_sink_link (GstPad *pad, const GstCaps *caps)
switch (udpsink->control) {
case CONTROL_UDP:
- if ((fd = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
- perror("socket");
- return GST_PAD_LINK_REFUSED;
- }
-
- /* We can only do broadcast in udp */
- bc_val = 1;
- setsockopt (fd,SOL_SOCKET, SO_BROADCAST, &bc_val, sizeof (bc_val));
-
- xmlDocDumpMemory(doc, &buf, &buf_size);
-
- if (sendto (fd, buf, buf_size, 0, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1)
- {
- perror("sending");
- return GST_PAD_LINK_REFUSED;
- }
- close (fd);
- break;
+ if ((fd = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP)) == -1) {
+ perror ("socket");
+ return GST_PAD_LINK_REFUSED;
+ }
+
+ /* We can only do broadcast in udp */
+ bc_val = 1;
+ setsockopt (fd, SOL_SOCKET, SO_BROADCAST, &bc_val, sizeof (bc_val));
+
+ xmlDocDumpMemory (doc, &buf, &buf_size);
+
+ if (sendto (fd, buf, buf_size, 0, (struct sockaddr *) &serv_addr,
+ sizeof (serv_addr)) == -1) {
+ perror ("sending");
+ return GST_PAD_LINK_REFUSED;
+ }
+ close (fd);
+ break;
case CONTROL_TCP:
- if ((fd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
- perror("socket");
- return GST_PAD_LINK_REFUSED;
- }
-
- if (connect(fd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) != 0) {
- g_printerr ("udpsink: connect to %s port %d failed: %s\n",
- udpsink->host, udpsink->port, g_strerror(errno));
- return GST_PAD_LINK_REFUSED;
- }
-
- f = fdopen (dup (fd), "wb");
-
- xmlDocDump(f, doc);
- fclose (f);
- close (fd);
- break;
+ if ((fd = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) {
+ perror ("socket");
+ return GST_PAD_LINK_REFUSED;
+ }
+
+ if (connect (fd, (struct sockaddr *) &serv_addr, sizeof (serv_addr)) != 0) {
+ g_printerr ("udpsink: connect to %s port %d failed: %s\n",
+ udpsink->host, udpsink->port, g_strerror (errno));
+ return GST_PAD_LINK_REFUSED;
+ }
+
+ f = fdopen (dup (fd), "wb");
+
+ xmlDocDump (f, doc);
+ fclose (f);
+ close (fd);
+ break;
case CONTROL_NONE:
- return GST_PAD_LINK_OK;
- break;
+ return GST_PAD_LINK_OK;
+ break;
default:
- return GST_PAD_LINK_REFUSED;
- break;
+ return GST_PAD_LINK_REFUSED;
+ break;
}
#endif
-
+
return GST_PAD_LINK_OK;
}
static void
-gst_udpsink_set_clock (GstElement *element, GstClock *clock)
+gst_udpsink_set_clock (GstElement * element, GstClock * clock)
{
GstUDPSink *udpsink;
-
+
udpsink = GST_UDPSINK (element);
udpsink->clock = clock;
}
static void
-gst_udpsink_init (GstUDPSink *udpsink)
+gst_udpsink_init (GstUDPSink * udpsink)
{
/* create the sink and src pads */
udpsink->sinkpad = gst_pad_new ("sink", GST_PAD_SINK);
@@ -257,12 +262,12 @@ gst_udpsink_init (GstUDPSink *udpsink)
udpsink->port = UDP_DEFAULT_PORT;
udpsink->control = CONTROL_UDP;
udpsink->mtu = 1024;
-
+
udpsink->clock = NULL;
}
static void
-gst_udpsink_chain (GstPad *pad, GstData *_data)
+gst_udpsink_chain (GstPad * pad, GstData * _data)
{
GstBuffer *buf = GST_BUFFER (_data);
GstUDPSink *udpsink;
@@ -273,63 +278,64 @@ gst_udpsink_chain (GstPad *pad, GstData *_data)
g_return_if_fail (buf != NULL);
udpsink = GST_UDPSINK (GST_OBJECT_PARENT (pad));
-
+
if (udpsink->clock && GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
gst_element_wait (GST_ELEMENT (udpsink), GST_BUFFER_TIMESTAMP (buf));
}
-
- tolen = sizeof(udpsink->theiraddr);
-
- /*
- if (sendto (udpsink->sock, GST_BUFFER_DATA (buf),
- GST_BUFFER_SIZE (buf), 0, (struct sockaddr *) &udpsink->theiraddr,
- tolen) == -1) {
- perror("sending");
- }
-*/
- /* MTU */
+
+ tolen = sizeof (udpsink->theiraddr);
+
+ /*
+ if (sendto (udpsink->sock, GST_BUFFER_DATA (buf),
+ GST_BUFFER_SIZE (buf), 0, (struct sockaddr *) &udpsink->theiraddr,
+ tolen) == -1) {
+ perror("sending");
+ }
+ */
+ /* MTU */
for (i = 0; i < GST_BUFFER_SIZE (buf); i += udpsink->mtu) {
if (GST_BUFFER_SIZE (buf) - i > udpsink->mtu) {
- if (sendto (udpsink->sock, GST_BUFFER_DATA (buf) + i,
- udpsink->mtu, 0, (struct sockaddr *) &udpsink->theiraddr,
- tolen) == -1) {
- perror("sending");
- }
- }
- else {
- if (sendto (udpsink->sock, GST_BUFFER_DATA (buf) + i,
- GST_BUFFER_SIZE (buf) -i, 0,
- (struct sockaddr *) &udpsink->theiraddr, tolen) == -1) {
- perror("sending");
- }
+ if (sendto (udpsink->sock, GST_BUFFER_DATA (buf) + i,
+ udpsink->mtu, 0, (struct sockaddr *) &udpsink->theiraddr,
+ tolen) == -1) {
+ perror ("sending");
+ }
+ } else {
+ if (sendto (udpsink->sock, GST_BUFFER_DATA (buf) + i,
+ GST_BUFFER_SIZE (buf) - i, 0,
+ (struct sockaddr *) &udpsink->theiraddr, tolen) == -1) {
+ perror ("sending");
+ }
}
}
- gst_buffer_unref(buf);
+ gst_buffer_unref (buf);
}
static void
-gst_udpsink_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec)
+gst_udpsink_set_property (GObject * object, guint prop_id, const GValue * value,
+ GParamSpec * pspec)
{
GstUDPSink *udpsink;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_UDPSINK(object));
- udpsink = GST_UDPSINK(object);
+ g_return_if_fail (GST_IS_UDPSINK (object));
+ udpsink = GST_UDPSINK (object);
switch (prop_id) {
case ARG_HOST:
- if (udpsink->host != NULL) g_free(udpsink->host);
+ if (udpsink->host != NULL)
+ g_free (udpsink->host);
if (g_value_get_string (value) == NULL)
- udpsink->host = NULL;
+ udpsink->host = NULL;
else
- udpsink->host = g_strdup (g_value_get_string (value));
+ udpsink->host = g_strdup (g_value_get_string (value));
break;
case ARG_PORT:
- udpsink->port = g_value_get_int (value);
+ udpsink->port = g_value_get_int (value);
break;
case ARG_CONTROL:
- udpsink->control = g_value_get_enum (value);
+ udpsink->control = g_value_get_enum (value);
break;
case ARG_MTU:
udpsink->mtu = g_value_get_int (value);
@@ -340,13 +346,14 @@ gst_udpsink_set_property (GObject *object, guint prop_id, const GValue *value, G
}
static void
-gst_udpsink_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec)
+gst_udpsink_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
{
GstUDPSink *udpsink;
/* it's not null if we got it, but it might not be ours */
- g_return_if_fail(GST_IS_UDPSINK(object));
- udpsink = GST_UDPSINK(object);
+ g_return_if_fail (GST_IS_UDPSINK (object));
+ udpsink = GST_UDPSINK (object);
switch (prop_id) {
case ARG_HOST:
@@ -370,67 +377,66 @@ gst_udpsink_get_property (GObject *object, guint prop_id, GValue *value, GParamS
/* create a socket for sending to remote machine */
static gboolean
-gst_udpsink_init_send (GstUDPSink *sink)
+gst_udpsink_init_send (GstUDPSink * sink)
{
struct hostent *he;
struct in_addr addr;
guint bc_val;
memset (&sink->theiraddr, 0, sizeof (sink->theiraddr));
- sink->theiraddr.sin_family = AF_INET; /* host byte order */
- sink->theiraddr.sin_port = htons (sink->port); /* short, network byte order */
+ sink->theiraddr.sin_family = AF_INET; /* host byte order */
+ sink->theiraddr.sin_port = htons (sink->port); /* short, network byte order */
/* if its an IP address */
if (inet_aton (sink->host, &addr)) {
/* check if its a multicast address */
if ((ntohl (addr.s_addr) & 0xe0000000) == 0xe0000000) {
- sink->multi_addr.imr_multiaddr.s_addr = addr.s_addr;
- sink->multi_addr.imr_interface.s_addr = INADDR_ANY;
-
- sink->theiraddr.sin_addr = sink->multi_addr.imr_multiaddr;
-
- /* Joining the multicast group */
- setsockopt (sink->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &sink->multi_addr, sizeof(sink->multi_addr));
+ sink->multi_addr.imr_multiaddr.s_addr = addr.s_addr;
+ sink->multi_addr.imr_interface.s_addr = INADDR_ANY;
+
+ sink->theiraddr.sin_addr = sink->multi_addr.imr_multiaddr;
+
+ /* Joining the multicast group */
+ setsockopt (sink->sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &sink->multi_addr,
+ sizeof (sink->multi_addr));
}
-
+
else {
- sink->theiraddr.sin_addr =
- *((struct in_addr *) &addr);
+ sink->theiraddr.sin_addr = *((struct in_addr *) &addr);
}
}
-
+
/* we dont need to lookup for localhost */
- else if (strcmp (sink->host, UDP_DEFAULT_HOST) == 0 &&
- inet_aton ("127.0.0.1", &addr)) {
- sink->theiraddr.sin_addr =
- *((struct in_addr *) &addr);
+ else if (strcmp (sink->host, UDP_DEFAULT_HOST) == 0 &&
+ inet_aton ("127.0.0.1", &addr)) {
+ sink->theiraddr.sin_addr = *((struct in_addr *) &addr);
}
/* if its a hostname */
else if ((he = gethostbyname (sink->host))) {
sink->theiraddr.sin_addr = *((struct in_addr *) he->h_addr);
}
-
+
else {
- perror("hostname lookup error?");
- return FALSE;
+ perror ("hostname lookup error?");
+ return FALSE;
}
if ((sink->sock = socket (AF_INET, SOCK_DGRAM, 0)) == -1) {
- perror("socket");
- return FALSE;
+ perror ("socket");
+ return FALSE;
}
bc_val = 1;
setsockopt (sink->sock, SOL_SOCKET, SO_BROADCAST, &bc_val, sizeof (bc_val));
-
+
GST_FLAG_SET (sink, GST_UDPSINK_OPEN);
return TRUE;
}
static void
-gst_udpsink_close (GstUDPSink *sink)
+gst_udpsink_close (GstUDPSink * sink)
{
close (sink->sock);
@@ -438,7 +444,7 @@ gst_udpsink_close (GstUDPSink *sink)
}
static GstElementStateReturn
-gst_udpsink_change_state (GstElement *element)
+gst_udpsink_change_state (GstElement * element)
{
g_return_val_if_fail (GST_IS_UDPSINK (element), GST_STATE_FAILURE);
@@ -448,7 +454,7 @@ gst_udpsink_change_state (GstElement *element)
} else {
if (!GST_FLAG_IS_SET (element, GST_UDPSINK_OPEN)) {
if (!gst_udpsink_init_send (GST_UDPSINK (element)))
- return GST_STATE_FAILURE;
+ return GST_STATE_FAILURE;
}
}
@@ -457,4 +463,3 @@ gst_udpsink_change_state (GstElement *element)
return GST_STATE_SUCCESS;
}
-