mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 23:14:46 +00:00
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:
parent
02253f5807
commit
d8b2273583
9 changed files with 93 additions and 109 deletions
16
ChangeLog
16
ChangeLog
|
@ -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>
|
||||
|
||||
* 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.
|
||||
Keep a reference to the element that provided the clock.
|
||||
|
||||
|
||||
2005-11-18 Andy Wingo <wingo@pobox.com>
|
||||
|
||||
* gst/net/gstnetclientclock.c (gst_net_client_clock_new): Adjust
|
||||
|
|
|
@ -39,72 +39,56 @@ GST_START_TEST (test_instantiation)
|
|||
|
||||
gst_object_unref (client);
|
||||
|
||||
ASSERT_OBJECT_REFCOUNT (local, "net time provider", 2);
|
||||
ASSERT_OBJECT_REFCOUNT (local, "system clock", 2);
|
||||
|
||||
gst_object_unref (local);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
#if 0
|
||||
GST_START_TEST (test_functioning)
|
||||
{
|
||||
GstNetTimeProvider *ntp;
|
||||
GstNetTimePacket *packet;
|
||||
GstClock *clock;
|
||||
GstClockTime local;
|
||||
struct sockaddr_in servaddr;
|
||||
gint port = -1, sockfd, ret;
|
||||
socklen_t len;
|
||||
GstClock *client, *server;
|
||||
GstClockTimeDiff offset;
|
||||
GstClockTime servint; //, servtime, localtime;
|
||||
gint port;
|
||||
gdouble rate;
|
||||
|
||||
clock = gst_system_clock_obtain ();
|
||||
fail_unless (clock != 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");
|
||||
server = gst_system_clock_obtain ();
|
||||
fail_unless (server != NULL, "failed to get system clock");
|
||||
|
||||
/* 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);
|
||||
fail_unless (port > 0);
|
||||
/* g_print ("server port: %d\n", port); */
|
||||
|
||||
sockfd = socket (AF_INET, SOCK_DGRAM, 0);
|
||||
fail_if (sockfd < 0, "socket failed");
|
||||
client = gst_net_client_clock_new (NULL, "127.0.0.1", port, GST_SECOND);
|
||||
fail_unless (client != NULL, "failed to get network client clock");
|
||||
|
||||
memset (&servaddr, 0, sizeof (servaddr));
|
||||
servaddr.sin_family = AF_INET;
|
||||
servaddr.sin_port = htons (port);
|
||||
inet_aton ("127.0.0.1", &servaddr.sin_addr);
|
||||
g_object_get (client, "port", &port, NULL);
|
||||
/* g_print ("client connecting to server port %d\n", port); */
|
||||
|
||||
packet = gst_net_time_packet_new (NULL);
|
||||
fail_unless (packet != NULL, "failed to create packet");
|
||||
|
||||
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);
|
||||
/* one for gstreamer, one for ntp, one for us */
|
||||
ASSERT_OBJECT_REFCOUNT (server, "system clock", 3);
|
||||
ASSERT_OBJECT_REFCOUNT (client, "network client clock", 1);
|
||||
|
||||
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;
|
||||
#endif
|
||||
|
||||
Suite *
|
||||
gst_net_client_clock_suite (void)
|
||||
|
@ -114,7 +98,7 @@ gst_net_client_clock_suite (void)
|
|||
|
||||
suite_add_tcase (s, tc_chain);
|
||||
tcase_add_test (tc_chain, test_instantiation);
|
||||
/* tcase_add_test (tc_chain, test_functioning); */
|
||||
tcase_add_test (tc_chain, test_functioning);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ GST_START_TEST (test_refcounts)
|
|||
/* one for gstreamer, one for us */
|
||||
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");
|
||||
|
||||
/* one for ntp, one for gstreamer, one for us */
|
||||
|
@ -63,7 +63,7 @@ GST_START_TEST (test_functioning)
|
|||
|
||||
clock = gst_system_clock_obtain ();
|
||||
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");
|
||||
|
||||
g_object_get (ntp, "port", &port, NULL);
|
||||
|
|
|
@ -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));
|
||||
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_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));
|
||||
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_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_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);
|
||||
|
||||
ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address,
|
||||
|
|
|
@ -102,7 +102,7 @@ gst_net_time_provider_class_init (GstNetTimeProviderClass * klass)
|
|||
|
||||
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_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));
|
||||
g_object_class_install_property (gobject_class, PROP_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));
|
||||
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;
|
||||
if (self->address)
|
||||
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);
|
||||
GST_DEBUG_OBJECT (self, "bound, on port %d", port);
|
||||
|
||||
if (port != self->port) {
|
||||
self->port = 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;
|
||||
|
||||
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",
|
||||
address, "port", port, NULL);
|
||||
|
|
|
@ -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));
|
||||
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_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));
|
||||
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_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_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);
|
||||
|
||||
ret = g_object_new (GST_TYPE_NET_CLIENT_CLOCK, "address", remote_address,
|
||||
|
|
|
@ -102,7 +102,7 @@ gst_net_time_provider_class_init (GstNetTimeProviderClass * klass)
|
|||
|
||||
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_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));
|
||||
g_object_class_install_property (gobject_class, PROP_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));
|
||||
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;
|
||||
if (self->address)
|
||||
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);
|
||||
GST_DEBUG_OBJECT (self, "bound, on port %d", port);
|
||||
|
||||
if (port != self->port) {
|
||||
self->port = 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;
|
||||
|
||||
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",
|
||||
address, "port", port, NULL);
|
||||
|
|
|
@ -39,72 +39,56 @@ GST_START_TEST (test_instantiation)
|
|||
|
||||
gst_object_unref (client);
|
||||
|
||||
ASSERT_OBJECT_REFCOUNT (local, "net time provider", 2);
|
||||
ASSERT_OBJECT_REFCOUNT (local, "system clock", 2);
|
||||
|
||||
gst_object_unref (local);
|
||||
}
|
||||
|
||||
GST_END_TEST;
|
||||
|
||||
#if 0
|
||||
GST_START_TEST (test_functioning)
|
||||
{
|
||||
GstNetTimeProvider *ntp;
|
||||
GstNetTimePacket *packet;
|
||||
GstClock *clock;
|
||||
GstClockTime local;
|
||||
struct sockaddr_in servaddr;
|
||||
gint port = -1, sockfd, ret;
|
||||
socklen_t len;
|
||||
GstClock *client, *server;
|
||||
GstClockTimeDiff offset;
|
||||
GstClockTime servint; //, servtime, localtime;
|
||||
gint port;
|
||||
gdouble rate;
|
||||
|
||||
clock = gst_system_clock_obtain ();
|
||||
fail_unless (clock != 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");
|
||||
server = gst_system_clock_obtain ();
|
||||
fail_unless (server != NULL, "failed to get system clock");
|
||||
|
||||
/* 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);
|
||||
fail_unless (port > 0);
|
||||
/* g_print ("server port: %d\n", port); */
|
||||
|
||||
sockfd = socket (AF_INET, SOCK_DGRAM, 0);
|
||||
fail_if (sockfd < 0, "socket failed");
|
||||
client = gst_net_client_clock_new (NULL, "127.0.0.1", port, GST_SECOND);
|
||||
fail_unless (client != NULL, "failed to get network client clock");
|
||||
|
||||
memset (&servaddr, 0, sizeof (servaddr));
|
||||
servaddr.sin_family = AF_INET;
|
||||
servaddr.sin_port = htons (port);
|
||||
inet_aton ("127.0.0.1", &servaddr.sin_addr);
|
||||
g_object_get (client, "port", &port, NULL);
|
||||
/* g_print ("client connecting to server port %d\n", port); */
|
||||
|
||||
packet = gst_net_time_packet_new (NULL);
|
||||
fail_unless (packet != NULL, "failed to create packet");
|
||||
|
||||
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);
|
||||
/* one for gstreamer, one for ntp, one for us */
|
||||
ASSERT_OBJECT_REFCOUNT (server, "system clock", 3);
|
||||
ASSERT_OBJECT_REFCOUNT (client, "network client clock", 1);
|
||||
|
||||
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;
|
||||
#endif
|
||||
|
||||
Suite *
|
||||
gst_net_client_clock_suite (void)
|
||||
|
@ -114,7 +98,7 @@ gst_net_client_clock_suite (void)
|
|||
|
||||
suite_add_tcase (s, tc_chain);
|
||||
tcase_add_test (tc_chain, test_instantiation);
|
||||
/* tcase_add_test (tc_chain, test_functioning); */
|
||||
tcase_add_test (tc_chain, test_functioning);
|
||||
|
||||
return s;
|
||||
}
|
||||
|
|
|
@ -35,7 +35,7 @@ GST_START_TEST (test_refcounts)
|
|||
/* one for gstreamer, one for us */
|
||||
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");
|
||||
|
||||
/* one for ntp, one for gstreamer, one for us */
|
||||
|
@ -63,7 +63,7 @@ GST_START_TEST (test_functioning)
|
|||
|
||||
clock = gst_system_clock_obtain ();
|
||||
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");
|
||||
|
||||
g_object_get (ntp, "port", &port, NULL);
|
||||
|
|
Loading…
Reference in a new issue