[gstreamermm] Gst::NetClientClock: implement GstNetClientClock wrapper



commit c44fc456b69241ecef07ccea60adcb504c1be7bc
Author: Marcin Kolny <marcin kolny gmail com>
Date:   Fri Dec 2 21:38:24 2016 +0100

    Gst::NetClientClock: implement GstNetClientClock wrapper

 .gitignore                       |    2 +
 gstreamer/gstreamermm.h          |    1 +
 gstreamer/src/filelist.am        |    1 +
 gstreamer/src/netclientclock.ccg |   34 +++++++++++++++++
 gstreamer/src/netclientclock.hg  |   75 ++++++++++++++++++++++++++++++++++++++
 5 files changed, 113 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index 5854749..5f0b472 100644
--- a/.gitignore
+++ b/.gitignore
@@ -149,6 +149,8 @@ gstreamer/gstreamermm/miniobject.cc
 gstreamer/gstreamermm/miniobject.h
 gstreamer/gstreamermm/navigation.cc
 gstreamer/gstreamermm/navigation.h
+gstreamer/gstreamermm/netclientclock.cc
+gstreamer/gstreamermm/netclientclock.h
 gstreamer/gstreamermm/object.cc
 gstreamer/gstreamermm/object.h
 gstreamer/gstreamermm/pad.cc
diff --git a/gstreamer/gstreamermm.h b/gstreamer/gstreamermm.h
index e58c8be..fc3b355 100644
--- a/gstreamer/gstreamermm.h
+++ b/gstreamer/gstreamermm.h
@@ -136,6 +136,7 @@
 #include <gstreamermm/discoverer.h>
 #include <gstreamermm/discovererinfo.h>
 #include <gstreamermm/encodingprofile.h>
+#include <gstreamermm/netclientclock.h>
 #include <gstreamermm/videosink.h>
 #include <gstreamermm/videochroma.h>
 #include <gstreamermm/videoformat.h>
diff --git a/gstreamer/src/filelist.am b/gstreamer/src/filelist.am
index 4698fa2..867bf7e 100644
--- a/gstreamer/src/filelist.am
+++ b/gstreamer/src/filelist.am
@@ -67,6 +67,7 @@ files_hg  =                     \
         memory.hg               \
         miniobject.hg           \
         navigation.hg           \
+       netclientclock.hg       \
         object.hg               \
         pad.hg                  \
         padtemplate.hg          \
diff --git a/gstreamer/src/netclientclock.ccg b/gstreamer/src/netclientclock.ccg
new file mode 100644
index 0000000..f71874e
--- /dev/null
+++ b/gstreamer/src/netclientclock.ccg
@@ -0,0 +1,34 @@
+/* gstreamermm - a C++ wrapper for gstreamer
+ *
+ * Copyright 2016 The gstreamermm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+_PINCLUDE(gstreamermm/private/systemclock_p.h)
+
+#include <gstreamermm/bus.h>
+#include <gst/net/gstnet.h>
+
+namespace Gst
+{
+
+NetClientClock::NetClientClock(const Glib::ustring& name, const Glib::ustring& remote_address, int 
remote_port, Gst::ClockTime base_time)
+:
+  _CONSTRUCT("name", name.c_str(), "address", remote_address.c_str(),
+    "port", remote_port, "base-time", static_cast<GstClockTime>(base_time))
+{}
+
+}
diff --git a/gstreamer/src/netclientclock.hg b/gstreamer/src/netclientclock.hg
new file mode 100644
index 0000000..c47206b
--- /dev/null
+++ b/gstreamer/src/netclientclock.hg
@@ -0,0 +1,75 @@
+/* gstreamermm - a C++ wrapper for gstreamer
+ *
+ * Copyright 2016 The gstreamermm Development Team
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+
+#include <gstreamermm/systemclock.h>
+
+_DEFS(gstreamermm,gst)
+
+namespace Gst
+{
+
+class Bus;
+
+/** Special clock that synchronizes to a remote time provider.
+ *
+ * Gst::NetClientClock implements a custom Gst::Clock that synchronizes its time
+ * to a remote time provider such as Gst::NetTimeProvider. Gst::NtpClock
+ * implements a Gst::Clock that synchronizes its time to a remote NTPv4 server.
+ *
+ * A new clock is created with create() or gst_ntp_clock_new(), which takes
+ * the address and port of the remote time provider along with a name and an
+ * initial time.
+ *
+ * This clock will poll the time provider and will update its calibration
+ * parameters based on the local and remote observations.
+ *
+ * The "round-trip" property limits the maximum round trip packets can take.
+ *
+ * Various parameters of the clock can be configured with the parent Gst::Clock
+ * "timeout", "window-size" and "window-threshold" object properties.
+ *
+ * A Gst::NetClientClock and Gst::NtpClock is typically set on a Gst::Pipeline with
+ * Gst::Pipeline::use_clock().
+ *
+ * If you set a Gst::Bus on the clock via the "bus" object property, it will
+ * send Gst::MESSAGE_ELEMENT messages with an attached Gst::Structure containing
+ * statistics about clock accuracy and network traffic.
+ *
+ * Last reviewed on 2016-12-02 (1.8.1)
+ */
+class NetClientClock : public SystemClock
+{
+  _CLASS_GOBJECT(NetClientClock, GstNetClientClock, GST_NET_CLIENT_CLOCK, SystemClock, GstSystemClock)
+
+protected:
+  NetClientClock(const Glib::ustring& name, const Glib::ustring& address, int remote_port, Gst::ClockTime 
base_time);
+
+public:
+  _WRAP_CREATE(const Glib::ustring& name, const Glib::ustring& remote_address, int remote_port, 
Gst::ClockTime base_time)
+
+  _WRAP_PROPERTY("address", Glib::ustring)
+  _WRAP_PROPERTY("base-time", guint64)
+  _WRAP_PROPERTY("bus", Glib::RefPtr<Gst::Bus>)
+  _WRAP_PROPERTY("internal-clock", Glib::RefPtr<Gst::Clock>)
+  _WRAP_PROPERTY("minimum-update-interval", guint64)
+  _WRAP_PROPERTY("port", int)
+  _WRAP_PROPERTY("round-trip-limit", guint64)
+};
+
+} //namespace Gst


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]