diff --git a/ChangeLog b/ChangeLog index 9f7366f17f..238df30fd1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +2006-03-14 Edward Hervey + + * configure.ac: + Only require GStreamer core >= 0.10.2 + Detect version of core the bindings are being compiled against and + write gst/gstversion.override file with eventual API additions that + should be ignored. + * gst/Makefile.am: + * gst/base.defs: + Added gst_base_sync_[set|get]_[sync|max_lateness]() and + gst_type_find_helper_get_range() definitions + * gst/gst-0.10.3.ignore: + API added in gstreamer core 0.10.3 + * gst/gst-0.10.4.ignore: + API added in gstreamer core 0.10.4 + * gst/gst.override: + Include gstversion.override. + * gst/gstversion.override.in: + Magic file for API additions to ignore. + 2006-03-14 Edward Hervey * codegen/codegen.py: diff --git a/configure.ac b/configure.ac index e4a9ed4544..e22cc136b5 100644 --- a/configure.ac +++ b/configure.ac @@ -27,7 +27,7 @@ dnl required versions of other packages AC_SUBST(PYGTK_REQ, 2.6.3) AC_SUBST(GLIB_REQ, 2.6.0) AC_SUBST(GTK_REQ, 2.6.0) -AC_SUBST(GST_REQ, 0.10.3.1) +AC_SUBST(GST_REQ, 0.10.2) AC_SUBST(GSTPB_REQ, 0.10.0.2) @@ -60,6 +60,35 @@ PKG_CHECK_MODULES(GST, gstreamer-$GST_MAJORMINOR >= $GST_REQ) AC_SUBST(GST_CFLAGS) AC_SUBST(GST_LIBS) +dnl get the installed GStreamer core version +GST_MINOR_VERSION=`$PKG_CONFIG --modversion gstreamer-$GST_MAJORMINOR | cut -f 3 -d.` + +echo "Building against GStreamer core 0.10.$GST_MINOR_VERSION , ignoring API additions if needed" + +dnl Magic for allowing new API additions without forcing dependency on new core +dnl release. The lines do the magic so that new API additions are ignored at +dnl compile time. +dnl * Also see gst/gstversion.override.in and gst-0.10.*.override +dnl The following lines should be updated whenever: +dnl _ GST_REQ is up-ed (remove obsolete lines + gst-0.10.MINOR.ignore) +dnl _ new core/base is released (add lines + gst-0.10.MINOR.ignore) + +if test $GST_MINOR_VERSION -lt "3" +then + IGNORE_GST_0_10_3="gst-0.10.3.ignore" +else + IGNORE_GST_0_10_3="" +fi +AC_SUBST(IGNORE_GST_0_10_3) + +if test $GST_MINOR_VERSION -lt "4" +then + IGNORE_GST_0_10_4="gst-0.10.4.ignore" +else + IGNORE_GST_0_10_4="" +fi +AC_SUBST(IGNORE_GST_0_10_4) + dnl check for gstreamer-base; uninstalled is selected preferentially PKG_CHECK_MODULES(GST_BASE, gstreamer-base-$GST_MAJORMINOR >= $GST_REQ, HAVE_GST_BASE="yes", HAVE_GST_BASE="no") @@ -176,6 +205,7 @@ AC_OUTPUT([ Makefile codegen/Makefile gst/Makefile + gst/gstversion.override gst/extend/Makefile examples/Makefile pkgconfig/Makefile diff --git a/gst/Makefile.am b/gst/Makefile.am index c1dc268659..6218f4121b 100644 --- a/gst/Makefile.am +++ b/gst/Makefile.am @@ -22,8 +22,12 @@ defsdir = $(pkgdatadir)/$(GST_MAJORMINOR)/defs noinst_HEADERS = common.h pygstvalue.h pygstminiobject.h pygstobject.h pygstexception.h +versioned_overrides = \ + gst-0.10.3.ignore \ + gst-0.10.4.ignore + INCLUDES = $(PYTHON_INCLUDES) -EXTRA_DIST = $(defs_DATA) common.h arg-types.py +EXTRA_DIST = $(defs_DATA) $(versioned_overrides) common.h arg-types.py PYGTK_DEFSDIR = @PYGTK_DEFSDIR@ GEN_FILES = arg-types.py gst-types.defs libs.defs base.defs @@ -44,6 +48,7 @@ _gst_la_SOURCES = \ nodist__gst_la_SOURCES = gst.c GST_OVERRIDES = \ gst.override \ + gstversion.override \ gstbin.override \ gstbuffer.override \ gstbus.override \ @@ -62,8 +67,8 @@ GST_OVERRIDES = \ GST_DEFS = gst.defs gst-types.defs gst-extrafuncs.defs libs.defs base.defs CLEANFILES = gst.c -EXTRA_DIST += $(GST_DEFS) $(GST_OVERRIDES) -gst.c: $(GST_DEFS) $(GST_OVERRIDES) $(GEN_FILES) +EXTRA_DIST += $(GST_DEFS) $(GST_OVERRIDES) gstversion.override.in +gst.c: $(GST_DEFS) $(GST_OVERRIDES) $(GEN_FILES) gstversion.override # GStreamer interfaces bindings interfaces_la_CFLAGS = $(common_cflags) $(GST_PLUGINS_BASE_CFLAGS) @@ -83,6 +88,7 @@ interfaces.c: $(INTERFACES_DEFS) $(INTERFACES_OVERRIDES) $(GEN_FILES) --load-types $(srcdir)/arg-types.py \ --register $(srcdir)/gst-types.defs \ --override $*.override \ + --extendpath $(top_builddir)/gst/ \ --prefix py$* $*.defs) > gen-$*.c \ && cp gen-$*.c $*.c \ && rm -f gen-$*.c diff --git a/gst/base.defs b/gst/base.defs index 51041f5d14..4e37e7dedb 100644 --- a/gst/base.defs +++ b/gst/base.defs @@ -131,6 +131,37 @@ (return-type "GType") ) + +(define-method set_sync + (of-object "GstBaseSink") + (c-name "gst_base_sink_set_sync") + (return-type "none") + (parameters + '("gboolean" "sync") + ) +) + +(define-method get_sync + (of-object "GstBaseSink") + (c-name "gst_base_sink_get_sync") + (return-type "gboolean") +) + +(define-method set_max_lateness + (of-object "GstBaseSink") + (c-name "gst_base_sink_set_max_lateness") + (return-type "none") + (parameters + '("gint64" "max_lateness") + ) +) + +(define-method get_max_lateness + (of-object "GstBaseSink") + (c-name "gst_base_sink_get_max_lateness") + (return-type "gint64") +) + (define-virtual get_caps (of-object "GstBaseSink") (return-type "GstCaps*") @@ -631,3 +662,14 @@ '("GstTypeFindProbability*" "prob") ) ) + +(define-function type_find_helper_get_range + (c-name "gst_type_find_helper_get_range") + (return-type "GstCaps*") + (parameters + '("GstObject*" "obj") + '("GstTypeFindHelperGetRangeFunction" "func") + '("guint64" "size") + '("GstTypeFindProbability*" "prob") + ) +) diff --git a/gst/gst-0.10.3.ignore b/gst/gst-0.10.3.ignore new file mode 100644 index 0000000000..cd06438112 --- /dev/null +++ b/gst/gst-0.10.3.ignore @@ -0,0 +1,9 @@ +%% +ignore + gst_bin_iterate_sources + gst_bin_find_unconnected_pad + gst_buffer_is_metadata_writable + gst_buffer_make_metadata_writable + gst_parse_bin_from_description + gst_index_add_associationv +%% diff --git a/gst/gst-0.10.4.ignore b/gst/gst-0.10.4.ignore new file mode 100644 index 0000000000..0edf0b0877 --- /dev/null +++ b/gst/gst-0.10.4.ignore @@ -0,0 +1,21 @@ +%% +ignore + gst_bus_enable_sync_message_emission + gst_bus_disable_sync_message_emission + gst_pipeline_set_auto_flush_bus + gst_pipeline_get_auto_flush_bus + gst_query_set_formats + gst_query_set_formatsv + gst_query_new_formats + gst_query_parse_formats_length + gst_query_parse_formats_nth + gst_type_find_helper_for_buffer + gst_type_find_helper_get_range + gst_uri_has_protocol + GstBaseSrc__do_check_get_range + GstBaseSrc__proxy_do_check_get_range + gst_base_sink_set_sync + gst_base_sink_get_sync + gst_base_sink_set_max_lateness + gst_base_sink_get_max_lateness +%% diff --git a/gst/gst.override b/gst/gst.override index 5af1839d24..3a3246cd95 100644 --- a/gst/gst.override +++ b/gst/gst.override @@ -247,6 +247,7 @@ include gsttaglist.override gstlibs.override gstbase.override + gstversion.override %% init { @@ -307,6 +308,43 @@ ignore gst_plugin_get_module gst_object_sink %% +/* + Magic to be able to use bugfixes of new releases without having to use + newer core/base +*/ +#warn your mom ! +ignore +#if (GST_VERSION_MICRO < 5) +# if (GST_VERSION_MICRO < 4) +# if (GST_VERSION_MICRO < 3) +#warning Version smaller than .3 +/* API added between 0.10.2 and 0.10.3 */ + gst_bin_iterate_sources + gst_bin_find_unconnected_pad + gst_buffer_is_metadata_writable + gst_buffer_make_metadata_writable + gst_parse_bin_from_description +# endif +#warning Version smaller than .4 +/* API added between 0.10.3 and 0.10.4 */ + gst_bus_enable_sync_message_emission + gst_bus_disable_sync_message_emission + gst_pipeline_set_auto_flush_bus + gst_pipeline_get_auto_flush_bus + gst_query_set_formats + gst_query_new_formats + gst_query_parse_formats_length + gst_query_parse_formats_nth + gst_type_find_helper_for_buffer + gst_uri_has_protocol + GstBaseSrc__do_check_get_range + GstBaseSrc__proxy_do_check_get_range +# endif +#warning Version smaller than .5 +/* API Added between 0.10.4 and 0.10.5 */ + +#endif +%% override-slot GstPluginFeature.tp_repr static PyObject * _wrap_gst_plugin_feature_tp_repr(PyObject *self) diff --git a/gst/gstversion.override.in b/gst/gstversion.override.in new file mode 100644 index 0000000000..c6a970abdd --- /dev/null +++ b/gst/gstversion.override.in @@ -0,0 +1,5 @@ +%% +include +@IGNORE_GST_0_10_3@ +@IGNORE_GST_0_10_4@ +%%