[gstreamermm] Gst::NetClientClock: implement GstNetClientClock wrapper
- From: Marcin Kolny <mkolny src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gstreamermm] Gst::NetClientClock: implement GstNetClientClock wrapper
- Date: Fri, 2 Dec 2016 23:09:19 +0000 (UTC)
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]