diff -r 000000000000 -r 0e761a78d257 gstreamer_core/gst/gstregistrybinary.h --- /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 + * Copyright (C) 2006 Mathieu Garcia + * Copyright (C) 2006 Stefan Kost + * + * 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 +#include + +/* + * 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__ */ +