? xmldep.diff ? gst/gstregistrybinary.c ? gst/gstregistrybinary.h ? gst/libgstreamer_0.10_la-gstregistryxml.loT ? libs/gst/gstconfig.h ? libs/gst/gstconfig.h.in ? libs/gst/base/libgstbase_0.10_la-gstadapter.loT Index: configure.ac =================================================================== RCS file: /cvs/gstreamer/gstreamer/configure.ac,v retrieving revision 1.488 diff -u -p -n -r1.488 configure.ac *** configure.ac 9 Nov 2006 14:37:37 -0000 1.488 --- configure.ac 23 Feb 2007 16:13:53 -0000 *************** if test "x$USE_POISONING" = xyes; then *** 191,196 **** --- 191,215 ---- [Define if we should poison deallocated memory]) fi + dnl Use binary registry + AC_ARG_ENABLE(binary-registry, + AC_HELP_STRING([--enable-binary-registry], + [enable experimental binary registry]), + [ + case "${enableval}" in + yes) USE_BINARY_REGISTRY=yes ;; + no) USE_BINARY_REGISTRY=no ;; + *) AC_MSG_ERROR(bad value ${enableval} for --enable-binary-registry) ;; + esac + ], + [USE_BINARY_REGISTRY=no]) dnl Default value + if test "x$USE_BINARY_REGISTRY" = xyes; then + AC_DEFINE(USE_BINARY_REGISTRY, 1, + [Define if we should use binary registry instead xml registry]) + fi + + + dnl *** checks for platform *** dnl * hardware/architecture * *************** AC_SUBST(GST_HAVE_GLIB_2_8_DEFINE) *** 366,382 **** dnl Check for glib2 without extra fat, useful for the unversioned tool frontends PKG_CHECK_MODULES(GLIB_ONLY, glib-2.0 >= $GLIB_REQ) ! dnl libxml 2, which is/should be optional (FIXME) ! if test "x$GST_DISABLE_LOADSAVE" = "xyes" && \ ! test "x$GST_DISABLE_REGISTRY" = "xyes" then AC_MSG_NOTICE([Registry and load/save are disabled, not checking for libxml2]) else dnl check for libxml2 with minimum req version GST_LIBXML2_CHECK(2.4.9) fi dnl check for "check", unit testing library/header AM_PATH_CHECK(0.9.2, [ --- 385,416 ---- dnl Check for glib2 without extra fat, useful for the unversioned tool frontends PKG_CHECK_MODULES(GLIB_ONLY, glib-2.0 >= $GLIB_REQ) ! ! NO_XML="no" dnl libxml 2, which is/should be optional (FIXME) ! if (test "x$GST_DISABLE_LOADSAVE" = "xyes" && \ ! (test "x$GST_DISABLE_REGISTRY" = "xyes" || ! test "x$USE_BINARY_REGISTRY" = "xyes")) then + NO_XML="yes" AC_MSG_NOTICE([Registry and load/save are disabled, not checking for libxml2]) else dnl check for libxml2 with minimum req version GST_LIBXML2_CHECK(2.4.9) fi + dnl have a automake variable when xml is totally disabled + AM_CONDITIONAL(GST_NO_XML, test "x$NO_XML" = "xyes") + AM_CONDITIONAL(GST_XML_REGISTRY, test "x$NO_XML" = "xno" && test "x$GST_DISABLE_REGISTRY" = "xno") + AM_CONDITIONAL(GST_BIN_REGISTRY, test "x$NO_XML" = "xyes" && test "x$GST_DISABLE_REGISTRY" = "xno") + + + + if test "x$NO_XML" = "xyes" + then + AC_DEFINE(NO_XML, 1, [No XML dep]) + fi + dnl check for "check", unit testing library/header AM_PATH_CHECK(0.9.2, [ *************** dnl - src and build dirs need to be adde *** 446,452 **** --- 480,491 ---- dnl will need the GStreamer source and generated headers dnl LIBS: XML doesn't need to be added because we don't explicitly use symbols dnl from LibXML except for in the core library + if test "x$NO_XML" = "xyes"; then + GST_ALL_CFLAGS="-I\$(top_srcdir)/libs -I\$(top_srcdir) -I\$(top_builddir) $GLIB_CFLAGS \$(GST_OPTION_CFLAGS)" + else GST_ALL_CFLAGS="-I\$(top_srcdir)/libs -I\$(top_srcdir) -I\$(top_builddir) $GLIB_CFLAGS $XML_CFLAGS \$(GST_OPTION_CFLAGS)" + fi + dnl FIXME: check if LTLIBINTL is needed everywhere dnl I presume it is given that it contains the symbols that _() stuff maps to GST_ALL_LIBS="$GLIB_LIBS $LTLIBINTL \$(GCOV_LIBS)" *************** gst/parse/Makefile *** 486,491 **** --- 525,531 ---- libs/Makefile libs/gst/Makefile libs/gst/base/Makefile + libs/gst/gstconfig.h libs/gst/check/Makefile libs/gst/controller/Makefile libs/gst/dataprotocol/Makefile Index: docs/gst/gstreamer-sections.txt =================================================================== RCS file: /cvs/gstreamer/gstreamer/docs/gst/gstreamer-sections.txt,v retrieving revision 1.279 diff -u -p -n -r1.279 gstreamer-sections.txt *** docs/gst/gstreamer-sections.txt 6 Nov 2006 15:14:46 -0000 1.279 --- docs/gst/gstreamer-sections.txt 23 Feb 2007 16:13:54 -0000 *************** gst_registry_lookup_feature *** 1650,1655 **** --- 1650,1657 ---- gst_registry_scan_path gst_registry_xml_read_cache gst_registry_xml_write_cache + gst_registry_binary_read_cache + gst_registry_binary_write_cache gst_registry_lookup gst_registry_remove_feature gst_registry_add_feature *************** GST_REGISTRY_GET_CLASS *** 1672,1677 **** --- 1674,1682 ---- GST_TYPE_REGISTRY gst_registry_get_type + GST_MAGIC_BINARY_REGISTRY_LEN + GST_MAGIC_BINARY_REGISTRY_STR + GST_MAGIC_BINARY_VERSION_LEN Index: gst/Makefile.am =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/Makefile.am,v retrieving revision 1.219 diff -u -p -n -r1.219 Makefile.am *** gst/Makefile.am 10 Oct 2006 12:12:44 -0000 1.219 --- gst/Makefile.am 23 Feb 2007 16:13:55 -0000 *************** else *** 6,15 **** GST_LOADSAVE_SRC = gstxml.c endif ! if GST_DISABLE_REGISTRY ! GST_REGISTRY_SRC = ! else GST_REGISTRY_SRC = gstregistryxml.c endif if GST_DISABLE_PARSE --- 6,19 ---- GST_LOADSAVE_SRC = gstxml.c endif ! if GST_XML_REGISTRY GST_REGISTRY_SRC = gstregistryxml.c + else + GST_REGISTRY_SRC = gstregistrybinary.c + endif + + if GST_DISABLE_REGISTRY + GST_REGISTRY_SRC = endif if GST_DISABLE_PARSE *************** built_header_make = gstenumtypes.h gstma *** 66,72 **** built_source_make = $(GST_ENUMTYPES_SRC) gstmarshal.c EXTRA_libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \ ! gstmarshal.list gstxml.c gstparse.c gsttrace.c gstregistryxml.c # temporarily not used --- 70,76 ---- built_source_make = $(GST_ENUMTYPES_SRC) gstmarshal.c EXTRA_libgstreamer_@GST_MAJORMINOR@_la_SOURCES = \ ! gstmarshal.list gstparse.c gsttrace.c $(GST_LOADSAVE_SRC) $(GST_REGISTRY_SRC) # temporarily not used *************** libgstreamer_@GST_MAJORMINOR@_la_CFLAGS *** 139,148 **** --- 143,158 ---- $(VALGRIND_CFLAGS) \ $(GST_ALL_CFLAGS) + if GST_NO_XML + libgstreamer_@GST_MAJORMINOR@_la_LIBADD = \ + $(GST_PARSE_LA) \ + $(GST_ALL_LIBS) + else libgstreamer_@GST_MAJORMINOR@_la_LIBADD = \ $(GST_PARSE_LA) \ $(GST_ALL_LIBS) \ $(XML_LIBS) + endif libgstreamer_@GST_MAJORMINOR@_la_LDFLAGS = \ $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS) *************** noinst_HEADERS = \ *** 210,215 **** --- 220,226 ---- gst-i18n-lib.h \ gst-i18n-app.h \ gstquark.h \ + gstregistrybinary.h \ gst_private.h gstmarshal.h: gstmarshal.list Index: gst/gst.c =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/gst.c,v retrieving revision 1.228 diff -u -p -n -r1.228 gst.c *** gst/gst.c 28 Oct 2006 15:10:26 -0000 1.228 --- gst/gst.c 23 Feb 2007 16:13:56 -0000 *************** scan_and_update_registry (GstRegistry * *** 595,602 **** GList *l; GST_DEBUG ("reading registry cache: %s", registry_file); gst_registry_xml_read_cache (default_registry, registry_file); ! /* scan paths specified via --gst-plugin-path */ GST_DEBUG ("scanning paths added via --gst-plugin-path"); for (l = plugin_paths; l != NULL; l = l->next) { --- 595,605 ---- GList *l; GST_DEBUG ("reading registry cache: %s", registry_file); + #ifdef USE_BINARY_REGISTRY + gst_registry_binary_read_cache (default_registry, registry_file); + #else gst_registry_xml_read_cache (default_registry, registry_file); ! #endif /* scan paths specified via --gst-plugin-path */ GST_DEBUG ("scanning paths added via --gst-plugin-path"); for (l = plugin_paths; l != NULL; l = l->next) { *************** scan_and_update_registry (GstRegistry * *** 669,675 **** --- 672,682 ---- } GST_INFO ("Registry cache changed. Writing new registry cache"); + #ifdef USE_BINARY_REGISTRY + if (!gst_registry_binary_write_cache (default_registry, registry_file)) { + #else if (!gst_registry_xml_write_cache (default_registry, registry_file)) { + #endif g_set_error (error, GST_CORE_ERROR, GST_CORE_ERROR_FAILED, _("Error writing registry cache to %s: %s"), registry_file, g_strerror (errno)); *************** ensure_current_registry_forking (GstRegi *** 777,783 **** --- 784,794 ---- if (res_byte == '1') { GST_DEBUG ("Child succeeded. Parent reading registry cache"); + #ifdef USE_BINARY_REGISTRY + gst_registry_binary_read_cache (default_registry, registry_file); + #else gst_registry_xml_read_cache (default_registry, registry_file); + #endif } else { GST_DEBUG ("Child failed. Parent re-scanning registry, ignoring errors."); scan_and_update_registry (default_registry, registry_file, FALSE, NULL); *************** ensure_current_registry (GError ** error *** 798,805 **** --- 809,821 ---- default_registry = gst_registry_get_default (); registry_file = g_strdup (g_getenv ("GST_REGISTRY")); if (registry_file == NULL) { + #ifdef USE_BINARY_REGISTRY + registry_file = g_build_filename (g_get_home_dir (), + ".gstreamer-" GST_MAJORMINOR, "registry." HOST_CPU ".bin", NULL); + #else registry_file = g_build_filename (g_get_home_dir (), ".gstreamer-" GST_MAJORMINOR, "registry." HOST_CPU ".xml", NULL); + #endif } /* first see if forking is enabled */ Index: gst/gstconfig.h.in =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/gstconfig.h.in,v retrieving revision 1.22 diff -u -p -n -r1.22 gstconfig.h.in *** gst/gstconfig.h.in 5 Oct 2006 12:31:07 -0000 1.22 --- gst/gstconfig.h.in 23 Feb 2007 16:13:56 -0000 *************** *** 169,178 **** /***** Deal with XML stuff, we have to handle both loadsave and registry *****/ ! #if (! (defined(GST_DISABLE_LOADSAVE) && defined(GST_DISABLE_REGISTRY)) ) ! # include #else ! # define GST_DISABLE_LOADSAVE_REGISTRY #endif /** --- 169,178 ---- /***** Deal with XML stuff, we have to handle both loadsave and registry *****/ ! #if defined(NO_XML) ! # define GST_DISABLED_XML #else ! # include #endif /** Index: gst/gstobject.c =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/gstobject.c,v retrieving revision 1.119 diff -u -p -n -r1.119 gstobject.c *** gst/gstobject.c 6 Oct 2006 14:46:04 -0000 1.119 --- gst/gstobject.c 23 Feb 2007 16:13:56 -0000 *************** enum *** 102,108 **** { PARENT_SET, PARENT_UNSET, ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY OBJECT_SAVED, #endif DEEP_NOTIFY, --- 102,108 ---- { PARENT_SET, PARENT_UNSET, ! #ifndef GST_DISABLED_XML OBJECT_SAVED, #endif DEEP_NOTIFY, *************** static GType gst_signal_object_get_type *** 134,140 **** static void gst_signal_object_class_init (GstSignalObjectClass * klass); static void gst_signal_object_init (GstSignalObject * object); ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY static guint gst_signal_object_signals[SO_LAST_SIGNAL] = { 0 }; #endif --- 134,140 ---- static void gst_signal_object_class_init (GstSignalObjectClass * klass); static void gst_signal_object_init (GstSignalObject * object); ! #ifndef GST_DISABLED_XML static guint gst_signal_object_signals[SO_LAST_SIGNAL] = { 0 }; #endif *************** static void gst_object_finalize (GObject *** 153,159 **** static gboolean gst_object_set_name_default (GstObject * object); ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY static void gst_object_real_restore_thyself (GstObject * object, xmlNodePtr self); #endif --- 153,159 ---- static gboolean gst_object_set_name_default (GstObject * object); ! #ifndef GST_DISABLED_XML static void gst_object_real_restore_thyself (GstObject * object, xmlNodePtr self); #endif *************** gst_object_class_init (GstObjectClass * *** 231,237 **** G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstObjectClass, parent_unset), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_OBJECT); ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY /** * GstObject::object-saved: * @gstobject: a #GstObject --- 231,237 ---- G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstObjectClass, parent_unset), NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, G_TYPE_OBJECT); ! #ifndef GST_DISABLED_XML /** * GstObject::object-saved: * @gstobject: a #GstObject *************** gst_object_check_uniqueness (GList * lis *** 952,958 **** } ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY /** * gst_object_save_thyself: * @object: a #GstObject to save --- 952,958 ---- } ! #ifndef GST_DISABLED_XML /** * gst_object_save_thyself: * @object: a #GstObject to save *************** gst_object_real_restore_thyself (GstObje *** 1010,1016 **** gst_class_signal_emit_by_name (object, "object_loaded", self); } ! #endif /* GST_DISABLE_LOADSAVE_REGISTRY */ static void gst_object_set_property (GObject * object, guint prop_id, --- 1010,1016 ---- gst_class_signal_emit_by_name (object, "object_loaded", self); } ! #endif /* GST_DISABLED_XML */ static void gst_object_set_property (GObject * object, guint prop_id, *************** struct _GstSignalObjectClass *** 1131,1140 **** GObjectClass parent_class; /* signals */ ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY void (*object_loaded) (GstSignalObject * object, GstObject * new, xmlNodePtr self); ! #endif /* GST_DISABLE_LOADSAVE_REGISTRY */ }; static GType --- 1131,1140 ---- GObjectClass parent_class; /* signals */ ! #ifndef GST_DISABLED_XML void (*object_loaded) (GstSignalObject * object, GstObject * new, xmlNodePtr self); ! #endif /* GST_DISABLED_XML */ }; static GType *************** gst_signal_object_class_init (GstSignalO *** 1172,1178 **** parent_class = g_type_class_peek_parent (klass); ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY gst_signal_object_signals[SO_OBJECT_LOADED] = g_signal_new ("object-loaded", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstSignalObjectClass, object_loaded), --- 1172,1178 ---- parent_class = g_type_class_peek_parent (klass); ! #ifndef GST_DISABLED_XML gst_signal_object_signals[SO_OBJECT_LOADED] = g_signal_new ("object-loaded", G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET (GstSignalObjectClass, object_loaded), *************** gst_class_signal_connect (GstObjectClass *** 1207,1213 **** func_data); } ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY /** * gst_class_signal_emit_by_name: * @object: a #GstObject that emits the signal --- 1207,1213 ---- func_data); } ! #ifndef GST_DISABLED_XML /** * gst_class_signal_emit_by_name: * @object: a #GstObject that emits the signal *************** gst_class_signal_emit_by_name (GstObject *** 1227,1230 **** g_signal_emit_by_name (oclass->signal_object, name, object, self); } ! #endif /* GST_DISABLE_LOADSAVE_REGISTRY */ --- 1227,1230 ---- g_signal_emit_by_name (oclass->signal_object, name, object, self); } ! #endif /* GST_DISABLED_XML */ Index: gst/gstobject.h =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/gstobject.h,v retrieving revision 1.79 diff -u -p -n -r1.79 gstobject.h *** gst/gstobject.h 17 Oct 2006 11:57:32 -0000 1.79 --- gst/gstobject.h 23 Feb 2007 16:13:57 -0000 *************** G_BEGIN_DECLS *** 41,47 **** /* make sure we don't change the object size but still make it compile * without libxml */ ! #ifdef GST_DISABLE_LOADSAVE_REGISTRY #define GstXmlNodePtr gpointer #else #define GstXmlNodePtr xmlNodePtr --- 41,47 ---- /* make sure we don't change the object size but still make it compile * without libxml */ ! #ifdef GST_DISABLED_XML #define GstXmlNodePtr gpointer #else #define GstXmlNodePtr xmlNodePtr *************** gchar * gst_object_get_path_string (Gst *** 302,308 **** gboolean gst_object_check_uniqueness (GList *list, const gchar *name); /* load/save */ ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY GstXmlNodePtr gst_object_save_thyself (GstObject *object, GstXmlNodePtr parent); void gst_object_restore_thyself (GstObject *object, GstXmlNodePtr self); #else --- 302,308 ---- gboolean gst_object_check_uniqueness (GList *list, const gchar *name); /* load/save */ ! #ifndef GST_DISABLED_XML GstXmlNodePtr gst_object_save_thyself (GstObject *object, GstXmlNodePtr parent); void gst_object_restore_thyself (GstObject *object, GstXmlNodePtr self); #else *************** guint gst_class_signal_connect (GstObje *** 318,324 **** gpointer func, gpointer func_data); ! #ifndef GST_DISABLE_LOADSAVE_REGISTRY void gst_class_signal_emit_by_name (GstObject * object, const gchar * name, GstXmlNodePtr self); --- 318,324 ---- gpointer func, gpointer func_data); ! #ifndef GST_DISABLED_XML void gst_class_signal_emit_by_name (GstObject * object, const gchar * name, GstXmlNodePtr self); Index: gst/gstregistry.h =================================================================== RCS file: /cvs/gstreamer/gstreamer/gst/gstregistry.h,v retrieving revision 1.37 diff -u -p -n -r1.37 gstregistry.h *** gst/gstregistry.h 28 Sep 2006 14:00:43 -0000 1.37 --- gst/gstregistry.h 23 Feb 2007 16:13:57 -0000 *************** GstPluginFeature* gst_registry_find_feat *** 106,113 **** --- 106,118 ---- GstPlugin * gst_registry_lookup (GstRegistry *registry, const char *filename); GstPluginFeature * gst_registry_lookup_feature (GstRegistry *registry, const char *name); + #ifdef USE_BINARY_REGISTRY + gboolean gst_registry_binary_read_cache (GstRegistry * registry, const char *location); + gboolean gst_registry_binary_write_cache (GstRegistry * registry, const char *location); + #else gboolean gst_registry_xml_read_cache (GstRegistry * registry, const char *location); gboolean gst_registry_xml_write_cache (GstRegistry * registry, const char *location); + #endif /* convinience defines for the default registry */ Index: libs/gst/base/Makefile.am =================================================================== RCS file: /cvs/gstreamer/gstreamer/libs/gst/base/Makefile.am,v retrieving revision 1.18 diff -u -p -n -r1.18 Makefile.am *** libs/gst/base/Makefile.am 28 Nov 2006 12:07:06 -0000 1.18 --- libs/gst/base/Makefile.am 23 Feb 2007 16:13:57 -0000 *************** *** 1,5 **** --- 1,10 ---- lib_LTLIBRARIES = libgstbase-@GST_MAJORMINOR@.la + built_header_configure = gstconfig.h gstversion.h + built_header_make = gstenumtypes.h gstmarshal.h + built_source_make = $(GST_ENUMTYPES_SRC) gstmarshal.c + + libgstbase_@GST_MAJORMINOR@_la_DEPENDENCIES = \ $(top_builddir)/gst/libgstreamer-@GST_MAJORMINOR@.la libgstbase_@GST_MAJORMINOR@_la_SOURCES = \ *************** libgstbase_@GST_MAJORMINOR@_la_SOURCES = *** 13,18 **** --- 18,24 ---- gstdataqueue.c libgstbase_@GST_MAJORMINOR@_la_CFLAGS = $(GST_OBJ_CFLAGS) + libgstbase_@GST_MAJORMINOR@_la_LIBADD = $(GST_OBJ_LIBS) libgstbase_@GST_MAJORMINOR@_la_LDFLAGS = $(GST_LIB_LDFLAGS) $(GST_ALL_LDFLAGS) $(GST_LT_LDFLAGS) Index: tools/gst-inspect.c =================================================================== RCS file: /cvs/gstreamer/gstreamer/tools/gst-inspect.c,v retrieving revision 1.121 diff -u -p -n -r1.121 gst-inspect.c *** tools/gst-inspect.c 8 Nov 2006 11:41:13 -0000 1.121 --- tools/gst-inspect.c 23 Feb 2007 16:13:58 -0000 *************** print_element_list (gboolean print_all) *** 884,891 **** factory = GST_INDEX_FACTORY (feature); if (!print_all) ! g_print ("%s: %s: %s\n", plugin->desc.name, ! GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc); } #endif else if (GST_IS_TYPE_FIND_FACTORY (feature)) { --- 884,897 ---- factory = GST_INDEX_FACTORY (feature); if (!print_all) ! { ! if (!factory->longdesc) ! g_print ("%s: %s\n", plugin->desc.name, ! GST_PLUGIN_FEATURE_NAME (factory)); ! else ! g_print ("%s: %s: %s\n", plugin->desc.name, ! GST_PLUGIN_FEATURE_NAME (factory), factory->longdesc); ! } } #endif else if (GST_IS_TYPE_FIND_FACTORY (feature)) {