aboutsummaryrefslogtreecommitdiff
path: root/gst/gstconfig.h.in
blob: 31ea67479c2f5815012b4ca31034805c75caf034 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
/* GStreamer
 * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu>
 *               2004,2005 Wim Taymans <wim@fluendo.com>
 *
 * gstconfig.h: GST_DISABLE_* macros for build configuration
 *
 * 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.
 */

/**
 * SECTION:gstconfig
 * @short_description: Build configuration options
 *
 * This describes the configuration options for GStreamer. When building
 * GStreamer there are a lot of parts (known internally as "subsystems" ) that
 * can be disabled for various reasons. The most common reasons are speed and
 * size, which is important because GStreamer is designed to run on embedded
 * systems.
 *
 * If a subsystem is disabled, most of this changes are done in an API
 * compatible way, so you don't need to adapt your code in most cases. It is
 * never done in an ABI compatible way though. So if you want to disable a
 * suybsystem, you have to rebuild all programs depending on GStreamer, too.
 *
 * If a subsystem is disabled in GStreamer, a value is defined in
 * &lt;gst/gst.h&gt;. You can check this if you do subsystem-specific stuff.
 * <example id="example-gstconfig">
 * <title>Doing subsystem specific things</title>
 * <programlisting>
 * &hash;ifndef GST_DISABLE_GST_DEBUG
 * // do stuff specific to the debugging subsystem
 * &hash;endif // GST_DISABLE_GST_DEBUG
 * </programlisting>
 * </example>
 */

#ifndef __GST_CONFIG_H__
#define __GST_CONFIG_H__

/* trick gtk-doc into believing these symbols are defined (yes, it's ugly) */

#if 0
#define GST_DISABLE_GST_DEBUG 1
#define GST_DISABLE_PARSE 1
#define GST_DISABLE_TRACE 1
#define GST_DISABLE_ALLOC_TRACE 1
#define GST_DISABLE_REGISTRY 1
#define GST_DISABLE_PLUGIN 1
#define GST_HAVE_GLIB_2_8 1
#endif

/***** default padding of structures *****/
#define GST_PADDING		4
#define GST_PADDING_INIT	{ NULL }

/***** padding for very extensible base classes *****/
#define GST_PADDING_LARGE	20

/***** disabling of subsystems *****/

/**
 * GST_DISABLE_GST_DEBUG:
 *
 * Configures the inclusion of the debugging subsystem
 */
@GST_DISABLE_GST_DEBUG_DEFINE@

/**
 * GST_DISABLE_PARSE:
 *
 * Configures the inclusion of the gst-lauch parser
 */
@GST_DISABLE_PARSE_DEFINE@

/**
 * GST_DISABLE_TRACE:
 *
 * Configures the inclusion of a resource tracing facillity
 * (seems to be unused)
 */
@GST_DISABLE_TRACE_DEFINE@

/**
 * GST_DISABLE_ALLOC_TRACE:
 *
 * Configures the use of a memory tracer based on the resource tracer
 * if TRACE is disabled, ALLOC_TRACE is disabled as well
 */
@GST_DISABLE_ALLOC_TRACE_DEFINE@

/**
 * GST_DISABLE_REGISTRY:
 *
 * Configures the use of the plugin registry.
 * If one disables this, required plugins need to be loaded and registered
 * manually
 */
@GST_DISABLE_REGISTRY_DEFINE@

/* FIXME: test and document these! */
/* Configures the use of external plugins */
@GST_DISABLE_PLUGIN_DEFINE@

/* printf extension format */
/**
 * GST_PTR_FORMAT:
 *
 * printf format type used to debug GStreamer types.
 * This can only be used on types whose size is >= sizeof(gpointer).
 */
@GST_PRINTF_EXTENSION_POINTER_FORMAT_DEFINE@
/**
 * GST_SEGMENT_FORMAT:
 *
 * printf format type used to debug GStreamer segments.
 * This can only be used on pointers to GstSegment structures.
 *
 * Since: 0.10.10
 */
@GST_PRINTF_EXTENSION_SEGMENT_FORMAT_DEFINE@

/* whether or not GST_PTR_FORMAT or GST_SEGMENT_FORMAT are using
 * the printf extension mechanism. This is for internal use in our
 * header files so we know whether we can use G_GNUC_PRINTF or not */
@GST_USING_PRINTF_EXTENSION_DEFINE@

/* GST_DISABLE_PRINTF_EXTENSION:
 *
 * Define this to debug your debug log messages and make gcc spew warnings
 * if printf format string and arguments don't match up (this is usually
 * not the case when libc and gcc are used because printf format warnings
 * have to be disabled when the printf extension mechanism is in use).
 *
 * Note that using this option disables 'pretty logging' of GStreamer objects
 * like caps, tags, structures, events, pads etc., so that only their address
 * will be printed in the log.
 *
 * This define only disables use of the special registered printf format
 * extensions in the code compiled with it defined. It does not stop
 * GStreamer from registering these extensions in the first place if it
 * was compiled against a libc that supports this.
 *
 * (not official API)
 */
/* If GLib is not using the system printf, we can't use the registered
 * extensions because the GLib-internal printf won't know how to parse them */
#if defined(GST_DISABLE_PRINTF_EXTENSION) || !defined(GLIB_USING_SYSTEM_PRINTF)
  #undef GST_PTR_FORMAT
  #define GST_PTR_FORMAT "p"
  #undef GST_SEGMENT_FORMAT
  #define GST_SEGMENT_FORMAT "p"
  #undef GST_USING_PRINTF_EXTENSION
#endif

/* whether or not the CPU supports unaligned access */
@GST_HAVE_UNALIGNED_ACCESS_DEFINE@

/**
 * GST_EXPORT:
 *
 * Export the given variable from the built shared object.
 *
 * On Windows, this exports the variable from the DLL.
 * On other platforms, this gets defined to "extern".
 */
/**
 * GST_PLUGIN_EXPORT:
 *
 * Export the plugin's definition.
 *
 * On Windows, this exports the plugin definition from the DLL.
 * On other platforms, this gets defined as a no-op.
 */
#ifdef _MSC_VER
#define GST_PLUGIN_EXPORT __declspec(dllexport) extern
#ifdef GST_EXPORTS
#define GST_EXPORT __declspec(dllexport) extern
#else
#define GST_EXPORT __declspec(dllimport) extern
#endif
#else /* not _MSC_VER */
#define GST_PLUGIN_EXPORT
#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
#define GST_EXPORT extern __attribute__ ((visibility ("default")))
#else
#define GST_EXPORT extern
#endif
#endif

#endif /* __GST_CONFIG_H__ */