diff options
Diffstat (limited to 'meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.h')
-rw-r--r-- | meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.h | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.h b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.h new file mode 100644 index 0000000000..2ef24d765d --- /dev/null +++ b/meta/recipes-multimedia/gstreamer/gstreamer-0.10.31/gstregistrybinary.h | |||
@@ -0,0 +1,194 @@ | |||
1 | /* GStreamer | ||
2 | * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> | ||
3 | * 2000 Wim Taymans <wim.taymans@chello.be> | ||
4 | * | ||
5 | * gstregistry.h: Header for registry handling | ||
6 | * | ||
7 | * This library is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU Library General Public | ||
9 | * License as published by the Free Software Foundation; either | ||
10 | * version 2 of the License, or (at your option) any later version. | ||
11 | * | ||
12 | * This library is distributed in the hope that it will be useful, | ||
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
15 | * Library General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU Library General Public | ||
18 | * License along with this library; if not, write to the | ||
19 | * Free Software Foundation, Inc., 59 Temple Place - Suite 330, | ||
20 | * Boston, MA 02111-1307, USA. | ||
21 | */ | ||
22 | |||
23 | /* SUGGESTIONS AND TODO : | ||
24 | ** ==================== | ||
25 | ** - Use a compressed registry, but would induce performance loss | ||
26 | ** - Encrypt the registry, for security purpose, but would also reduce performances | ||
27 | ** - Also have a non-mmap based cache reading (work with file descriptors) | ||
28 | */ | ||
29 | |||
30 | #ifndef __GST_REGISTRYBINARY_H__ | ||
31 | #define __GST_REGISTRYBINARY_H__ | ||
32 | |||
33 | #ifdef HAVE_CONFIG_H | ||
34 | # include "config.h" | ||
35 | #endif | ||
36 | |||
37 | #include <stdio.h> | ||
38 | #include <errno.h> | ||
39 | #include <sys/types.h> | ||
40 | #include <sys/stat.h> | ||
41 | #include <dirent.h> | ||
42 | #include <fcntl.h> | ||
43 | #include <sys/mman.h> | ||
44 | #ifdef HAVE_UNISTD_H | ||
45 | #include <unistd.h> | ||
46 | #endif | ||
47 | |||
48 | #include <gst/gst_private.h> | ||
49 | #include <gst/gstelement.h> | ||
50 | #include <gst/gsttypefind.h> | ||
51 | #include <gst/gsttypefindfactory.h> | ||
52 | #include <gst/gsturi.h> | ||
53 | #include <gst/gstinfo.h> | ||
54 | #include <gst/gstenumtypes.h> | ||
55 | #include <gst/gstregistry.h> | ||
56 | #include <gst/gstpadtemplate.h> | ||
57 | |||
58 | #include "glib-compat-private.h" | ||
59 | #include <glib/gstdio.h> | ||
60 | |||
61 | /* A magic, written at the beginning of the file */ | ||
62 | #define GST_MAGIC_BINARY_REGISTRY_STR "\xc0\xde\xf0\x0d" | ||
63 | #define GST_MAGIC_BINARY_REGISTRY_LEN (4) | ||
64 | #define GST_MAGIC_BINARY_VERSION_LEN (64) | ||
65 | |||
66 | typedef struct _GstBinaryRegistryMagic | ||
67 | { | ||
68 | char magic[GST_MAGIC_BINARY_REGISTRY_LEN]; | ||
69 | char version[GST_MAGIC_BINARY_VERSION_LEN]; | ||
70 | } GstBinaryRegistryMagic; | ||
71 | |||
72 | |||
73 | /* Used to store pointers to write */ | ||
74 | typedef struct _GstBinaryChunck | ||
75 | { | ||
76 | void *data; | ||
77 | unsigned int size; | ||
78 | } GstBinaryChunck; | ||
79 | |||
80 | |||
81 | /* A structure containing (staticely) every information needed for a plugin | ||
82 | ** | ||
83 | ** Notes : | ||
84 | ** "nfeatures" is used to say how many GstBinaryPluginFeature structures we will have | ||
85 | ** right after the structure itself. | ||
86 | */ | ||
87 | |||
88 | /* Various lenght defines for our GstBinaryPluginElement structure | ||
89 | ** Note : We could eventually use smaller size | ||
90 | */ | ||
91 | #define GST_BINARY_REGISTRY_NAME_LEN (256) | ||
92 | #define GST_BINARY_REGISTRY_DESCRIPTION_LEN (1024) | ||
93 | #define GST_BINARY_REGISTRY_VERSION_LEN (64) | ||
94 | #define GST_BINARY_REGISTRY_LICENSE_LEN (256) | ||
95 | #define GST_BINARY_REGISTRY_SOURCE_LEN (256) | ||
96 | #define GST_BINARY_REGISTRY_PACKAGE_LEN (1024) | ||
97 | #define GST_BINARY_REGISTRY_ORIGIN_LEN (1024) | ||
98 | |||
99 | typedef struct _GstBinaryPluginElement | ||
100 | { | ||
101 | char name[GST_BINARY_REGISTRY_NAME_LEN]; | ||
102 | char description[GST_BINARY_REGISTRY_DESCRIPTION_LEN]; | ||
103 | char filename[_POSIX_PATH_MAX]; | ||
104 | char version[GST_BINARY_REGISTRY_VERSION_LEN]; | ||
105 | char license[GST_BINARY_REGISTRY_LICENSE_LEN]; | ||
106 | char source[GST_BINARY_REGISTRY_SOURCE_LEN]; | ||
107 | char package[GST_BINARY_REGISTRY_PACKAGE_LEN]; | ||
108 | char origin[GST_BINARY_REGISTRY_ORIGIN_LEN]; | ||
109 | unsigned long size; | ||
110 | unsigned long m32p; | ||
111 | unsigned int nfeatures; | ||
112 | } GstBinaryPluginElement; | ||
113 | |||
114 | |||
115 | /* A structure containing the plugin features | ||
116 | ** | ||
117 | ** Note : | ||
118 | ** "npadtemplates" is used to store the number of GstBinaryPadTemplate structures following the structure itself. | ||
119 | ** "ninterfaces" is used to store the number of GstBinaryInterface structures following the structure itself. | ||
120 | ** "nuritypes" is used to store the number of GstBinaryUriType structures following the structure itself. | ||
121 | */ | ||
122 | #define GST_BINARY_REGISTRY_TYPENAME_TYPENAME_LEN (256) | ||
123 | #define GST_BINARY_REGISTRY_TYPENAME_NAME_LEN (256) | ||
124 | #define GST_BINARY_REGISTRY_TYPENAME_LONGNAME_LEN (1024) | ||
125 | #define GST_BINARY_REGISTRY_TYPENAME_CLASS_LEN (512) | ||
126 | #define GST_BINARY_REGISTRY_TYPENAME_DESCRIPTION_LEN (1024) | ||
127 | #define GST_BINARY_REGISTRY_TYPENAME_AUTHOR_LEN (256) | ||
128 | |||
129 | typedef struct _GstBinaryPluginFeature | ||
130 | { | ||
131 | char typename[GST_BINARY_REGISTRY_TYPENAME_TYPENAME_LEN]; | ||
132 | char name[GST_BINARY_REGISTRY_TYPENAME_NAME_LEN]; | ||
133 | unsigned long rank; | ||
134 | char longname[GST_BINARY_REGISTRY_TYPENAME_LONGNAME_LEN]; | ||
135 | char class[GST_BINARY_REGISTRY_TYPENAME_CLASS_LEN]; | ||
136 | char description[GST_BINARY_REGISTRY_TYPENAME_DESCRIPTION_LEN]; | ||
137 | char author[GST_BINARY_REGISTRY_TYPENAME_AUTHOR_LEN]; | ||
138 | unsigned int npadtemplates; | ||
139 | unsigned int ninterfaces; | ||
140 | unsigned int nuritypes; | ||
141 | } GstBinaryPluginFeature; | ||
142 | |||
143 | |||
144 | /* | ||
145 | ** A structure containing the static pad templates of a plugin feature | ||
146 | */ | ||
147 | #define GST_BINARY_REGISTRY_PADTEMPLATE_NAME_LEN (256) | ||
148 | #define GST_BINARY_REGISTRY_PADTEMPLATE_CAP_LEN (1024) | ||
149 | |||
150 | typedef struct _GstBinaryPadTemplate | ||
151 | { | ||
152 | char name[GST_BINARY_REGISTRY_PADTEMPLATE_NAME_LEN]; | ||
153 | char cap[GST_BINARY_REGISTRY_PADTEMPLATE_CAP_LEN]; | ||
154 | int direction; /* Either 0:"sink" or 1:"src" */ | ||
155 | GstPadPresence presence; | ||
156 | } GstBinaryPadTemplate; | ||
157 | |||
158 | /* | ||
159 | ** A very simple structure defining the plugin feature interface string | ||
160 | */ | ||
161 | #define GST_BINARY_REGISTRY_INTERFACE_INTERFACE_LEN (512) | ||
162 | typedef struct _GstBinaryInterface | ||
163 | { | ||
164 | char interface[GST_BINARY_REGISTRY_INTERFACE_INTERFACE_LEN]; | ||
165 | unsigned long size; | ||
166 | } GstBinaryInterface; | ||
167 | |||
168 | /* Uri Type */ | ||
169 | typedef struct _GstBinaryUriType | ||
170 | { | ||
171 | GstURIType type; | ||
172 | unsigned long nuriprotocols; | ||
173 | } GstBinaryUriType; | ||
174 | |||
175 | /* | ||
176 | ** Function prototypes | ||
177 | */ | ||
178 | |||
179 | /* Local prototypes */ | ||
180 | inline static gboolean gst_registry_binary_write(GstRegistry *registry, const void *mem, const ssize_t size); | ||
181 | inline static gboolean gst_registry_binary_initialize_magic(GstBinaryRegistryMagic *m); | ||
182 | static gboolean gst_registry_binary_fill_feature(GList **list, GstPluginFeature *, GstBinaryPluginFeature *, const char *); | ||
183 | static gboolean gst_registry_binary_save_plugin(GList **list, GstRegistry *registry, GstPlugin *plugin); | ||
184 | static gchar *gst_registry_binary_check_magic(gchar *in); | ||
185 | static GstPluginFeature *gst_registry_binary_load_feature(GstBinaryPluginFeature *); | ||
186 | static unsigned long gst_registry_binary_get_binary_plugin(GstRegistry *registry, gchar *in); | ||
187 | |||
188 | /* Exportable */ | ||
189 | gboolean gst_registry_binary_write_cache(GstRegistry *registry, const char *location); | ||
190 | gboolean gst_registry_binary_read_cache(GstRegistry *registry, const char *location); | ||
191 | |||
192 | #endif /* !__GST_REGISTRYBINARY_H__ */ | ||
193 | |||
194 | |||