aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian@centricular.com>2014-06-22 19:09:53 +0200
committerSebastian Dröge <sebastian@centricular.com>2014-06-22 19:09:53 +0200
commit1491e0386faa0ed4d5b2b072c84651b90a2fccd6 (patch)
treeb4e59eacecb04983e57e9cbe410511b879792380 /tests
parent543e3a3e468572edb15814e903a804d8912ae18c (diff)
Imported Upstream version 1.3.3upstream/1.3.3
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.in4
-rw-r--r--tests/check/Makefile.am27
-rw-r--r--tests/check/Makefile.in193
-rw-r--r--tests/check/elements/compositor.c1071
-rw-r--r--tests/check/elements/shm.c2
-rw-r--r--tests/check/libs/aggregator.c1017
-rw-r--r--tests/check/libs/gstglupload.c14
-rw-r--r--tests/check/libs/mpegts.c42
-rw-r--r--tests/examples/Makefile.in4
-rw-r--r--tests/examples/camerabin2/Makefile.in4
-rw-r--r--tests/examples/directfb/Makefile.in4
-rw-r--r--tests/examples/gl/Makefile.in4
-rw-r--r--tests/examples/gl/clutter/Makefile.am9
-rw-r--r--tests/examples/gl/clutter/Makefile.in13
-rwxr-xr-xtests/examples/gl/cocoa/Makefile.am5
-rw-r--r--tests/examples/gl/cocoa/Makefile.in9
-rw-r--r--tests/examples/gl/generic/Makefile.in4
-rw-r--r--tests/examples/gl/generic/cube/Makefile.am5
-rw-r--r--tests/examples/gl/generic/cube/Makefile.in10
-rw-r--r--tests/examples/gl/generic/cube/main.cpp47
-rw-r--r--tests/examples/gl/generic/cubeyuv/Makefile.am5
-rw-r--r--tests/examples/gl/generic/cubeyuv/Makefile.in10
-rw-r--r--tests/examples/gl/generic/cubeyuv/main.cpp46
-rw-r--r--tests/examples/gl/generic/doublecube/Makefile.am5
-rw-r--r--tests/examples/gl/generic/doublecube/Makefile.in10
-rw-r--r--tests/examples/gl/generic/doublecube/main.cpp46
-rw-r--r--tests/examples/gl/generic/recordgraphic/Makefile.am5
-rw-r--r--tests/examples/gl/generic/recordgraphic/Makefile.in10
-rw-r--r--tests/examples/gl/generic/recordgraphic/main.cpp57
-rw-r--r--tests/examples/gl/gtk/Makefile.am3
-rw-r--r--tests/examples/gl/gtk/Makefile.in7
-rw-r--r--tests/examples/gl/gtk/filternovideooverlay/Makefile.in4
-rw-r--r--tests/examples/gl/gtk/filtervideooverlay/Makefile.am5
-rw-r--r--tests/examples/gl/gtk/filtervideooverlay/Makefile.in9
-rw-r--r--tests/examples/gl/gtk/fxtest/Makefile.am10
-rw-r--r--tests/examples/gl/gtk/fxtest/Makefile.in14
-rw-r--r--tests/examples/gl/gtk/gtkvideooverlay/Makefile.am5
-rw-r--r--tests/examples/gl/gtk/gtkvideooverlay/Makefile.in9
-rw-r--r--tests/examples/gl/gtk/switchvideooverlay/Makefile.am5
-rw-r--r--tests/examples/gl/gtk/switchvideooverlay/Makefile.in9
-rw-r--r--tests/examples/gl/qt/Makefile.in4
-rw-r--r--tests/examples/gl/sdl/Makefile.am5
-rw-r--r--tests/examples/gl/sdl/Makefile.in10
-rw-r--r--tests/examples/mpegts/Makefile.in4
-rw-r--r--tests/examples/mpegts/ts-parser.c624
-rw-r--r--tests/examples/mxf/Makefile.in4
-rw-r--r--tests/examples/opencv/Makefile.in4
-rw-r--r--tests/examples/uvch264/Makefile.in4
-rw-r--r--tests/files/Makefile.in4
-rw-r--r--tests/icles/Makefile.in4
50 files changed, 3220 insertions, 209 deletions
diff --git a/tests/Makefile.in b/tests/Makefile.in
index d580923c..7c3fa66a 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -317,6 +317,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -403,6 +405,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -694,6 +697,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
@HAVE_GST_CHECK_FALSE@SUBDIRS_CHECK =
@HAVE_GST_CHECK_TRUE@SUBDIRS_CHECK = check
@BUILD_EXAMPLES_FALSE@SUBDIRS_EXAMPLES =
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index e7b77edb..90677f77 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -125,7 +125,7 @@ check_mimic=
endif
if HAVE_ORC
-check_orc = orc/bayer orc/audiomixer
+check_orc = orc/bayer orc/audiomixer orc/compositor
else
check_orc =
endif
@@ -227,6 +227,7 @@ check_PROGRAMS = \
elements/dataurisrc \
elements/gdppay \
elements/gdpdepay \
+ elements/compositor \
$(check_jifmux) \
elements/jpegparse \
elements/h263parse \
@@ -244,6 +245,7 @@ check_PROGRAMS = \
libs/mpegts \
libs/h264parser \
libs/vp8parser \
+ libs/aggregator \
$(check_uvch264) \
libs/vc1parser \
$(check_schro) \
@@ -455,6 +457,29 @@ libs_gstglupload_LDADD = \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+libs_aggregator_LDADD = \
+ $(top_builddir)/gst-libs/gst/base/libgstbadbase-@GST_API_VERSION@.la \
+ $(GST_PLUGINS_BASE_LIBS) \
+ $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+
+libs_aggregator_CFLAGS = \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+ -DGST_USE_UNSTABLE_API \
+ $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+elements_compositor_LDADD = $(LDADD) $(GST_BASE_LIBS)
+elements_compositor_CFLAGS = $(GST_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
+
+orc_compositor_CFLAGS = $(ORC_CFLAGS)
+orc_compositor_LDADD = $(ORC_LIBS) -lorc-test-0.4
+nodist_orc_compositor_SOURCES = orc/compositor.c
+orc_videobox_CFLAGS = $(ORC_CFLAGS)
+
+orc/compositor.c: $(top_srcdir)/gst/compositor/compositororc.orc
+ $(MKDIR_P) orc/
+ $(ORCC) --test -o $@ $<
+
+
distclean-local-orc:
rm -rf orc
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index 11156adc..5e3dd353 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -97,16 +97,17 @@ check_PROGRAMS = generic/states$(EXEEXT) $(am__EXEEXT_1) \
elements/baseaudiovisualizer$(EXEEXT) \
elements/camerabin$(EXEEXT) elements/dataurisrc$(EXEEXT) \
elements/gdppay$(EXEEXT) elements/gdpdepay$(EXEEXT) \
- $(am__EXEEXT_15) elements/jpegparse$(EXEEXT) \
- elements/h263parse$(EXEEXT) elements/h264parse$(EXEEXT) \
- elements/mpegtsmux$(EXEEXT) elements/mpegvideoparse$(EXEEXT) \
+ elements/compositor$(EXEEXT) $(am__EXEEXT_15) \
+ elements/jpegparse$(EXEEXT) elements/h263parse$(EXEEXT) \
+ elements/h264parse$(EXEEXT) elements/mpegtsmux$(EXEEXT) \
+ elements/mpegvideoparse$(EXEEXT) \
elements/mpeg4videoparse$(EXEEXT) $(am__EXEEXT_16) \
elements/mxfdemux$(EXEEXT) elements/mxfmux$(EXEEXT) \
elements/id3mux$(EXEEXT) pipelines/mxf$(EXEEXT) \
$(am__EXEEXT_17) libs/mpegvideoparser$(EXEEXT) \
libs/mpegts$(EXEEXT) libs/h264parser$(EXEEXT) \
- libs/vp8parser$(EXEEXT) $(am__EXEEXT_18) \
- libs/vc1parser$(EXEEXT) $(am__EXEEXT_19) \
+ libs/vp8parser$(EXEEXT) libs/aggregator$(EXEEXT) \
+ $(am__EXEEXT_18) libs/vc1parser$(EXEEXT) $(am__EXEEXT_19) \
elements/viewfinderbin$(EXEEXT) $(am__EXEEXT_20) \
$(am__EXEEXT_21) libs/insertbin$(EXEEXT) $(am__EXEEXT_22)
subdir = tests/check
@@ -187,7 +188,7 @@ libparser_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
@USE_SCHRO_TRUE@am__EXEEXT_19 = elements/schroenc$(EXEEXT)
@USE_ZBAR_TRUE@am__EXEEXT_20 = elements/zbar$(EXEEXT)
@HAVE_ORC_TRUE@am__EXEEXT_21 = orc/bayer$(EXEEXT) \
-@HAVE_ORC_TRUE@ orc/audiomixer$(EXEEXT)
+@HAVE_ORC_TRUE@ orc/audiomixer$(EXEEXT) orc/compositor$(EXEEXT)
@USE_GL_TRUE@am__EXEEXT_22 = libs/gstglcontext$(EXEEXT) \
@USE_GL_TRUE@ libs/gstglmemory$(EXEEXT) \
@USE_GL_TRUE@ libs/gstglupload$(EXEEXT)
@@ -251,6 +252,15 @@ elements_camerabin_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(elements_camerabin_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
+elements_compositor_SOURCES = elements/compositor.c
+elements_compositor_OBJECTS = \
+ elements/elements_compositor-compositor.$(OBJEXT)
+elements_compositor_DEPENDENCIES = $(am__DEPENDENCIES_2) \
+ $(am__DEPENDENCIES_1)
+elements_compositor_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(elements_compositor_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
elements_curlfilesink_SOURCES = elements/curlfilesink.c
elements_curlfilesink_OBJECTS = elements/curlfilesink.$(OBJEXT)
elements_curlfilesink_LDADD = $(LDADD)
@@ -446,6 +456,15 @@ generic_states_SOURCES = generic/states.c
generic_states_OBJECTS = generic/states.$(OBJEXT)
generic_states_LDADD = $(LDADD)
generic_states_DEPENDENCIES = $(am__DEPENDENCIES_1)
+libs_aggregator_SOURCES = libs/aggregator.c
+libs_aggregator_OBJECTS = libs/libs_aggregator-aggregator.$(OBJEXT)
+libs_aggregator_DEPENDENCIES = $(top_builddir)/gst-libs/gst/base/libgstbadbase-@GST_API_VERSION@.la \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+libs_aggregator_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libs_aggregator_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
libs_gstglcontext_SOURCES = libs/gstglcontext.c
libs_gstglcontext_OBJECTS = \
libs/libs_gstglcontext-gstglcontext.$(OBJEXT)
@@ -546,6 +565,14 @@ orc_bayer_DEPENDENCIES = $(am__DEPENDENCIES_1)
orc_bayer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(orc_bayer_CFLAGS) \
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+nodist_orc_compositor_OBJECTS = \
+ orc/orc_compositor-compositor.$(OBJEXT)
+orc_compositor_OBJECTS = $(nodist_orc_compositor_OBJECTS)
+orc_compositor_DEPENDENCIES = $(am__DEPENDENCIES_1)
+orc_compositor_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(orc_compositor_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
+ $@
pipelines_colorspace_SOURCES = pipelines/colorspace.c
pipelines_colorspace_OBJECTS = pipelines/colorspace.$(OBJEXT)
pipelines_colorspace_LDADD = $(LDADD)
@@ -605,12 +632,12 @@ SOURCES = $(libparser_la_SOURCES) elements/aiffparse.c \
elements/asfmux.c elements/assrender.c elements/audiomixer.c \
elements/autoconvert.c elements/autovideoconvert.c \
$(elements_baseaudiovisualizer_SOURCES) \
- $(elements_camerabin_SOURCES) elements/curlfilesink.c \
- elements/curlftpsink.c elements/curlhttpsink.c \
- elements/curlsftpsink.c elements/curlsmtpsink.c \
- elements/dataurisrc.c elements/faac.c elements/faad.c \
- elements/gdpdepay.c elements/gdppay.c elements/h263parse.c \
- elements/h264parse.c elements/id3mux.c \
+ $(elements_camerabin_SOURCES) elements/compositor.c \
+ elements/curlfilesink.c elements/curlftpsink.c \
+ elements/curlhttpsink.c elements/curlsftpsink.c \
+ elements/curlsmtpsink.c elements/dataurisrc.c elements/faac.c \
+ elements/faad.c elements/gdpdepay.c elements/gdppay.c \
+ elements/h263parse.c elements/h264parse.c elements/id3mux.c \
$(elements_jifmux_SOURCES) elements/jpegparse.c \
elements/kate.c elements/mpeg2enc.c elements/mpeg4videoparse.c \
elements/mpegtsmux.c elements/mpegvideoparse.c \
@@ -620,21 +647,22 @@ SOURCES = $(libparser_la_SOURCES) elements/aiffparse.c \
elements/timidity.c elements/uvch264demux.c \
elements/viewfinderbin.c elements/voaacenc.c \
elements/voamrwbenc.c elements/zbar.c generic/states.c \
- libs/gstglcontext.c libs/gstglmemory.c libs/gstglupload.c \
- libs/h264parser.c libs/insertbin.c libs/mpegts.c \
- libs/mpegvideoparser.c libs/vc1parser.c libs/vp8parser.c \
- orc/audiomixer.c orc/bayer.c pipelines/colorspace.c \
+ libs/aggregator.c libs/gstglcontext.c libs/gstglmemory.c \
+ libs/gstglupload.c libs/h264parser.c libs/insertbin.c \
+ libs/mpegts.c libs/mpegvideoparser.c libs/vc1parser.c \
+ libs/vp8parser.c orc/audiomixer.c orc/bayer.c \
+ $(nodist_orc_compositor_SOURCES) pipelines/colorspace.c \
pipelines/mimic.c pipelines/mxf.c pipelines/streamheader.c
DIST_SOURCES = $(libparser_la_SOURCES) elements/aiffparse.c \
elements/asfmux.c elements/assrender.c elements/audiomixer.c \
elements/autoconvert.c elements/autovideoconvert.c \
$(elements_baseaudiovisualizer_SOURCES) \
- $(elements_camerabin_SOURCES) elements/curlfilesink.c \
- elements/curlftpsink.c elements/curlhttpsink.c \
- elements/curlsftpsink.c elements/curlsmtpsink.c \
- elements/dataurisrc.c elements/faac.c elements/faad.c \
- elements/gdpdepay.c elements/gdppay.c elements/h263parse.c \
- elements/h264parse.c elements/id3mux.c \
+ $(elements_camerabin_SOURCES) elements/compositor.c \
+ elements/curlfilesink.c elements/curlftpsink.c \
+ elements/curlhttpsink.c elements/curlsftpsink.c \
+ elements/curlsmtpsink.c elements/dataurisrc.c elements/faac.c \
+ elements/faad.c elements/gdpdepay.c elements/gdppay.c \
+ elements/h263parse.c elements/h264parse.c elements/id3mux.c \
$(elements_jifmux_SOURCES) elements/jpegparse.c \
elements/kate.c elements/mpeg2enc.c elements/mpeg4videoparse.c \
elements/mpegtsmux.c elements/mpegvideoparse.c \
@@ -644,11 +672,12 @@ DIST_SOURCES = $(libparser_la_SOURCES) elements/aiffparse.c \
elements/timidity.c elements/uvch264demux.c \
elements/viewfinderbin.c elements/voaacenc.c \
elements/voamrwbenc.c elements/zbar.c generic/states.c \
- libs/gstglcontext.c libs/gstglmemory.c libs/gstglupload.c \
- libs/h264parser.c libs/insertbin.c libs/mpegts.c \
- libs/mpegvideoparser.c libs/vc1parser.c libs/vp8parser.c \
- orc/audiomixer.c orc/bayer.c pipelines/colorspace.c \
- pipelines/mimic.c pipelines/mxf.c pipelines/streamheader.c
+ libs/aggregator.c libs/gstglcontext.c libs/gstglmemory.c \
+ libs/gstglupload.c libs/h264parser.c libs/insertbin.c \
+ libs/mpegts.c libs/mpegvideoparser.c libs/vc1parser.c \
+ libs/vp8parser.c orc/audiomixer.c orc/bayer.c \
+ pipelines/colorspace.c pipelines/mimic.c pipelines/mxf.c \
+ pipelines/streamheader.c
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -995,6 +1024,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -1081,6 +1112,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -1372,6 +1404,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
# inspect every plugin feature
GST_INSPECT = $(GST_TOOLS_DIR)/gst-inspect-$(GST_API_VERSION)
@@ -1429,7 +1462,7 @@ SUPPRESSIONS = $(top_srcdir)/common/gst.supp $(srcdir)/gst-plugins-bad.supp
@USE_MIMIC_FALSE@check_mimic =
@USE_MIMIC_TRUE@check_mimic = pipelines/mimic
@HAVE_ORC_FALSE@check_orc =
-@HAVE_ORC_TRUE@check_orc = orc/bayer orc/audiomixer
+@HAVE_ORC_TRUE@check_orc = orc/bayer orc/audiomixer orc/compositor
@USE_ZBAR_FALSE@check_zbar =
@USE_ZBAR_TRUE@check_zbar = elements/zbar
@USE_OPUS_FALSE@check_opus =
@@ -1653,6 +1686,22 @@ libs_gstglupload_LDADD = \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+libs_aggregator_LDADD = \
+ $(top_builddir)/gst-libs/gst/base/libgstbadbase-@GST_API_VERSION@.la \
+ $(GST_PLUGINS_BASE_LIBS) \
+ $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+
+libs_aggregator_CFLAGS = \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+ -DGST_USE_UNSTABLE_API \
+ $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+elements_compositor_LDADD = $(LDADD) $(GST_BASE_LIBS)
+elements_compositor_CFLAGS = $(GST_BASE_CFLAGS) $(CFLAGS) $(AM_CFLAGS)
+orc_compositor_CFLAGS = $(ORC_CFLAGS)
+orc_compositor_LDADD = $(ORC_LIBS) -lorc-test-0.4
+nodist_orc_compositor_SOURCES = orc/compositor.c
+orc_videobox_CFLAGS = $(ORC_CFLAGS)
all: all-am
.SUFFIXES:
@@ -1776,6 +1825,12 @@ elements/elements_camerabin-camerabin.$(OBJEXT): \
elements/camerabin$(EXEEXT): $(elements_camerabin_OBJECTS) $(elements_camerabin_DEPENDENCIES) $(EXTRA_elements_camerabin_DEPENDENCIES) elements/$(am__dirstamp)
@rm -f elements/camerabin$(EXEEXT)
$(AM_V_CCLD)$(elements_camerabin_LINK) $(elements_camerabin_OBJECTS) $(elements_camerabin_LDADD) $(LIBS)
+elements/elements_compositor-compositor.$(OBJEXT): \
+ elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/compositor$(EXEEXT): $(elements_compositor_OBJECTS) $(elements_compositor_DEPENDENCIES) $(EXTRA_elements_compositor_DEPENDENCIES) elements/$(am__dirstamp)
+ @rm -f elements/compositor$(EXEEXT)
+ $(AM_V_CCLD)$(elements_compositor_LINK) $(elements_compositor_OBJECTS) $(elements_compositor_LDADD) $(LIBS)
elements/curlfilesink.$(OBJEXT): elements/$(am__dirstamp) \
elements/$(DEPDIR)/$(am__dirstamp)
@@ -2004,6 +2059,12 @@ libs/$(am__dirstamp):
libs/$(DEPDIR)/$(am__dirstamp):
@$(MKDIR_P) libs/$(DEPDIR)
@: > libs/$(DEPDIR)/$(am__dirstamp)
+libs/libs_aggregator-aggregator.$(OBJEXT): libs/$(am__dirstamp) \
+ libs/$(DEPDIR)/$(am__dirstamp)
+
+libs/aggregator$(EXEEXT): $(libs_aggregator_OBJECTS) $(libs_aggregator_DEPENDENCIES) $(EXTRA_libs_aggregator_DEPENDENCIES) libs/$(am__dirstamp)
+ @rm -f libs/aggregator$(EXEEXT)
+ $(AM_V_CCLD)$(libs_aggregator_LINK) $(libs_aggregator_OBJECTS) $(libs_aggregator_LDADD) $(LIBS)
libs/libs_gstglcontext-gstglcontext.$(OBJEXT): libs/$(am__dirstamp) \
libs/$(DEPDIR)/$(am__dirstamp)
@@ -2076,6 +2137,12 @@ orc/orc_bayer-bayer.$(OBJEXT): orc/$(am__dirstamp) \
orc/bayer$(EXEEXT): $(orc_bayer_OBJECTS) $(orc_bayer_DEPENDENCIES) $(EXTRA_orc_bayer_DEPENDENCIES) orc/$(am__dirstamp)
@rm -f orc/bayer$(EXEEXT)
$(AM_V_CCLD)$(orc_bayer_LINK) $(orc_bayer_OBJECTS) $(orc_bayer_LDADD) $(LIBS)
+orc/orc_compositor-compositor.$(OBJEXT): orc/$(am__dirstamp) \
+ orc/$(DEPDIR)/$(am__dirstamp)
+
+orc/compositor$(EXEEXT): $(orc_compositor_OBJECTS) $(orc_compositor_DEPENDENCIES) $(EXTRA_orc_compositor_DEPENDENCIES) orc/$(am__dirstamp)
+ @rm -f orc/compositor$(EXEEXT)
+ $(AM_V_CCLD)$(orc_compositor_LINK) $(orc_compositor_OBJECTS) $(orc_compositor_LDADD) $(LIBS)
pipelines/$(am__dirstamp):
@$(MKDIR_P) pipelines
@: > pipelines/$(am__dirstamp)
@@ -2133,6 +2200,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_audiomixer-audiomixer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_baseaudiovisualizer-baseaudiovisualizer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_camerabin-camerabin.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_compositor-compositor.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_faac-faac.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_faad-faad.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_gdpdepay-gdpdepay.Po@am__quote@
@@ -2164,6 +2232,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/voamrwbenc.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/zbar.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@generic/$(DEPDIR)/states.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_aggregator-aggregator.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglcontext-gstglcontext.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglmemory-gstglmemory.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_gstglupload-gstglupload.Po@am__quote@
@@ -2175,6 +2244,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@libs/$(DEPDIR)/libs_vp8parser-vp8parser.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_audiomixer-audiomixer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_bayer-bayer.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_compositor-compositor.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/colorspace.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/mimic.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/mxf.Po@am__quote@
@@ -2267,6 +2337,20 @@ elements/elements_camerabin-camerabin.obj: elements/camerabin.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_camerabin_CFLAGS) $(CFLAGS) -c -o elements/elements_camerabin-camerabin.obj `if test -f 'elements/camerabin.c'; then $(CYGPATH_W) 'elements/camerabin.c'; else $(CYGPATH_W) '$(srcdir)/elements/camerabin.c'; fi`
+elements/elements_compositor-compositor.o: elements/compositor.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_compositor_CFLAGS) $(CFLAGS) -MT elements/elements_compositor-compositor.o -MD -MP -MF elements/$(DEPDIR)/elements_compositor-compositor.Tpo -c -o elements/elements_compositor-compositor.o `test -f 'elements/compositor.c' || echo '$(srcdir)/'`elements/compositor.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_compositor-compositor.Tpo elements/$(DEPDIR)/elements_compositor-compositor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/compositor.c' object='elements/elements_compositor-compositor.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_compositor_CFLAGS) $(CFLAGS) -c -o elements/elements_compositor-compositor.o `test -f 'elements/compositor.c' || echo '$(srcdir)/'`elements/compositor.c
+
+elements/elements_compositor-compositor.obj: elements/compositor.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_compositor_CFLAGS) $(CFLAGS) -MT elements/elements_compositor-compositor.obj -MD -MP -MF elements/$(DEPDIR)/elements_compositor-compositor.Tpo -c -o elements/elements_compositor-compositor.obj `if test -f 'elements/compositor.c'; then $(CYGPATH_W) 'elements/compositor.c'; else $(CYGPATH_W) '$(srcdir)/elements/compositor.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_compositor-compositor.Tpo elements/$(DEPDIR)/elements_compositor-compositor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/compositor.c' object='elements/elements_compositor-compositor.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_compositor_CFLAGS) $(CFLAGS) -c -o elements/elements_compositor-compositor.obj `if test -f 'elements/compositor.c'; then $(CYGPATH_W) 'elements/compositor.c'; else $(CYGPATH_W) '$(srcdir)/elements/compositor.c'; fi`
+
elements/elements_faac-faac.o: elements/faac.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_faac_CFLAGS) $(CFLAGS) -MT elements/elements_faac-faac.o -MD -MP -MF elements/$(DEPDIR)/elements_faac-faac.Tpo -c -o elements/elements_faac-faac.o `test -f 'elements/faac.c' || echo '$(srcdir)/'`elements/faac.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_faac-faac.Tpo elements/$(DEPDIR)/elements_faac-faac.Po
@@ -2421,6 +2505,20 @@ elements/elements_voaacenc-voaacenc.obj: elements/voaacenc.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_voaacenc_CFLAGS) $(CFLAGS) -c -o elements/elements_voaacenc-voaacenc.obj `if test -f 'elements/voaacenc.c'; then $(CYGPATH_W) 'elements/voaacenc.c'; else $(CYGPATH_W) '$(srcdir)/elements/voaacenc.c'; fi`
+libs/libs_aggregator-aggregator.o: libs/aggregator.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_aggregator_CFLAGS) $(CFLAGS) -MT libs/libs_aggregator-aggregator.o -MD -MP -MF libs/$(DEPDIR)/libs_aggregator-aggregator.Tpo -c -o libs/libs_aggregator-aggregator.o `test -f 'libs/aggregator.c' || echo '$(srcdir)/'`libs/aggregator.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_aggregator-aggregator.Tpo libs/$(DEPDIR)/libs_aggregator-aggregator.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libs/aggregator.c' object='libs/libs_aggregator-aggregator.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_aggregator_CFLAGS) $(CFLAGS) -c -o libs/libs_aggregator-aggregator.o `test -f 'libs/aggregator.c' || echo '$(srcdir)/'`libs/aggregator.c
+
+libs/libs_aggregator-aggregator.obj: libs/aggregator.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_aggregator_CFLAGS) $(CFLAGS) -MT libs/libs_aggregator-aggregator.obj -MD -MP -MF libs/$(DEPDIR)/libs_aggregator-aggregator.Tpo -c -o libs/libs_aggregator-aggregator.obj `if test -f 'libs/aggregator.c'; then $(CYGPATH_W) 'libs/aggregator.c'; else $(CYGPATH_W) '$(srcdir)/libs/aggregator.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_aggregator-aggregator.Tpo libs/$(DEPDIR)/libs_aggregator-aggregator.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libs/aggregator.c' object='libs/libs_aggregator-aggregator.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_aggregator_CFLAGS) $(CFLAGS) -c -o libs/libs_aggregator-aggregator.obj `if test -f 'libs/aggregator.c'; then $(CYGPATH_W) 'libs/aggregator.c'; else $(CYGPATH_W) '$(srcdir)/libs/aggregator.c'; fi`
+
libs/libs_gstglcontext-gstglcontext.o: libs/gstglcontext.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libs_gstglcontext_CFLAGS) $(CFLAGS) -MT libs/libs_gstglcontext-gstglcontext.o -MD -MP -MF libs/$(DEPDIR)/libs_gstglcontext-gstglcontext.Tpo -c -o libs/libs_gstglcontext-gstglcontext.o `test -f 'libs/gstglcontext.c' || echo '$(srcdir)/'`libs/gstglcontext.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) libs/$(DEPDIR)/libs_gstglcontext-gstglcontext.Tpo libs/$(DEPDIR)/libs_gstglcontext-gstglcontext.Po
@@ -2575,6 +2673,20 @@ orc/orc_bayer-bayer.obj: orc/bayer.c
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_bayer_CFLAGS) $(CFLAGS) -c -o orc/orc_bayer-bayer.obj `if test -f 'orc/bayer.c'; then $(CYGPATH_W) 'orc/bayer.c'; else $(CYGPATH_W) '$(srcdir)/orc/bayer.c'; fi`
+orc/orc_compositor-compositor.o: orc/compositor.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_compositor_CFLAGS) $(CFLAGS) -MT orc/orc_compositor-compositor.o -MD -MP -MF orc/$(DEPDIR)/orc_compositor-compositor.Tpo -c -o orc/orc_compositor-compositor.o `test -f 'orc/compositor.c' || echo '$(srcdir)/'`orc/compositor.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) orc/$(DEPDIR)/orc_compositor-compositor.Tpo orc/$(DEPDIR)/orc_compositor-compositor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/compositor.c' object='orc/orc_compositor-compositor.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_compositor_CFLAGS) $(CFLAGS) -c -o orc/orc_compositor-compositor.o `test -f 'orc/compositor.c' || echo '$(srcdir)/'`orc/compositor.c
+
+orc/orc_compositor-compositor.obj: orc/compositor.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_compositor_CFLAGS) $(CFLAGS) -MT orc/orc_compositor-compositor.obj -MD -MP -MF orc/$(DEPDIR)/orc_compositor-compositor.Tpo -c -o orc/orc_compositor-compositor.obj `if test -f 'orc/compositor.c'; then $(CYGPATH_W) 'orc/compositor.c'; else $(CYGPATH_W) '$(srcdir)/orc/compositor.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) orc/$(DEPDIR)/orc_compositor-compositor.Tpo orc/$(DEPDIR)/orc_compositor-compositor.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='orc/compositor.c' object='orc/orc_compositor-compositor.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_compositor_CFLAGS) $(CFLAGS) -c -o orc/orc_compositor-compositor.obj `if test -f 'orc/compositor.c'; then $(CYGPATH_W) 'orc/compositor.c'; else $(CYGPATH_W) '$(srcdir)/orc/compositor.c'; fi`
+
pipelines/pipelines_streamheader-streamheader.o: pipelines/streamheader.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_streamheader_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_streamheader-streamheader.o -MD -MP -MF pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Tpo -c -o pipelines/pipelines_streamheader-streamheader.o `test -f 'pipelines/streamheader.c' || echo '$(srcdir)/'`pipelines/streamheader.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Tpo pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Po
@@ -2989,6 +3101,13 @@ elements/gdpdepay.log: elements/gdpdepay$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/compositor.log: elements/compositor$(EXEEXT)
+ @p='elements/compositor$(EXEEXT)'; \
+ b='elements/compositor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
elements/jifmux.log: elements/jifmux$(EXEEXT)
@p='elements/jifmux$(EXEEXT)'; \
b='elements/jifmux'; \
@@ -3108,6 +3227,13 @@ libs/vp8parser.log: libs/vp8parser$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+libs/aggregator.log: libs/aggregator$(EXEEXT)
+ @p='libs/aggregator$(EXEEXT)'; \
+ b='libs/aggregator'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
elements/uvch264demux.log: elements/uvch264demux$(EXEEXT)
@p='elements/uvch264demux$(EXEEXT)'; \
b='elements/uvch264demux'; \
@@ -3157,6 +3283,13 @@ orc/audiomixer.log: orc/audiomixer$(EXEEXT)
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+orc/compositor.log: orc/compositor$(EXEEXT)
+ @p='orc/compositor$(EXEEXT)'; \
+ b='orc/compositor'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
libs/insertbin.log: libs/insertbin$(EXEEXT)
@p='libs/insertbin$(EXEEXT)'; \
b='libs/insertbin'; \
@@ -3626,6 +3759,10 @@ orc/audiomixer.c: $(top_srcdir)/gst/audiomixer/gstaudiomixerorc.orc
$(MKDIR_P) orc
$(ORCC) --test -o $@ $<
+orc/compositor.c: $(top_srcdir)/gst/compositor/compositororc.orc
+ $(MKDIR_P) orc/
+ $(ORCC) --test -o $@ $<
+
distclean-local-orc:
rm -rf orc
diff --git a/tests/check/elements/compositor.c b/tests/check/elements/compositor.c
new file mode 100644
index 00000000..20b1c393
--- /dev/null
+++ b/tests/check/elements/compositor.c
@@ -0,0 +1,1071 @@
+/* GStreamer
+ *
+ * unit test for compositor
+ *
+ * Copyright (C) <2005> Thomas Vander Stichele <thomas at apestaart dot org>
+ * Copyright (C) <2013> Thibault Saunier <thibault.saunier@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include <config.h>
+#endif
+
+#ifdef HAVE_VALGRIND
+# include <valgrind/valgrind.h>
+#endif
+
+#include <unistd.h>
+
+#include <gst/check/gstcheck.h>
+#include <gst/check/gstconsistencychecker.h>
+#include <gst/base/gstbasesrc.h>
+
+#define VIDEO_CAPS_STRING \
+ "video/x-raw, " \
+ "width = (int) 320, " \
+ "height = (int) 240, " \
+ "framerate = (fraction) 25/1 , " \
+ "format = (string) I420"
+
+static GMainLoop *main_loop;
+
+/* make sure downstream gets a CAPS event before buffers are sent */
+GST_START_TEST (test_caps)
+{
+ GstElement *pipeline, *src, *compositor, *sink;
+ GstStateChangeReturn state_res;
+ GstCaps *caps;
+ GstPad *pad;
+
+ /* build pipeline */
+ pipeline = gst_pipeline_new ("pipeline");
+
+ src = gst_element_factory_make ("videotestsrc", "src1");
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (pipeline), src, compositor, sink, NULL);
+
+ fail_unless (gst_element_link_many (src, compositor, sink, NULL));
+
+ /* prepare playing */
+ state_res = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+ fail_unless_equals_int (state_res, GST_STATE_CHANGE_ASYNC);
+
+ /* wait for preroll */
+ state_res = gst_element_get_state (pipeline, NULL, NULL, GST_CLOCK_TIME_NONE);
+ fail_unless_equals_int (state_res, GST_STATE_CHANGE_SUCCESS);
+
+ /* check caps on fakesink */
+ pad = gst_element_get_static_pad (sink, "sink");
+ caps = gst_pad_get_current_caps (pad);
+ fail_unless (caps != NULL);
+ gst_caps_unref (caps);
+ gst_object_unref (pad);
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
+static void
+message_received (GstBus * bus, GstMessage * message, GstPipeline * bin)
+{
+ GST_INFO ("bus message from \"%" GST_PTR_FORMAT "\": %" GST_PTR_FORMAT,
+ GST_MESSAGE_SRC (message), message);
+
+ switch (message->type) {
+ case GST_MESSAGE_EOS:
+ g_main_loop_quit (main_loop);
+ break;
+ case GST_MESSAGE_WARNING:{
+ GError *gerror;
+ gchar *debug;
+
+ gst_message_parse_warning (message, &gerror, &debug);
+ gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
+ g_error_free (gerror);
+ g_free (debug);
+ break;
+ }
+ case GST_MESSAGE_ERROR:{
+ GError *gerror;
+ gchar *debug;
+
+ gst_message_parse_error (message, &gerror, &debug);
+ gst_object_default_error (GST_MESSAGE_SRC (message), gerror, debug);
+ g_error_free (gerror);
+ g_free (debug);
+ g_main_loop_quit (main_loop);
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+
+static GstFormat format = GST_FORMAT_UNDEFINED;
+static gint64 position = -1;
+
+static void
+test_event_message_received (GstBus * bus, GstMessage * message,
+ GstPipeline * bin)
+{
+ GST_INFO ("bus message from \"%" GST_PTR_FORMAT "\": %" GST_PTR_FORMAT,
+ GST_MESSAGE_SRC (message), message);
+
+ switch (message->type) {
+ case GST_MESSAGE_SEGMENT_DONE:
+ gst_message_parse_segment_done (message, &format, &position);
+ GST_INFO ("received segment_done : %" G_GINT64_FORMAT, position);
+ g_main_loop_quit (main_loop);
+ break;
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+}
+
+
+GST_START_TEST (test_event)
+{
+ GstElement *bin, *src1, *src2, *compositor, *sink;
+ GstBus *bus;
+ GstEvent *seek_event;
+ GstStateChangeReturn state_res;
+ gboolean res;
+ GstPad *srcpad, *sinkpad;
+ GstStreamConsistency *chk_1, *chk_2, *chk_3;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+ bus = gst_element_get_bus (bin);
+ gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+
+ src1 = gst_element_factory_make ("videotestsrc", "src1");
+ src2 = gst_element_factory_make ("videotestsrc", "src2");
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (bin), src1, src2, compositor, sink, NULL);
+
+ res = gst_element_link (src1, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (src2, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (compositor, sink);
+ fail_unless (res == TRUE, NULL);
+
+ srcpad = gst_element_get_static_pad (compositor, "src");
+ chk_3 = gst_consistency_checker_new (srcpad);
+ gst_object_unref (srcpad);
+
+ /* create consistency checkers for the pads */
+ srcpad = gst_element_get_static_pad (src1, "src");
+ chk_1 = gst_consistency_checker_new (srcpad);
+ sinkpad = gst_pad_get_peer (srcpad);
+ gst_consistency_checker_add_pad (chk_3, sinkpad);
+ gst_object_unref (sinkpad);
+ gst_object_unref (srcpad);
+
+ srcpad = gst_element_get_static_pad (src2, "src");
+ chk_2 = gst_consistency_checker_new (srcpad);
+ sinkpad = gst_pad_get_peer (srcpad);
+ gst_consistency_checker_add_pad (chk_3, sinkpad);
+ gst_object_unref (sinkpad);
+ gst_object_unref (srcpad);
+
+ seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
+ GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_FLUSH,
+ GST_SEEK_TYPE_SET, (GstClockTime) 0,
+ GST_SEEK_TYPE_SET, (GstClockTime) 2 * GST_SECOND);
+
+ format = GST_FORMAT_UNDEFINED;
+ position = -1;
+
+ main_loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect (bus, "message::segment-done",
+ (GCallback) test_event_message_received, bin);
+ g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
+
+ GST_INFO ("starting test");
+
+ /* prepare playing */
+ state_res = gst_element_set_state (bin, GST_STATE_PAUSED);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* wait for completion */
+ state_res = gst_element_get_state (bin, NULL, NULL, GST_CLOCK_TIME_NONE);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ res = gst_element_send_event (bin, seek_event);
+ fail_unless (res == TRUE, NULL);
+
+ /* run pipeline */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ GST_INFO ("running main loop");
+ g_main_loop_run (main_loop);
+
+ state_res = gst_element_set_state (bin, GST_STATE_NULL);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ ck_assert_int_eq (position, 2 * GST_SECOND);
+
+ /* cleanup */
+ g_main_loop_unref (main_loop);
+ gst_consistency_checker_free (chk_1);
+ gst_consistency_checker_free (chk_2);
+ gst_consistency_checker_free (chk_3);
+ gst_bus_remove_signal_watch (bus);
+ gst_object_unref (bus);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+static guint play_count = 0;
+static GstEvent *play_seek_event = NULL;
+
+static void
+test_play_twice_message_received (GstBus * bus, GstMessage * message,
+ GstPipeline * bin)
+{
+ gboolean res;
+ GstStateChangeReturn state_res;
+
+ GST_INFO ("bus message from \"%" GST_PTR_FORMAT "\": %" GST_PTR_FORMAT,
+ GST_MESSAGE_SRC (message), message);
+
+ switch (message->type) {
+ case GST_MESSAGE_SEGMENT_DONE:
+ play_count++;
+ if (play_count == 1) {
+ state_res = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_READY);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* prepare playing again */
+ state_res = gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PAUSED);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* wait for completion */
+ state_res =
+ gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+ GST_CLOCK_TIME_NONE);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ res = gst_element_send_event (GST_ELEMENT (bin),
+ gst_event_ref (play_seek_event));
+ fail_unless (res == TRUE, NULL);
+
+ state_res =
+ gst_element_set_state (GST_ELEMENT (bin), GST_STATE_PLAYING);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+ } else {
+ g_main_loop_quit (main_loop);
+ }
+ break;
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+}
+
+
+GST_START_TEST (test_play_twice)
+{
+ GstElement *bin, *src1, *src2, *compositor, *sink;
+ GstBus *bus;
+ gboolean res;
+ GstStateChangeReturn state_res;
+ GstPad *srcpad;
+ GstStreamConsistency *consist;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+ bus = gst_element_get_bus (bin);
+ gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+
+ src1 = gst_element_factory_make ("videotestsrc", "src1");
+ src2 = gst_element_factory_make ("videotestsrc", "src2");
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (bin), src1, src2, compositor, sink, NULL);
+
+ res = gst_element_link (src1, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (src2, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (compositor, sink);
+ fail_unless (res == TRUE, NULL);
+
+ srcpad = gst_element_get_static_pad (compositor, "src");
+ consist = gst_consistency_checker_new (srcpad);
+ gst_object_unref (srcpad);
+
+ play_seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
+ GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_FLUSH,
+ GST_SEEK_TYPE_SET, (GstClockTime) 0,
+ GST_SEEK_TYPE_SET, (GstClockTime) 2 * GST_SECOND);
+
+ play_count = 0;
+
+ main_loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect (bus, "message::segment-done",
+ (GCallback) test_play_twice_message_received, bin);
+ g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
+
+ GST_INFO ("starting test");
+
+ /* prepare playing */
+ state_res = gst_element_set_state (bin, GST_STATE_PAUSED);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* wait for completion */
+ state_res =
+ gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+ GST_CLOCK_TIME_NONE);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ res = gst_element_send_event (bin, gst_event_ref (play_seek_event));
+ fail_unless (res == TRUE, NULL);
+
+ GST_INFO ("seeked");
+
+ /* run pipeline */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ g_main_loop_run (main_loop);
+
+ state_res = gst_element_set_state (bin, GST_STATE_NULL);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ ck_assert_int_eq (play_count, 2);
+
+ /* cleanup */
+ g_main_loop_unref (main_loop);
+ gst_consistency_checker_free (consist);
+ gst_event_ref (play_seek_event);
+ gst_bus_remove_signal_watch (bus);
+ gst_object_unref (bus);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_play_twice_then_add_and_play_again)
+{
+ GstElement *bin, *src1, *src2, *src3, *compositor, *sink;
+ GstBus *bus;
+ gboolean res;
+ GstStateChangeReturn state_res;
+ gint i;
+ GstPad *srcpad;
+ GstStreamConsistency *consist;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+ bus = gst_element_get_bus (bin);
+ gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+
+ src1 = gst_element_factory_make ("videotestsrc", "src1");
+ src2 = gst_element_factory_make ("videotestsrc", "src2");
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (bin), src1, src2, compositor, sink, NULL);
+
+ srcpad = gst_element_get_static_pad (compositor, "src");
+ consist = gst_consistency_checker_new (srcpad);
+ gst_object_unref (srcpad);
+
+ res = gst_element_link (src1, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (src2, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (compositor, sink);
+ fail_unless (res == TRUE, NULL);
+
+ play_seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
+ GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_FLUSH,
+ GST_SEEK_TYPE_SET, (GstClockTime) 0,
+ GST_SEEK_TYPE_SET, (GstClockTime) 2 * GST_SECOND);
+
+ main_loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect (bus, "message::segment-done",
+ (GCallback) test_play_twice_message_received, bin);
+ g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
+
+ /* run it twice */
+ for (i = 0; i < 2; i++) {
+ play_count = 0;
+
+ GST_INFO ("starting test-loop %d", i);
+
+ /* prepare playing */
+ state_res = gst_element_set_state (bin, GST_STATE_PAUSED);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* wait for completion */
+ state_res =
+ gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+ GST_CLOCK_TIME_NONE);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ res = gst_element_send_event (bin, gst_event_ref (play_seek_event));
+ fail_unless (res == TRUE, NULL);
+
+ GST_INFO ("seeked");
+
+ /* run pipeline */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ g_main_loop_run (main_loop);
+
+ state_res = gst_element_set_state (bin, GST_STATE_READY);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ ck_assert_int_eq (play_count, 2);
+
+ /* plug another source */
+ if (i == 0) {
+ src3 = gst_element_factory_make ("videotestsrc", "src3");
+ gst_bin_add (GST_BIN (bin), src3);
+
+ res = gst_element_link (src3, compositor);
+ fail_unless (res == TRUE, NULL);
+ }
+
+ gst_consistency_checker_reset (consist);
+ }
+
+ state_res = gst_element_set_state (bin, GST_STATE_NULL);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* cleanup */
+ g_main_loop_unref (main_loop);
+ gst_event_ref (play_seek_event);
+ gst_consistency_checker_free (consist);
+ gst_bus_remove_signal_watch (bus);
+ gst_object_unref (bus);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+/* check if adding pads work as expected */
+GST_START_TEST (test_add_pad)
+{
+ GstElement *bin, *src1, *src2, *compositor, *sink;
+ GstBus *bus;
+ GstPad *srcpad;
+ gboolean res;
+ GstStateChangeReturn state_res;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+ bus = gst_element_get_bus (bin);
+ gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+
+ src1 = gst_element_factory_make ("videotestsrc", "src1");
+ g_object_set (src1, "num-buffers", 4, NULL);
+ src2 = gst_element_factory_make ("videotestsrc", "src2");
+ /* one buffer less, we connect with 1 buffer of delay */
+ g_object_set (src2, "num-buffers", 3, NULL);
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (bin), src1, compositor, sink, NULL);
+
+ res = gst_element_link (src1, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (compositor, sink);
+ fail_unless (res == TRUE, NULL);
+
+ srcpad = gst_element_get_static_pad (compositor, "src");
+ gst_object_unref (srcpad);
+
+ main_loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect (bus, "message::segment-done", (GCallback) message_received,
+ bin);
+ g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
+
+ GST_INFO ("starting test");
+
+ /* prepare playing */
+ state_res = gst_element_set_state (bin, GST_STATE_PAUSED);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* wait for completion */
+ state_res =
+ gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+ GST_CLOCK_TIME_NONE);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* add other element */
+ gst_bin_add_many (GST_BIN (bin), src2, NULL);
+
+ /* now link the second element */
+ res = gst_element_link (src2, compositor);
+ fail_unless (res == TRUE, NULL);
+
+ /* set to PAUSED as well */
+ state_res = gst_element_set_state (src2, GST_STATE_PAUSED);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* now play all */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ g_main_loop_run (main_loop);
+
+ state_res = gst_element_set_state (bin, GST_STATE_NULL);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* cleanup */
+ g_main_loop_unref (main_loop);
+ gst_bus_remove_signal_watch (bus);
+ gst_object_unref (bus);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+/* check if removing pads work as expected */
+GST_START_TEST (test_remove_pad)
+{
+ GstElement *bin, *src, *compositor, *sink;
+ GstBus *bus;
+ GstPad *pad, *srcpad;
+ gboolean res;
+ GstStateChangeReturn state_res;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+ bus = gst_element_get_bus (bin);
+ gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+
+ src = gst_element_factory_make ("videotestsrc", "src");
+ g_object_set (src, "num-buffers", 4, NULL);
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (bin), src, compositor, sink, NULL);
+
+ res = gst_element_link (src, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (compositor, sink);
+ fail_unless (res == TRUE, NULL);
+
+ /* create an unconnected sinkpad in compositor */
+ pad = gst_element_get_request_pad (compositor, "sink_%u");
+ fail_if (pad == NULL, NULL);
+
+ srcpad = gst_element_get_static_pad (compositor, "src");
+ gst_object_unref (srcpad);
+
+ main_loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect (bus, "message::segment-done", (GCallback) message_received,
+ bin);
+ g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
+
+ GST_INFO ("starting test");
+
+ /* prepare playing, this will not preroll as compositor is waiting
+ * on the unconnected sinkpad. */
+ state_res = gst_element_set_state (bin, GST_STATE_PAUSED);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* wait for completion for one second, will return ASYNC */
+ state_res = gst_element_get_state (GST_ELEMENT (bin), NULL, NULL, GST_SECOND);
+ ck_assert_int_eq (state_res, GST_STATE_CHANGE_ASYNC);
+
+ /* get rid of the pad now, compositor should stop waiting on it and
+ * continue the preroll */
+ gst_element_release_request_pad (compositor, pad);
+ gst_object_unref (pad);
+
+ /* wait for completion, should work now */
+ state_res =
+ gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+ GST_CLOCK_TIME_NONE);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* now play all */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ g_main_loop_run (main_loop);
+
+ state_res = gst_element_set_state (bin, GST_STATE_NULL);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* cleanup */
+ g_main_loop_unref (main_loop);
+ gst_bus_remove_signal_watch (bus);
+ gst_object_unref (G_OBJECT (bus));
+ gst_object_unref (G_OBJECT (bin));
+}
+
+GST_END_TEST;
+
+
+static GstBuffer *handoff_buffer = NULL;
+
+static gboolean
+_quit (GMainLoop * ml)
+{
+ g_main_loop_quit (ml);
+
+ return G_SOURCE_REMOVE;
+}
+
+static void
+handoff_buffer_cb (GstElement * fakesink, GstBuffer * buffer, GstPad * pad,
+ gpointer user_data)
+{
+ GST_DEBUG ("got buffer %p", buffer);
+ gst_buffer_replace (&handoff_buffer, buffer);
+
+ if (main_loop)
+ g_idle_add ((GSourceFunc) _quit, main_loop);
+}
+
+/* check if clipping works as expected */
+GST_START_TEST (test_clip)
+{
+ GstSegment segment;
+ GstElement *bin, *compositor, *sink;
+ GstBus *bus;
+ GstPad *sinkpad;
+ gboolean res;
+ GstStateChangeReturn state_res;
+ GstFlowReturn ret;
+ GstEvent *event;
+ GstBuffer *buffer;
+ GstCaps *caps;
+ GMainLoop *local_mainloop;
+
+ GST_INFO ("preparing test");
+
+ local_mainloop = g_main_loop_new (NULL, FALSE);
+ main_loop = NULL;
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+ bus = gst_element_get_bus (bin);
+ gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+
+ g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
+
+ /* just an compositor and a fakesink */
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ g_object_set (sink, "signal-handoffs", TRUE, NULL);
+ g_signal_connect (sink, "handoff", (GCallback) handoff_buffer_cb, NULL);
+ gst_bin_add_many (GST_BIN (bin), compositor, sink, NULL);
+
+ res = gst_element_link (compositor, sink);
+ fail_unless (res == TRUE, NULL);
+
+ /* set to playing */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* create an unconnected sinkpad in compositor, should also automatically activate
+ * the pad */
+ sinkpad = gst_element_get_request_pad (compositor, "sink_%u");
+ fail_if (sinkpad == NULL, NULL);
+
+ gst_pad_send_event (sinkpad, gst_event_new_stream_start ("test"));
+
+ caps = gst_caps_from_string (VIDEO_CAPS_STRING);
+
+ gst_pad_set_caps (sinkpad, caps);
+ gst_caps_unref (caps);
+
+ /* send segment to compositor */
+ gst_segment_init (&segment, GST_FORMAT_TIME);
+ segment.start = GST_SECOND;
+ segment.stop = 2 * GST_SECOND;
+ segment.time = 0;
+ event = gst_event_new_segment (&segment);
+ gst_pad_send_event (sinkpad, event);
+
+ /* should be clipped and ok */
+ buffer = gst_buffer_new_and_alloc (115200);
+ GST_BUFFER_TIMESTAMP (buffer) = 0;
+ GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND;
+ GST_DEBUG ("pushing buffer %p", buffer);
+ ret = gst_pad_chain (sinkpad, buffer);
+ ck_assert_int_eq (ret, GST_FLOW_OK);
+ fail_unless (handoff_buffer == NULL);
+
+ /* should be partially clipped */
+ buffer = gst_buffer_new_and_alloc (115200);
+ GST_BUFFER_TIMESTAMP (buffer) = 900 * GST_MSECOND;
+ GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND;
+ GST_DEBUG ("pushing buffer %p", buffer);
+
+ main_loop = local_mainloop;
+ ret = gst_pad_chain (sinkpad, buffer);
+ ck_assert_int_eq (ret, GST_FLOW_OK);
+ g_main_loop_run (main_loop);
+ gst_buffer_replace (&handoff_buffer, NULL);
+
+ /* should not be clipped */
+ buffer = gst_buffer_new_and_alloc (115200);
+ GST_BUFFER_TIMESTAMP (buffer) = 1 * GST_SECOND;
+ GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND;
+ GST_DEBUG ("pushing buffer %p", buffer);
+ ret = gst_pad_chain (sinkpad, buffer);
+ g_main_loop_run (main_loop);
+ main_loop = NULL;
+ ck_assert_int_eq (ret, GST_FLOW_OK);
+ fail_unless (handoff_buffer != NULL);
+ gst_buffer_replace (&handoff_buffer, NULL);
+
+ /* should be clipped and ok */
+ buffer = gst_buffer_new_and_alloc (115200);
+ GST_BUFFER_TIMESTAMP (buffer) = 2 * GST_SECOND;
+ GST_BUFFER_DURATION (buffer) = 250 * GST_MSECOND;
+ GST_DEBUG ("pushing buffer %p", buffer);
+ ret = gst_pad_chain (sinkpad, buffer);
+ ck_assert_int_eq (ret, GST_FLOW_OK);
+ fail_unless (handoff_buffer == NULL);
+
+ gst_object_unref (sinkpad);
+ gst_element_set_state (bin, GST_STATE_NULL);
+ g_main_loop_unref (local_mainloop);
+ gst_bus_remove_signal_watch (bus);
+ gst_object_unref (bus);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_duration_is_max)
+{
+ GstElement *bin, *src[3], *compositor, *sink;
+ GstStateChangeReturn state_res;
+ GstFormat format = GST_FORMAT_TIME;
+ gboolean res;
+ gint64 duration;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+
+ /* 3 sources, an compositor and a fakesink */
+ src[0] = gst_element_factory_make ("videotestsrc", NULL);
+ src[1] = gst_element_factory_make ("videotestsrc", NULL);
+ src[2] = gst_element_factory_make ("videotestsrc", NULL);
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (bin), src[0], src[1], src[2], compositor, sink,
+ NULL);
+
+ gst_element_link (src[0], compositor);
+ gst_element_link (src[1], compositor);
+ gst_element_link (src[2], compositor);
+ gst_element_link (compositor, sink);
+
+ /* irks, duration is reset on basesrc */
+ state_res = gst_element_set_state (bin, GST_STATE_PAUSED);
+ fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL);
+
+ /* set durations on src */
+ GST_BASE_SRC (src[0])->segment.duration = 1000;
+ GST_BASE_SRC (src[1])->segment.duration = 3000;
+ GST_BASE_SRC (src[2])->segment.duration = 2000;
+
+ /* set to playing */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL);
+
+ /* wait for completion */
+ state_res =
+ gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+ GST_CLOCK_TIME_NONE);
+ fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL);
+
+ res = gst_element_query_duration (GST_ELEMENT (bin), format, &duration);
+ fail_unless (res, NULL);
+
+ ck_assert_int_eq (duration, 3000);
+
+ gst_element_set_state (bin, GST_STATE_NULL);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_duration_unknown_overrides)
+{
+ GstElement *bin, *src[3], *compositor, *sink;
+ GstStateChangeReturn state_res;
+ GstFormat format = GST_FORMAT_TIME;
+ gboolean res;
+ gint64 duration;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+
+ /* 3 sources, an compositor and a fakesink */
+ src[0] = gst_element_factory_make ("videotestsrc", NULL);
+ src[1] = gst_element_factory_make ("videotestsrc", NULL);
+ src[2] = gst_element_factory_make ("videotestsrc", NULL);
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (bin), src[0], src[1], src[2], compositor, sink,
+ NULL);
+
+ gst_element_link (src[0], compositor);
+ gst_element_link (src[1], compositor);
+ gst_element_link (src[2], compositor);
+ gst_element_link (compositor, sink);
+
+ /* irks, duration is reset on basesrc */
+ state_res = gst_element_set_state (bin, GST_STATE_PAUSED);
+ fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL);
+
+ /* set durations on src */
+ GST_BASE_SRC (src[0])->segment.duration = GST_CLOCK_TIME_NONE;
+ GST_BASE_SRC (src[1])->segment.duration = 3000;
+ GST_BASE_SRC (src[2])->segment.duration = 2000;
+
+ /* set to playing */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL);
+
+ /* wait for completion */
+ state_res =
+ gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+ GST_CLOCK_TIME_NONE);
+ fail_unless (state_res != GST_STATE_CHANGE_FAILURE, NULL);
+
+ res = gst_element_query_duration (GST_ELEMENT (bin), format, &duration);
+ fail_unless (res, NULL);
+
+ ck_assert_int_eq (duration, GST_CLOCK_TIME_NONE);
+
+ gst_element_set_state (bin, GST_STATE_NULL);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+
+static gboolean looped = FALSE;
+
+static void
+loop_segment_done (GstBus * bus, GstMessage * message, GstElement * bin)
+{
+ GST_INFO ("bus message from \"%" GST_PTR_FORMAT "\": %" GST_PTR_FORMAT,
+ GST_MESSAGE_SRC (message), message);
+
+ if (looped) {
+ g_main_loop_quit (main_loop);
+ } else {
+ GstEvent *seek_event;
+ gboolean res;
+
+ seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
+ GST_SEEK_FLAG_SEGMENT,
+ GST_SEEK_TYPE_SET, (GstClockTime) 0,
+ GST_SEEK_TYPE_SET, (GstClockTime) 1 * GST_SECOND);
+
+ res = gst_element_send_event (bin, seek_event);
+ fail_unless (res == TRUE, NULL);
+ looped = TRUE;
+ }
+}
+
+GST_START_TEST (test_loop)
+{
+ GstElement *bin, *src1, *src2, *compositor, *sink;
+ GstBus *bus;
+ GstEvent *seek_event;
+ GstStateChangeReturn state_res;
+ gboolean res;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ bin = gst_pipeline_new ("pipeline");
+ bus = gst_element_get_bus (bin);
+ gst_bus_add_signal_watch_full (bus, G_PRIORITY_HIGH);
+
+ src1 = gst_element_factory_make ("videotestsrc", "src1");
+ src2 = gst_element_factory_make ("videotestsrc", "src2");
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ gst_bin_add_many (GST_BIN (bin), src1, src2, compositor, sink, NULL);
+
+ res = gst_element_link (src1, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (src2, compositor);
+ fail_unless (res == TRUE, NULL);
+ res = gst_element_link (compositor, sink);
+ fail_unless (res == TRUE, NULL);
+
+ seek_event = gst_event_new_seek (1.0, GST_FORMAT_TIME,
+ GST_SEEK_FLAG_SEGMENT | GST_SEEK_FLAG_FLUSH,
+ GST_SEEK_TYPE_SET, (GstClockTime) 0, GST_SEEK_TYPE_SET,
+ (GstClockTime) 2 * GST_SECOND);
+
+ main_loop = g_main_loop_new (NULL, FALSE);
+ g_signal_connect (bus, "message::segment-done",
+ (GCallback) loop_segment_done, bin);
+ g_signal_connect (bus, "message::error", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::warning", (GCallback) message_received, bin);
+ g_signal_connect (bus, "message::eos", (GCallback) message_received, bin);
+
+ GST_INFO ("starting test");
+
+ /* prepare playing */
+ state_res = gst_element_set_state (bin, GST_STATE_PAUSED);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ /* wait for completion */
+ state_res =
+ gst_element_get_state (GST_ELEMENT (bin), NULL, NULL,
+ GST_CLOCK_TIME_NONE);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ res = gst_element_send_event (bin, seek_event);
+ fail_unless (res == TRUE, NULL);
+
+ /* run pipeline */
+ state_res = gst_element_set_state (bin, GST_STATE_PLAYING);
+ ck_assert_int_ne (state_res, GST_STATE_CHANGE_FAILURE);
+
+ GST_INFO ("running main loop");
+ g_main_loop_run (main_loop);
+
+ state_res = gst_element_set_state (bin, GST_STATE_NULL);
+
+ /* cleanup */
+ g_main_loop_unref (main_loop);
+ gst_bus_remove_signal_watch (bus);
+ gst_object_unref (bus);
+ gst_object_unref (bin);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_flush_start_flush_stop)
+{
+ GstPadTemplate *sink_template;
+ GstPad *sinkpad1, *sinkpad2, *compositor_src;
+ GstElement *compositor;
+
+ GST_INFO ("preparing test");
+
+ /* build pipeline */
+ compositor = gst_element_factory_make ("compositor", "compositor");
+
+ sink_template =
+ gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS (compositor),
+ "sink_%u");
+ fail_unless (GST_IS_PAD_TEMPLATE (sink_template));
+ sinkpad1 = gst_element_request_pad (compositor, sink_template, NULL, NULL);
+ sinkpad2 = gst_element_request_pad (compositor, sink_template, NULL, NULL);
+ gst_object_unref (sinkpad2);
+
+ gst_element_set_state (compositor, GST_STATE_PLAYING);
+ fail_unless (gst_element_get_state (compositor, NULL, NULL,
+ GST_CLOCK_TIME_NONE) == GST_STATE_CHANGE_SUCCESS);
+
+ compositor_src = gst_element_get_static_pad (compositor, "src");
+ fail_if (GST_PAD_IS_FLUSHING (compositor_src));
+ gst_pad_send_event (sinkpad1, gst_event_new_flush_start ());
+ fail_if (GST_PAD_IS_FLUSHING (compositor_src));
+ fail_unless (GST_PAD_IS_FLUSHING (sinkpad1));
+ gst_pad_send_event (sinkpad1, gst_event_new_flush_stop (TRUE));
+ fail_if (GST_PAD_IS_FLUSHING (compositor_src));
+ fail_if (GST_PAD_IS_FLUSHING (sinkpad1));
+ gst_object_unref (compositor_src);
+
+ /* cleanup */
+ gst_element_set_state (compositor, GST_STATE_NULL);
+ gst_object_unref (compositor);
+}
+
+GST_END_TEST;
+
+
+static Suite *
+compositor_suite (void)
+{
+ Suite *s = suite_create ("compositor");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_add_test (tc_chain, test_caps);
+ tcase_add_test (tc_chain, test_event);
+ tcase_add_test (tc_chain, test_play_twice);
+ tcase_add_test (tc_chain, test_play_twice_then_add_and_play_again);
+ tcase_add_test (tc_chain, test_add_pad);
+ tcase_add_test (tc_chain, test_remove_pad);
+ tcase_add_test (tc_chain, test_clip);
+ tcase_add_test (tc_chain, test_duration_is_max);
+ tcase_add_test (tc_chain, test_duration_unknown_overrides);
+ tcase_add_test (tc_chain, test_loop);
+ tcase_add_test (tc_chain, test_flush_start_flush_stop);
+
+ /* Use a longer timeout */
+#ifdef HAVE_VALGRIND
+ if (RUNNING_ON_VALGRIND) {
+ tcase_set_timeout (tc_chain, 5 * 60);
+ } else
+#endif
+ {
+ /* this is shorter than the default 60 seconds?! (tpm) */
+ /* tcase_set_timeout (tc_chain, 6); */
+ }
+
+ return s;
+}
+
+GST_CHECK_MAIN (compositor);
diff --git a/tests/check/elements/shm.c b/tests/check/elements/shm.c
index 741ff010..f67e9ee0 100644
--- a/tests/check/elements/shm.c
+++ b/tests/check/elements/shm.c
@@ -143,6 +143,8 @@ GST_START_TEST (test_shm_alloc)
g_object_get (sink, "shm-size", &size, NULL);
+ size -= params.align | gst_memory_alignment;
+
/* alloc buffer of max size, this way, it will block forever it a copy
* is made inside shmsink*/
buf = gst_buffer_new_allocate (alloc, size, &params);
diff --git a/tests/check/libs/aggregator.c b/tests/check/libs/aggregator.c
new file mode 100644
index 00000000..c0b0bdbb
--- /dev/null
+++ b/tests/check/libs/aggregator.c
@@ -0,0 +1,1017 @@
+/*
+ * aggregator.c - GstAggregator testsuite
+ * Copyright (C) 2006 Alessandro Decina <alessandro.d@gmail.com>
+ * Copyright (C) 2014 Mathieu Duponchelle <mathieu.duponchelle@oencreed.com>
+ * Copyright (C) 2014 Thibault Saunier <tsaunier@opencreed.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 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
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <gst/check/gstcheck.h>
+#include <gst/base/gstaggregator.h>
+
+/* dummy aggregator based element */
+
+#define GST_TYPE_TEST_AGGREGATOR (gst_test_aggregator_get_type ())
+#define GST_TEST_AGGREGATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_TEST_AGGREGATOR, GstTestAggregator))
+#define GST_TEST_AGGREGATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_TEST_AGGREGATOR, GstTestAggregatorClass))
+#define GST_TEST_AGGREGATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_TEST_AGGREGATOR, GstTestAggregatorClass))
+
+#define fail_error_message(msg) \
+ G_STMT_START { \
+ GError *error; \
+ gst_message_parse_error(msg, &error, NULL); \
+ fail_unless(FALSE, "Error Message from %s : %s", \
+ GST_OBJECT_NAME (GST_MESSAGE_SRC(msg)), error->message); \
+ g_error_free (error); \
+ } G_STMT_END;
+
+typedef struct _GstTestAggregator GstTestAggregator;
+typedef struct _GstTestAggregatorClass GstTestAggregatorClass;
+
+static GType gst_test_aggregator_get_type (void);
+
+#define BUFFER_DURATION 100000000 /* 10 frames per second */
+
+struct _GstTestAggregator
+{
+ GstAggregator parent;
+
+ guint64 timestamp;
+};
+
+struct _GstTestAggregatorClass
+{
+ GstAggregatorClass parent_class;
+};
+
+static GstFlowReturn
+gst_test_aggregator_aggregate (GstAggregator * aggregator)
+{
+ GstIterator *iter;
+ gboolean all_eos = TRUE;
+ GstTestAggregator *testagg;
+ GstBuffer *buf;
+
+ gboolean done_iterating = FALSE;
+
+ testagg = GST_TEST_AGGREGATOR (aggregator);
+
+ iter = gst_element_iterate_sink_pads (GST_ELEMENT (testagg));
+ while (!done_iterating) {
+ GstBuffer *buffer;
+ GValue value = { 0, };
+ GstAggregatorPad *pad;
+
+ switch (gst_iterator_next (iter, &value)) {
+ case GST_ITERATOR_OK:
+ pad = g_value_get_object (&value);
+
+ if (pad->eos == FALSE)
+ all_eos = FALSE;
+ buffer = gst_aggregator_pad_steal_buffer (pad);
+ gst_buffer_replace (&buffer, NULL);
+
+ g_value_reset (&value);
+ break;
+ case GST_ITERATOR_RESYNC:
+ gst_iterator_resync (iter);
+ break;
+ case GST_ITERATOR_ERROR:
+ GST_WARNING_OBJECT (testagg, "Sinkpads iteration error");
+ done_iterating = TRUE;
+ break;
+ case GST_ITERATOR_DONE:
+ done_iterating = TRUE;
+ break;
+ }
+ }
+ gst_iterator_free (iter);
+
+ if (all_eos == TRUE) {
+ GST_ERROR_OBJECT (testagg, "no data available, must be EOS");
+ gst_pad_push_event (aggregator->srcpad, gst_event_new_eos ());
+ return GST_FLOW_EOS;
+ }
+
+ buf = gst_buffer_new ();
+ GST_BUFFER_TIMESTAMP (buf) = testagg->timestamp;
+ GST_BUFFER_DURATION (buf) = BUFFER_DURATION;
+ testagg->timestamp += BUFFER_DURATION;
+
+ gst_aggregator_finish_buffer (aggregator, buf);
+
+ /* We just check finish_frame return FLOW_OK */
+ return GST_FLOW_OK;
+}
+
+#define gst_test_aggregator_parent_class parent_class
+G_DEFINE_TYPE (GstTestAggregator, gst_test_aggregator, GST_TYPE_AGGREGATOR);
+
+static void
+gst_test_aggregator_class_init (GstTestAggregatorClass * klass)
+{
+ GstElementClass *gstelement_class = (GstElementClass *) klass;
+ GstAggregatorClass *base_aggregator_class = (GstAggregatorClass *) klass;
+
+ static GstStaticPadTemplate _src_template =
+ GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+ static GstStaticPadTemplate _sink_template =
+ GST_STATIC_PAD_TEMPLATE ("sink_%u", GST_PAD_SINK, GST_PAD_REQUEST,
+ GST_STATIC_CAPS_ANY);
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&_src_template));
+
+ gst_element_class_add_pad_template (gstelement_class,
+ gst_static_pad_template_get (&_sink_template));
+
+ gst_element_class_set_static_metadata (gstelement_class, "Aggregator",
+ "Testing", "Combine N buffers", "Stefan Sauer <ensonic@users.sf.net>");
+
+ base_aggregator_class->aggregate =
+ GST_DEBUG_FUNCPTR (gst_test_aggregator_aggregate);
+}
+
+static void
+gst_test_aggregator_init (GstTestAggregator * self)
+{
+ GstAggregator *agg = GST_AGGREGATOR (self);
+ gst_segment_init (&agg->segment, GST_FORMAT_BYTES);
+ self->timestamp = 0;
+}
+
+static gboolean
+gst_test_aggregator_plugin_init (GstPlugin * plugin)
+{
+ return gst_element_register (plugin, "testaggregator", GST_RANK_NONE,
+ GST_TYPE_TEST_AGGREGATOR);
+}
+
+static gboolean
+gst_test_aggregator_plugin_register (void)
+{
+ return gst_plugin_register_static (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ "testaggregator",
+ "Combine buffers",
+ gst_test_aggregator_plugin_init,
+ VERSION, GST_LICENSE, PACKAGE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN);
+}
+
+typedef struct
+{
+ GstEvent *event;
+ GstBuffer *buffer;
+ GstElement *aggregator;
+ GstPad *sinkpad, *srcpad;
+ GstFlowReturn expected_result;
+
+ /* ------------------
+ * ----------- --------|-- |
+ * | srcpad | -- | sinkpad | aggregator |
+ * ----------- --------|-- |
+ * ------------------
+ * This is for 1 Chain, we can have several
+ */
+} ChainData;
+
+typedef struct
+{
+ GMainLoop *ml;
+ GstPad *srcpad, /* srcpad of the GstAggregator */
+ *sinkpad; /* fake sinkpad to which GstAggregator.srcpad is linked */
+ guint timeout_id;
+ GstElement *aggregator;
+
+ /* -----------------|
+ * | ---------- -----------
+ * | aggregator | srcpad | -- | sinkpad |
+ * | ---------- -----------
+ * -----------------|
+ */
+
+ gint flush_start_events, flush_stop_events;
+} TestData;
+
+static GstStaticPadTemplate srctemplate = GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS_ANY);
+
+static gpointer
+push_buffer (gpointer user_data)
+{
+ GstFlowReturn flow;
+ GstCaps *caps;
+ ChainData *chain_data = (ChainData *) user_data;
+ GstSegment segment;
+
+ gst_pad_push_event (chain_data->srcpad, gst_event_new_stream_start ("test"));
+
+ caps = gst_caps_new_empty_simple ("foo/x-bar");
+ gst_pad_push_event (chain_data->srcpad, gst_event_new_caps (caps));
+ gst_caps_unref (caps);
+
+ gst_segment_init (&segment, GST_FORMAT_TIME);
+ gst_pad_push_event (chain_data->srcpad, gst_event_new_segment (&segment));
+
+ GST_DEBUG ("Pushing buffer on pad: %s:%s",
+ GST_DEBUG_PAD_NAME (chain_data->sinkpad));
+ flow = gst_pad_push (chain_data->srcpad, chain_data->buffer);
+ fail_unless (flow == chain_data->expected_result,
+ "got flow %s instead of %s on %s:%s", gst_flow_get_name (flow),
+ gst_flow_get_name (chain_data->expected_result),
+ GST_DEBUG_PAD_NAME (chain_data->sinkpad));
+ chain_data->buffer = NULL;
+
+ return NULL;
+}
+
+static gpointer
+push_event (gpointer user_data)
+{
+ ChainData *chain_data = (ChainData *) user_data;
+
+ GST_ERROR_OBJECT (chain_data->srcpad, "Pushing event: %"
+ GST_PTR_FORMAT, chain_data->event);
+ fail_unless (gst_pad_push_event (chain_data->srcpad,
+ chain_data->event) == TRUE);
+
+ return NULL;
+}
+
+static gboolean
+_aggregate_timeout (GMainLoop * ml)
+{
+ g_main_loop_quit (ml);
+
+ fail_unless ("No buffer found on aggregator.srcpad -> TIMEOUT" == NULL);
+
+ return FALSE;
+}
+
+static gboolean
+_quit (GMainLoop * ml)
+{
+ GST_DEBUG ("QUITING ML");
+ g_main_loop_quit (ml);
+
+ return G_SOURCE_REMOVE;
+}
+
+static GstPadProbeReturn
+_aggregated_cb (GstPad * pad, GstPadProbeInfo * info, GMainLoop * ml)
+{
+ GST_DEBUG ("SHould quit ML");
+ g_idle_add ((GSourceFunc) _quit, ml);
+
+ return GST_PAD_PROBE_REMOVE;
+}
+
+static GstPadProbeReturn
+downstream_probe_cb (GstPad * pad, GstPadProbeInfo * info, TestData * test)
+{
+ GST_DEBUG ("PROBING ");
+ if (info->type & GST_PAD_PROBE_TYPE_EVENT_FLUSH) {
+ if (GST_EVENT_TYPE (GST_PAD_PROBE_INFO_EVENT (info)) ==
+ GST_EVENT_FLUSH_START) {
+
+ g_atomic_int_inc (&test->flush_start_events);
+ GST_DEBUG ("==========> FLUSH: %i", test->flush_start_events);
+ } else if (GST_EVENT_TYPE (GST_PAD_PROBE_INFO_EVENT (info)) ==
+ GST_EVENT_FLUSH_STOP)
+ g_atomic_int_inc (&test->flush_stop_events);
+ }
+
+ return GST_PAD_PROBE_DROP;
+}
+
+/*
+ * Not thread safe, will create a new ChainData which contains
+ * an activated src pad linked to a requested sink pad of @agg, and
+ * a newly allocated buffer ready to be pushed. Caller needs to
+ * clear with _chain_data_clear after.
+ */
+static void
+_chain_data_init (ChainData * data, GstElement * agg)
+{
+ static gint num_src_pads = 0;
+ gchar *pad_name = g_strdup_printf ("src%d", num_src_pads);
+
+ num_src_pads += 1;
+
+ data->srcpad = gst_pad_new_from_static_template (&srctemplate, pad_name);
+ g_free (pad_name);
+ gst_pad_set_active (data->srcpad, TRUE);
+ data->aggregator = agg;
+ data->buffer = gst_buffer_new ();
+ data->sinkpad = gst_element_get_request_pad (agg, "sink_%u");
+ fail_unless (GST_IS_PAD (data->sinkpad));
+ fail_unless (gst_pad_link (data->srcpad, data->sinkpad) == GST_PAD_LINK_OK);
+}
+
+static void
+_chain_data_clear (ChainData * data)
+{
+ if (data->buffer)
+ gst_buffer_unref (data->buffer);
+ if (data->srcpad)
+ gst_object_unref (data->srcpad);
+ if (data->sinkpad)
+ gst_object_unref (data->sinkpad);
+}
+
+static void
+_test_data_init (TestData * test, gboolean needs_flushing)
+{
+ test->aggregator = gst_element_factory_make ("testaggregator", NULL);
+ gst_element_set_state (test->aggregator, GST_STATE_PLAYING);
+ test->ml = g_main_loop_new (NULL, TRUE);
+ test->srcpad = GST_AGGREGATOR (test->aggregator)->srcpad;
+
+ GST_DEBUG ("Srcpad: %p", test->srcpad);
+
+ if (needs_flushing) {
+ static gint num_sink_pads = 0;
+ gchar *pad_name = g_strdup_printf ("sink%d", num_sink_pads);
+
+ num_sink_pads += 1;
+ test->sinkpad = gst_pad_new_from_static_template (&sinktemplate, pad_name);
+ g_free (pad_name);
+ fail_unless (gst_pad_link (test->srcpad, test->sinkpad) == GST_PAD_LINK_OK);
+ gst_pad_add_probe (test->srcpad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM |
+ GST_PAD_PROBE_TYPE_DATA_DOWNSTREAM |
+ GST_PAD_PROBE_TYPE_EVENT_FLUSH,
+ (GstPadProbeCallback) downstream_probe_cb, test, NULL);
+ } else {
+ gst_pad_add_probe (test->srcpad, GST_PAD_PROBE_TYPE_BUFFER,
+ (GstPadProbeCallback) _aggregated_cb, test->ml, NULL);
+ }
+
+
+ test->timeout_id =
+ g_timeout_add (1000, (GSourceFunc) _aggregate_timeout, test->ml);
+}
+
+static void
+_test_data_clear (TestData * test)
+{
+ gst_element_set_state (test->aggregator, GST_STATE_NULL);
+ gst_object_unref (test->aggregator);
+
+ g_main_loop_unref (test->ml);
+}
+
+GST_START_TEST (test_aggregate)
+{
+ GThread *thread1, *thread2;
+
+ ChainData data1 = { 0, };
+ ChainData data2 = { 0, };
+ TestData test = { 0, };
+
+ _test_data_init (&test, FALSE);
+ _chain_data_init (&data1, test.aggregator);
+ _chain_data_init (&data2, test.aggregator);
+
+ thread1 = g_thread_try_new ("gst-check", push_buffer, &data1, NULL);
+ thread2 = g_thread_try_new ("gst-check", push_buffer, &data2, NULL);
+
+ g_main_loop_run (test.ml);
+ g_source_remove (test.timeout_id);
+
+
+ /* these will return immediately as when the data is popped the threads are
+ * unlocked and will terminate */
+ g_thread_join (thread1);
+ g_thread_join (thread2);
+
+ _chain_data_clear (&data1);
+ _chain_data_clear (&data2);
+ _test_data_clear (&test);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_aggregate_eos)
+{
+ GThread *thread1, *thread2;
+
+ ChainData data1 = { 0, };
+ ChainData data2 = { 0, };
+ TestData test = { 0, };
+
+ _test_data_init (&test, FALSE);
+ _chain_data_init (&data1, test.aggregator);
+ _chain_data_init (&data2, test.aggregator);
+
+ data2.event = gst_event_new_eos ();
+
+ thread1 = g_thread_try_new ("gst-check", push_buffer, &data1, NULL);
+ thread2 = g_thread_try_new ("gst-check", push_event, &data2, NULL);
+
+ g_main_loop_run (test.ml);
+ g_source_remove (test.timeout_id);
+
+ /* these will return immediately as when the data is popped the threads are
+ * unlocked and will terminate */
+ g_thread_join (thread1);
+ g_thread_join (thread2);
+
+ _chain_data_clear (&data1);
+ _chain_data_clear (&data2);
+ _test_data_clear (&test);
+}
+
+GST_END_TEST;
+
+#define NUM_BUFFERS 3
+static void
+handoff (GstElement * fakesink, GstBuffer * buf, GstPad * pad, guint * count)
+{
+ *count = *count + 1;
+ GST_DEBUG ("HANDOFF: %i", *count);
+}
+
+/* Test a linear pipeline using aggregator */
+GST_START_TEST (test_linear_pipeline)
+{
+ GstBus *bus;
+ GstMessage *msg;
+ GstElement *pipeline, *src, *agg, *sink;
+
+ gint count = 0;
+
+ pipeline = gst_pipeline_new ("pipeline");
+ src = gst_check_setup_element ("fakesrc");
+ g_object_set (src, "num-buffers", NUM_BUFFERS, "sizetype", 2, "sizemax", 4,
+ NULL);
+ agg = gst_check_setup_element ("testaggregator");
+ sink = gst_check_setup_element ("fakesink");
+ g_object_set (sink, "signal-handoffs", TRUE, NULL);
+ g_signal_connect (sink, "handoff", (GCallback) handoff, &count);
+
+ fail_unless (gst_bin_add (GST_BIN (pipeline), src));
+ fail_unless (gst_bin_add (GST_BIN (pipeline), agg));
+ fail_unless (gst_bin_add (GST_BIN (pipeline), sink));
+ fail_unless (gst_element_link (src, agg));
+ fail_unless (gst_element_link (agg, sink));
+
+ bus = gst_element_get_bus (pipeline);
+ fail_if (bus == NULL);
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+ msg = gst_bus_poll (bus, GST_MESSAGE_EOS | GST_MESSAGE_ERROR, -1);
+ fail_if (GST_MESSAGE_TYPE (msg) != GST_MESSAGE_EOS);
+ gst_message_unref (msg);
+
+ fail_unless_equals_int (count, NUM_BUFFERS);
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (bus);
+ gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_two_src_pipeline)
+{
+ GstBus *bus;
+ GstMessage *msg;
+ GstElement *pipeline, *src, *src1, *agg, *sink;
+
+ gint count = 0;
+
+ pipeline = gst_pipeline_new ("pipeline");
+ src = gst_element_factory_make ("fakesrc", NULL);
+ g_object_set (src, "num-buffers", NUM_BUFFERS, "sizetype", 2, "sizemax", 4,
+ NULL);
+
+ src1 = gst_element_factory_make ("fakesrc", NULL);
+ g_object_set (src1, "num-buffers", NUM_BUFFERS + 1, "sizetype", 2, "sizemax",
+ 4, NULL);
+
+ agg = gst_check_setup_element ("testaggregator");
+ sink = gst_check_setup_element ("fakesink");
+ g_object_set (sink, "signal-handoffs", TRUE, NULL);
+ g_signal_connect (sink, "handoff", (GCallback) handoff, &count);
+
+ fail_unless (gst_bin_add (GST_BIN (pipeline), src));
+ fail_unless (gst_bin_add (GST_BIN (pipeline), src1));
+ fail_unless (gst_bin_add (GST_BIN (pipeline), agg));
+ fail_unless (gst_bin_add (GST_BIN (pipeline), sink));
+ fail_unless (gst_element_link (src, agg));
+ fail_unless (gst_element_link (src1, agg));
+ fail_unless (gst_element_link (agg, sink));
+
+ bus = gst_element_get_bus (pipeline);
+ fail_if (bus == NULL);
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+ msg = gst_bus_poll (bus, GST_MESSAGE_EOS | GST_MESSAGE_ERROR, -1);
+ fail_if (GST_MESSAGE_TYPE (msg) != GST_MESSAGE_EOS);
+ gst_message_unref (msg);
+
+ fail_unless_equals_int (count, NUM_BUFFERS + 1);
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (bus);
+ gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_flushing_seek)
+{
+ GstEvent *event;
+ GThread *thread1, *thread2;
+
+ ChainData data1 = { 0, };
+ ChainData data2 = { 0, };
+ TestData test = { 0, };
+
+ _test_data_init (&test, TRUE);
+
+ /* Queue a buffer in agg:sink_1. Then do a flushing seek and check that the
+ * new flushing seek logic is triggered. On the first FLUSH_START call the
+ * buffers queued in collectpads should get flushed. Only one FLUSH_START and
+ * one FLUSH_STOP should be forwarded downstream.
+ */
+ _chain_data_init (&data1, test.aggregator);
+ _chain_data_init (&data2, test.aggregator);
+ GST_BUFFER_TIMESTAMP (data2.buffer) = 0;
+
+ gst_segment_init (&GST_AGGREGATOR (test.aggregator)->segment,
+ GST_FORMAT_TIME);
+ /* now do a successful flushing seek */
+ event = gst_event_new_seek (1, GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH,
+ GST_SEEK_TYPE_SET, 0, GST_SEEK_TYPE_SET, 10 * GST_SECOND);
+ fail_unless (gst_pad_send_event (test.srcpad, event));
+
+ /* flushing starts once one of the upstream elements sends the first
+ * FLUSH_START */
+ fail_unless_equals_int (test.flush_start_events, 0);
+ fail_unless_equals_int (test.flush_stop_events, 0);
+
+ /* flush ogg:sink_0. This flushs collectpads, calls ::flush() and sends
+ * FLUSH_START downstream */
+ GST_DEBUG ("Flushing: %s:%s", GST_DEBUG_PAD_NAME (data2.sinkpad));
+ fail_unless (gst_pad_push_event (data2.srcpad, gst_event_new_flush_start ()));
+
+ /* expect this buffer to be flushed */
+ data2.expected_result = GST_FLOW_FLUSHING;
+ thread2 = g_thread_try_new ("gst-check", push_buffer, &data2, NULL);
+
+ fail_unless (gst_pad_push_event (data1.srcpad, gst_event_new_flush_start ()));
+ fail_unless_equals_int (test.flush_start_events, 1);
+ fail_unless_equals_int (test.flush_stop_events, 0);
+
+ /* the first FLUSH_STOP is not forwarded downstream */
+ fail_unless (gst_pad_push_event (data1.srcpad,
+ gst_event_new_flush_stop (TRUE)));
+ fail_unless_equals_int (test.flush_start_events, 1);
+ fail_unless_equals_int (test.flush_stop_events, 0);
+
+ /* at this point even the other pad agg:sink_1 should be flushing so thread2
+ * should have stopped */
+ g_thread_join (thread2);
+
+ /* push a buffer on agg:sink_0 to trigger one collect after flushing to verify
+ * that flushing completes once all the pads have been flushed */
+ thread1 = g_thread_try_new ("gst-check", push_buffer, &data1, NULL);
+
+ /* flush agg:sink_1 as well. This completes the flushing seek so a FLUSH_STOP is
+ * sent downstream */
+ gst_pad_push_event (data2.srcpad, gst_event_new_flush_stop (TRUE));
+
+ /* and the last FLUSH_STOP is forwarded downstream */
+ fail_unless_equals_int (test.flush_start_events, 1);
+
+ /* Check collected */
+ gst_pad_add_probe (test.srcpad, GST_PAD_PROBE_TYPE_BUFFER,
+ (GstPadProbeCallback) _aggregated_cb, test.ml, NULL);
+
+ data2.event = gst_event_new_eos ();
+ thread2 = g_thread_try_new ("gst-check", push_event, &data2, NULL);
+
+ g_main_loop_run (test.ml);
+ g_source_remove (test.timeout_id);
+
+ fail_unless_equals_int (test.flush_stop_events, 1);
+
+ /* these will return immediately as at this point the threads have been
+ * unlocked and are finished */
+ g_thread_join (thread1);
+ g_thread_join (thread2);
+
+ _test_data_clear (&test);
+
+}
+
+GST_END_TEST;
+
+static void
+infinite_seek (guint num_srcs, guint num_seeks)
+{
+ GstBus *bus;
+ GstMessage *message;
+ GstElement *pipeline, *src, *agg, *sink;
+
+ gint count = 0, i;
+ gboolean seek_res, carry_on = TRUE;
+
+ gst_init (NULL, NULL);
+
+ pipeline = gst_pipeline_new ("pipeline");
+
+ agg = gst_check_setup_element ("testaggregator");
+ sink = gst_check_setup_element ("fakesink");
+
+ fail_unless (gst_bin_add (GST_BIN (pipeline), agg));
+ fail_unless (gst_bin_add (GST_BIN (pipeline), sink));
+ fail_unless (gst_element_link (agg, sink));
+
+ for (i = 0; i < num_srcs; i++) {
+ src = gst_element_factory_make ("fakesrc", NULL);
+ g_object_set (src, "sizetype", 2, "sizemax", 4, NULL);
+ fail_unless (gst_bin_add (GST_BIN (pipeline), src));
+ fail_unless (gst_element_link (src, agg));
+ }
+
+ bus = gst_element_get_bus (pipeline);
+ fail_if (bus == NULL);
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+ while (count < num_seeks && carry_on) {
+ message = gst_bus_poll (bus, GST_MESSAGE_ANY, GST_SECOND / 10);
+ if (message) {
+ switch (GST_MESSAGE_TYPE (message)) {
+ case GST_MESSAGE_EOS:
+ {
+ /* we should check if we really finished here */
+ GST_WARNING ("Got an EOS");
+ carry_on = FALSE;
+ break;
+ }
+ case GST_MESSAGE_STATE_CHANGED:
+ {
+ GstState new;
+
+ if (GST_MESSAGE_SRC (message) == GST_OBJECT (pipeline)) {
+ gst_message_parse_state_changed (message, NULL, &new, NULL);
+
+ if (new != GST_STATE_PLAYING)
+ break;
+
+ GST_INFO ("Seeking (num: %i)", count);
+ seek_res =
+ gst_element_seek_simple (sink, GST_FORMAT_BYTES,
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, 0);
+ GST_INFO ("seek result is : %d", seek_res);
+ fail_unless (seek_res != 0);
+ count++;
+ }
+
+ break;
+ }
+ case GST_MESSAGE_ERROR:
+ GST_ERROR ("Error on the bus: %" GST_PTR_FORMAT, message);
+ carry_on = FALSE;
+ fail_error_message (message);
+ break;
+ default:
+ break;
+ }
+ gst_message_unref (message);
+ }
+ }
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (bus);
+ gst_object_unref (pipeline);
+}
+
+GST_START_TEST (test_infinite_seek)
+{
+ infinite_seek (2, 500);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_infinite_seek_50_src)
+{
+ infinite_seek (50, 100);
+}
+
+GST_END_TEST;
+
+typedef struct
+{
+ GstElement *agg, *src, *pipeline;
+ GCond *cond;
+ GMutex *lock;
+} RemoveElementData;
+
+static GstPadProbeReturn
+pad_probe_cb (GstPad * pad, GstPadProbeInfo * info, RemoveElementData * data)
+{
+ GstPad *peer;
+
+ GST_INFO_OBJECT (pad, "Removing pad");
+
+ peer = gst_pad_get_peer (pad);
+ gst_pad_unlink (pad, peer);
+ gst_element_release_request_pad (data->agg, peer);
+ fail_unless (gst_bin_remove (GST_BIN (data->pipeline), data->src));
+
+ g_mutex_lock (data->lock);
+ g_cond_broadcast (data->cond);
+ g_mutex_unlock (data->lock);
+
+ return GST_PAD_PROBE_OK;
+}
+
+GST_START_TEST (test_add_remove)
+{
+ /* Used to notify that we removed the pad from */
+ GCond cond;
+ GMutex lock;
+
+ GstBus *bus;
+ GstState state;
+ GstMessage *message;
+ gboolean carry_on = TRUE;
+ guint num_iterations = 100;
+
+ GstPad *pad;
+ GstElement *pipeline, *src, *src1 = NULL, *agg, *sink;
+
+ gint count = 0;
+
+ gst_init (NULL, NULL);
+ g_mutex_init (&lock);
+ g_cond_init (&cond);
+
+ pipeline = gst_pipeline_new ("pipeline");
+
+ agg = gst_check_setup_element ("testaggregator");
+ sink = gst_check_setup_element ("fakesink");
+
+ fail_unless (gst_bin_add (GST_BIN (pipeline), agg));
+ fail_unless (gst_bin_add (GST_BIN (pipeline), sink));
+ fail_unless (gst_element_link (agg, sink));
+
+ bus = gst_element_get_bus (pipeline);
+ while (count < num_iterations) {
+
+ src = gst_element_factory_make ("fakesrc", NULL);
+ g_object_set (src, "num-buffers", 100000, "sizetype", 2, "sizemax", 4,
+ NULL);
+ gst_element_set_locked_state (src, TRUE);
+ fail_unless (gst_bin_add (GST_BIN (pipeline), src));
+ fail_unless (gst_element_link (src, agg));
+ gst_element_set_locked_state (src, FALSE);
+ fail_unless (gst_element_sync_state_with_parent (src));
+
+ if (count == 0)
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+ /* Now make sure the seek happend */
+ carry_on = TRUE;
+ do {
+ message = gst_bus_timed_pop (bus, -1);
+ switch (GST_MESSAGE_TYPE (message)) {
+ case GST_MESSAGE_EOS:
+ {
+ /* we should check if we really finished here */
+ GST_WARNING ("Got an EOS");
+ carry_on = FALSE;
+ break;
+ }
+ case GST_MESSAGE_STATE_CHANGED:
+ {
+ if (GST_MESSAGE_SRC (message) == GST_OBJECT (pipeline)) {
+ gst_message_parse_state_changed (message, NULL, &state, NULL);
+
+ if (state == GST_STATE_PLAYING) {
+ RemoveElementData data;
+
+ carry_on = FALSE;
+ if (count == 0) {
+ GST_DEBUG ("First run, not removing any element yet");
+
+ break;
+ }
+
+ data.src = gst_object_ref (src1);
+ data.agg = agg;
+ data.lock = &lock;
+ data.cond = &cond;
+ data.pipeline = pipeline;
+ pad = gst_element_get_static_pad (data.src, "src");
+
+ g_mutex_lock (&lock);
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BLOCK_DOWNSTREAM,
+ (GstPadProbeCallback) pad_probe_cb, &data, NULL);
+ GST_INFO ("Waiting for %" GST_PTR_FORMAT " %s", pad,
+ gst_element_state_get_name (GST_STATE (data.src)));
+ g_cond_wait (&cond, &lock);
+ g_mutex_unlock (&lock);
+
+ /* We can not set state from the streaming thread so we
+ * need to make sure that the source has been removed
+ * before setting its state to NULL */
+ gst_element_set_state (data.src, GST_STATE_NULL);
+
+ gst_object_unref (data.src);
+ }
+ }
+
+ break;
+ }
+ case GST_MESSAGE_ERROR:
+ {
+ GST_ERROR ("Error on the bus: %" GST_PTR_FORMAT, message);
+ carry_on = FALSE;
+ fail_error_message (message);
+ break;
+ }
+ default:
+ break;
+ }
+
+ gst_message_unref (message);
+ } while (carry_on);
+
+ GST_INFO ("Seeking");
+ fail_unless (gst_element_seek_simple (pipeline, GST_FORMAT_BYTES,
+ GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, 0));
+
+ count++;
+ src1 = src;
+ }
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (bus);
+ gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_change_state_intensive)
+{
+ GstBus *bus;
+ GstMessage *message;
+ GstElement *pipeline, *src, *agg, *sink;
+
+ gint i, state_i = 0, num_srcs = 3;
+ gboolean carry_on = TRUE, ready = FALSE;
+ GstStateChangeReturn state_return;
+ GstState wanted_state, wanted_states[] = {
+ GST_STATE_PLAYING, GST_STATE_NULL, GST_STATE_PAUSED, GST_STATE_READY,
+ GST_STATE_PLAYING, GST_STATE_NULL, GST_STATE_PAUSED, GST_STATE_READY,
+ GST_STATE_PLAYING, GST_STATE_NULL, GST_STATE_PAUSED, GST_STATE_READY,
+ GST_STATE_PAUSED, GST_STATE_READY, GST_STATE_PAUSED, GST_STATE_READY,
+ GST_STATE_PAUSED, GST_STATE_READY, GST_STATE_PAUSED, GST_STATE_NULL,
+ GST_STATE_PAUSED, GST_STATE_NULL, GST_STATE_PAUSED, GST_STATE_NULL,
+ GST_STATE_PAUSED, GST_STATE_NULL, GST_STATE_PAUSED, GST_STATE_NULL,
+ GST_STATE_PAUSED, GST_STATE_NULL, GST_STATE_PLAYING, GST_STATE_NULL,
+ GST_STATE_PLAYING, GST_STATE_NULL, GST_STATE_PLAYING, GST_STATE_NULL,
+ GST_STATE_PLAYING, GST_STATE_NULL, GST_STATE_PLAYING, GST_STATE_NULL,
+ GST_STATE_PLAYING, GST_STATE_NULL, GST_STATE_PLAYING, GST_STATE_NULL,
+ };
+
+ gst_init (NULL, NULL);
+
+ pipeline = gst_pipeline_new ("pipeline");
+
+ agg = gst_check_setup_element ("testaggregator");
+ sink = gst_check_setup_element ("fakesink");
+
+ fail_unless (gst_bin_add (GST_BIN (pipeline), agg));
+ fail_unless (gst_bin_add (GST_BIN (pipeline), sink));
+ fail_unless (gst_element_link (agg, sink));
+
+ for (i = 0; i < num_srcs; i++) {
+ src = gst_element_factory_make ("fakesrc", NULL);
+ g_object_set (src, "sizetype", 2, "sizemax", 4, NULL);
+ fail_unless (gst_bin_add (GST_BIN (pipeline), src));
+ fail_unless (gst_element_link (src, agg));
+ }
+
+ bus = gst_element_get_bus (pipeline);
+ fail_if (bus == NULL);
+
+ wanted_state = wanted_states[state_i++];
+ state_return = gst_element_set_state (pipeline, wanted_state);
+
+ while (state_i < G_N_ELEMENTS (wanted_states) && carry_on) {
+ if (state_return == GST_STATE_CHANGE_SUCCESS && ready) {
+ wanted_state = wanted_states[state_i++];
+ fail_unless (gst_element_set_state (pipeline, wanted_state),
+ GST_STATE_CHANGE_SUCCESS);
+ GST_INFO ("Wanted state: %s", gst_element_state_get_name (wanted_state));
+ }
+
+ message = gst_bus_poll (bus, GST_MESSAGE_ANY, GST_SECOND / 10);
+ if (message) {
+ switch (GST_MESSAGE_TYPE (message)) {
+ case GST_MESSAGE_EOS:
+ {
+ /* we should check if we really finished here */
+ GST_WARNING ("Got an EOS");
+ carry_on = FALSE;
+ break;
+ }
+ case GST_MESSAGE_STATE_CHANGED:
+ {
+ GstState new;
+
+ if (GST_MESSAGE_SRC (message) == GST_OBJECT (pipeline)) {
+ gst_message_parse_state_changed (message, NULL, &new, NULL);
+
+ if (new != wanted_state) {
+ ready = FALSE;
+ break;
+ }
+
+ GST_DEBUG ("State %s reached",
+ gst_element_state_get_name (wanted_state));
+ wanted_state = wanted_states[state_i++];
+ GST_DEBUG ("Wanted state: %s",
+ gst_element_state_get_name (wanted_state));
+ state_return = gst_element_set_state (pipeline, wanted_state);
+ fail_unless (state_return == GST_STATE_CHANGE_SUCCESS ||
+ state_return == GST_STATE_CHANGE_ASYNC);
+ ready = TRUE;
+ }
+
+ break;
+ }
+ case GST_MESSAGE_ERROR:
+ GST_ERROR ("Error on the bus: %" GST_PTR_FORMAT, message);
+ carry_on = FALSE;
+ break;
+ default:
+ break;
+ }
+ gst_message_unref (message);
+ }
+ }
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (bus);
+ gst_object_unref (pipeline);
+}
+
+GST_END_TEST;
+
+static Suite *
+gst_aggregator_suite (void)
+{
+ Suite *suite;
+ TCase *general;
+
+ gst_test_aggregator_plugin_register ();
+
+ suite = suite_create ("GstAggregator");
+
+ general = tcase_create ("general");
+ suite_add_tcase (suite, general);
+ tcase_add_test (general, test_aggregate);
+ tcase_add_test (general, test_aggregate_eos);
+ tcase_add_test (general, test_flushing_seek);
+ tcase_add_test (general, test_infinite_seek);
+ tcase_add_test (general, test_infinite_seek_50_src);
+ tcase_add_test (general, test_linear_pipeline);
+ tcase_add_test (general, test_two_src_pipeline);
+ tcase_add_test (general, test_add_remove);
+ tcase_add_test (general, test_change_state_intensive);
+
+ return suite;
+}
+
+GST_CHECK_MAIN (gst_aggregator);
diff --git a/tests/check/libs/gstglupload.c b/tests/check/libs/gstglupload.c
index 66f0339a..5c014a47 100644
--- a/tests/check/libs/gstglupload.c
+++ b/tests/check/libs/gstglupload.c
@@ -233,12 +233,9 @@ GST_START_TEST (test_upload_data)
gst_video_info_set_format (&in_info, GST_VIDEO_FORMAT_RGBA, WIDTH, HEIGHT);
- gst_gl_context_gen_texture (context, &tex_id, GST_VIDEO_FORMAT_RGBA, WIDTH,
- HEIGHT);
-
gst_gl_upload_set_format (upload, &in_info);
- res = gst_gl_upload_perform_with_data (upload, tex_id, data);
+ res = gst_gl_upload_perform_with_data (upload, &tex_id, data);
fail_if (res == FALSE, "Failed to upload buffer: %s\n",
gst_gl_context_get_error ());
@@ -251,8 +248,6 @@ GST_START_TEST (test_upload_data)
context);
i++;
}
-
- gst_gl_context_del_texture (context, &tex_id);
}
GST_END_TEST;
@@ -301,6 +296,7 @@ GST_START_TEST (test_upload_meta_producer)
GstVideoInfo in_info;
GstVideoGLTextureUploadMeta *gl_upload_meta;
guint tex_ids[] = { 0, 0, 0, 0 };
+ GstGLUploadMeta *upload_meta;
gboolean res;
gint i = 0;
@@ -315,10 +311,13 @@ GST_START_TEST (test_upload_meta_producer)
gst_gl_context_gen_texture (context, &tex_ids[0], GST_VIDEO_FORMAT_RGBA,
WIDTH, HEIGHT);
+ upload_meta = gst_gl_upload_meta_new (context);
+ gst_gl_upload_meta_set_format (upload_meta, &in_info);
+
gst_gl_upload_set_format (upload, &in_info);
gst_buffer_add_video_meta_full (buffer, 0, GST_VIDEO_FORMAT_RGBA, WIDTH,
HEIGHT, 1, in_info.offset, in_info.stride);
- gst_gl_upload_add_video_gl_texture_upload_meta (upload, buffer);
+ gst_gl_upload_meta_add_to_buffer (upload_meta, buffer);
gl_upload_meta = gst_buffer_get_video_gl_texture_upload_meta (buffer);
fail_if (gl_upload_meta == NULL, "Failed to add GstVideoGLTextureUploadMeta"
@@ -337,6 +336,7 @@ GST_START_TEST (test_upload_meta_producer)
i++;
}
+ gst_object_unref (upload_meta);
gst_gl_context_del_texture (context, &tex_ids[0]);
}
diff --git a/tests/check/libs/mpegts.c b/tests/check/libs/mpegts.c
index 9a652b35..e1bedff8 100644
--- a/tests/check/libs/mpegts.c
+++ b/tests/check/libs/mpegts.c
@@ -62,6 +62,12 @@ static const guint8 sdt_data_check[] = {
0xe5, 0x02, 0xd9
};
+static const guint8 stt_data_check[] = {
+ 0xcd, 0xf0, 0x11, 0x00, 0x00, 0xc1, 0x00,
+ 0x00, 0x00, 0x23, 0xb4, 0xe6, 0x5C, 0x0c,
+ 0xc0, 0x00, 0xc4, 0x86, 0x56, 0xa5
+};
+
GST_START_TEST (test_mpegts_pat)
{
GstMpegTsPatProgram *program;
@@ -381,6 +387,41 @@ GST_START_TEST (test_mpegts_sdt)
GST_END_TEST;
+GST_START_TEST (test_mpegts_atsc_stt)
+{
+ const GstMpegTsAtscSTT *stt;
+ GstMpegTsSection *section;
+ guint8 *data;
+ GstDateTime *dt;
+
+ data = g_memdup (stt_data_check, 20);
+
+ section = gst_mpegts_section_new (0x1ffb, data, 20);
+ stt = gst_mpegts_section_get_atsc_stt (section);
+ fail_if (stt == NULL);
+
+ fail_unless (stt->protocol_version == 0);
+ fail_unless (stt->system_time == 0x23b4e65c);
+ fail_unless (stt->gps_utc_offset == 12);
+ fail_unless (stt->ds_status == 1);
+ fail_unless (stt->ds_dayofmonth == 0);
+ fail_unless (stt->ds_hour == 0);
+
+ dt = gst_mpegts_atsc_stt_get_datetime_utc ((GstMpegTsAtscSTT *) stt);
+ fail_unless (gst_date_time_get_day (dt) == 30);
+ fail_unless (gst_date_time_get_month (dt) == 12);
+ fail_unless (gst_date_time_get_year (dt) == 1998);
+ fail_unless (gst_date_time_get_hour (dt) == 13);
+ fail_unless (gst_date_time_get_minute (dt) == 0);
+ fail_unless (gst_date_time_get_second (dt) == 0);
+
+ gst_date_time_unref (dt);
+ gst_mpegts_section_unref (section);
+}
+
+GST_END_TEST;
+
+
static const guint8 registration_descriptor[] = {
0x05, 0x04, 0x48, 0x44, 0x4d, 0x56
};
@@ -514,6 +555,7 @@ mpegts_suite (void)
tcase_add_test (tc_chain, test_mpegts_pmt);
tcase_add_test (tc_chain, test_mpegts_nit);
tcase_add_test (tc_chain, test_mpegts_sdt);
+ tcase_add_test (tc_chain, test_mpegts_atsc_stt);
tcase_add_test (tc_chain, test_mpegts_descriptors);
tcase_add_test (tc_chain, test_mpegts_dvb_descriptors);
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index 44899cbd..9ab53f3f 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -323,6 +323,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -409,6 +411,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -700,6 +703,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
@USE_UVCH264_FALSE@UVCH264_DIR =
@USE_UVCH264_TRUE@UVCH264_DIR = uvch264
@HAVE_GTK_FALSE@GTK_EXAMPLES =
diff --git a/tests/examples/camerabin2/Makefile.in b/tests/examples/camerabin2/Makefile.in
index 89ff81d4..e42ae73b 100644
--- a/tests/examples/camerabin2/Makefile.in
+++ b/tests/examples/camerabin2/Makefile.in
@@ -333,6 +333,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -419,6 +421,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -710,6 +713,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
GST_CAMERABIN_UI_FILES = gst-camera2.ui
AM_CPPFLAGS = -DCAMERA_APPS_UIDIR=\""$(srcdir)"\"
@HAVE_GTK_FALSE@GST_CAMERABIN_GTK_EXAMPLES =
diff --git a/tests/examples/directfb/Makefile.in b/tests/examples/directfb/Makefile.in
index 22b64bdc..f24e7694 100644
--- a/tests/examples/directfb/Makefile.in
+++ b/tests/examples/directfb/Makefile.in
@@ -312,6 +312,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -398,6 +400,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -689,6 +692,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
gstdfb_SOURCES = gstdfb.c
gstdfb_CFLAGS = $(GST_CFLAGS) $(DIRECTFB_CFLAGS)
gstdfb_LDFLAGS = $(GST_LIBS) $(DIRECTFB_LIBS) $(LIBM)
diff --git a/tests/examples/gl/Makefile.in b/tests/examples/gl/Makefile.in
index f871ca4c..629440c2 100644
--- a/tests/examples/gl/Makefile.in
+++ b/tests/examples/gl/Makefile.in
@@ -322,6 +322,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -408,6 +410,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -699,6 +702,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
SUBDIRS = $(am__append_1) $(am__append_2) $(am__append_3) \
$(am__append_4) $(am__append_5)
DIST_SUBDIRS = cocoa generic qt clutter sdl gtk
diff --git a/tests/examples/gl/clutter/Makefile.am b/tests/examples/gl/clutter/Makefile.am
index 51576b3e..cb8796c4 100644
--- a/tests/examples/gl/clutter/Makefile.am
+++ b/tests/examples/gl/clutter/Makefile.am
@@ -7,7 +7,8 @@ noinst_PROGRAMS += cluttershare
cluttershare_SOURCES = cluttershare.c
-cluttershare_CFLAGS=$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+cluttershare_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
$(GST_CFLAGS) $(GL_CFLAGS) $(CLUTTER_CFLAGS)
cluttershare_LDADD=$(CLUTTER_LIBS) $(GST_PLUGINS_BASE_LIBS) \
$(GST_LIBS) $(GL_LIBS) \
@@ -24,7 +25,8 @@ noinst_PROGRAMS += clutteractor clutteractortee
clutteractor_SOURCES = clutteractor.c
-clutteractor_CFLAGS=$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+clutteractor_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(CLUTTER_CFLAGS) \
$(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
clutteractor_LDADD=$(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
@@ -33,7 +35,8 @@ clutteractor_LDADD=$(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
clutteractortee_SOURCES = clutteractortee.c
-clutteractortee_CFLAGS=$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+clutteractortee_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(CLUTTER_CFLAGS) \
$(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
clutteractortee_LDADD=$(CLUTTER_LIBS) $(CLUTTER_GLX_LIBS) $(CLUTTER_X11_LIBS) \
diff --git a/tests/examples/gl/clutter/Makefile.in b/tests/examples/gl/clutter/Makefile.in
index 869378d7..7f26fa47 100644
--- a/tests/examples/gl/clutter/Makefile.in
+++ b/tests/examples/gl/clutter/Makefile.in
@@ -355,6 +355,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -441,6 +443,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -732,8 +735,10 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
@HAVE_CLUTTER_TRUE@cluttershare_SOURCES = cluttershare.c
-@HAVE_CLUTTER_TRUE@cluttershare_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
+@HAVE_CLUTTER_TRUE@cluttershare_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+@HAVE_CLUTTER_TRUE@ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@HAVE_CLUTTER_TRUE@ $(GST_CFLAGS) $(GL_CFLAGS) $(CLUTTER_CFLAGS)
@HAVE_CLUTTER_TRUE@cluttershare_LDADD = $(CLUTTER_LIBS) $(GST_PLUGINS_BASE_LIBS) \
@@ -741,7 +746,8 @@ top_srcdir = @top_srcdir@
@HAVE_CLUTTER_TRUE@ -lgstvideo-$(GST_API_VERSION) $(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la
@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractor_SOURCES = clutteractor.c
-@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractor_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractor_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@ $(GL_CFLAGS) $(CLUTTER_CFLAGS) \
@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@ $(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
@@ -750,7 +756,8 @@ top_srcdir = @top_srcdir@
@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@ $(GL_LIBS) $(XCOMPOSITE_LIBS) -lgstvideo-$(GST_API_VERSION)
@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractortee_SOURCES = clutteractortee.c
-@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractortee_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@clutteractortee_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@ $(GL_CFLAGS) $(CLUTTER_CFLAGS) \
@HAVE_CLUTTER_GLX_TRUE@@HAVE_CLUTTER_X11_TRUE@@HAVE_XCOMPOSITE_TRUE@ $(CLUTTER_GLX_CFLAGS) $(CLUTTER_X11_CFLAGS) $(XCOMPOSITE_CFLAGS)
diff --git a/tests/examples/gl/cocoa/Makefile.am b/tests/examples/gl/cocoa/Makefile.am
index c13ec526..91349c01 100755
--- a/tests/examples/gl/cocoa/Makefile.am
+++ b/tests/examples/gl/cocoa/Makefile.am
@@ -4,9 +4,10 @@ noinst_PROGRAMS = cocoa-videooverlay
cocoa_videooverlay_SOURCES = cocoa-videooverlay.m
-cocoa_videooverlay_OBJCFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+cocoa_videooverlay_OBJCFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) ${GL_OBJCFLAGS}
-cocoa_videooverlay_LDADD=$(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+cocoa_videooverlay_LDADD=$(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
cocoa_videooverlay_LIBTOOLFLAGS = --tag=OBJC
diff --git a/tests/examples/gl/cocoa/Makefile.in b/tests/examples/gl/cocoa/Makefile.in
index 831fe8c4..429a8370 100644
--- a/tests/examples/gl/cocoa/Makefile.in
+++ b/tests/examples/gl/cocoa/Makefile.in
@@ -318,6 +318,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -404,6 +406,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -695,11 +698,13 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
@HAVE_WINDOW_COCOA_TRUE@cocoa_videooverlay_SOURCES = cocoa-videooverlay.m
-@HAVE_WINDOW_COCOA_TRUE@cocoa_videooverlay_OBJCFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+@HAVE_WINDOW_COCOA_TRUE@cocoa_videooverlay_OBJCFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+@HAVE_WINDOW_COCOA_TRUE@ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
@HAVE_WINDOW_COCOA_TRUE@ $(GL_CFLAGS) ${GL_OBJCFLAGS}
-@HAVE_WINDOW_COCOA_TRUE@cocoa_videooverlay_LDADD = $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+@HAVE_WINDOW_COCOA_TRUE@cocoa_videooverlay_LDADD = $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
@HAVE_WINDOW_COCOA_TRUE@ $(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
@HAVE_WINDOW_COCOA_TRUE@cocoa_videooverlay_LIBTOOLFLAGS = --tag=OBJC
diff --git a/tests/examples/gl/generic/Makefile.in b/tests/examples/gl/generic/Makefile.in
index 8af78fe5..129f8140 100644
--- a/tests/examples/gl/generic/Makefile.in
+++ b/tests/examples/gl/generic/Makefile.in
@@ -318,6 +318,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -404,6 +406,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -695,6 +698,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
SUBDIRS = cube cubeyuv doublecube recordgraphic
all: all-recursive
diff --git a/tests/examples/gl/generic/cube/Makefile.am b/tests/examples/gl/generic/cube/Makefile.am
index 41a5e2c6..b6bd60b4 100644
--- a/tests/examples/gl/generic/cube/Makefile.am
+++ b/tests/examples/gl/generic/cube/Makefile.am
@@ -3,6 +3,7 @@ noinst_PROGRAMS = cube
cube_SOURCES = main.cpp
-cube_CXXFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-cube_LDADD=$(GST_PLUGINS_GL_LIBS) $(GST_LIBS) $(GL_LIBS)
+cube_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+cube_LDADD=$(GST_LIBS) $(GL_LIBS)
diff --git a/tests/examples/gl/generic/cube/Makefile.in b/tests/examples/gl/generic/cube/Makefile.in
index 2b649f3a..7ee25dcb 100644
--- a/tests/examples/gl/generic/cube/Makefile.in
+++ b/tests/examples/gl/generic/cube/Makefile.in
@@ -313,6 +313,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -399,6 +401,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -690,9 +693,12 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
cube_SOURCES = main.cpp
-cube_CXXFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-cube_LDADD = $(GST_PLUGINS_GL_LIBS) $(GST_LIBS) $(GL_LIBS)
+cube_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+
+cube_LDADD = $(GST_LIBS) $(GL_LIBS)
all: all-am
.SUFFIXES:
diff --git a/tests/examples/gl/generic/cube/main.cpp b/tests/examples/gl/generic/cube/main.cpp
index e7ebaaeb..23c81ec3 100644
--- a/tests/examples/gl/generic/cube/main.cpp
+++ b/tests/examples/gl/generic/cube/main.cpp
@@ -65,17 +65,19 @@ static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data)
}
//client reshape callback
-static void reshapeCallback (GLuint width, GLuint height, gpointer data)
+static gboolean reshapeCallback (void *gl_sink, GLuint width, GLuint height, gpointer data)
{
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
glMatrixMode(GL_MODELVIEW);
+
+ return TRUE;
}
//client draw callback
-static gboolean drawCallback (GLuint texture, GLuint width, GLuint height, gpointer data)
+static gboolean drawCallback (void * gl_sink, GLuint texture, GLuint width, GLuint height, gpointer data)
{
static GLfloat xrot = 0;
static GLfloat yrot = 0;
@@ -116,35 +118,35 @@ static gboolean drawCallback (GLuint texture, GLuint width, GLuint height, gpoin
glBegin(GL_QUADS);
// Front Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
// Back Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
// Top Face
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
// Bottom Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f((gfloat)width,(gfloat)height); glVertex3f(-1.0f, -1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
// Right face
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
// Left Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glEnd();
xrot+=0.3f;
@@ -200,9 +202,8 @@ gint main (gint argc, gchar *argv[])
/* configure elements */
g_object_set(G_OBJECT(videosrc), "num-buffers", 400, NULL);
- g_object_set(G_OBJECT(glimagesink), "client-reshape-callback", reshapeCallback, NULL);
- g_object_set(G_OBJECT(glimagesink), "client-draw-callback", drawCallback, NULL);
- g_object_set(G_OBJECT(glimagesink), "client-data", NULL, NULL);
+ g_signal_connect(G_OBJECT(glimagesink), "client-reshape", G_CALLBACK (reshapeCallback), NULL);
+ g_signal_connect(G_OBJECT(glimagesink), "client-draw", G_CALLBACK (drawCallback), NULL);
/* add elements */
gst_bin_add_many (GST_BIN (pipeline), videosrc, glimagesink, NULL);
diff --git a/tests/examples/gl/generic/cubeyuv/Makefile.am b/tests/examples/gl/generic/cubeyuv/Makefile.am
index 0fe4fcda..289cbd3f 100644
--- a/tests/examples/gl/generic/cubeyuv/Makefile.am
+++ b/tests/examples/gl/generic/cubeyuv/Makefile.am
@@ -3,6 +3,7 @@ noinst_PROGRAMS = cubeyuv
cubeyuv_SOURCES = main.cpp
-cubeyuv_CXXFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-cubeyuv_LDADD=$(GST_PLUGINS_GL_LIBS) $(GST_LIBS) $(GL_LIBS)
+cubeyuv_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+cubeyuv_LDADD=$(GST_LIBS) $(GL_LIBS)
diff --git a/tests/examples/gl/generic/cubeyuv/Makefile.in b/tests/examples/gl/generic/cubeyuv/Makefile.in
index cb9a6e60..afaea9b3 100644
--- a/tests/examples/gl/generic/cubeyuv/Makefile.in
+++ b/tests/examples/gl/generic/cubeyuv/Makefile.in
@@ -313,6 +313,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -399,6 +401,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -690,9 +693,12 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
cubeyuv_SOURCES = main.cpp
-cubeyuv_CXXFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-cubeyuv_LDADD = $(GST_PLUGINS_GL_LIBS) $(GST_LIBS) $(GL_LIBS)
+cubeyuv_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+
+cubeyuv_LDADD = $(GST_LIBS) $(GL_LIBS)
all: all-am
.SUFFIXES:
diff --git a/tests/examples/gl/generic/cubeyuv/main.cpp b/tests/examples/gl/generic/cubeyuv/main.cpp
index 17964479..0d585a72 100644
--- a/tests/examples/gl/generic/cubeyuv/main.cpp
+++ b/tests/examples/gl/generic/cubeyuv/main.cpp
@@ -87,18 +87,20 @@ static void identityCallback (GstElement *src, GstBuffer *buffer, GstElement* t
//client reshape callback
-static void reshapeCallback (GLuint width, GLuint height)
+static gboolean reshapeCallback (void * gl_sink, GLuint width, GLuint height, gpointer data)
{
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
glMatrixMode(GL_MODELVIEW);
+
+ return TRUE;
}
//client draw callback
-static gboolean drawCallback (GLuint texture, GLuint width, GLuint height)
+static gboolean drawCallback (void * gl_sink, GLuint texture, GLuint width, GLuint height, gpointer data)
{
static GLfloat xrot = 0;
static GLfloat yrot = 0;
@@ -139,35 +141,35 @@ static gboolean drawCallback (GLuint texture, GLuint width, GLuint height)
glBegin(GL_QUADS);
// Front Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
// Back Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
// Top Face
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
// Bottom Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f((gfloat)width,(gfloat)height); glVertex3f(-1.0f, -1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
// Right face
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
// Left Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glEnd();
xrot+=0.03f;
@@ -264,8 +266,8 @@ gint main (gint argc, gchar *argv[])
g_object_set(G_OBJECT(videosrc), "location", video_location.c_str(), NULL);
g_signal_connect(identity, "handoff", G_CALLBACK(identityCallback), textoverlay) ;
g_object_set(G_OBJECT(textoverlay), "font_desc", "Ahafoni CLM Bold 30", NULL);
- g_object_set(G_OBJECT(glimagesink), "client-reshape-callback", reshapeCallback, NULL);
- g_object_set(G_OBJECT(glimagesink), "client-draw-callback", drawCallback, NULL);
+ g_signal_connect(G_OBJECT(glimagesink), "client-reshape", G_CALLBACK (reshapeCallback), NULL);
+ g_signal_connect(G_OBJECT(glimagesink), "client-draw", G_CALLBACK (drawCallback), NULL);
/* add elements */
gst_bin_add_many (GST_BIN (pipeline), videosrc, decodebin, identity,
diff --git a/tests/examples/gl/generic/doublecube/Makefile.am b/tests/examples/gl/generic/doublecube/Makefile.am
index 7a9184bb..3f220de7 100644
--- a/tests/examples/gl/generic/doublecube/Makefile.am
+++ b/tests/examples/gl/generic/doublecube/Makefile.am
@@ -3,6 +3,7 @@ noinst_PROGRAMS = doublecube
doublecube_SOURCES = main.cpp
-doublecube_CXXFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-doublecube_LDADD=$(GST_PLUGINS_GL_LIBS) $(GST_LIBS) $(GL_LIBS)
+doublecube_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+doublecube_LDADD=$(GST_LIBS) $(GL_LIBS)
diff --git a/tests/examples/gl/generic/doublecube/Makefile.in b/tests/examples/gl/generic/doublecube/Makefile.in
index c2453ea7..f6548ab3 100644
--- a/tests/examples/gl/generic/doublecube/Makefile.in
+++ b/tests/examples/gl/generic/doublecube/Makefile.in
@@ -313,6 +313,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -399,6 +401,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -690,9 +693,12 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
doublecube_SOURCES = main.cpp
-doublecube_CXXFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-doublecube_LDADD = $(GST_PLUGINS_GL_LIBS) $(GST_LIBS) $(GL_LIBS)
+doublecube_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+
+doublecube_LDADD = $(GST_LIBS) $(GL_LIBS)
all: all-am
.SUFFIXES:
diff --git a/tests/examples/gl/generic/doublecube/main.cpp b/tests/examples/gl/generic/doublecube/main.cpp
index 4ff63389..4e0a421f 100644
--- a/tests/examples/gl/generic/doublecube/main.cpp
+++ b/tests/examples/gl/generic/doublecube/main.cpp
@@ -89,18 +89,20 @@ static GstPadProbeReturn textoverlay_sink_pad_probe_cb (GstPad *pad, GstPadProbe
//client reshape callback
-static void reshapeCallback (GLuint width, GLuint height)
+static gboolean reshapeCallback (void *gl_sink, GLuint width, GLuint height)
{
glViewport(0, 0, width, height);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
glMatrixMode(GL_MODELVIEW);
+
+ return TRUE;
}
//client draw callback
-static gboolean drawCallback (GLuint texture, GLuint width, GLuint height)
+static gboolean drawCallback (void * gl_sink, GLuint texture, GLuint width, GLuint height)
{
static GLfloat xrot = 0;
static GLfloat yrot = 0;
@@ -141,35 +143,35 @@ static gboolean drawCallback (GLuint texture, GLuint width, GLuint height)
glBegin(GL_QUADS);
// Front Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
// Back Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
// Top Face
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
// Bottom Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f((gfloat)width,(gfloat)height); glVertex3f(-1.0f, -1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
// Right face
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
// Left Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glEnd();
xrot+=0.03f;
@@ -281,8 +283,8 @@ gint main (gint argc, gchar *argv[])
g_object_set(G_OBJECT(videosrc), "num-buffers", 1000, NULL);
g_object_set(G_OBJECT(videosrc), "location", video_location.c_str(), NULL);
g_object_set(G_OBJECT(textoverlay), "font_desc", "Ahafoni CLM Bold 30", NULL);
- g_object_set(G_OBJECT(glimagesink0), "client-reshape-callback", reshapeCallback, NULL);
- g_object_set(G_OBJECT(glimagesink0), "client-draw-callback", drawCallback, NULL);
+ g_signal_connect(G_OBJECT(glimagesink0), "client-reshape", G_CALLBACK (reshapeCallback), NULL);
+ g_signal_connect(G_OBJECT(glimagesink0), "client-draw", G_CALLBACK (drawCallback), NULL);
/* add elements */
gst_bin_add_many (GST_BIN (pipeline), videosrc, decodebin, videoconvert, textoverlay, tee,
diff --git a/tests/examples/gl/generic/recordgraphic/Makefile.am b/tests/examples/gl/generic/recordgraphic/Makefile.am
index 4ee21ac3..6a25c281 100644
--- a/tests/examples/gl/generic/recordgraphic/Makefile.am
+++ b/tests/examples/gl/generic/recordgraphic/Makefile.am
@@ -3,6 +3,7 @@ noinst_PROGRAMS = recordgraphic
recordgraphic_SOURCES = main.cpp
-recordgraphic_CXXFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-recordgraphic_LDADD=$(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ $(GST_LIBS) $(GL_LIBS)
+recordgraphic_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+recordgraphic_LDADD=$(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ $(GST_LIBS) $(GL_LIBS)
diff --git a/tests/examples/gl/generic/recordgraphic/Makefile.in b/tests/examples/gl/generic/recordgraphic/Makefile.in
index 1d2d550a..96762082 100644
--- a/tests/examples/gl/generic/recordgraphic/Makefile.in
+++ b/tests/examples/gl/generic/recordgraphic/Makefile.in
@@ -315,6 +315,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -401,6 +403,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -692,9 +695,12 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
recordgraphic_SOURCES = main.cpp
-recordgraphic_CXXFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) $(GL_CFLAGS)
-recordgraphic_LDADD = $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ $(GST_LIBS) $(GL_LIBS)
+recordgraphic_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_CXXFLAGS) $(GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS)
+
+recordgraphic_LDADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-@GST_API_VERSION@ $(GST_LIBS) $(GL_LIBS)
all: all-am
.SUFFIXES:
diff --git a/tests/examples/gl/generic/recordgraphic/main.cpp b/tests/examples/gl/generic/recordgraphic/main.cpp
index 7771ac2b..d457a9c2 100644
--- a/tests/examples/gl/generic/recordgraphic/main.cpp
+++ b/tests/examples/gl/generic/recordgraphic/main.cpp
@@ -65,19 +65,8 @@ static gboolean bus_call (GstBus *bus, GstMessage *msg, gpointer data)
return TRUE;
}
-//client reshape callback
-static void reshapeCallback (GLuint width, GLuint height)
-{
- glViewport(0, 0, width, height);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- gluPerspective(45, (gfloat)width/(gfloat)height, 0.1, 100);
- glMatrixMode(GL_MODELVIEW);
-}
-
-
//client draw callback
-static gboolean drawCallback (GLuint width, GLuint height, GLuint texture, gpointer data)
+static gboolean drawCallback (void *filter, GLuint width, GLuint height, GLuint texture, gpointer data)
{
static GLfloat xrot = 0;
static GLfloat yrot = 0;
@@ -119,43 +108,43 @@ static gboolean drawCallback (GLuint width, GLuint height, GLuint texture, gpoin
//cube
glBegin(GL_QUADS);
// Front Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
// Back Face
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
// Top Face
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
// Bottom Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, -1.0f, 1.0f);
- glTexCoord2f((gfloat)width,(gfloat)height); glVertex3f(-1.0f, -1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
// Right face
glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f( 1.0f, 1.0f, -1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f( 1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
// Left Face
- glTexCoord2f((gfloat)width, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
+ glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
- glTexCoord2f(0.0f, (gfloat)height); glVertex3f(-1.0f, 1.0f, 1.0f);
- glTexCoord2f((gfloat)width, (gfloat)height); glVertex3f(-1.0f, 1.0f, -1.0f);
+ glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
+ glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f);
glEnd();
xrot+=0.3f;
yrot+=0.2f;
zrot+=0.4f;
- //return TRUE causes a postRedisplay
- return FALSE;
+ //return TRUE because we dealt with the texture
+ return TRUE;
}
@@ -215,9 +204,7 @@ gint main (gint argc, gchar *argv[])
/* configure elements */
g_object_set(G_OBJECT(videosrc), "num-buffers", 400, NULL);
- g_object_set(G_OBJECT(glfilterapp), "client-reshape-callback", reshapeCallback, NULL);
- g_object_set(G_OBJECT(glfilterapp), "client-draw-callback", drawCallback, NULL);
- g_object_set(G_OBJECT(glfilterapp), "client-data", NULL, NULL);
+ g_signal_connect(G_OBJECT(glfilterapp), "client-draw", G_CALLBACK (drawCallback), NULL);
g_object_set(G_OBJECT(filesink), "location", "record.avi", NULL);
/* add elements */
diff --git a/tests/examples/gl/gtk/Makefile.am b/tests/examples/gl/gtk/Makefile.am
index 2821b4e5..a41566bc 100644
--- a/tests/examples/gl/gtk/Makefile.am
+++ b/tests/examples/gl/gtk/Makefile.am
@@ -4,7 +4,8 @@ SUBDIRS = . gtkvideooverlay filternovideooverlay filtervideooverlay fxtest switc
noinst_LTLIBRARIES = libgstgtkhelper.la
libgstgtkhelper_la_SOURCES = gstgtk.c gstgtk.h
-libgstgtkhelper_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GTK3_CFLAGS)
+libgstgtkhelper_la_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GTK3_CFLAGS)
if HAVE_WINDOW_COCOA
libgstgtkhelper_la_CFLAGS += -x objective-c
diff --git a/tests/examples/gl/gtk/Makefile.in b/tests/examples/gl/gtk/Makefile.in
index 00a45a11..5dfc7d25 100644
--- a/tests/examples/gl/gtk/Makefile.in
+++ b/tests/examples/gl/gtk/Makefile.in
@@ -355,6 +355,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -441,6 +443,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -732,10 +735,12 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
SUBDIRS = . gtkvideooverlay filternovideooverlay filtervideooverlay fxtest switchvideooverlay
noinst_LTLIBRARIES = libgstgtkhelper.la
libgstgtkhelper_la_SOURCES = gstgtk.c gstgtk.h
-libgstgtkhelper_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) \
+libgstgtkhelper_la_CFLAGS = -I$(top_srcdir)/gst-libs \
+ -I$(top_builddir)/gst-libs $(GST_PLUGINS_BAD_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GTK3_CFLAGS) \
$(am__append_1)
all: all-recursive
diff --git a/tests/examples/gl/gtk/filternovideooverlay/Makefile.in b/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
index 5071dfcf..efa70554 100644
--- a/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
@@ -316,6 +316,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -402,6 +404,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -693,6 +696,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
filternovideooverlay_SOURCES = main.cpp
filternovideooverlay_CXXFLAGS = \
-I$(top_srcdir)/gst-libs \
diff --git a/tests/examples/gl/gtk/filtervideooverlay/Makefile.am b/tests/examples/gl/gtk/filtervideooverlay/Makefile.am
index 4d7f129c..2bf658b0 100644
--- a/tests/examples/gl/gtk/filtervideooverlay/Makefile.am
+++ b/tests/examples/gl/gtk/filtervideooverlay/Makefile.am
@@ -2,9 +2,10 @@ noinst_PROGRAMS = filtervideooverlay
filtervideooverlay_SOURCES = main.cpp
-filtervideooverlay_CXXFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
+filtervideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
filtervideooverlay_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
diff --git a/tests/examples/gl/gtk/filtervideooverlay/Makefile.in b/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
index 73ec0254..9b609fbd 100644
--- a/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
@@ -316,6 +316,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -402,6 +404,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -693,12 +696,14 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
filtervideooverlay_SOURCES = main.cpp
-filtervideooverlay_CXXFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
+filtervideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
filtervideooverlay_LDADD = ../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
all: all-am
diff --git a/tests/examples/gl/gtk/fxtest/Makefile.am b/tests/examples/gl/gtk/fxtest/Makefile.am
index c5e5d1ae..de052afc 100644
--- a/tests/examples/gl/gtk/fxtest/Makefile.am
+++ b/tests/examples/gl/gtk/fxtest/Makefile.am
@@ -3,16 +3,18 @@ noinst_PROGRAMS += pixbufdrop
fxtest_SOURCES = fxtest.c
-fxtest_CFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+fxtest_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
fxtest_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
pixbufdrop_SOURCES = pixbufdrop.c
-pixbufdrop_CFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+pixbufdrop_CFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
pixbufdrop_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
diff --git a/tests/examples/gl/gtk/fxtest/Makefile.in b/tests/examples/gl/gtk/fxtest/Makefile.in
index b65883a2..4aa94de0 100644
--- a/tests/examples/gl/gtk/fxtest/Makefile.in
+++ b/tests/examples/gl/gtk/fxtest/Makefile.in
@@ -323,6 +323,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -409,6 +411,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -700,20 +703,23 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
fxtest_SOURCES = fxtest.c
-fxtest_CFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+fxtest_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
fxtest_LDADD = ../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
pixbufdrop_SOURCES = pixbufdrop.c
-pixbufdrop_CFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
+pixbufdrop_CFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
pixbufdrop_LDADD = ../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
all: all-am
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am b/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am
index c9dba8aa..bab0e5bf 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am
+++ b/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am
@@ -2,9 +2,10 @@ noinst_PROGRAMS = gtkvideooverlay
gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
+gtkvideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
gtkvideooverlay_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
index fae14491..19a98ac5 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
@@ -316,6 +316,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -402,6 +404,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -693,12 +696,14 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
+gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
all: all-am
diff --git a/tests/examples/gl/gtk/switchvideooverlay/Makefile.am b/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
index 12e25e75..dbe007cb 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
+++ b/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
@@ -2,9 +2,10 @@ noinst_PROGRAMS = switchvideooverlay
switchvideooverlay_SOURCES = main.cpp
-switchvideooverlay_CXXFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
+switchvideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
switchvideooverlay_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
diff --git a/tests/examples/gl/gtk/switchvideooverlay/Makefile.in b/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
index 3f282d94..a4b491d6 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
@@ -316,6 +316,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -402,6 +404,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -693,12 +696,14 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
switchvideooverlay_SOURCES = main.cpp
-switchvideooverlay_CXXFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
+switchvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
$(GL_CFLAGS) $(GTK3_CFLAGS)
switchvideooverlay_LDADD = ../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_GL_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
+ $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
$(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
all: all-am
diff --git a/tests/examples/gl/qt/Makefile.in b/tests/examples/gl/qt/Makefile.in
index 65b756c6..4c3d8996 100644
--- a/tests/examples/gl/qt/Makefile.in
+++ b/tests/examples/gl/qt/Makefile.in
@@ -258,6 +258,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -344,6 +346,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -635,6 +638,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
all: all-am
.SUFFIXES:
diff --git a/tests/examples/gl/sdl/Makefile.am b/tests/examples/gl/sdl/Makefile.am
index c0cd8386..12b51a64 100644
--- a/tests/examples/gl/sdl/Makefile.am
+++ b/tests/examples/gl/sdl/Makefile.am
@@ -7,12 +7,11 @@ noinst_PROGRAMS += sdlshare
sdlshare_SOURCES = sdlshare.c
-sdlshare_CFLAGS=$(GST_PLUGINS_GL_CFLAGS) $(GST_VIDEO_CFLAGS) $(GST_CFLAGS) \
+sdlshare_CFLAGS=$(GST_PLUGINS_BASE_CFLAGS)$(GST_CFLAGS) \
$(GL_CFLAGS) $(SDL_CFLAGS) \
-I$(top_srcdir)/gst-libs \
-I$(top_builddir)/gst-libs
-sdlshare_LDADD=$(GST_PLUGINS_GL_LIBS) $(GST_VIDEO_LIBS) $(GST_LIBS) \
- $(GL_LIBS) $(SDL_LIBS) \
+sdlshare_LDADD= $(GST_LIBS) $(GL_LIBS) $(SDL_LIBS) \
$(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la \
-lgstvideo-$(GST_API_VERSION)
diff --git a/tests/examples/gl/sdl/Makefile.in b/tests/examples/gl/sdl/Makefile.in
index 99686e6d..bd430d02 100644
--- a/tests/examples/gl/sdl/Makefile.in
+++ b/tests/examples/gl/sdl/Makefile.in
@@ -135,7 +135,6 @@ sdlshare_OBJECTS = $(am_sdlshare_OBJECTS)
am__DEPENDENCIES_1 =
@HAVE_SDL_TRUE@sdlshare_DEPENDENCIES = $(am__DEPENDENCIES_1) \
@HAVE_SDL_TRUE@ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
-@HAVE_SDL_TRUE@ $(am__DEPENDENCIES_1) \
@HAVE_SDL_TRUE@ $(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -321,6 +320,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -407,6 +408,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -698,14 +700,14 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
@HAVE_SDL_TRUE@sdlshare_SOURCES = sdlshare.c
-@HAVE_SDL_TRUE@sdlshare_CFLAGS = $(GST_PLUGINS_GL_CFLAGS) $(GST_VIDEO_CFLAGS) $(GST_CFLAGS) \
+@HAVE_SDL_TRUE@sdlshare_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS)$(GST_CFLAGS) \
@HAVE_SDL_TRUE@ $(GL_CFLAGS) $(SDL_CFLAGS) \
@HAVE_SDL_TRUE@ -I$(top_srcdir)/gst-libs \
@HAVE_SDL_TRUE@ -I$(top_builddir)/gst-libs
-@HAVE_SDL_TRUE@sdlshare_LDADD = $(GST_PLUGINS_GL_LIBS) $(GST_VIDEO_LIBS) $(GST_LIBS) \
-@HAVE_SDL_TRUE@ $(GL_LIBS) $(SDL_LIBS) \
+@HAVE_SDL_TRUE@sdlshare_LDADD = $(GST_LIBS) $(GL_LIBS) $(SDL_LIBS) \
@HAVE_SDL_TRUE@ $(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_API_VERSION).la \
@HAVE_SDL_TRUE@ -lgstvideo-$(GST_API_VERSION)
diff --git a/tests/examples/mpegts/Makefile.in b/tests/examples/mpegts/Makefile.in
index 00f74368..5d3d7e94 100644
--- a/tests/examples/mpegts/Makefile.in
+++ b/tests/examples/mpegts/Makefile.in
@@ -312,6 +312,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -398,6 +400,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -689,6 +692,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
tsparser_SOURCES = ts-parser.c
tsparser_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) $(GST_CFLAGS)
tsparser_LDFLAGS = $(GST_LIBS)
diff --git a/tests/examples/mpegts/ts-parser.c b/tests/examples/mpegts/ts-parser.c
index 978d4312..86c53ee2 100644
--- a/tests/examples/mpegts/ts-parser.c
+++ b/tests/examples/mpegts/ts-parser.c
@@ -62,21 +62,22 @@ gst_info_dump_mem_line (gchar * linebuf, gsize linebuf_size,
}
static void
-dump_memory_content (GstMpegTsDescriptor * desc, guint spacing)
+dump_memory_bytes (guint8 * data, guint len, guint spacing)
{
gsize off = 0;
- while (off < desc->length) {
+ while (off < len) {
gchar buf[128];
/* gst_info_dump_mem_line will process 16 bytes at most */
- gst_info_dump_mem_line (buf, sizeof (buf), desc->data, off + 2,
- desc->length - off);
- g_printf ("%*s %s\n", spacing, "", buf);
+ gst_info_dump_mem_line (buf, sizeof (buf), data, off, len - off);
+ g_printf ("%*s %s\n", spacing, "", buf);
off += 16;
}
}
+#define dump_memory_content(desc, spacing) dump_memory_bytes((desc)->data + 2, (desc)->length, spacing)
+
static const gchar *
descriptor_name (gint val)
{
@@ -149,10 +150,70 @@ dump_cable_delivery_descriptor (GstMpegTsDescriptor * desc, guint spacing)
if (gst_mpegts_descriptor_parse_cable_delivery_system (desc, &res)) {
g_printf ("%*s Cable Delivery Descriptor\n", spacing, "");
g_printf ("%*s Frequency : %d Hz\n", spacing, "", res.frequency);
- g_printf ("%*s Outer FEC : %d\n", spacing, "", res.outer_fec);
- g_printf ("%*s modulation : %d\n", spacing, "", res.modulation);
+ g_printf ("%*s Outer FEC : %d (%s)\n", spacing, "", res.outer_fec,
+ enum_name (GST_TYPE_MPEG_TS_CABLE_OUTER_FEC_SCHEME, res.outer_fec));
+ g_printf ("%*s modulation : %d (%s)\n", spacing, "", res.modulation,
+ enum_name (GST_TYPE_MPEG_TS_MODULATION_TYPE, res.modulation));
g_printf ("%*s Symbol rate : %d sym/s\n", spacing, "", res.symbol_rate);
- g_printf ("%*s Inner FEC : %d\n", spacing, "", res.fec_inner);
+ g_printf ("%*s Inner FEC : %d (%s)\n", spacing, "", res.fec_inner,
+ enum_name (GST_TYPE_MPEG_TS_DVB_CODE_RATE, res.fec_inner));
+ }
+}
+
+static void
+dump_terrestrial_delivery (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GstMpegTsTerrestrialDeliverySystemDescriptor res;
+
+ if (gst_mpegts_descriptor_parse_terrestrial_delivery_system (desc, &res)) {
+ g_printf ("%*s Terrestrial Delivery Descriptor\n", spacing, "");
+ g_printf ("%*s Frequency : %d Hz\n", spacing, "", res.frequency);
+ g_printf ("%*s Bandwidth : %d Hz\n", spacing, "", res.bandwidth);
+ g_printf ("%*s Priority : %s\n", spacing, "",
+ res.priority ? "TRUE" : "FALSE");
+ g_printf ("%*s Time slicing : %s\n", spacing, "",
+ res.time_slicing ? "TRUE" : "FALSE");
+ g_printf ("%*s MPE FEC : %s\n", spacing, "",
+ res.mpe_fec ? "TRUE" : "FALSE");
+ g_printf ("%*s Constellation : %d (%s)\n", spacing, "",
+ res.constellation, enum_name (GST_TYPE_MPEG_TS_MODULATION_TYPE,
+ res.constellation));
+ g_printf ("%*s Hierarchy : %d (%s)\n", spacing, "", res.hierarchy,
+ enum_name (GST_TYPE_MPEG_TS_TERRESTRIAL_HIERARCHY, res.hierarchy));
+ g_printf ("%*s Code Rate HP : %d (%s)\n", spacing, "",
+ res.code_rate_hp, enum_name (GST_TYPE_MPEG_TS_DVB_CODE_RATE,
+ res.code_rate_hp));
+ g_printf ("%*s Code Rate LP : %d (%s)\n", spacing, "",
+ res.code_rate_lp, enum_name (GST_TYPE_MPEG_TS_DVB_CODE_RATE,
+ res.code_rate_lp));
+ g_printf ("%*s Guard Interval : %d (%s)\n", spacing, "",
+ res.guard_interval,
+ enum_name (GST_TYPE_MPEG_TS_TERRESTRIAL_GUARD_INTERVAL,
+ res.guard_interval));
+ g_printf ("%*s Transmission Mode : %d (%s)\n", spacing, "",
+ res.transmission_mode,
+ enum_name (GST_TYPE_MPEG_TS_TERRESTRIAL_TRANSMISSION_MODE,
+ res.transmission_mode));
+ g_printf ("%*s Other Frequency : %s\n", spacing, "",
+ res.other_frequency ? "TRUE" : "FALSE");
+ }
+}
+
+static void
+dump_dvb_service_list (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GPtrArray *res;
+
+ if (gst_mpegts_descriptor_parse_dvb_service_list (desc, &res)) {
+ guint i;
+ g_printf ("%*s DVB Service List Descriptor\n", spacing, "");
+ for (i = 0; i < res->len; i++) {
+ GstMpegTsDVBServiceListItem *item = g_ptr_array_index (res, i);
+ g_printf ("%*s Service #%d, id:0x%04x, type:0x%x (%s)\n",
+ spacing, "", i, item->service_id, item->type,
+ enum_name (GST_TYPE_MPEG_TS_DVB_SERVICE_TYPE, item->type));
+ }
+ g_ptr_array_unref (res);
}
}
@@ -174,6 +235,220 @@ dump_logical_channel_descriptor (GstMpegTsDescriptor * desc, guint spacing)
}
static void
+dump_multiligual_network_name (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GPtrArray *items;
+ if (gst_mpegts_descriptor_parse_dvb_multilingual_network_name (desc, &items)) {
+ guint i;
+ for (i = 0; i < items->len; i++) {
+ GstMpegTsDvbMultilingualNetworkNameItem *item =
+ g_ptr_array_index (items, i);
+ g_printf ("%*s item : %u\n", spacing, "", i);
+ g_printf ("%*s language_code : %s\n", spacing, "", item->language_code);
+ g_printf ("%*s network_name : %s\n", spacing, "", item->network_name);
+ }
+ g_ptr_array_unref (items);
+ }
+}
+
+static void
+dump_multiligual_bouquet_name (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GPtrArray *items;
+ if (gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name (desc, &items)) {
+ guint i;
+ for (i = 0; i < items->len; i++) {
+ GstMpegTsDvbMultilingualBouquetNameItem *item =
+ g_ptr_array_index (items, i);
+ g_printf ("%*s item : %u\n", spacing, "", i);
+ g_printf ("%*s language_code : %s\n", spacing, "", item->language_code);
+ g_printf ("%*s bouguet_name : %s\n", spacing, "", item->bouquet_name);
+ }
+ g_ptr_array_unref (items);
+ }
+}
+
+static void
+dump_multiligual_service_name (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GPtrArray *items;
+ if (gst_mpegts_descriptor_parse_dvb_multilingual_service_name (desc, &items)) {
+ guint i;
+ for (i = 0; i < items->len; i++) {
+ GstMpegTsDvbMultilingualServiceNameItem *item =
+ g_ptr_array_index (items, i);
+ g_printf ("%*s item : %u\n", spacing, "", i);
+ g_printf ("%*s language_code : %s\n", spacing, "", item->language_code);
+ g_printf ("%*s service_name : %s\n", spacing, "", item->service_name);
+ g_printf ("%*s provider_name : %s\n", spacing, "", item->provider_name);
+ }
+ g_ptr_array_unref (items);
+ }
+}
+
+static void
+dump_multiligual_component (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GPtrArray *items;
+ guint8 tag;
+ if (gst_mpegts_descriptor_parse_dvb_multilingual_component (desc, &tag,
+ &items)) {
+ guint8 i;
+ g_printf ("%*s component_tag : 0x%02x\n", spacing, "", tag);
+ for (i = 0; i < items->len; i++) {
+ GstMpegTsDvbMultilingualComponentItem *item =
+ g_ptr_array_index (items, i);
+ g_printf ("%*s item : %u\n", spacing, "", i);
+ g_printf ("%*s language_code : %s\n", spacing, "",
+ item->language_code);
+ g_printf ("%*s description : %s\n", spacing, "", item->description);
+ }
+ g_ptr_array_unref (items);
+ }
+}
+
+static void
+dump_linkage (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GstMpegTsDVBLinkageDescriptor res;
+
+ res.private_data_length = 0;
+ res.private_data_bytes = NULL;
+
+ if (gst_mpegts_descriptor_parse_dvb_linkage (desc, &res)) {
+ g_printf ("%*s Linkage Descriptor : 0x%02x (%s)\n", spacing, "",
+ res.linkage_type, enum_name (GST_TYPE_MPEG_TS_DVB_LINKAGE_TYPE,
+ res.linkage_type));
+
+ g_printf ("%*s Transport Stream ID : 0x%04x\n", spacing, "",
+ res.transport_stream_id);
+ g_printf ("%*s Original Network ID : 0x%04x\n", spacing, "",
+ res.original_network_id);
+ g_printf ("%*s Service ID : 0x%04x\n", spacing, "",
+ res.service_id);
+
+ switch (res.linkage_type) {
+ case GST_MPEGTS_DVB_LINKAGE_MOBILE_HAND_OVER:
+ {
+ GstMpegTsDVBLinkageMobileHandOver *linkage =
+ (GstMpegTsDVBLinkageMobileHandOver *) res.linkage_data;
+ g_printf ("%*s hand_over_type : 0x%02x (%s)\n", spacing,
+ "", linkage->hand_over_type,
+ enum_name (GST_TYPE_MPEG_TS_DVB_LINKAGE_HAND_OVER_TYPE,
+ linkage->hand_over_type));
+ g_printf ("%*s origin_type : %s\n", spacing, "",
+ linkage->origin_type ? "SDT" : "NIT");
+ g_printf ("%*s network_id : 0x%04x\n", spacing, "",
+ linkage->network_id);
+ g_printf ("%*s initial_service_id: 0x%04x\n", spacing, "",
+ linkage->initial_service_id);
+ break;
+ }
+ case GST_MPEGTS_DVB_LINKAGE_EVENT:
+ {
+ GstMpegTsDVBLinkageEvent *linkage =
+ (GstMpegTsDVBLinkageEvent *) res.linkage_data;
+ g_printf ("%*s target_event_id : 0x%04x\n", spacing, "",
+ linkage->target_event_id);
+ g_printf ("%*s target_listed : %s\n", spacing, "",
+ linkage->target_listed ? "TRUE" : "FALSE");
+ g_printf ("%*s event_simulcast : %s\n", spacing, "",
+ linkage->event_simulcast ? "TRUE" : "FALSE");
+ break;
+ }
+ case GST_MPEGTS_DVB_LINKAGE_EXTENDED_EVENT:
+ {
+ guint i;
+ GPtrArray *items = (GPtrArray *) res.linkage_data;
+
+ for (i = 0; i < items->len; i++) {
+ GstMpegTsDVBLinkageExtendedEvent *linkage =
+ g_ptr_array_index (items, i);
+ g_printf ("%*s target_event_id : 0x%04x\n", spacing, "",
+ linkage->target_event_id);
+ g_printf ("%*s target_listed : %s\n", spacing, "",
+ linkage->target_listed ? "TRUE" : "FALSE");
+ g_printf ("%*s event_simulcast : %s\n", spacing, "",
+ linkage->event_simulcast ? "TRUE" : "FALSE");
+ g_printf ("%*s link_type : 0x%01x\n", spacing, "",
+ linkage->link_type);
+ g_printf ("%*s target_id_type : 0x%01x\n", spacing, "",
+ linkage->target_id_type);
+ g_printf ("%*s original_network_id_flag : %s\n", spacing, "",
+ linkage->original_network_id_flag ? "TRUE" : "FALSE");
+ g_printf ("%*s service_id_flag : %s\n", spacing, "",
+ linkage->service_id_flag ? "TRUE" : "FALSE");
+ if (linkage->target_id_type == 3) {
+ g_printf ("%*s user_defined_id : 0x%02x\n", spacing, "",
+ linkage->user_defined_id);
+ } else {
+ if (linkage->target_id_type == 1)
+ g_printf ("%*s target_transport_stream_id : 0x%04x\n",
+ spacing, "", linkage->target_transport_stream_id);
+ if (linkage->original_network_id_flag)
+ g_printf ("%*s target_original_network_id : 0x%04x\n",
+ spacing, "", linkage->target_original_network_id);
+ if (linkage->service_id_flag)
+ g_printf ("%*s target_service_id : 0x%04x\n",
+ spacing, "", linkage->target_service_id);
+ }
+ }
+ break;
+ }
+ default:
+ break;
+ }
+ if (res.private_data_length > 0) {
+ dump_memory_bytes (res.private_data_bytes, res.private_data_length,
+ spacing + 2);
+ g_free ((gpointer) res.private_data_bytes);
+ }
+ }
+}
+
+static void
+dump_component (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GstMpegTsComponentDescriptor res;
+
+ res.text = NULL;
+
+ if (gst_mpegts_descriptor_parse_dvb_component (desc, &res)) {
+ g_printf ("%*s stream_content : 0x%02x (%s)\n", spacing, "",
+ res.stream_content,
+ enum_name (GST_TYPE_MPEG_TS_COMPONENT_STREAM_CONTENT,
+ res.stream_content));
+ g_printf ("%*s component_type : 0x%02x\n", spacing, "", res.component_type);
+ g_printf ("%*s component_tag : 0x%02x\n", spacing, "", res.component_tag);
+ g_printf ("%*s language_code : %s\n", spacing, "", res.language_code);
+ g_printf ("%*s text : %s\n", spacing, "",
+ res.text ? res.text : "NULL");
+ }
+}
+
+static void
+dump_content (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GPtrArray *contents;
+ guint i;
+
+ if (gst_mpegts_descriptor_parse_dvb_content (desc, &contents)) {
+ for (i = 0; i < contents->len; i++) {
+ GstMpegTsContent *item = g_ptr_array_index (contents, i);
+ g_printf ("%*s content nibble 1 : 0x%01x (%s)\n", spacing, "",
+ item->content_nibble_1,
+ enum_name (GST_TYPE_MPEG_TS_CONTENT_NIBBLE_HI,
+ item->content_nibble_1));
+ g_printf ("%*s content nibble 2 : 0x%01x\n", spacing, "",
+ item->content_nibble_2);
+ g_printf ("%*s user_byte : 0x%02x\n", spacing, "",
+ item->user_byte);
+ }
+ g_ptr_array_unref (contents);
+ }
+}
+
+static void
dump_iso_639_language (GstMpegTsDescriptor * desc, guint spacing)
{
guint i;
@@ -189,6 +464,25 @@ dump_iso_639_language (GstMpegTsDescriptor * desc, guint spacing)
}
}
+static void
+dump_dvb_extended_event (GstMpegTsDescriptor * desc, guint spacing)
+{
+ GstMpegTsExtendedEventDescriptor res;
+
+ if (gst_mpegts_descriptor_parse_dvb_extended_event (desc, &res)) {
+ guint i;
+ g_printf ("%*s DVB Extended Event\n", spacing, "");
+ g_printf ("%*s descriptor_number:%d, last_descriptor_number:%d\n",
+ spacing, "", res.descriptor_number, res.last_descriptor_number);
+ g_printf ("%*s language_code:%s\n", spacing, "", res.language_code);
+ g_printf ("%*s text : %s\n", spacing, "", res.text);
+ for (i = 0; i < res.items->len; i++) {
+ GstMpegTsExtendedEventItem *item = g_ptr_array_index (res.items, i);
+ g_printf ("%*s #%d [description:item] %s : %s\n",
+ spacing, "", i, item->item_description, item->item);
+ }
+ }
+}
static void
dump_descriptors (GPtrArray * descriptors, guint spacing)
@@ -221,9 +515,27 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
}
break;
}
+ case GST_MTS_DESC_DVB_SERVICE_LIST:
+ {
+ dump_dvb_service_list (desc, spacing + 2);
+ break;
+ }
case GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM:
dump_cable_delivery_descriptor (desc, spacing + 2);
break;
+ case GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM:
+ dump_terrestrial_delivery (desc, spacing + 2);
+ break;
+ case GST_MTS_DESC_DVB_BOUQUET_NAME:
+ {
+ gchar *bouquet_name;
+ if (gst_mpegts_descriptor_parse_dvb_bouquet_name (desc, &bouquet_name)) {
+ g_printf ("%*s Bouquet Name Descriptor, bouquet_name:%s\n", spacing,
+ "", bouquet_name);
+ g_free (bouquet_name);
+ }
+ break;
+ }
case GST_MTS_DESC_DTG_LOGICAL_CHANNEL:
dump_logical_channel_descriptor (desc, spacing + 2);
break;
@@ -245,6 +557,96 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
}
break;
}
+ case GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME:
+ {
+ dump_multiligual_bouquet_name (desc, spacing + 2);
+ break;
+ }
+ case GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME:
+ {
+ dump_multiligual_network_name (desc, spacing + 2);
+ break;
+ }
+ case GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME:
+ {
+ dump_multiligual_service_name (desc, spacing + 2);
+ break;
+ }
+ case GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT:
+ {
+ dump_multiligual_component (desc, spacing + 2);
+ break;
+ }
+ case GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER:
+ {
+ if (!DUMP_DESCRIPTORS)
+ dump_memory_content (desc, spacing + 2);
+ break;
+ }
+ case GST_MTS_DESC_DVB_FREQUENCY_LIST:
+ {
+ gboolean offset;
+ GArray *list;
+ if (gst_mpegts_descriptor_parse_dvb_frequency_list (desc, &offset,
+ &list)) {
+ guint j;
+ for (j = 0; j < list->len; j++) {
+ guint32 freq = g_array_index (list, guint32, j);
+ g_printf ("%*s Frequency : %u %s\n", spacing, "", freq,
+ offset ? "kHz" : "Hz");
+ }
+ g_array_unref (list);
+ }
+ break;
+ }
+ case GST_MTS_DESC_DVB_LINKAGE:
+ dump_linkage (desc, spacing + 2);
+ break;
+ case GST_MTS_DESC_DVB_COMPONENT:
+ dump_component (desc, spacing + 2);
+ break;
+ case GST_MTS_DESC_DVB_STREAM_IDENTIFIER:
+ {
+ guint8 tag;
+ if (gst_mpegts_descriptor_parse_dvb_stream_identifier (desc, &tag)) {
+ g_printf ("%*s Component Tag : 0x%02x\n", spacing, "", tag);
+ }
+ break;
+ }
+ case GST_MTS_DESC_DVB_CA_IDENTIFIER:
+ {
+ GArray *list;
+ guint j;
+ guint16 ca_id;
+ if (gst_mpegts_descriptor_parse_dvb_ca_identifier (desc, &list)) {
+ for (j = 0; j < list->len; j++) {
+ ca_id = g_array_index (list, guint16, j);
+ g_printf ("%*s CA Identifier : 0x%04x\n", spacing, "", ca_id);
+ }
+ g_array_unref (list);
+ }
+ break;
+ }
+ case GST_MTS_DESC_DVB_CONTENT:
+ dump_content (desc, spacing + 2);
+ break;
+ case GST_MTS_DESC_DVB_PARENTAL_RATING:
+ {
+ GPtrArray *ratings;
+ guint j;
+
+ if (gst_mpegts_descriptor_parse_dvb_parental_rating (desc, &ratings)) {
+ for (j = 0; j < ratings->len; j++) {
+ GstMpegTsDVBParentalRatingItem *item =
+ g_ptr_array_index (ratings, j);
+ g_printf ("%*s country_code : %s\n", spacing, "",
+ item->country_code);
+ g_printf ("%*s rating age : %d\n", spacing, "", item->rating);
+ }
+ g_ptr_array_unref (ratings);
+ }
+ break;
+ }
case GST_MTS_DESC_ISO_639_LANGUAGE:
dump_iso_639_language (desc, spacing + 2);
break;
@@ -263,17 +665,22 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
}
}
break;
+ case GST_MTS_DESC_DVB_EXTENDED_EVENT:
+ {
+ dump_dvb_extended_event (desc, spacing + 2);
+ break;
+ }
case GST_MTS_DESC_DVB_SUBTITLING:
{
gchar lang[4];
guint8 type;
guint16 composition;
guint16 ancillary;
- guint i;
+ guint j;
- for (i = 0;
- gst_mpegts_descriptor_parse_dvb_subtitling_idx (desc, i, &lang,
- &type, &composition, &ancillary); i++) {
+ for (j = 0;
+ gst_mpegts_descriptor_parse_dvb_subtitling_idx (desc, j, &lang,
+ &type, &composition, &ancillary); j++) {
g_printf ("%*s Subtitling, language_code:%s\n", spacing, "", lang);
g_printf ("%*s type : %u\n", spacing, "", type);
g_printf ("%*s composition page id : %u\n", spacing, "",
@@ -288,11 +695,11 @@ dump_descriptors (GPtrArray * descriptors, guint spacing)
GstMpegTsDVBTeletextType type;
gchar lang[4];
guint8 magazine, page_number;
- guint i;
+ guint j;
- for (i = 0;
- gst_mpegts_descriptor_parse_dvb_teletext_idx (desc, i, &lang, &type,
- &magazine, &page_number); i++) {
+ for (j = 0;
+ gst_mpegts_descriptor_parse_dvb_teletext_idx (desc, j, &lang, &type,
+ &magazine, &page_number); j++) {
g_printf ("%*s Teletext, type:0x%02x (%s)\n", spacing, "", type,
enum_name (GST_TYPE_MPEG_TS_DVB_TELETEXT_TYPE, type));
g_printf ("%*s language : %s\n", spacing, "", lang);
@@ -387,6 +794,102 @@ dump_eit (GstMpegTsSection * section)
}
static void
+dump_atsc_mult_string (GPtrArray * mstrings, guint spacing)
+{
+ guint i;
+
+ for (i = 0; i < mstrings->len; i++) {
+ GstMpegTsAtscMultString *mstring = g_ptr_array_index (mstrings, i);
+ gint j, n;
+
+ n = mstring->segments->len;
+
+ g_printf ("%*s [multstring entry (%d) iso_639 langcode: %s]\n", spacing, "",
+ i, mstring->iso_639_langcode);
+ g_printf ("%*s segments:%d\n", spacing, "", n);
+ for (j = 0; j < n; j++) {
+ GstMpegTsAtscStringSegment *segment =
+ g_ptr_array_index (mstring->segments, j);
+
+ g_printf ("%*s Compression:0x%x\n", spacing, "",
+ segment->compression_type);
+ g_printf ("%*s Mode:0x%x\n", spacing, "", segment->mode);
+ g_printf ("%*s Len:%u\n", spacing, "", segment->compressed_data_size);
+ g_printf ("%*s %s\n", spacing, "",
+ gst_mpegts_atsc_string_segment_get_string (segment));
+ }
+ }
+}
+
+static void
+dump_atsc_eit (GstMpegTsSection * section)
+{
+ const GstMpegTsAtscEIT *eit = gst_mpegts_section_get_atsc_eit (section);
+ guint i, len;
+
+ g_assert (eit);
+
+ g_printf (" event_id : 0x%04x\n", eit->source_id);
+ g_printf (" protocol_version : %u\n", eit->protocol_version);
+
+ len = eit->events->len;
+ g_printf (" %d Event(s):\n", len);
+ for (i = 0; i < len; i++) {
+ GstMpegTsAtscEITEvent *event = g_ptr_array_index (eit->events, i);
+
+ g_printf (" %d)\n", i);
+ g_printf (" event_id: 0x%04x\n", event->event_id);
+ g_printf (" start_time: %u\n", event->start_time);
+ g_printf (" etm_location: 0x%x\n", event->etm_location);
+ g_printf (" length_in_seconds: %u\n", event->length_in_seconds);
+ g_printf (" Title(s):\n");
+ dump_atsc_mult_string (event->titles, 9);
+ dump_descriptors (event->descriptors, 9);
+ }
+}
+
+static void
+dump_ett (GstMpegTsSection * section)
+{
+ const GstMpegTsAtscETT *ett = gst_mpegts_section_get_atsc_ett (section);
+ guint len;
+
+ g_assert (ett);
+
+ g_printf (" ett_table_id_ext : 0x%04x\n", ett->ett_table_id_extension);
+ g_printf (" protocol_version : 0x%04x\n", ett->protocol_version);
+ g_printf (" etm_id : 0x%04x\n", ett->etm_id);
+
+ len = ett->messages->len;
+ g_printf (" %d Messages(s):\n", len);
+ dump_atsc_mult_string (ett->messages, 9);
+}
+
+static void
+dump_stt (GstMpegTsSection * section)
+{
+ const GstMpegTsAtscSTT *stt = gst_mpegts_section_get_atsc_stt (section);
+ GstDateTime *dt;
+ gchar *dt_str = NULL;
+
+ g_assert (stt);
+
+ dt = gst_mpegts_atsc_stt_get_datetime_utc ((GstMpegTsAtscSTT *) stt);
+ if (dt)
+ dt_str = gst_date_time_to_iso8601_string (dt);
+
+ g_printf (" protocol_version : 0x%04x\n", stt->protocol_version);
+ g_printf (" system_time : 0x%08x\n", stt->system_time);
+ g_printf (" gps_utc_offset : %d\n", stt->gps_utc_offset);
+ g_printf (" daylight saving : %d day:%d hour:%d\n", stt->ds_status,
+ stt->ds_dayofmonth, stt->ds_hour);
+ g_printf (" utc datetime : %s", dt_str);
+
+ g_free (dt_str);
+ gst_date_time_unref (dt);
+}
+
+static void
dump_nit (GstMpegTsSection * section)
{
const GstMpegTsNIT *nit = gst_mpegts_section_get_nit (section);
@@ -486,6 +989,69 @@ dump_tot (GstMpegTsSection * section)
}
static void
+dump_mgt (GstMpegTsSection * section)
+{
+ const GstMpegTsAtscMGT *mgt = gst_mpegts_section_get_atsc_mgt (section);
+ gint i;
+
+ g_printf (" protocol_version : %u\n", mgt->protocol_version);
+ g_printf (" tables number : %d\n", mgt->tables->len);
+ for (i = 0; i < mgt->tables->len; i++) {
+ GstMpegTsAtscMGTTable *table = g_ptr_array_index (mgt->tables, i);
+ g_printf (" table %d)\n", i);
+ g_printf (" table_type : %u\n", table->table_type);
+ g_printf (" pid : 0x%x\n", table->pid);
+ g_printf (" version_number: %u\n", table->version_number);
+ g_printf (" number_bytes : %u\n", table->number_bytes);
+ dump_descriptors (table->descriptors, 9);
+ }
+ dump_descriptors (mgt->descriptors, 7);
+}
+
+static void
+dump_vct (GstMpegTsSection * section)
+{
+ const GstMpegTsAtscVCT *vct;
+ gint i;
+
+ if (GST_MPEGTS_SECTION_TYPE (section) == GST_MPEGTS_SECTION_ATSC_CVCT) {
+ vct = gst_mpegts_section_get_atsc_cvct (section);
+ } else {
+ /* GST_MPEGTS_SECTION_ATSC_TVCT */
+ vct = gst_mpegts_section_get_atsc_tvct (section);
+ }
+
+ g_assert (vct);
+
+ g_printf (" transport_stream_id : 0x%04x\n", vct->transport_stream_id);
+ g_printf (" protocol_version : %u\n", vct->protocol_version);
+ g_printf (" %d Sources:\n", vct->sources->len);
+ for (i = 0; i < vct->sources->len; i++) {
+ GstMpegTsAtscVCTSource *source = g_ptr_array_index (vct->sources, i);
+ g_print (" short_name: %s\n", source->short_name);
+ g_print (" major_channel_number: %u, minor_channel_number: %u\n",
+ source->major_channel_number, source->minor_channel_number);
+ g_print (" modulation_mode: %u\n", source->modulation_mode);
+ g_print (" carrier_frequency: %u\n", source->carrier_frequency);
+ g_print (" channel_tsid: %u\n", source->channel_TSID);
+ g_print (" program_number: %u\n", source->program_number);
+ g_print (" ETM_location: %u\n", source->ETM_location);
+ g_print (" access_controlled: %u\n", source->access_controlled);
+ g_print (" hidden: %u\n", source->hidden);
+ if (section->table_id == GST_MPEGTS_SECTION_ATSC_CVCT) {
+ g_print (" path_select: %u\n", source->path_select);
+ g_print (" out_of_band: %u\n", source->out_of_band);
+ }
+ g_print (" hide_guide: %u\n", source->hide_guide);
+ g_print (" service_type: %u\n", source->service_type);
+ g_print (" source_id: %u\n", source->source_id);
+
+ dump_descriptors (source->descriptors, 9);
+ }
+ dump_descriptors (vct->descriptors, 7);
+}
+
+static void
dump_section (GstMpegTsSection * section)
{
switch (GST_MPEGTS_SECTION_TYPE (section)) {
@@ -513,6 +1079,22 @@ dump_section (GstMpegTsSection * section)
case GST_MPEGTS_SECTION_EIT:
dump_eit (section);
break;
+ case GST_MPEGTS_SECTION_ATSC_MGT:
+ dump_mgt (section);
+ break;
+ case GST_MPEGTS_SECTION_ATSC_CVCT:
+ case GST_MPEGTS_SECTION_ATSC_TVCT:
+ dump_vct (section);
+ break;
+ case GST_MPEGTS_SECTION_ATSC_EIT:
+ dump_atsc_eit (section);
+ break;
+ case GST_MPEGTS_SECTION_ATSC_ETT:
+ dump_ett (section);
+ break;
+ case GST_MPEGTS_SECTION_ATSC_STT:
+ dump_stt (section);
+ break;
default:
g_printf (" Unknown section type\n");
break;
@@ -596,6 +1178,16 @@ main (int argc, gchar ** argv)
g_type_class_ref (GST_TYPE_MPEG_TS_SECTION_DVB_TABLE_ID);
g_type_class_ref (GST_TYPE_MPEG_TS_SECTION_ATSC_TABLE_ID);
g_type_class_ref (GST_TYPE_MPEG_TS_SECTION_SCTE_TABLE_ID);
+ g_type_class_ref (GST_TYPE_MPEG_TS_MODULATION_TYPE);
+ g_type_class_ref (GST_TYPE_MPEG_TS_DVB_CODE_RATE);
+ g_type_class_ref (GST_TYPE_MPEG_TS_CABLE_OUTER_FEC_SCHEME);
+ g_type_class_ref (GST_TYPE_MPEG_TS_TERRESTRIAL_TRANSMISSION_MODE);
+ g_type_class_ref (GST_TYPE_MPEG_TS_TERRESTRIAL_GUARD_INTERVAL);
+ g_type_class_ref (GST_TYPE_MPEG_TS_TERRESTRIAL_HIERARCHY);
+ g_type_class_ref (GST_TYPE_MPEG_TS_DVB_LINKAGE_TYPE);
+ g_type_class_ref (GST_TYPE_MPEG_TS_DVB_LINKAGE_HAND_OVER_TYPE);
+ g_type_class_ref (GST_TYPE_MPEG_TS_COMPONENT_STREAM_CONTENT);
+ g_type_class_ref (GST_TYPE_MPEG_TS_CONTENT_NIBBLE_HI);
mainloop = g_main_loop_new (NULL, FALSE);
diff --git a/tests/examples/mxf/Makefile.in b/tests/examples/mxf/Makefile.in
index b444294a..f2130c8a 100644
--- a/tests/examples/mxf/Makefile.in
+++ b/tests/examples/mxf/Makefile.in
@@ -316,6 +316,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -402,6 +404,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -693,6 +696,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
mxfdemux_structure_SOURCES = mxfdemux-structure.c
mxfdemux_structure_CFLAGS = $(GST_CFLAGS) $(GTK_CFLAGS)
mxfdemux_structure_LDFLAGS = $(GST_LIBS) $(GTK_LIBS)
diff --git a/tests/examples/opencv/Makefile.in b/tests/examples/opencv/Makefile.in
index ea233d18..34b06f54 100644
--- a/tests/examples/opencv/Makefile.in
+++ b/tests/examples/opencv/Makefile.in
@@ -328,6 +328,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -414,6 +416,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -705,6 +708,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
gstmotioncells_dynamic_test_SOURCES = \
gstmotioncells_dynamic_test.c \
gst_element_print_properties.c
diff --git a/tests/examples/uvch264/Makefile.in b/tests/examples/uvch264/Makefile.in
index 9ae29418..3c3140b3 100644
--- a/tests/examples/uvch264/Makefile.in
+++ b/tests/examples/uvch264/Makefile.in
@@ -320,6 +320,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -406,6 +408,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -697,6 +700,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
TEST_UVCH264_GLADE_FILES = window.glade \
boolean_property.glade \
enum_property.glade \
diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in
index c8d76603..8db7ed5b 100644
--- a/tests/files/Makefile.in
+++ b/tests/files/Makefile.in
@@ -258,6 +258,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -344,6 +346,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -635,6 +638,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
EXTRA_DIST = \
barcode.png \
cbr_stream.mp3 \
diff --git a/tests/icles/Makefile.in b/tests/icles/Makefile.in
index d609fbe4..f8e654cc 100644
--- a/tests/icles/Makefile.in
+++ b/tests/icles/Makefile.in
@@ -327,6 +327,8 @@ GMSGFMT_015 = @GMSGFMT_015@
GMYTH_CFLAGS = @GMYTH_CFLAGS@
GMYTH_LIBS = @GMYTH_LIBS@
GNUSTEP_CONFIG = @GNUSTEP_CONFIG@
+GRAPHENE_CFLAGS = @GRAPHENE_CFLAGS@
+GRAPHENE_LIBS = @GRAPHENE_LIBS@
GREP = @GREP@
GSETTINGS_CFLAGS = @GSETTINGS_CFLAGS@
GSETTINGS_DISABLE_SCHEMAS_COMPILE = @GSETTINGS_DISABLE_SCHEMAS_COMPILE@
@@ -413,6 +415,7 @@ HAVE_FLITE = @HAVE_FLITE@
HAVE_GL = @HAVE_GL@
HAVE_GLES2 = @HAVE_GLES2@
HAVE_GLU = @HAVE_GLU@
+HAVE_GRAPHENE = @HAVE_GRAPHENE@
HAVE_GSM = @HAVE_GSM@
HAVE_GTK3 = @HAVE_GTK3@
HAVE_JPEG = @HAVE_JPEG@
@@ -704,6 +707,7 @@ target_vendor = @target_vendor@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
+wayland_scanner = @wayland_scanner@
@USE_SOUNDTOUCH_FALSE@GST_SOUNDTOUCH_TESTS =
@USE_SOUNDTOUCH_TRUE@GST_SOUNDTOUCH_TESTS = pitch-test
@USE_SOUNDTOUCH_TRUE@pitch_test_SOURCES = pitch-test.c