gstreamer_core/gst/gstregistrybinary.h
changeset 0 0e761a78d257
child 7 567bb019e3e3
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gstreamer_core/gst/gstregistrybinary.h	Thu Dec 17 08:53:32 2009 +0200
@@ -0,0 +1,168 @@
+/* GStreamer
+ * Copyright (C) 2006 Josep Torra <josep@fluendo.com>
+ * Copyright (C) 2006 Mathieu Garcia  <matthieu@fluendo.com>
+ * Copyright (C) 2006 Stefan Kost <ensonic@sonicpulse.de>
+ *
+ * gstregistrybinary.h: Header for registry handling
+ *
+ * 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/* SUGGESTIONS AND TODO :
+** ====================
+** - Use a compressed registry, but would induce performance loss
+** - Encrypt the registry, for security purpose, but would also reduce performances
+*/
+
+#ifndef __GST_REGISTRYBINARY_H__
+#define __GST_REGISTRYBINARY_H__
+
+#include <gst/gstpad.h>
+#include <gst/gstregistry.h>
+
+/*
+ * GST_MAGIC_BINARY_REGISTRY_STR:
+ *
+ * A tag, written at the beginning of the file
+ */
+#define GST_MAGIC_BINARY_REGISTRY_STR "\xc0\xde\xf0\x0d"
+/*
+ * GST_MAGIC_BINARY_REGISTRY_LEN:
+ *
+ * length of the header tag.
+ */
+#define GST_MAGIC_BINARY_REGISTRY_LEN (4)
+/*
+ * GST_MAGIC_BINARY_VERSION_LEN:
+ *
+ * length of the version string.
+ */
+#define GST_MAGIC_BINARY_VERSION_LEN (64)
+
+typedef struct _GstBinaryRegistryMagic
+{
+  gchar magic[GST_MAGIC_BINARY_REGISTRY_LEN];
+  gchar version[GST_MAGIC_BINARY_VERSION_LEN];
+} GstBinaryRegistryMagic;
+
+/*
+ * we reference strings directly from the plugins and in this case set CONST to
+ * avoid freeing them
+ */
+enum {
+  GST_BINARY_REGISTRY_FLAG_NONE = 0,
+  GST_BINARY_REGISTRY_FLAG_CONST = 1
+};
+
+/*
+ * GstBinaryChunk:
+ *
+ * Header for binary blobs
+ */
+typedef struct _GstBinaryChunk
+{
+  gpointer data;
+  guint size;
+  guint flags;
+  gboolean align;
+} GstBinaryChunk;
+
+/*
+ * GstBinaryPluginElement:
+ *
+ * @nfeatures: says how many binary plugin feature structures we will have
+ * right after the structure itself.
+ *
+ * A structure containing (staticely) every information needed for a plugin
+ */
+
+typedef struct _GstBinaryPluginElement
+{
+  gulong file_size;
+  gulong file_mtime;
+
+  guint nfeatures;
+} GstBinaryPluginElement;
+
+
+/*
+ * GstBinaryPluginFeature:
+ * @rank: rank of the feature
+ *
+ * A structure containing the plugin features
+ */
+typedef struct _GstBinaryPluginFeature
+{
+  gulong rank;
+} GstBinaryPluginFeature;
+
+/*
+ * GstBinaryElementFactory:
+ * @npadtemplates: stores the number of GstBinaryPadTemplate structures
+ * following the structure
+ * @ninterfaces: stores the number of interface names following the structure
+ * @nuriprotocols: stores the number of protocol strings following the structure
+ *
+ * A structure containing the element factory fields
+ */
+typedef struct _GstBinaryElementFactory
+{
+  GstBinaryPluginFeature plugin_feature;
+
+  guint npadtemplates;
+  guint ninterfaces;
+  guint nuriprotocols;
+} GstBinaryElementFactory;
+
+/*
+ * GstBinaryTypeFindFactory:
+ * @nextensions: stores the number of typefind extensions
+ *
+ * A structure containing the element factory fields
+ */
+typedef struct _GstBinaryTypeFindFactory
+{
+  GstBinaryPluginFeature plugin_feature;
+
+  guint nextensions;
+} GstBinaryTypeFindFactory;
+
+/*
+ * GstBinaryPadTemplate:
+ *
+ * A structure containing the static pad templates of a plugin feature
+ */
+typedef struct _GstBinaryPadTemplate
+{
+  guint direction;	               /* Either 0:"sink" or 1:"src" */
+  GstPadPresence presence;
+} GstBinaryPadTemplate;
+
+
+/* Function prototypes */
+#ifdef __SYMBIAN32__
+IMPORT_C
+#endif
+
+gboolean gst_registry_binary_write_cache(GstRegistry *registry, const char *location);
+#ifdef __SYMBIAN32__
+IMPORT_C
+#endif
+
+gboolean gst_registry_binary_read_cache(GstRegistry *registry, const char *location);
+
+#endif /* !__GST_REGISTRYBINARY_H__ */
+