gst/net/gstnetclientclock.c (gst_net_client_clock_class_init): Port goes all the way to MAXUINT16.

Original commit message from CVS:
2005-11-18  Andy Wingo  <wingo@pobox.com>

* gst/net/gstnetclientclock.c (gst_net_client_clock_class_init):
Port goes all the way to MAXUINT16.

* gst/net/gstnettimeprovider.c: Make the port range the same as
for the kernel: 0 assigns, otherwise ports are less than
MAXUINT16.

* check/net/gstnettimeprovider.c: Adapt for 0 == kernel assigns
port change.

* check/net/gstnetclientclock.c (test_functioning): Add the start
of another test.
This commit is contained in:
Andy Wingo 2005-11-18 11:57:30 +00:00
parent 02253f5807
commit d8b2273583
9 changed files with 93 additions and 109 deletions

View file

@ -1,3 +1,18 @@
2005-11-18 Andy Wingo <wingo@pobox.com>
* gst/net/gstnetclientclock.c (gst_net_client_clock_class_init):
Port goes all the way to MAXUINT16.
* gst/net/gstnettimeprovider.c: Make the port range the same as
for the kernel: 0 assigns, otherwise ports are less than
MAXUINT16.
* check/net/gstnettimeprovider.c: Adapt for 0 == kernel assigns
port change.
* check/net/gstnetclientclock.c (test_functioning): Add the start
of another test.
2005-11-18 Wim Taymans <wim@fluendo.com> 2005-11-18 Wim Taymans <wim@fluendo.com>
* gst/gstbin.c: (gst_bin_provide_clock_func), (gst_bin_add_func), * gst/gstbin.c: (gst_bin_provide_clock_func), (gst_bin_add_func),
@ -9,7 +24,6 @@
Make sure we reselect a clock when we received a clock lost message. Make sure we reselect a clock when we received a clock lost message.
Keep a reference to the element that provided the clock. Keep a reference to the element that provided the clock.
2005-11-18 Andy Wingo <wingo@pobox.com> 2005-11-18 Andy Wingo <wingo@pobox.com>
* gst/net/gstnetclientclock.c (gst_net_client_clock_new): Adjust * gst/net/gstnetclientclock.c (gst_net_client_clock_new): Adjust

View file

@ -39,72 +39,56 @@ GST_START_TEST (test_instantiation)
gst_object_unref (client); gst_object_unref (client);
ASSERT_OBJECT_REFCOUNT (local, "net time provider", 2); ASSERT_OBJECT_REFCOUNT (local, "system clock", 2);
gst_object_unref (local); gst_object_unref (local);
} }
GST_END_TEST; GST_END_TEST;
#if 0
GST_START_TEST (test_functioning) GST_START_TEST (test_functioning)
{ {
GstNetTimeProvider *ntp; GstNetTimeProvider *ntp;
GstNetTimePacket *packet; GstClock *client, *server;
GstClock *clock; GstClockTimeDiff offset;
GstClockTime local; GstClockTime servint; //, servtime, localtime;
struct sockaddr_in servaddr; gint port;
gint port = -1, sockfd, ret; gdouble rate;
socklen_t len;
clock = gst_system_clock_obtain (); server = gst_system_clock_obtain ();
fail_unless (clock != NULL, "failed to get system clock"); fail_unless (server != NULL, "failed to get system clock");
ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1);
fail_unless (ntp != NULL, "failed to create net time provider"); /* move the clock ahead 1 minute */
gst_clock_get_rate_offset (server, &rate, &offset);
offset += 60 * GST_SECOND;
gst_clock_set_rate_offset (server, rate, offset);
servint = gst_clock_get_internal_time (GST_CLOCK (server));
ntp = gst_net_time_provider_new (server, "127.0.0.1", 0);
fail_unless (ntp != NULL, "failed to create network time provider");
g_object_get (ntp, "port", &port, NULL); g_object_get (ntp, "port", &port, NULL);
fail_unless (port > 0); /* g_print ("server port: %d\n", port); */
sockfd = socket (AF_INET, SOCK_DGRAM, 0); client = gst_net_client_clock_new (NULL, "127.0.0.1", port, GST_SECOND);
fail_if (sockfd < 0, "socket failed"); fail_unless (client != NULL, "failed to get network client clock");
memset (&servaddr, 0, sizeof (servaddr)); g_object_get (client, "port", &port, NULL);
servaddr.sin_family = AF_INET; /* g_print ("client connecting to server port %d\n", port); */
servaddr.sin_port = htons (port);
inet_aton ("127.0.0.1", &servaddr.sin_addr);
packet = gst_net_time_packet_new (NULL); /* one for gstreamer, one for ntp, one for us */
fail_unless (packet != NULL, "failed to create packet"); ASSERT_OBJECT_REFCOUNT (server, "system clock", 3);
ASSERT_OBJECT_REFCOUNT (client, "network client clock", 1);
packet->local_time = local = gst_clock_get_time (clock);
len = sizeof (servaddr);
ret = gst_net_time_packet_send (packet, sockfd,
(struct sockaddr *) &servaddr, len);
fail_unless (ret == GST_NET_TIME_PACKET_SIZE, "failed to send packet");
g_free (packet);
packet = gst_net_time_packet_receive (sockfd, (struct sockaddr *) &servaddr,
&len);
fail_unless (packet != NULL, "failed to receive packet");
fail_unless (packet->local_time == local, "local time is not the same");
fail_unless (packet->remote_time > local, "remote time not after local time");
fail_unless (packet->remote_time < gst_clock_get_time (clock),
"remote time in the future");
g_free (packet);
close (sockfd);
gst_object_unref (ntp); gst_object_unref (ntp);
gst_object_unref (clock);
ASSERT_OBJECT_REFCOUNT (server, "system clock", 2);
gst_object_unref (client);
gst_object_unref (server);
} }
GST_END_TEST; GST_END_TEST;
#endif
Suite * Suite *
gst_net_client_clock_suite (void) gst_net_client_clock_suite (void)
@ -114,7 +98,7 @@ gst_net_client_clock_suite (void)
suite_add_tcase (s, tc_chain); suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_instantiation); tcase_add_test (tc_chain, test_instantiation);
/* tcase_add_test (tc_chain, test_functioning); */ tcase_add_test (tc_chain, test_functioning);
return s; return s;
} }

View file

@ -35,7 +35,7 @@ GST_START_TEST (test_refcounts)
/* one for gstreamer, one for us */ /* one for gstreamer, one for us */
ASSERT_OBJECT_REFCOUNT (clock, "system clock", 2); ASSERT_OBJECT_REFCOUNT (clock, "system clock", 2);
ntp = gst_net_time_provider_new (clock, NULL, -1); ntp = gst_net_time_provider_new (clock, NULL, 0);
fail_unless (ntp != NULL, "failed to create net time provider"); fail_unless (ntp != NULL, "failed to create net time provider");
/* one for ntp, one for gstreamer, one for us */ /* one for ntp, one for gstreamer, one for us */
@ -63,7 +63,7 @@ GST_START_TEST (test_functioning)
clock = gst_system_clock_obtain (); clock = gst_system_clock_obtain ();
fail_unless (clock != NULL, "failed to get system clock"); fail_unless (clock != NULL, "failed to get system clock");
ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1); ntp = gst_net_time_provider_new (clock, "127.0.0.1", 0);
fail_unless (ntp != NULL, "failed to create net time provider"); fail_unless (ntp != NULL, "failed to create net time provider");
g_object_get (ntp, "port", &port, NULL); g_object_get (ntp, "port", &port, NULL);

View file

@ -104,7 +104,7 @@ gst_net_client_clock_class_init (GstNetClientClockClass * klass)
"as a dotted quad (x.x.x.x)", DEFAULT_ADDRESS, G_PARAM_READWRITE)); "as a dotted quad (x.x.x.x)", DEFAULT_ADDRESS, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT,
g_param_spec_int ("port", "port", g_param_spec_int ("port", "port",
"The port on which the remote server is listening", 0, 32768, "The port on which the remote server is listening", 0, G_MAXUINT16,
DEFAULT_PORT, G_PARAM_READWRITE)); DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WINDOW_SIZE, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WINDOW_SIZE,
g_param_spec_int ("window-size", "Window size", g_param_spec_int ("window-size", "Window size",
@ -568,7 +568,7 @@ gst_net_client_clock_new (gchar * name, const gchar * remote_address,
g_return_val_if_fail (remote_address != NULL, NULL); g_return_val_if_fail (remote_address != NULL, NULL);
g_return_val_if_fail (remote_port > 0, NULL); g_return_val_if_fail (remote_port > 0, NULL);
g_return_val_if_fail (remote_port < 32768, NULL); g_return_val_if_fail (remote_port <= G_MAXUINT16, NULL);
g_return_val_if_fail (base_time != GST_CLOCK_TIME_NONE, NULL); g_return_val_if_fail (base_time != GST_CLOCK_TIME_NONE, NULL);
ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address, ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address,

View file

@ -102,7 +102,7 @@ gst_net_time_provider_class_init (GstNetTimeProviderClass * klass)
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT,
g_param_spec_int ("port", "port", g_param_spec_int ("port", "port",
"The port to receive the packets from, -1=allocate", -1, 32768, "The port to receive the packets from, 0=allocate", 0, G_MAXUINT16,
DEFAULT_PORT, G_PARAM_READWRITE)); DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, PROP_ADDRESS, g_object_class_install_property (gobject_class, PROP_ADDRESS,
g_param_spec_string ("address", "address", g_param_spec_string ("address", "address",
@ -330,7 +330,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
memset (&my_addr, 0, sizeof (my_addr)); memset (&my_addr, 0, sizeof (my_addr));
my_addr.sin_family = AF_INET; /* host byte order */ my_addr.sin_family = AF_INET; /* host byte order */
my_addr.sin_port = htons (self->port); /* short, network byte order */ my_addr.sin_port = htons ((gint16) self->port); /* short, network byte order */
my_addr.sin_addr.s_addr = INADDR_ANY; my_addr.sin_addr.s_addr = INADDR_ANY;
if (self->address) if (self->address)
inet_aton (self->address, &my_addr.sin_addr); inet_aton (self->address, &my_addr.sin_addr);
@ -347,6 +347,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
port = ntohs (my_addr.sin_port); port = ntohs (my_addr.sin_port);
GST_DEBUG_OBJECT (self, "bound, on port %d", port); GST_DEBUG_OBJECT (self, "bound, on port %d", port);
if (port != self->port) { if (port != self->port) {
self->port = port; self->port = port;
GST_DEBUG_OBJECT (self, "notifying %d", port); GST_DEBUG_OBJECT (self, "notifying %d", port);
@ -432,7 +433,7 @@ gst_net_time_provider_new (GstClock * clock, const gchar * address, gint port)
gint iret; gint iret;
g_return_val_if_fail (clock && GST_IS_CLOCK (clock), NULL); g_return_val_if_fail (clock && GST_IS_CLOCK (clock), NULL);
g_return_val_if_fail (port == -1 || port >= 0, NULL); g_return_val_if_fail (port >= 0 && port <= G_MAXUINT16, NULL);
ret = g_object_new (GST_TYPE_NET_TIME_PROVIDER, "clock", clock, "address", ret = g_object_new (GST_TYPE_NET_TIME_PROVIDER, "clock", clock, "address",
address, "port", port, NULL); address, "port", port, NULL);

View file

@ -104,7 +104,7 @@ gst_net_client_clock_class_init (GstNetClientClockClass * klass)
"as a dotted quad (x.x.x.x)", DEFAULT_ADDRESS, G_PARAM_READWRITE)); "as a dotted quad (x.x.x.x)", DEFAULT_ADDRESS, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT,
g_param_spec_int ("port", "port", g_param_spec_int ("port", "port",
"The port on which the remote server is listening", 0, 32768, "The port on which the remote server is listening", 0, G_MAXUINT16,
DEFAULT_PORT, G_PARAM_READWRITE)); DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WINDOW_SIZE, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_WINDOW_SIZE,
g_param_spec_int ("window-size", "Window size", g_param_spec_int ("window-size", "Window size",
@ -568,7 +568,7 @@ gst_net_client_clock_new (gchar * name, const gchar * remote_address,
g_return_val_if_fail (remote_address != NULL, NULL); g_return_val_if_fail (remote_address != NULL, NULL);
g_return_val_if_fail (remote_port > 0, NULL); g_return_val_if_fail (remote_port > 0, NULL);
g_return_val_if_fail (remote_port < 32768, NULL); g_return_val_if_fail (remote_port <= G_MAXUINT16, NULL);
g_return_val_if_fail (base_time != GST_CLOCK_TIME_NONE, NULL); g_return_val_if_fail (base_time != GST_CLOCK_TIME_NONE, NULL);
ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address, ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address,

View file

@ -102,7 +102,7 @@ gst_net_time_provider_class_init (GstNetTimeProviderClass * klass)
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_PORT,
g_param_spec_int ("port", "port", g_param_spec_int ("port", "port",
"The port to receive the packets from, -1=allocate", -1, 32768, "The port to receive the packets from, 0=allocate", 0, G_MAXUINT16,
DEFAULT_PORT, G_PARAM_READWRITE)); DEFAULT_PORT, G_PARAM_READWRITE));
g_object_class_install_property (gobject_class, PROP_ADDRESS, g_object_class_install_property (gobject_class, PROP_ADDRESS,
g_param_spec_string ("address", "address", g_param_spec_string ("address", "address",
@ -330,7 +330,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
memset (&my_addr, 0, sizeof (my_addr)); memset (&my_addr, 0, sizeof (my_addr));
my_addr.sin_family = AF_INET; /* host byte order */ my_addr.sin_family = AF_INET; /* host byte order */
my_addr.sin_port = htons (self->port); /* short, network byte order */ my_addr.sin_port = htons ((gint16) self->port); /* short, network byte order */
my_addr.sin_addr.s_addr = INADDR_ANY; my_addr.sin_addr.s_addr = INADDR_ANY;
if (self->address) if (self->address)
inet_aton (self->address, &my_addr.sin_addr); inet_aton (self->address, &my_addr.sin_addr);
@ -347,6 +347,7 @@ gst_net_time_provider_start (GstNetTimeProvider * self)
port = ntohs (my_addr.sin_port); port = ntohs (my_addr.sin_port);
GST_DEBUG_OBJECT (self, "bound, on port %d", port); GST_DEBUG_OBJECT (self, "bound, on port %d", port);
if (port != self->port) { if (port != self->port) {
self->port = port; self->port = port;
GST_DEBUG_OBJECT (self, "notifying %d", port); GST_DEBUG_OBJECT (self, "notifying %d", port);
@ -432,7 +433,7 @@ gst_net_time_provider_new (GstClock * clock, const gchar * address, gint port)
gint iret; gint iret;
g_return_val_if_fail (clock && GST_IS_CLOCK (clock), NULL); g_return_val_if_fail (clock && GST_IS_CLOCK (clock), NULL);
g_return_val_if_fail (port == -1 || port >= 0, NULL); g_return_val_if_fail (port >= 0 && port <= G_MAXUINT16, NULL);
ret = g_object_new (GST_TYPE_NET_TIME_PROVIDER, "clock", clock, "address", ret = g_object_new (GST_TYPE_NET_TIME_PROVIDER, "clock", clock, "address",
address, "port", port, NULL); address, "port", port, NULL);

View file

@ -39,72 +39,56 @@ GST_START_TEST (test_instantiation)
gst_object_unref (client); gst_object_unref (client);
ASSERT_OBJECT_REFCOUNT (local, "net time provider", 2); ASSERT_OBJECT_REFCOUNT (local, "system clock", 2);
gst_object_unref (local); gst_object_unref (local);
} }
GST_END_TEST; GST_END_TEST;
#if 0
GST_START_TEST (test_functioning) GST_START_TEST (test_functioning)
{ {
GstNetTimeProvider *ntp; GstNetTimeProvider *ntp;
GstNetTimePacket *packet; GstClock *client, *server;
GstClock *clock; GstClockTimeDiff offset;
GstClockTime local; GstClockTime servint; //, servtime, localtime;
struct sockaddr_in servaddr; gint port;
gint port = -1, sockfd, ret; gdouble rate;
socklen_t len;
clock = gst_system_clock_obtain (); server = gst_system_clock_obtain ();
fail_unless (clock != NULL, "failed to get system clock"); fail_unless (server != NULL, "failed to get system clock");
ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1);
fail_unless (ntp != NULL, "failed to create net time provider"); /* move the clock ahead 1 minute */
gst_clock_get_rate_offset (server, &rate, &offset);
offset += 60 * GST_SECOND;
gst_clock_set_rate_offset (server, rate, offset);
servint = gst_clock_get_internal_time (GST_CLOCK (server));
ntp = gst_net_time_provider_new (server, "127.0.0.1", 0);
fail_unless (ntp != NULL, "failed to create network time provider");
g_object_get (ntp, "port", &port, NULL); g_object_get (ntp, "port", &port, NULL);
fail_unless (port > 0); /* g_print ("server port: %d\n", port); */
sockfd = socket (AF_INET, SOCK_DGRAM, 0); client = gst_net_client_clock_new (NULL, "127.0.0.1", port, GST_SECOND);
fail_if (sockfd < 0, "socket failed"); fail_unless (client != NULL, "failed to get network client clock");
memset (&servaddr, 0, sizeof (servaddr)); g_object_get (client, "port", &port, NULL);
servaddr.sin_family = AF_INET; /* g_print ("client connecting to server port %d\n", port); */
servaddr.sin_port = htons (port);
inet_aton ("127.0.0.1", &servaddr.sin_addr);
packet = gst_net_time_packet_new (NULL); /* one for gstreamer, one for ntp, one for us */
fail_unless (packet != NULL, "failed to create packet"); ASSERT_OBJECT_REFCOUNT (server, "system clock", 3);
ASSERT_OBJECT_REFCOUNT (client, "network client clock", 1);
packet->local_time = local = gst_clock_get_time (clock);
len = sizeof (servaddr);
ret = gst_net_time_packet_send (packet, sockfd,
(struct sockaddr *) &servaddr, len);
fail_unless (ret == GST_NET_TIME_PACKET_SIZE, "failed to send packet");
g_free (packet);
packet = gst_net_time_packet_receive (sockfd, (struct sockaddr *) &servaddr,
&len);
fail_unless (packet != NULL, "failed to receive packet");
fail_unless (packet->local_time == local, "local time is not the same");
fail_unless (packet->remote_time > local, "remote time not after local time");
fail_unless (packet->remote_time < gst_clock_get_time (clock),
"remote time in the future");
g_free (packet);
close (sockfd);
gst_object_unref (ntp); gst_object_unref (ntp);
gst_object_unref (clock);
ASSERT_OBJECT_REFCOUNT (server, "system clock", 2);
gst_object_unref (client);
gst_object_unref (server);
} }
GST_END_TEST; GST_END_TEST;
#endif
Suite * Suite *
gst_net_client_clock_suite (void) gst_net_client_clock_suite (void)
@ -114,7 +98,7 @@ gst_net_client_clock_suite (void)
suite_add_tcase (s, tc_chain); suite_add_tcase (s, tc_chain);
tcase_add_test (tc_chain, test_instantiation); tcase_add_test (tc_chain, test_instantiation);
/* tcase_add_test (tc_chain, test_functioning); */ tcase_add_test (tc_chain, test_functioning);
return s; return s;
} }

View file

@ -35,7 +35,7 @@ GST_START_TEST (test_refcounts)
/* one for gstreamer, one for us */ /* one for gstreamer, one for us */
ASSERT_OBJECT_REFCOUNT (clock, "system clock", 2); ASSERT_OBJECT_REFCOUNT (clock, "system clock", 2);
ntp = gst_net_time_provider_new (clock, NULL, -1); ntp = gst_net_time_provider_new (clock, NULL, 0);
fail_unless (ntp != NULL, "failed to create net time provider"); fail_unless (ntp != NULL, "failed to create net time provider");
/* one for ntp, one for gstreamer, one for us */ /* one for ntp, one for gstreamer, one for us */
@ -63,7 +63,7 @@ GST_START_TEST (test_functioning)
clock = gst_system_clock_obtain (); clock = gst_system_clock_obtain ();
fail_unless (clock != NULL, "failed to get system clock"); fail_unless (clock != NULL, "failed to get system clock");
ntp = gst_net_time_provider_new (clock, "127.0.0.1", -1); ntp = gst_net_time_provider_new (clock, "127.0.0.1", 0);
fail_unless (ntp != NULL, "failed to create net time provider"); fail_unless (ntp != NULL, "failed to create net time provider");
g_object_get (ntp, "port", &port, NULL); g_object_get (ntp, "port", &port, NULL);