mirror of
https://code.videolan.org/videolan/vlc
synced 2024-09-04 09:11:33 +02:00
![Sam Hocevar](/assets/img/avatar_default.png)
piti�, pour ne laisser que � vlc �, � gvlc � (gnome) et � fbvlc � (framebuffer) ; les autres restent bien entendu accessibles avec par exemple � vlc --vout ggi �. . IMPORTANT - nouvelle option --synchro pour forcer un type de synchro. Pour le moment les options possibles sont : --synchro I /* n'affiche que les I */ --synchro IP /* affiche les I et toutes les P */ --synchro IP+ /* affiche les I, les P, et la moiti� des B */ --synchro IPB /* affiche toutes les images */ Toute autre valeur de --synchro sera ignor�e et c'est l'algo par d�faut bas� sur la consommation de processeur qui sera utilis�. Notez que si vous en demandez trop au vlc, il va bien entendu planter, ou tout du moins remplir sa fifo comme un gros cochon. On n'y peut pas grand chose, c'est la vie.
444 lines
16 KiB
C
444 lines
16 KiB
C
/*****************************************************************************
|
|
* config.h: limits and configuration
|
|
* Defines all compilation-time configuration constants and size limits
|
|
*****************************************************************************
|
|
* 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, USA.
|
|
*****************************************************************************/
|
|
|
|
/* 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_.
|
|
*
|
|
* - Regarding environment variables, which are used as initialization
|
|
* parameters for threads :
|
|
* + variable names should end with '_VAR'
|
|
* + environment variable default value should end with '_DEFAULT'
|
|
* + values having a special meaning with '_VAL'
|
|
*
|
|
*/
|
|
|
|
/*****************************************************************************
|
|
* Program information
|
|
*****************************************************************************/
|
|
|
|
/* Program version and copyright message */
|
|
#define VERSION_MESSAGE "vlc @VLC_VERSION@ @VLC_CODENAME@ " \
|
|
/* "(" PROGRAM_BUILD ") (" PROGRAM_OPTIONS ")\n" */ \
|
|
"Copyright 1996-2000 VideoLAN\n"
|
|
#define COPYRIGHT_MESSAGE "VideoLAN Client - version @VLC_VERSION@" \
|
|
" @VLC_CODENAME@ - (c)1996-2000 VideoLAN\n"
|
|
|
|
#define VERSION "@VLC_VERSION@"
|
|
|
|
/*****************************************************************************
|
|
* General compilation options
|
|
*****************************************************************************/
|
|
|
|
/* Define for DVB support - Note that some extensions or restrictions may be
|
|
* incompatible with native MPEG2 streams */
|
|
//#define DVB_EXTENSIONS
|
|
//#define DVB_RESTRICTIONS
|
|
|
|
/* 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
|
|
|
|
/* Define for profiling and statistics support - such informations, like FPS
|
|
* or pictures count won't be available if it not set */
|
|
#define STATS
|
|
|
|
/* Define for unthreaded version of the program FIXME: not yet implemented ??*/
|
|
//#define NO_THREAD
|
|
|
|
/*****************************************************************************
|
|
* Debugging options - define or undefine symbols
|
|
*****************************************************************************/
|
|
#if DEBUG == 1
|
|
/* General debugging support, which depends of the DEBUG define, is determined
|
|
* in the Makefile */
|
|
|
|
/* Modules specific debugging - this will produce a lot of output, but can be
|
|
* usefull to track a bug */
|
|
#define DEBUG_INTF
|
|
#define DEBUG_INPUT
|
|
#define DEBUG_AUDIO
|
|
//#define DEBUG_VIDEO
|
|
|
|
/* 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 */
|
|
#define DEBUG_LOG "vlc-debug.log"
|
|
#define DEBUG_LOG_ONLY
|
|
|
|
#endif
|
|
|
|
/*****************************************************************************
|
|
* General configuration
|
|
*****************************************************************************/
|
|
|
|
#define CLOCK_FREQ 1000000
|
|
|
|
|
|
/* Automagically spawn input, audio and video threads ? */
|
|
/* XXX?? used ? */
|
|
#define AUTO_SPAWN
|
|
|
|
/* When creating or destroying threads in blocking mode, delay to poll thread
|
|
* status */
|
|
#define THREAD_SLEEP ((int)(0.010*CLOCK_FREQ))
|
|
|
|
/*
|
|
* Decoders FIFO configuration
|
|
*/
|
|
|
|
/* Size of the FIFO. FIFO_SIZE+1 must be a power of 2 */
|
|
#define FIFO_SIZE 1023
|
|
|
|
/*
|
|
* Paths
|
|
*/
|
|
|
|
#define DATA_PATH "@prefix@/share/videolan"
|
|
#define PLUGIN_PATH "@prefix@/lib/videolan/vlc"
|
|
|
|
#define MAX_PLUGIN_COUNT 32
|
|
|
|
/*****************************************************************************
|
|
* Interface configuration
|
|
*****************************************************************************/
|
|
|
|
/* Environment variable used to store startup script name and default value */
|
|
#define INTF_INIT_SCRIPT_VAR "vlcrc"
|
|
#define INTF_INIT_SCRIPT_DEFAULT ".vlcrc"
|
|
|
|
/* Environment variable used to store channels file and default value */
|
|
#define INTF_CHANNELS_VAR "vlc_channels"
|
|
#define INTF_CHANNELS_DEFAULT "vlc.channels"
|
|
|
|
/* Base delay in micro second for interface sleeps */
|
|
#define INTF_IDLE_SLEEP ((int)(0.100*CLOCK_FREQ))
|
|
|
|
/* Step for changing gamma, and minimum and maximum values */
|
|
#define INTF_GAMMA_STEP .1
|
|
#define INTF_GAMMA_LIMIT 3
|
|
|
|
/* Maximum number of channels */
|
|
#define INTF_MAX_CHANNELS 10
|
|
|
|
/*
|
|
* X11 settings
|
|
*/
|
|
|
|
/* Title of the X11 window */
|
|
#define VOUT_TITLE "VideoLAN Client"
|
|
|
|
/*****************************************************************************
|
|
* Input thread configuration
|
|
*****************************************************************************/
|
|
|
|
/* XXX?? */
|
|
#define INPUT_IDLE_SLEEP ((int)(0.100*CLOCK_FREQ))
|
|
|
|
/*
|
|
* 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. */
|
|
#define INPUT_MAX_TS 32767 /* INPUT_MAX_TS + 1 = 2^15 */
|
|
|
|
/* 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
|
|
|
|
/* Maximum length of a hostname or source name */
|
|
#define INPUT_MAX_SOURCE_LENGTH 100
|
|
|
|
/* Default remote server */
|
|
#define INPUT_SERVER_VAR "vlc_server"
|
|
#define INPUT_SERVER_DEFAULT "138.195.143.220"
|
|
|
|
/* Default input port */
|
|
#define INPUT_PORT_VAR "vlc_server_port"
|
|
#define INPUT_PORT_DEFAULT 1234
|
|
|
|
/*
|
|
* Vlan method
|
|
*/
|
|
|
|
/* 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
|
|
|
|
/* Delay between vlan changes - this is required to avoid flooding the VLAN
|
|
* server */
|
|
#define INPUT_VLAN_CHANGE_DELAY (5*CLOCK_FREQ)
|
|
|
|
/* Duration between the time we receive the TS packet, and the time we will
|
|
* mark it to be presented */
|
|
#define INPUT_PTS_DELAY (.5*CLOCK_FREQ)
|
|
|
|
#define INPUT_DVD_AUDIO_VAR "vlc_dvd_audio"
|
|
#define INPUT_DVD_CHANNEL_VAR "vlc_dvd_channel"
|
|
#define INPUT_DVD_SUBTITLE_VAR "vlc_dvd_subtitle"
|
|
|
|
/*****************************************************************************
|
|
* Audio configuration
|
|
*****************************************************************************/
|
|
|
|
/* Environment variable containing the audio output method */
|
|
#define AOUT_METHOD_VAR "vlc_aout"
|
|
|
|
/* The fallback method */
|
|
#define AOUT_DEFAULT_METHOD "dsp"
|
|
|
|
/* 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"
|
|
#define AOUT_RATE_DEFAULT 44100
|
|
|
|
/*****************************************************************************
|
|
* Video configuration
|
|
*****************************************************************************/
|
|
|
|
/*
|
|
* Default settings for video output threads
|
|
*/
|
|
|
|
/* Environment variable containing the display method */
|
|
#define VOUT_METHOD_VAR "vlc_vout"
|
|
|
|
/* Environment variable containing the YUV method */
|
|
#define YUV_METHOD_VAR "vlc_yuv"
|
|
|
|
/* The fallback method */
|
|
#define VOUT_DEFAULT_METHOD "x11"
|
|
|
|
/* Environment variable used in place of DISPLAY if available */
|
|
#define VOUT_DISPLAY_VAR "vlc_display"
|
|
|
|
/* Default dimensions for display window - these dimensions are enough for the
|
|
* standard width and height broadcasted MPEG-2 streams or DVDs */
|
|
#define VOUT_WIDTH_VAR "vlc_width"
|
|
#define VOUT_HEIGHT_VAR "vlc_height"
|
|
#define VOUT_WIDTH_DEFAULT 720
|
|
#define VOUT_HEIGHT_DEFAULT 576
|
|
|
|
/* Maximum width of a scaled source picture - this should be relatively high,
|
|
* since higher stream values will result in no display at all. */
|
|
#define VOUT_MAX_WIDTH 4096
|
|
|
|
/* Video heap size - remember that a decompressed picture is big
|
|
* (~1 Mbyte) before using huge values */
|
|
#define VOUT_MAX_PICTURES 10
|
|
|
|
/* Number of simultaneous subpictures */
|
|
#define VOUT_MAX_SUBPICTURES 10
|
|
|
|
/* Maximum number of active areas in a rendering buffer. Active areas are areas
|
|
* of the picture which need to be cleared before re-using the buffer. If a
|
|
* picture, including its many additions such as subtitles, additionnal user
|
|
* informations and interface, has too many active areas, some of them are
|
|
* joined. */
|
|
#define VOUT_MAX_AREAS 5
|
|
|
|
/* Environment variable for grayscale output mode, and default value */
|
|
#define VOUT_GRAYSCALE_VAR "vlc_grayscale"
|
|
#define VOUT_GRAYSCALE_DEFAULT 0
|
|
|
|
/* Default gamma */
|
|
#define VOUT_GAMMA 0.
|
|
|
|
/* Default fonts */
|
|
#define VOUT_DEFAULT_FONT "default8x9.psf"
|
|
#define VOUT_LARGE_FONT "default8x16.psf"
|
|
|
|
/*
|
|
* Time settings
|
|
*/
|
|
|
|
/* Time during which the thread will sleep if it has nothing to
|
|
* display (in micro-seconds) */
|
|
#define VOUT_IDLE_SLEEP ((int)(0.020*CLOCK_FREQ))
|
|
|
|
/* 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 */
|
|
#define VOUT_DISPLAY_DELAY ((int)(0.500*CLOCK_FREQ))
|
|
|
|
/* Delay (in microseconds) before an idle screen is displayed */
|
|
#define VOUT_IDLE_DELAY (5*CLOCK_FREQ)
|
|
|
|
/* Number of pictures required to computes the FPS rate */
|
|
#define VOUT_FPS_SAMPLES 20
|
|
|
|
/*
|
|
* 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"
|
|
|
|
/*****************************************************************************
|
|
* Video parser configuration
|
|
*****************************************************************************/
|
|
|
|
#define VPAR_IDLE_SLEEP ((int)(0.010*CLOCK_FREQ))
|
|
|
|
/* Time to sleep when waiting for a buffer (from vout or the video fifo).
|
|
* 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. */
|
|
#define VPAR_OUTMEM_SLEEP ((int)(0.050*CLOCK_FREQ))
|
|
|
|
/* 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 2
|
|
|
|
/* The following directives only apply if you define VDEC_SMP below. */
|
|
|
|
/* 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. */
|
|
#define VFIFO_SIZE 8191
|
|
|
|
/* Maximum number of macroblocks in a picture. */
|
|
#define MAX_MB 2048
|
|
|
|
/* The synchro variable name */
|
|
#define VPAR_SYNCHRO_VAR "vlc_synchro"
|
|
|
|
/*****************************************************************************
|
|
* Video decoder configuration
|
|
*****************************************************************************/
|
|
|
|
//#define VDEC_SMP
|
|
|
|
#define VDEC_IDLE_SLEEP ((int)(0.100*CLOCK_FREQ))
|
|
|
|
/* 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
|
|
* picture. Only available if you defined VDEC_SMP above. */
|
|
#define NB_VDEC 1
|
|
|
|
/* Maximum range of values out of the IDCT + motion compensation. */
|
|
#define VDEC_CROPRANGE 2048
|
|
|
|
/*****************************************************************************
|
|
* Generic decoder configuration
|
|
*****************************************************************************/
|
|
|
|
#define GDEC_IDLE_SLEEP ((int)(0.100*CLOCK_FREQ))
|
|
|
|
/*****************************************************************************
|
|
* Messages and console interfaces configuration
|
|
*****************************************************************************/
|
|
|
|
/* 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
|
|
|
|
/* Maximal size of the message queue - in case of overflow, all messages in the
|
|
* queue are printed by the calling thread */
|
|
#define INTF_MSG_QSIZE 64
|
|
|
|
/* 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 */
|
|
#ifndef DEBUG
|
|
#define INTF_MSG_QUEUE
|
|
#endif
|
|
|
|
/* 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 */
|
|
#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
|
|
|
|
/*****************************************************************************
|
|
* Synchro configuration
|
|
*****************************************************************************/
|
|
|
|
#define VOUT_SYNCHRO_LEVEL_START 5 << 10
|
|
#define VOUT_SYNCHRO_LEVEL_MAX 15 << 10
|
|
#define VOUT_SYNCHRO_HEAP_IDEAL_SIZE 5
|
|
|