diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2014-06-22 19:09:53 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2014-06-22 19:09:53 +0200 |
commit | 1491e0386faa0ed4d5b2b072c84651b90a2fccd6 (patch) | |
tree | b4e59eacecb04983e57e9cbe410511b879792380 /tests | |
parent | 543e3a3e468572edb15814e903a804d8912ae18c (diff) |
Imported Upstream version 1.3.3upstream/1.3.3
Diffstat (limited to 'tests')
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, ¶ms); 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 |