config.h.in 15.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 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
 *****************************************************************************
 * Copyright (C) 1999, 2000 VideoLAN
 *
 * Authors:
 *
 * 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.
 *
 * This program 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
 * General Public License for more details.
 *
 * 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-1307, 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
 * - Regarding environment variables, which are used as initialization parameters
Vincent Seguin's avatar
Vincent Seguin committed
32 33 34
 *   for threads :
 *   + 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 45 46
#define VERSION_MESSAGE     "vlc @VLC_VERSION@ @VLC_CODENAME@" \
                            /* " (" PROGRAM_BUILD ") (" PROGRAM_OPTIONS ")\n" */ \
                            "Copyright 1996-2000 VideoLAN\n"
47 48
#define COPYRIGHT_MESSAGE   "VideoLAN Client - version @VLC_VERSION@" \
                            " @VLC_CODENAME@ - (c)1996-2000 VideoLAN"
Michel Kaempf's avatar
Michel Kaempf committed
49

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

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

59 60 61 62 63
/* 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

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

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

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

78 79
/* 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
80
#define DEBUG_INTF
Michel Kaempf's avatar
Michel Kaempf committed
81 82
#define DEBUG_INPUT
#define DEBUG_AUDIO
83
//#define DEBUG_VIDEO
Michel Kaempf's avatar
Michel Kaempf committed
84 85 86 87

/* 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
88 89 90 91
#define DEBUG_LOG                       "vlc-debug.log"
#define DEBUG_LOG_ONLY

#endif
Michel Kaempf's avatar
Michel Kaempf committed
92

93
/*****************************************************************************
94
 * General configuration
95
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
96

Michel Lespinasse's avatar
 
Michel Lespinasse committed
97 98 99
#define CLOCK_FREQ 1000000


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

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

/*
109
 * Decoders FIFO configuration
Michel Kaempf's avatar
Michel Kaempf committed
110 111
 */

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


116
/*****************************************************************************
117
 * Interface configuration
118
 *****************************************************************************/
119 120

/* Environment variable used to store startup script name and default value */
121
#define INTF_INIT_SCRIPT_VAR            "vlc_init"
122 123
#define INTF_INIT_SCRIPT_DEFAULT        "vlc.init"

124 125 126 127
/* Environment variable used to store channels file and default value */
#define INTF_CHANNELS_VAR               "vlc_channels"
#define INTF_CHANNELS_DEFAULT           "vlc.channels"

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

Vincent Seguin's avatar
Vincent Seguin committed
131 132
/* Step for changing gamma, and minimum and maximum values */
#define INTF_GAMMA_STEP                 .1
133
#define INTF_GAMMA_LIMIT                3
134

Michel Kaempf's avatar
Michel Kaempf committed
135
/*
136
 * X11 settings
Michel Kaempf's avatar
Michel Kaempf committed
137 138
 */

139 140 141
/* Title of the X11 window */
#define VOUT_TITLE                      "VideoLAN Client"

142
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
143
 * Input thread configuration
144
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
145

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

/*
 * 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. */
176
#define INPUT_MAX_TS                    32767     /* INPUT_MAX_TS + 1 = 2^15 */
Michel Kaempf's avatar
Michel Kaempf committed
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192

/* 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

193
/* Maximum length of a hostname or source name */
194
#define INPUT_MAX_SOURCE_LENGTH         100
Michel Kaempf's avatar
Michel Kaempf committed
195 196

/* Default remote server */
197 198
#define INPUT_SERVER_VAR                "vlc_server"
#define INPUT_SERVER_DEFAULT            "138.195.143.220"
Michel Kaempf's avatar
Michel Kaempf committed
199

200
/* Default input port */
201 202
#define INPUT_PORT_VAR                  "vlc_server_port"
#define INPUT_PORT_DEFAULT              1234
Michel Kaempf's avatar
Michel Kaempf committed
203 204

/*
205 206
 * Vlan method
 */
Michel Kaempf's avatar
Michel Kaempf committed
207

208 209 210 211 212 213 214 215 216
/* 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
217

218
/* Delay between vlan changes - this is required to avoid flooding the VLAN
219
 * server */
Michel Lespinasse's avatar
 
Michel Lespinasse committed
220
#define INPUT_VLAN_CHANGE_DELAY         (5*CLOCK_FREQ)
221

222 223
/* Duration between the time we receive the TS packet, and the time we will
 * mark it to be presented */
Michel Lespinasse's avatar
 
Michel Lespinasse committed
224
#define INPUT_PTS_DELAY                 (2*CLOCK_FREQ)
225

226
/*****************************************************************************
Vincent Seguin's avatar
Vincent Seguin committed
227
 * Audio configuration
228
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
229

230 231
/* Environment variable containing the audio output method */
#define AOUT_METHOD_VAR                 "vlc_aout"
232 233 234 235

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

Vincent Seguin's avatar
Vincent Seguin committed
236 237 238 239 240 241 242 243 244 245
/* 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"
246
#define AOUT_RATE_DEFAULT               44100
Vincent Seguin's avatar
Vincent Seguin committed
247

248
/*****************************************************************************
Vincent Seguin's avatar
Vincent Seguin committed
249
 * Video configuration
250
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
251 252 253 254 255

/*
 * Default settings for video output threads
 */

256
/* Environment variable containing the display method */
257
#define VOUT_METHOD_VAR                 "vlc_vout"
258 259 260 261

/* The fallback method */
#define VOUT_DEFAULT_METHOD             "x11"

262
/* Environment variable used in place of DISPLAY if available */
263
#define VOUT_DISPLAY_VAR                "vlc_display"
264

265
/* Default dimensions for display window - these dimensions are enough for the
266 267 268
 * standard width and height broadcasted MPEG-2 streams */
#define VOUT_WIDTH_VAR                  "vlc_width"
#define VOUT_HEIGHT_VAR                 "vlc_height"
Sam Hocevar's avatar
NEWS:  
Sam Hocevar committed
269 270
#define VOUT_WIDTH_DEFAULT              720
#define VOUT_HEIGHT_DEFAULT             576
Michel Kaempf's avatar
Michel Kaempf committed
271

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

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

280
/* Maximum number of active areas in a rendering buffer. Active areas are areas
281
 * of the picture which need to be cleared before re-using the buffer. If a
282
 * picture, including its many additions such as subtitles, additionnal user
283
 * informations and interface, has too many active areas, some of them are
284 285 286
 * joined. */
#define VOUT_MAX_AREAS                  5

287 288 289 290
/* Environment variable for grayscale output mode, and default value */
#define VOUT_GRAYSCALE_VAR              "vlc_grayscale"
#define VOUT_GRAYSCALE_DEFAULT          0

291
/* Default gamma */
Vincent Seguin's avatar
Vincent Seguin committed
292
#define VOUT_GAMMA                      0.
293

Vincent Seguin's avatar
Vincent Seguin committed
294
/* Default fonts */
295 296
#define VOUT_DEFAULT_FONT               "default8x9.psf"
#define VOUT_LARGE_FONT                 "default8x16.psf"
Vincent Seguin's avatar
Vincent Seguin committed
297

Michel Kaempf's avatar
Michel Kaempf committed
298
/*
Vincent Seguin's avatar
Vincent Seguin committed
299
 * Time settings
Michel Kaempf's avatar
Michel Kaempf committed
300 301
 */

302
/* Time during which the thread will sleep if it has nothing to
Michel Kaempf's avatar
Michel Kaempf committed
303
 * display (in micro-seconds) */
Michel Lespinasse's avatar
 
Michel Lespinasse committed
304
#define VOUT_IDLE_SLEEP                 ((int)(0.020*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
305 306 307 308 309 310

/* 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
311
#define VOUT_DISPLAY_DELAY              ((int)(0.500*CLOCK_FREQ))
Michel Kaempf's avatar
Michel Kaempf committed
312

313
/* Delay (in microseconds) before an idle screen is displayed */
Michel Lespinasse's avatar
 
Michel Lespinasse committed
314
#define VOUT_IDLE_DELAY                 (5*CLOCK_FREQ)
315 316

/* Number of pictures required to computes the FPS rate */
317
#define VOUT_FPS_SAMPLES                20
318

Vincent Seguin's avatar
Vincent Seguin committed
319
/*
320 321 322 323 324 325 326
 * 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"

327
/*****************************************************************************
328
 * Video parser configuration
329
 *****************************************************************************/
330

Michel Lespinasse's avatar
 
Michel Lespinasse committed
331
#define VPAR_IDLE_SLEEP                 ((int)(0.010*CLOCK_FREQ))
332

333
/* Time to sleep when waiting for a buffer (from vout or the video fifo).
Vincent Seguin's avatar
Vincent Seguin committed
334 335 336
 * 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
337
#define VPAR_OUTMEM_SLEEP               ((int)(0.050*CLOCK_FREQ))
338

339 340 341 342
/* Optimization level, from 0 to 2 - 1 is generally a good compromise. Remember
 * that raising this level dramatically lengthens the compilation time. */
#define VPAR_OPTIM_LEVEL                1

343 344
/* The following directives only apply if you define VDEC_SMP below. */

345 346 347
/* 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
348
#define VFIFO_SIZE                      8191
349 350

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

353
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
354
 * Video decoder configuration
355
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
356

357 358
//#define VDEC_SMP

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

361 362
/* 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
363
 * picture. Only available if you defined VDEC_SMP above. */
364 365
#define NB_VDEC                         1

366
/* Maximum range of values out of the IDCT + motion compensation. */
367 368
#define VDEC_CROPRANGE                  2048

369
/*****************************************************************************
Michel Kaempf's avatar
Michel Kaempf committed
370
 * Generic decoder configuration
371
 *****************************************************************************/
Michel Kaempf's avatar
Michel Kaempf committed
372

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

375
/*****************************************************************************
376
 * Messages and console interfaces configuration
377
 *****************************************************************************/
Vincent Seguin's avatar
Vincent Seguin committed
378

379 380 381 382
/* 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
383 384
/* Maximal size of the message queue - in case of overflow, all messages in the
 * queue are printed by the calling thread */
385
#define INTF_MSG_QSIZE                  64
Vincent Seguin's avatar
Vincent Seguin committed
386 387 388 389

/* 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
390
#ifndef DEBUG
391
#define INTF_MSG_QUEUE
Vincent Seguin's avatar
Vincent Seguin committed
392
#endif
Vincent Seguin's avatar
Vincent Seguin committed
393 394 395 396

/* 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 */
397 398 399 400 401 402 403 404 405 406 407 408 409
#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
410 411 412 413 414 415 416 417

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

#define VOUT_SYNCHRO_LEVEL_START        5
#define VOUT_SYNCHRO_LEVEL_MAX          15
#define VOUT_SYNCHRO_HEAP_IDEAL_SIZE    5