config.h.in 16.7 KB
Newer Older
1
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
2
3
 * config.h: limits and configuration
 * Defines all compilation-time configuration constants and size limits
4
5
6
 *****************************************************************************
 * Copyright (C) 1999, 2000 VideoLAN
 *
7
8
 * Authors: Vincent Seguin <seguin@via.ecp.fr>
 *          Samuel Hocevar <sam@via.ecp.fr>
9
10
11
12
13
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
14
 * 
15
16
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17
18
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
19
 *
20
21
22
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
23
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
24

Vincent Seguin's avatar
Vincent Seguin committed
25
26
27
28
29
30
/* Conventions regarding names of symbols and variables
 * ----------------------------------------------------
 *
 * - Symbols should begin with a prefix indicating in which module they are
 *   used, such as INTF_, VOUT_ or ADEC_.
 *
31
32
 * - Regarding environment variables, which are used as initialization
 *  parameters for threads :
Vincent Seguin's avatar
Vincent Seguin committed
33
34
 *   + variable names should end with '_VAR'
 *   + environment variable default value should end with '_DEFAULT'
35
36
 *   + values having a special meaning with '_VAL'
 *
Vincent Seguin's avatar
Vincent Seguin committed
37
38
 */

39
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
40
 * Program information
41
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
42
43

/* Program version and copyright message */
44
#define VERSION_MESSAGE     "vlc @VLC_VERSION@ @VLC_CODENAME@ " \
45
                          /* "(" PROGRAM_BUILD ") (" PROGRAM_OPTIONS ")\n" */ \
46
                            "Copyright 1996-2000 VideoLAN\n"
47
#define COPYRIGHT_MESSAGE   "VideoLAN Client - version @VLC_VERSION@" \
Sam Hocevar's avatar
Sam Hocevar committed
48
                            " @VLC_CODENAME@ - (c)1996-2000 VideoLAN\n"
Michel Kaempf's avatar
Michel Kaempf committed
49

Sam Hocevar's avatar
Sam Hocevar committed
50
51
#define VERSION             "@VLC_VERSION@"

52
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
53
 * General compilation options
54
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
55
56
57
58
59
60

/* Define for DVB support - Note that some extensions or restrictions may be
 * incompatible with native MPEG2 streams */
//#define DVB_EXTENSIONS
//#define DVB_RESTRICTIONS

61
62
63
64
65
/* Define to disable some obscure heuristics behind the video_parser and the
 * video_decoder that improve performance but are not fully MPEG2 compliant
 * and might cause problems with some very weird streams. */
//#define MPEG2_COMPLIANT

66
67
/* Define for profiling and statistics support - such informations, like FPS
 * or pictures count won't be available if it not set */
68
#define STATS
Michel Kaempf's avatar
Michel Kaempf committed
69

70
/* Define for unthreaded version of the program FIXME: not yet implemented ??*/
Michel Kaempf's avatar
Michel Kaempf committed
71
72
//#define NO_THREAD

73
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
74
 * Debugging options - define or undefine symbols
75
 *****************************************************************************/
76
#if DEBUG == 1
Vincent Seguin's avatar
Vincent Seguin committed
77
78
/* General debugging support, which depends of the DEBUG define, is determined
 * in the Makefile */
Michel Kaempf's avatar
Michel Kaempf committed
79

80
81
/* Modules specific debugging - this will produce a lot of output, but can be
 * usefull to track a bug */
Vincent Seguin's avatar
Vincent Seguin committed
82
#define DEBUG_INTF
Michel Kaempf's avatar
Michel Kaempf committed
83
84
#define DEBUG_INPUT
#define DEBUG_AUDIO
85
//#define DEBUG_VIDEO
Michel Kaempf's avatar
Michel Kaempf committed
86
87
88
89

/* Debugging log file - if defined, a file can be used to store all messages. If
 * DEBUG_LOG_ONLY is defined, debug messages will only be printed to the log and
 * will not appear on the screen */
Vincent Seguin's avatar
Vincent Seguin committed
90
91
92
93
#define DEBUG_LOG                       "vlc-debug.log"
#define DEBUG_LOG_ONLY

#endif
Michel Kaempf's avatar
Michel Kaempf committed
94

95
/*****************************************************************************
96
 * General configuration
97
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
98

Michel Lespinasse's avatar
   
Michel Lespinasse committed
99
100
101
#define CLOCK_FREQ 1000000


Christophe Massiot's avatar
Christophe Massiot committed
102
/* Automagically spawn input, audio and video threads ? */
103
/* XXX?? used ? */
104
#define AUTO_SPAWN
Christophe Massiot's avatar
Christophe Massiot committed
105

106
107
/* When creating or destroying threads in blocking mode, delay to poll thread
 * status */
Michel Lespinasse's avatar
   
Michel Lespinasse committed
108
#define THREAD_SLEEP                    ((int)(0.010*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
109
110

/*
111
 * Decoders FIFO configuration
Michel Kaempf's avatar
Michel Kaempf committed
112
113
 */

Sam Hocevar's avatar
NEWS:    
Sam Hocevar committed
114
/* Size of the FIFO. FIFO_SIZE+1 must be a power of 2 */
115
116
#define FIFO_SIZE                       1023

117
118
119
120
121
122
123
124
/*
 * Paths
 */

#define DATA_PATH                       "@prefix@/share/videolan"
#define PLUGIN_PATH                     "@prefix@/lib/videolan/vlc"

#define MAX_PLUGIN_COUNT                32
125

126
/*****************************************************************************
127
 * Interface configuration
128
 *****************************************************************************/
129
130

/* Environment variable used to store startup script name and default value */
Sam Hocevar's avatar
Sam Hocevar committed
131
132
#define INTF_INIT_SCRIPT_VAR            "vlcrc"
#define INTF_INIT_SCRIPT_DEFAULT        ".vlcrc"
133

134
135
136
137
/* Environment variable used to store channels file and default value */
#define INTF_CHANNELS_VAR               "vlc_channels"
#define INTF_CHANNELS_DEFAULT           "vlc.channels"

138
/* Base delay in micro second for interface sleeps */
Michel Lespinasse's avatar
   
Michel Lespinasse committed
139
#define INTF_IDLE_SLEEP                 ((int)(0.100*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
140

Vincent Seguin's avatar
Vincent Seguin committed
141
142
/* Step for changing gamma, and minimum and maximum values */
#define INTF_GAMMA_STEP                 .1
143
#define INTF_GAMMA_LIMIT                3
144

Sam Hocevar's avatar
Sam Hocevar committed
145
146
147
/* Maximum number of channels */
#define INTF_MAX_CHANNELS               10

Michel Kaempf's avatar
Michel Kaempf committed
148
/*
149
 * X11 settings
Michel Kaempf's avatar
Michel Kaempf committed
150
151
 */

152
153
154
/* Title of the X11 window */
#define VOUT_TITLE                      "VideoLAN Client"

155
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
156
 * Input thread configuration
157
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
158

159
/* XXX?? */
Michel Lespinasse's avatar
   
Michel Lespinasse committed
160
#define INPUT_IDLE_SLEEP                ((int)(0.100*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
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

/*
 * General limitations
 */

/* Broadcast address, in case of a broadcasted stream */
#define INPUT_BCAST_ADDR                "138.195.143.255"

/* Maximum number of input threads - this value is used exclusively by
 * interface, and is in fact an interface limitation */
#define INPUT_MAX_THREADS               10

/* Maximum number of programs definitions in a TS stream */
#define INPUT_MAX_PGRM                  10

/* Maximum number of ES definitions in a TS stream */
#define INPUT_MAX_ES                    10

/* Maximum number of ES in a single program */
#define INPUT_MAX_PROGRAM_ES            10

/* Maximum number of selected ES in an input thread */
#define INPUT_MAX_SELECTED_ES           10

/* Maximum number of TS packets in the client at any time
 * INPUT_MAX_TS + 1 must be a power of 2, to optimize the %(INPUT_MAX_TS+1)
 * operation with a &INPUT_MAX_TS in the case of a fifo netlist.
 * It should be > number of fifos * FIFO_SIZE to avoid input deadlock. */
189
#define INPUT_MAX_TS                    32767     /* INPUT_MAX_TS + 1 = 2^15 */
Michel Kaempf's avatar
Michel Kaempf committed
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205

/* Same thing with PES packets */
#define INPUT_MAX_PES                   16383

/* Maximum number of TS packets we read from the socket in one readv().
 * Since you can't put more than 7 TS packets in an Ethernet frame,
 * the maximum value is 7. This number should also limit the stream server,
 * otherwise any supplementary packet is lost. */
#define INPUT_TS_READ_ONCE              7

/* Use a LIFO or FIFO for TS netlist ? */
#undef INPUT_LIFO_TS_NETLIST

/* Use a LIFO or FIFO for PES netlist ? */
#undef INPUT_LIFO_PES_NETLIST

206
/* Maximum length of a hostname or source name */
207
#define INPUT_MAX_SOURCE_LENGTH         100
Michel Kaempf's avatar
Michel Kaempf committed
208
209

/* Default remote server */
210
211
#define INPUT_SERVER_VAR                "vlc_server"
#define INPUT_SERVER_DEFAULT            "138.195.143.220"
Michel Kaempf's avatar
Michel Kaempf committed
212

213
/* Default input port */
214
215
#define INPUT_PORT_VAR                  "vlc_server_port"
#define INPUT_PORT_DEFAULT              1234
Michel Kaempf's avatar
Michel Kaempf committed
216

217
218
219
220
/* Broadcast mode */
#define INPUT_BROADCAST_VAR             "vlc_broadcast"
#define INPUT_BROADCAST_DEFAULT         0

Michel Kaempf's avatar
Michel Kaempf committed
221
/*
222
223
 * Vlan method
 */
Michel Kaempf's avatar
Michel Kaempf committed
224

225
226
227
228
229
230
231
232
233
/* Default network interface and environment variable */
#define INPUT_IFACE_VAR                 "vlc_iface"
#define INPUT_IFACE_DEFAULT             "eth0"

/* Default server and port */
#define INPUT_VLAN_SERVER_VAR           "vlc_vlan_server"
#define INPUT_VLAN_SERVER_DEFAULT       "138.195.140.31"
#define INPUT_VLAN_PORT_VAR             "vlc_vlan_port"
#define INPUT_VLAN_PORT_DEFAULT         6010
Michel Kaempf's avatar
Michel Kaempf committed
234

235
/* Delay between vlan changes - this is required to avoid flooding the VLAN
236
 * server */
Michel Lespinasse's avatar
   
Michel Lespinasse committed
237
#define INPUT_VLAN_CHANGE_DELAY         (5*CLOCK_FREQ)
238

239
240
/* Duration between the time we receive the TS packet, and the time we will
 * mark it to be presented */
241
#define INPUT_PTS_DELAY                 (.5*CLOCK_FREQ)
242

243
244
245
246
#define INPUT_DVD_AUDIO_VAR             "vlc_dvd_audio"
#define INPUT_DVD_CHANNEL_VAR           "vlc_dvd_channel"
#define INPUT_DVD_SUBTITLE_VAR          "vlc_dvd_subtitle"

247
/*****************************************************************************
Vincent Seguin's avatar
Vincent Seguin committed
248
 * Audio configuration
249
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
250

251
252
/* Environment variable containing the audio output method */
#define AOUT_METHOD_VAR                 "vlc_aout"
253
254
255
256

/* The fallback method */
#define AOUT_DEFAULT_METHOD "dsp"

Vincent Seguin's avatar
Vincent Seguin committed
257
258
259
260
261
262
263
264
265
266
/* Environment variable used to store dsp device name, and default value */
#define AOUT_DSP_VAR                    "vlc_dsp"
#define AOUT_DSP_DEFAULT                "/dev/dsp"

/* Environment variable for stereo, and default value */
#define AOUT_STEREO_VAR                 "vlc_stereo"
#define AOUT_STEREO_DEFAULT             1

/* Environment variable for output rate, and default value */
#define AOUT_RATE_VAR                   "vlc_audio_rate"
267
#define AOUT_RATE_DEFAULT               44100
Vincent Seguin's avatar
Vincent Seguin committed
268

269
/*****************************************************************************
Vincent Seguin's avatar
Vincent Seguin committed
270
 * Video configuration
271
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
272
273
274
275
276

/*
 * Default settings for video output threads
 */

277
/* Environment variable containing the display method */
278
#define VOUT_METHOD_VAR                 "vlc_vout"
279

Sam Hocevar's avatar
Sam Hocevar committed
280
281
282
/* Environment variable containing the YUV method */
#define YUV_METHOD_VAR                  "vlc_yuv"

283
284
285
/* The fallback method */
#define VOUT_DEFAULT_METHOD             "x11"

286
/* Environment variable used in place of DISPLAY if available */
287
#define VOUT_DISPLAY_VAR                "vlc_display"
288

289
/* Default dimensions for display window - these dimensions are enough for the
290
 * standard width and height broadcasted MPEG-2 streams or DVDs */
291
292
#define VOUT_WIDTH_VAR                  "vlc_width"
#define VOUT_HEIGHT_VAR                 "vlc_height"
293
294
#define VOUT_WIDTH_DEFAULT              720
#define VOUT_HEIGHT_DEFAULT             576
Michel Kaempf's avatar
Michel Kaempf committed
295

296
/* Maximum width of a scaled source picture - this should be relatively high,
297
298
299
 * since higher stream values will result in no display at all. */
#define VOUT_MAX_WIDTH                  4096

300
/* Video heap size - remember that a decompressed picture is big
Vincent Seguin's avatar
Vincent Seguin committed
301
 * (~1 Mbyte) before using huge values */
Michel Kaempf's avatar
Michel Kaempf committed
302
303
#define VOUT_MAX_PICTURES               10

304
305
306
/* Number of simultaneous subpictures */
#define VOUT_MAX_SUBPICTURES            10

307
/* Maximum number of active areas in a rendering buffer. Active areas are areas
308
 * of the picture which need to be cleared before re-using the buffer. If a
309
 * picture, including its many additions such as subtitles, additionnal user
310
 * informations and interface, has too many active areas, some of them are
311
312
313
 * joined. */
#define VOUT_MAX_AREAS                  5

314
315
316
317
/* Environment variable for grayscale output mode, and default value */
#define VOUT_GRAYSCALE_VAR              "vlc_grayscale"
#define VOUT_GRAYSCALE_DEFAULT          0

318
/* Default gamma */
Vincent Seguin's avatar
Vincent Seguin committed
319
#define VOUT_GAMMA                      0.
320

Vincent Seguin's avatar
Vincent Seguin committed
321
/* Default fonts */
322
323
#define VOUT_DEFAULT_FONT               "default8x9.psf"
#define VOUT_LARGE_FONT                 "default8x16.psf"
Vincent Seguin's avatar
Vincent Seguin committed
324

Michel Kaempf's avatar
Michel Kaempf committed
325
/*
Vincent Seguin's avatar
Vincent Seguin committed
326
 * Time settings
Michel Kaempf's avatar
Michel Kaempf committed
327
328
 */

329
/* Time during which the thread will sleep if it has nothing to
Michel Kaempf's avatar
Michel Kaempf committed
330
 * display (in micro-seconds) */
Michel Lespinasse's avatar
   
Michel Lespinasse committed
331
#define VOUT_IDLE_SLEEP                 ((int)(0.020*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
332
333
334
335
336
337

/* Maximum lap of time allowed between the beginning of rendering and
 * display. If, compared to the current date, the next image is too
 * late, the thread will perform an idle loop. This time should be
 * at least VOUT_IDLE_SLEEP plus the time required to render a few
 * images, to avoid trashing of decoded images */
Michel Lespinasse's avatar
   
Michel Lespinasse committed
338
#define VOUT_DISPLAY_DELAY              ((int)(0.500*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
339

340
/* Delay (in microseconds) before an idle screen is displayed */
Michel Lespinasse's avatar
   
Michel Lespinasse committed
341
#define VOUT_IDLE_DELAY                 (5*CLOCK_FREQ)
342
343

/* Number of pictures required to computes the FPS rate */
344
#define VOUT_FPS_SAMPLES                20
345

Vincent Seguin's avatar
Vincent Seguin committed
346
/*
347
348
349
350
351
352
353
 * Framebuffer settings
 */

/* Environment variable for framebuffer device, and default value */
#define VOUT_FB_DEV_VAR                 "vlc_fb_dev"
#define VOUT_FB_DEV_DEFAULT             "/dev/fb0"

354
/*****************************************************************************
355
 * Video parser configuration
356
 *****************************************************************************/
357

Michel Lespinasse's avatar
   
Michel Lespinasse committed
358
#define VPAR_IDLE_SLEEP                 ((int)(0.010*CLOCK_FREQ))
359

360
/* Time to sleep when waiting for a buffer (from vout or the video fifo).
Vincent Seguin's avatar
Vincent Seguin committed
361
362
363
 * It should be approximately the time needed to perform a complete picture
 * loop. Since it only happens when the video heap is full, it does not need
 * to be too low, even if it blocks the decoder. */
Michel Lespinasse's avatar
   
Michel Lespinasse committed
364
#define VPAR_OUTMEM_SLEEP               ((int)(0.050*CLOCK_FREQ))
365

366
367
/* Optimization level, from 0 to 2 - 1 is generally a good compromise. Remember
 * that raising this level dramatically lengthens the compilation time. */
368
#define VPAR_OPTIM_LEVEL                2
369

370
371
/* The following directives only apply if you define VDEC_SMP below. */

372
373
374
/* Number of macroblock buffers available. It should be always greater than
 * twice the number of macroblocks in a picture. VFIFO_SIZE + 1 should also
 * be a power of two. */
Christophe Massiot's avatar
Christophe Massiot committed
375
#define VFIFO_SIZE                      8191
376
377

/* Maximum number of macroblocks in a picture. */
Christophe Massiot's avatar
Christophe Massiot committed
378
#define MAX_MB                          2048
379

380
381
382
/* The synchro variable name */
#define VPAR_SYNCHRO_VAR                "vlc_synchro"

383
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
384
 * Video decoder configuration
385
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
386

387
388
//#define VDEC_SMP

Michel Lespinasse's avatar
   
Michel Lespinasse committed
389
#define VDEC_IDLE_SLEEP                 ((int)(0.100*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
390

391
392
/* Number of video_decoder threads to launch on startup of the video_parser.
 * It should always be less than half the number of macroblocks of a
393
 * picture. Only available if you defined VDEC_SMP above. */
394
395
#define NB_VDEC                         1

396
/* Maximum range of values out of the IDCT + motion compensation. */
397
398
#define VDEC_CROPRANGE                  2048

399
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
400
 * Generic decoder configuration
401
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
402

Michel Lespinasse's avatar
   
Michel Lespinasse committed
403
#define GDEC_IDLE_SLEEP                 ((int)(0.100*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
404

405
/*****************************************************************************
406
 * Messages and console interfaces configuration
407
 *****************************************************************************/
Vincent Seguin's avatar
Vincent Seguin committed
408

409
410
411
412
/* Maximal size of a message to be stored in the mesage queue,
 * it is needed when vasprintf is not avalaible */
#define INTF_MAX_MSG_SIZE              512

Vincent Seguin's avatar
Vincent Seguin committed
413
414
/* Maximal size of the message queue - in case of overflow, all messages in the
 * queue are printed by the calling thread */
415
#define INTF_MSG_QSIZE                  64
Vincent Seguin's avatar
Vincent Seguin committed
416
417
418
419

/* Define to enable messages queues - disabling messages queue can be usefull
 * when debugging, since it allows messages which would not otherwise be printed,
 * due to a crash, to be printed anyway */
Vincent Seguin's avatar
Vincent Seguin committed
420
#ifndef DEBUG
421
#define INTF_MSG_QUEUE
Vincent Seguin's avatar
Vincent Seguin committed
422
#endif
Vincent Seguin's avatar
Vincent Seguin committed
423
424
425
426

/* Format of the header for debug messages. The arguments following this header
 * are the file (char *), the function (char *) and the line (int) in which the
 * message function was called */
427
428
429
430
431
432
433
434
435
436
437
438
439
#define INTF_MSG_DBG_FORMAT             "## %s:%s(),%i: "

/* Maximal number of arguments on a command line, including the function name */
#define INTF_MAX_ARGS                   20

/* Maximal size of a command line in a script */
#define INTF_MAX_CMD_SIZE               240

/* Number of memorized lines in console window text zone */
#define INTF_CONSOLE_MAX_TEXT           100

/* Maximal number of commands which can be saved in history list */
#define INTF_CONSOLE_MAX_HISTORY        20
440
441
442
443
444

/*****************************************************************************
 * Synchro configuration
 *****************************************************************************/

Sam Hocevar's avatar
Sam Hocevar committed
445
446
#define VOUT_SYNCHRO_LEVEL_START        5 << 10
#define VOUT_SYNCHRO_LEVEL_MAX          15 << 10
447
#define VOUT_SYNCHRO_HEAP_IDEAL_SIZE    5
Sam Hocevar's avatar
Sam Hocevar committed
448