gstreamer/libs/gst/net/Makefile.am
Sebastian Dröge 8d77759834 ptp: Initial implementation of a PTP clock
GstPtpClock implements a PTP (IEEE1588:2008) ordinary clock in
slave-only mode, that allows a GStreamer pipeline to synchronize
to a PTP network clock in some specific domain.

The PTP subsystem can be initialized with gst_ptp_init(), which then
starts a helper process to do the actual communication via the PTP
ports. This is required as PTP listens on ports < 1024 and thus
requires special privileges. Once this helper process is started, the
main process will synchronize to all PTP domains that are detected on
the selected interfaces.

gst_ptp_clock_new() then allows to create a GstClock that provides the
PTP time from a master clock inside a specific PTP domain. This clock
will only return valid timestamps once the timestamps in the PTP domain
are known. To check this, the GstPtpClock::internal-clock property and
the related notify::clock signal can be used. Once the internal clock
is not NULL, the PTP domain's time is known. Alternatively you can wait
for this with gst_ptp_clock_wait_ready().

To gather statistics about the PTP clock synchronization,
gst_ptp_statistics_callback_add() can be used. This gives the
application the possibility to collect all kinds of statistics
from the clock synchronization.

https://bugzilla.gnome.org/show_bug.cgi?id=749391
2015-06-03 13:55:28 +02:00

95 lines
3.3 KiB
Makefile

lib_LTLIBRARIES = libgstnet-@GST_API_VERSION@.la
libgstnet_@GST_API_VERSION@_includedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/net
libgstnet_@GST_API_VERSION@_include_HEADERS = \
net.h \
gstnet.h \
gstnetaddressmeta.h \
gstnetclientclock.h \
gstnetcontrolmessagemeta.h \
gstnettimepacket.h \
gstnettimeprovider.h \
gstptpclock.h
libgstnet_@GST_API_VERSION@_la_SOURCES = \
gstnetaddressmeta.c \
gstnetclientclock.c \
gstnetcontrolmessagemeta.c \
gstnettimepacket.c \
gstnettimeprovider.c \
gstptpclock.c
noinst_HEADERS = gstptp_private.h
libgstnet_@GST_API_VERSION@_la_CFLAGS = $(GST_OBJ_CFLAGS) $(GIO_CFLAGS)
libgstnet_@GST_API_VERSION@_la_LIBADD = $(GST_OBJ_LIBS) $(GIO_LIBS) \
$(top_builddir)/libs/gst/base/libgstbase-@GST_API_VERSION@.la
libgstnet_@GST_API_VERSION@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS)
# try to prevent packaging errors
check-libexecdir-consistency:
@if test "${GST_PTP_HELPER_INSTALLED}" != "${libexecdir}/gstreamer-$(GST_API_VERSION)/gst-ptp-helper"; then \
echo "*** Inconsistent libexecdir! Please use ./configure --libexecdir=/foo/bar"; \
echo "*** to set the libexecdir and not make libexecdir=/foo/bar or the like."; \
echo "*** The same goes for prefix, libdir etc."; \
echo "*** ${GST_PTP_HELPER_INSTALLED} != ${libexecdir}/gstreamer-$(GST_API_VERSION)/gst-ptp-helper"; \
exit 1; \
fi
all-local: check-libexecdir-consistency
CLEANFILES = *.gcno *.gcda *.gcov
%.c.gcov: .libs/libgstnet_@GST_API_VERSION@_la-%.gcda %.c
$(GCOV) -b -f -o $^ > $@.out
gcov: $(libgstnet_@GST_API_VERSION@_la_SOURCES:=.gcov)
if HAVE_INTROSPECTION
BUILT_GIRSOURCES = GstNet-@GST_API_VERSION@.gir
gir_headers=$(patsubst %,$(srcdir)/%, $(libgstnet_@GST_API_VERSION@_include_HEADERS))
gir_sources=$(patsubst %,$(srcdir)/%, $(libgstnet_@GST_API_VERSION@_la_SOURCES))
gir_cincludes=--c-include="gst/net/net.h"
GstNet-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstnet-@GST_API_VERSION@.la
$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
$(INTROSPECTION_SCANNER) -v --namespace GstNet \
--strip-prefix=Gst \
--warn-all \
--nsversion=@GST_API_VERSION@ \
-I$(top_srcdir) \
-I$(top_srcdir)/libs \
-I$(top_builddir) \
-I$(top_builddir)/libs \
$(gir_cincludes) \
--add-include-path=$(top_builddir)/gst \
--library-path=$(top_builddir)/gst \
--library=libgstnet-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
--include=Gio-2.0 \
--libtool="${LIBTOOL}" \
--pkg gstreamer-@GST_API_VERSION@ \
--pkg gio-2.0 \
--pkg-export="gstreamer-net-@GST_API_VERSION@" \
--add-init-section="gst_init(NULL,NULL);" \
--output $@ \
$(gir_headers) \
$(gir_sources)
# INTROSPECTION_GIRDIR/INTROSPECTION_TYPELIBDIR aren't the right place to
# install anything - we need to install inside our prefix.
girdir = $(datadir)/gir-1.0
gir_DATA = $(BUILT_GIRSOURCES)
typelibsdir = $(libdir)/girepository-1.0/
typelibs_DATA = $(BUILT_GIRSOURCES:.gir=.typelib)
%.typelib: %.gir $(INTROSPECTION_COMPILER)
$(AM_V_GEN)$(INTROSPECTION_COMPILER) --includedir=$(srcdir) --includedir=$(builddir) --includedir=$(top_builddir)/gst $(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
endif