Commit 2799d36b authored by Sam Hocevar's avatar Sam Hocevar

* ALL: the build mechanism now uses automake. See HACKING for more details.

  * ./mozilla/vlcplugin.cpp: javascript support for the Mozilla plugin.
  * debian/rules: the A52 module is now in a separate package.
parent 86412811
...@@ -5,6 +5,7 @@ ABOUT-NLS ...@@ -5,6 +5,7 @@ ABOUT-NLS
core core
core.* core.*
gmon.out gmon.out
configure.ac
configure configure
config.h config.h
config.h.* config.h.*
...@@ -20,12 +21,15 @@ Makefile.in ...@@ -20,12 +21,15 @@ Makefile.in
Makefile.opts Makefile.opts
Makefile.modules Makefile.modules
Makefile.config Makefile.config
Modules.am
build-stamp build-stamp
stamp-h* stamp-h*
aclocal.m4 aclocal.m4
install-sh install-sh
missing missing
mkinstalldirs mkinstalldirs
compile
depcomp
vlc-debug.* vlc-debug.*
vlc-log.* vlc-log.*
vlc-config vlc-config
......
#===================#
# ChangeLog for vlc #
#===================#
0.5.0 0.5.0
Not released yet Not released yet
......
$Id: HACKING,v 1.4 2002/08/27 14:15:24 sam Exp $ $Id: HACKING,v 1.5 2002/09/30 11:05:32 sam Exp $
Hacking vlc Hacking vlc
=========== ===========
Requirements
------------
You will need the following tools if you plan to use the CVS version of vlc: You will need the following tools if you plan to use the CVS version of vlc:
- autoconf version 2.50 or later - autoconf version 2.50 or later
- automake version 1.5 (but 1.6 is recommended)
- automake version 1.5 (but 1.6 or later is recommended)
- gettext version 0.10.40 (but 0.11.3 or later is recommended) - gettext version 0.10.40 (but 0.11.3 or later is recommended)
After retrieving the CVS tree, you need to run the bootstrap script to After retrieving the CVS tree, you need to run the bootstrap script to
...@@ -18,3 +23,37 @@ you can check out a CVS tree on an OS that provides these tools (such ...@@ -18,3 +23,37 @@ you can check out a CVS tree on an OS that provides these tools (such
as a recent Linux distribution), run bootstrap, and then copy the whole as a recent Linux distribution), run bootstrap, and then copy the whole
tree to your retarded OS. tree to your retarded OS.
The bootstrap sequence
----------------------
The bootstrap script does the following actions:
- browse the modules/ directory for all available modules. A module "foo"
exists if there is a Modules.am file in the modules/ directory which
defines SOURCES_foo.
- create a top-level Modules.am file (which will be included by Makefile.am)
which contains additional build rules for modules, and includes all the
Modules.am files that were found in modules/
- create a top-level configure.ac file from configure.ac.in, generating
the AC_SUBST and AM_CONDITIONAL rules that will be needed.
- run autopoint (previously gettextize) to create an intl/ directory,
needed when libgettext is not available.
- run the usual aclocal, autoheader, automake and autoconf, which create
the various Makefile.in files from the corresponding Makefile.am and the
configure script from configure.ac.
- fix a few files in the vlc repository that may have been altered.
How to add a module
-------------------
To add a module to the repository, just add its sources to a Modules.am
file. If you create a new Modules.am, do not forget to add a corresponding
line to modules/Makefile.am.
This diff is collapsed.
###############################################################################
# vlc (VideoLAN Client) options Makefile
# (c)1998 VideoLAN
###############################################################################
#
# Plugins to build
# WARNING: if you do not have a dynamic loader on your platform, remove
# the plugins in this line and put them as built-ins, otherwise your
# application won't be able to load them.
#
PLUGINS :=@PLUGINS@
#
# Built-in modules to build
# WARNING: do NOT put gtk and gnome together in this rule.
#
BUILTINS :=@BUILTINS@
###############################################################################
# vlc (VideoLAN Client) common module Makefile
# (c)2001 VideoLAN
###############################################################################
# This file should be included by all module Makefiles
###############################################################################
#
# include the local Makefile
#
include Makefile
#
# Analyze the target we are asked to build
#
module_name := $(shell echo $(MAKECMDGOALS) | sed 's@\..*@@')
suff := $(shell echo $(MAKECMDGOALS) | sed 's@.*\.@@' | tr so/a lo/o)
#
# Compiler flags
#
SRC_C := $(filter %.c,$($(module_name)_SOURCES))
SRC_CPP := $(filter %.cpp,$($(module_name)_SOURCES))
SRC_M := $(filter %.m,$($(module_name)_SOURCES))
plugins_CFLAGS += -D__PLUGIN__ -I$(PARENT) -I$(PARENT)/include -I$(PARENT)/extras
builtins_CFLAGS += -D__BUILTIN__ -I$(PARENT) -I$(PARENT)/include -I$(PARENT)/extras
ifeq (lo,$(suff))
extra_CFLAGS := $(plugins_CFLAGS) $($(module_name)_CFLAGS) \
-DMODULE_NAME=$(module_name) -DMODULE_NAME_IS_$(module_name) \
-DMODULE_PATH=$(MODULE_PATH) $($(module_name)_so_CFLAGS)
OBJ_ALL := $(SRC_C:%.c=%.lo.$(module_name)) $(SRC_CPP:%.cpp=%.lo.$(module_name))
else
extra_CFLAGS := $(builtins_CFLAGS) $($(module_name)_CFLAGS) \
-DMODULE_NAME=$(module_name) -DMODULE_NAME_IS_$(module_name) \
-DMODULE_PATH=$(MODULE_PATH) $($(module_name)_a_CFLAGS)
OBJ_ALL := $(SRC_C:%.c=%.o.$(module_name)) $(SRC_CPP:%.cpp=%.o.$(module_name)) \
$(SRC_M:%.m=%.o.$(module_name))
endif
#
# Standard dependencies
#
C_DEP := $(SRC_C:%.c=.dep/%.d)
CPP_DEP := $(SRC_CPP:%.cpp=.dep/%.dpp)
M_DEP := $(SRC_M:%.m=.dep/%.dm)
export
#
# Virtual targets
#
all:
clean:
# rm -f $(PLUGIN_ALL) $(BUILTIN_ALL)
rm -f *.a *.so *.o *.o.* *.lo.* *.obj *.moc *.moc.* *.bak
rm -Rf .dep
FORCE:
$(OBJ_ALL): $(PARENT)/Makefile.modules $(PARENT)/Makefile.dep $(PARENT)/Makefile $(PARENT)/Makefile.opts Makefile
$(OBJ_ALL): $(H_DEP:%=$(PARENT)/include/%)
$(C_DEP): %.d: FORCE
@$(MAKE) -s --no-print-directory -f $(PARENT)/Makefile.dep $@ CFLAGS="$(CFLAGS) $(extra_CFLAGS)"
$(CPP_DEP): %.dpp: FORCE
@$(MAKE) -s --no-print-directory -f $(PARENT)/Makefile.dep $@ CFLAGS="$(CFLAGS) $(extra_CFLAGS)"
$(M_DEP): %.dm: FORCE
@$(MAKE) -s --no-print-directory -f $(PARENT)/Makefile.dep $@ CFLAGS="$(CFLAGS) $(extra_CFLAGS)"
$(SRC_C:%.c=%.$(suff).$(module_name)): %.$(suff).$(module_name): .dep/%.d
$(SRC_C:%.c=%.$(suff).$(module_name)): %.$(suff).$(module_name): %.c
$(CC) $(CFLAGS) $(extra_CFLAGS) -c $< -o $@
$(SRC_CPP:%.cpp=%.$(suff).$(module_name)): %.$(suff).$(module_name): .dep/%.dpp
$(SRC_CPP:%.cpp=%.$(suff).$(module_name)): %.$(suff).$(module_name): %.cpp
$(CC) $(CFLAGS) $(extra_CFLAGS) -c $< -o $@
$(SRC_M:%.m=%.$(suff).$(module_name)): %.$(suff).$(module_name): .dep/%.dm
$(SRC_M:%.m=%.$(suff).$(module_name)): %.$(suff).$(module_name): %.m
$(CC) $(CFLAGS) $(extra_CFLAGS) -c $< -o $@
# foo_CUSTOM lets us override all target rules for foo.so and foo.a
ifeq (,$($(module_name)_CUSTOM))
$(module_name).so: $(EXTRA_DEP) $(OBJ_ALL)
$(CC) $(OBJ_ALL) $(LDFLAGS) $(plugins_LDFLAGS) $($(module_name)_LDFLAGS) -o $@
$(module_name).a: $(EXTRA_DEP) $(OBJ_ALL)
rm -f $@
ar rc $@ $(OBJ_ALL)
$(RANLIB) $@
endif
This diff is collapsed.
###############################################################################
# vlc (VideoLAN Client) options Makefile
# (c)1998 VideoLAN
###############################################################################
HAVE_MAKEFILE_OPTS = 1
###############################################################################
# Configuration
###############################################################################
#
# Build options
#
SYS = @SYS@
ALIASES =@ALIASES@
MOZILLA = @MOZILLA@
INSTALL = @INSTALL@
ARCH = @ARCH@
#
# Compilation options
#
DEBUG = @DEBUG@
CPROF = @CPROF@
GPROF = @GPROF@
OPTIMS = @OPTIMS@
TUNING = @TUNING@
RELEASE = @RELEASE@
#
# Build environment
#
CC = @CC@
CFLAGS += @CFLAGS@
SHELL = @SHELL@
RANLIB = @RANLIB@
STRIP = @STRIP@
MOC = @MOC@
WINDRES = @WINDRES@
BCBUILDER = @BCBUILDER@
#
# Installation environment
#
exec_prefix = @exec_prefix@
prefix = @prefix@
bindir = @bindir@
datadir = @datadir@
libdir = @libdir@
includedir = @includedir@
#
# CFLAGS for special cases
#
vlc_CFLAGS = @vlc_CFLAGS@
plugins_CFLAGS = @plugins_CFLAGS@
builtins_CFLAGS = @builtins_CFLAGS@
mozilla_CFLAGS = @mozilla_CFLAGS@
a52tofloat32_CFLAGS = @a52tofloat32_CFLAGS@
arts_CFLAGS = @arts_CFLAGS@
i420_yuy2_mmx_CFLAGS = @i420_yuy2_mmx_CFLAGS@
directx_CFLAGS = @directx_CFLAGS@
dvd_CFLAGS = @dvd_CFLAGS@
dvdread_CFLAGS = @dvdread_CFLAGS@
dvdplay_CFLAGS = @dvdplay_CFLAGS@
esd_CFLAGS = @esd_CFLAGS@
familiar_CFLAGS = @familiar_CFLAGS@
faad_CFLAGS = @faad_CFLAGS@
ffmpeg_CFLAGS = @ffmpeg_CFLAGS@
glide_CFLAGS = @glide_CFLAGS@
gnome_CFLAGS = @gnome_CFLAGS@
gtk_CFLAGS = @gtk_CFLAGS@
gtk_main_CFLAGS = @gtk_main_CFLAGS@
idctaltivec_CFLAGS = @idctaltivec_CFLAGS@
kde_CFLAGS = @kde_CFLAGS@
mad_CFLAGS = @mad_CFLAGS@
memcpyaltivec_CFLAGS = @memcpyaltivec_CFLAGS@
motionaltivec_CFLAGS = @motionaltivec_CFLAGS@
opie_CFLAGS = @opie_CFLAGS@
ts_dvbpsi_CFLAGS = @ts_dvbpsi_CFLAGS@
qt_CFLAGS = @qt_CFLAGS@
qte_CFLAGS = @qte_CFLAGS@
sdl_CFLAGS = @sdl_CFLAGS@
svgalib_CFLAGS = @svgalib_CFLAGS@
x11_CFLAGS = @x11_CFLAGS@
xvideo_CFLAGS = @xvideo_CFLAGS@
#
# Libraries for special cases
#
vlc_LDFLAGS = @vlc_LDFLAGS@
plugins_LDFLAGS = @plugins_LDFLAGS@
builtins_LDFLAGS = @builtins_LDFLAGS@
mozilla_LDFLAGS = @mozilla_LDFLAGS@
a52tofloat32_LDFLAGS = @a52tofloat32_LDFLAGS@
aa_LDFLAGS = @aa_LDFLAGS@
alsa_LDFLAGS = @alsa_LDFLAGS@
arts_LDFLAGS = @arts_LDFLAGS@
beos_LDFLAGS = @beos_LDFLAGS@
i420_rgb_LDFLAGS = @i420_rgb_LDFLAGS@
directx_LDFLAGS = @directx_LDFLAGS@
dv_LDFLAGS = @dv_LDFLAGS@
dvd_LDFLAGS = @dvd_LDFLAGS@
dvdread_LDFLAGS = @dvdread_LDFLAGS@
dvdplay_LDFLAGS = @dvdplay_LDFLAGS@
esd_LDFLAGS = @esd_LDFLAGS@
familiar_LDFLAGS = @familiar_LDFLAGS@
distort_LDFLAGS = @distort_LDFLAGS@
faad_LDFLAGS = @faad_LDFLAGS@
ffmpeg_LDFLAGS = @ffmpeg_LDFLAGS@
mp4_LDFLAGS = @mp4_LDFLAGS@
ggi_LDFLAGS = @ggi_LDFLAGS@
glide_LDFLAGS = @glide_LDFLAGS@
gnome_LDFLAGS = @gnome_LDFLAGS@
gtk_LDFLAGS = @gtk_LDFLAGS@
gtk_main_LDFLAGS = @gtk_main_LDFLAGS@
http_LDFLAGS = @http_LDFLAGS@
idctaltivec_LDFLAGS = @idctaltivec_LDFLAGS@
imdct_LDFLAGS = @imdct_LDFLAGS@
imdct3dn_LDFLAGS = @imdct3dn_LDFLAGS@
imdctsse_LDFLAGS = @imdctsse_LDFLAGS@
ipv4_LDFLAGS = @ipv4_LDFLAGS@
ipv6_LDFLAGS = @ipv6_LDFLAGS@
kde_LDFLAGS = @kde_LDFLAGS@
lirc_LDFLAGS = @lirc_LDFLAGS@
macosx_LDFLAGS = @macosx_LDFLAGS@
mad_LDFLAGS = @mad_LDFLAGS@
memcpyaltivec_LDFLAGS = @memcpyaltivec_LDFLAGS@
motionaltivec_LDFLAGS = @motionaltivec_LDFLAGS@
ncurses_LDFLAGS = @ncurses_LDFLAGS@
opie_LDFLAGS = @opie_LDFLAGS@
oss_LDFLAGS = @oss_LDFLAGS@
qnx_LDFLAGS = @qnx_LDFLAGS@
qt_LDFLAGS = @qt_LDFLAGS@
qte_LDFLAGS = @qte_LDFLAGS@
rc_LDFLAGS = @rc_LDFLAGS@
sdl_LDFLAGS = @sdl_LDFLAGS@
svgalib_LDFLAGS = @svgalib_LDFLAGS@
audio_LDFLAGS = @audio_LDFLAGS@
ts_dvbpsi_LDFLAGS = @ts_dvbpsi_LDFLAGS@
vcd_LDFLAGS = @vcd_LDFLAGS@
vorbis_LDFLAGS = @vorbis_LDFLAGS@
waveout_LDFLAGS = @waveout_LDFLAGS@
x11_LDFLAGS = @x11_LDFLAGS@
xosd_LDFLAGS = @xosd_LDFLAGS@
xvideo_LDFLAGS = @xvideo_LDFLAGS@
id3tag_LDFLAGS = @id3tag_LDFLAGS@
#
# Other special cases
#
NEED_GETOPT = @NEED_GETOPT@
###############################################################################
# Configuration pre-processing
###############################################################################
# PROGRAM_OPTIONS is an identification string of the compilation options
PROGRAM_OPTIONS = $(SYS) $(ARCH)
ifeq ($(DEBUG),1)
PROGRAM_OPTIONS += DEBUG
CFLAGS += -DDEBUG
endif
ifeq ($(CPROF),1)
PROGRAM_OPTIONS += CPROF
CFLAGS += -DCPROF
endif
ifeq ($(GPROF),1)
PROGRAM_OPTIONS += GPROF
CFLAGS += -DGPROF
endif
# PROGRAM_BUILD is a complete identification of the build
# (we can't use fancy options with date since OSes like Solaris
# or FreeBSD have strange date implementations)
ifeq ($(SYS),beos)
# XXX: beos does not support hostname (how lame...)
PROGRAM_BUILD = `date` $(USER)
else
PROGRAM_BUILD = `date` $(USER)@`hostname`
endif
# On Linux and Solaris, activate 64-bit off_t (by default under BSD)
CFLAGS += -D_FILE_OFFSET_BITS=64 -D__USE_UNIX98 -D_LARGEFILE64_SOURCE
# Gettext support
CFLAGS += -DLOCALEDIR=\"$(datadir)/locale\"
# Data and plugin location
CFLAGS += -DDATA_PATH=\"@prefix@/share/vlc\"
CFLAGS += -DPLUGIN_PATH=\"@prefix@/lib/vlc\"
###############################################################################
# Tuning and other variables - do not change anything except if you know
# exactly what you are doing
###############################################################################
#
# C headers directories
#
vlc_CFLAGS += -Iinclude -Iextras -I.
#
# C compiler flags: mainstream compilation
#
CFLAGS += -D_REENTRANT -D_THREAD_SAFE
CFLAGS += -D_GNU_SOURCE
ifeq ($(RELEASE),1)
CFLAGS += -DHAVE_RELEASE
endif
CFLAGS += -D__VLC__
# Optimizations : don't compile debug versions with them
ifeq ($(OPTIMS),1)
CFLAGS += @CFLAGS_OPTIM@
ifneq ($(DEBUG),1)
ifneq ($(GPROF),1)
ifneq ($(CPROF),1)
CFLAGS += @CFLAGS_OPTIM_NODEBUG@
endif
endif
endif
ifneq (,$(findstring powerpc,$(ARCH)))
# Optimizations for PowerPC
CFLAGS += -mmultiple -mhard-float -mstring -mcpu=powerpc
ifneq (,$(TUNING))
CFLAGS += -mtune=$(TUNING)
endif
else
ifneq (,$(findstring sparc,$(ARCH)))
# Optimizations for Sparc
CFLAGS += -mhard-float
ifneq (,$(TUNING))
CFLAGS += -mcpu=$(TUNING)
endif
else
# Generic optimizations
ifneq (,$(TUNING))
CFLAGS += -mcpu=$(TUNING)
endif
endif
endif
#end of optimisations
endif
#
# C compiler flags: linking
#
LDFLAGS += @LDFLAGS@
LDFLAGS += -Wall
ifneq ($(DEBUG),1)
ifneq ($(GPROF),1)
ifneq ($(CPROF),1)
#LDFLAGS += -s
endif
endif
endif
#
# Linker flags: plugins and builtins linking
#
builtins_LDFLAGS += $(shell echo $(BUILTINS) | sed -e 's@[^ ]*/\([^ ]*\)@$$\1_LDFLAGS@g')
#
# Debugging and profiling support
#
ifeq ($(DEBUG),1)
CFLAGS += -g
endif
ifeq ($(CPROF),1)
CFLAGS += -finstrument-functions
endif
ifeq ($(GPROF),1)
CFLAGS += -pg
endif
This diff is collapsed.
This diff is collapsed.
Makefile
Makefile.in
tmp tmp
vlc vlc
vlc-plugin-* vlc-plugin-*
......
...@@ -2,7 +2,7 @@ Source: vlc ...@@ -2,7 +2,7 @@ Source: vlc
Section: graphics Section: graphics
Priority: optional Priority: optional
Maintainer: Samuel Hocevar <sam@zoy.org> Maintainer: Samuel Hocevar <sam@zoy.org>
Build-Depends: debhelper (>=2.2.0), xlibs-dev, xlibs-pic, libgnome-dev, libggi2-dev, libglide2-dev [i386], libesd0-dev, libsdl1.2-dev (>=1.2.2-3.1), libqt-dev, libasound2-dev (>=0.9.0beta10a), libarts-dev, libmad0-dev, liblircclient-dev, a52dec-dev, aalib1-dev, libdvbpsi1-dev, mozilla-dev, kdelibs-dev, dvb-dev, libdv-dev, libxosd-dev (>=1.0.2-1), svgalibg1-dev (>=1.4.0) Build-Depends: debhelper (>=2.2.0), xlibs-dev, xlibs-pic, libgnome-dev, libggi2-dev, libglide2-dev [i386], libesd0-dev, libsdl1.2-dev (>=1.2.2-3.1), libqt-dev, libasound2-dev (>=0.9.0beta10a), libarts-dev, libmad0-dev, liblircclient-dev, liba52-0.7.4-dev, aalib1-dev, libdvbpsi1-dev, mozilla-dev, kdelibs-dev, dvb-dev, libdv2-dev, libxosd-dev (>=1.0.2-1), svgalibg1-dev (>=1.4.0)
Standards-Version: 3.5.6 Standards-Version: 3.5.6
Package: vlc Package: vlc
...@@ -297,3 +297,21 @@ Description: DV codec plugin for vlc ...@@ -297,3 +297,21 @@ Description: DV codec plugin for vlc
. .
This plugin adds support for the DV video format to vlc, the VideoLAN This plugin adds support for the DV video format to vlc, the VideoLAN
Client. The plugin is autodetected. Client. The plugin is autodetected.
Package: vlc-plugin-a52
Architecture: any
Depends: vlc (= ${Source-Version}), ${shlibs:Depends}
Description: A-52 (AC-3) codec plugin for vlc
VideoLAN is a free MPEG, MPEG2, DVD and DivX software solution.
.
This plugin adds support for the ATSC A-52 (aka. AC-3) audio format to
vlc, the VideoLAN Client. The plugin is autodetected.
Package: vlc-plugin-dvb
Architecture: any
Depends: vlc (= ${Source-Version}), ${shlibs:Depends}
Description: DVB input plugin for vlc
VideoLAN is a free MPEG, MPEG2, DVD and DivX software solution.
.
This plugin adds support for DVB cards to vlc, the VideoLAN Client. Note
that your card needs to be supported by your kernel before vlc can use it.
usr/bin usr/bin
usr/lib/vlc usr/lib/vlc/access
usr/lib/vlc/audio_filter
usr/lib/vlc/audio_mixer
usr/lib/vlc/audio_output
usr/lib/vlc/codec
usr/lib/vlc/control
usr/lib/vlc/demux
usr/lib/vlc/gui
usr/lib/vlc/misc
usr/lib/vlc/video_chroma
usr/lib/vlc/video_filter
usr/lib/vlc/video_output
usr/lib/vlc/visualization
usr/include/vlc usr/include/vlc
usr/share/doc usr/share/doc
...@@ -12,7 +12,8 @@ export DH_COMPAT=3 ...@@ -12,7 +12,8 @@ export DH_COMPAT=3
# Compilation options # Compilation options
# #
CONFIG_FLAGS = --enable-release --prefix=/usr --enable-gnome --enable-gtk --enable-familiar --enable-fb --enable-ggi --enable-sdl --enable-esd --enable-qt --enable-mad --enable-arts --enable-alsa --enable-lirc --enable-a52 --enable-aa --enable-dvbpsi --enable-xosd --enable-mozilla --enable-kde --enable-mp4 --enable-dvb --enable-dv --enable-svgalib CONFIG_FLAGS = --enable-release --prefix=/usr
CONFIG_FLAGS += --enable-gnome --enable-gtk --enable-familiar --enable-fb --enable-ggi --enable-sdl --enable-esd --enable-qt --enable-mad --enable-arts --enable-alsa --enable-lirc --enable-a52 --enable-aa --enable-dvbpsi --enable-xosd --enable-mozilla --enable-kde --enable-mp4 --enable-dvb --enable-dv --enable-svgalib --enable-satellite
CONFIG_FLAGS += --enable-ffmpeg --with-ffmpeg-tree=extras/ffmpeg CONFIG_FLAGS += --enable-ffmpeg --with-ffmpeg-tree=extras/ffmpeg
CONFIG_FLAGS += --enable-faad --with-faad-tree=extras/faad CONFIG_FLAGS += --enable-faad --with-faad-tree=extras/faad
ifeq ($(DEB_BUILD_ARCH),i386) ifeq ($(DEB_BUILD_ARCH),i386)
...@@ -38,11 +39,11 @@ build-stamp: ...@@ -38,11 +39,11 @@ build-stamp:
# Check that we have an ffmpeg tree in here (can be a symlink) # Check that we have an ffmpeg tree in here (can be a symlink)
test -d extras/ffmpeg test -d extras/ffmpeg
(cd extras/ffmpeg ; ./configure ; make) (cd extras/ffmpeg && ./configure && make)
# Check that we have an faad tree in here (can be a symlink) # Check that we have an faad tree in here (can be a symlink)
test -d extras/faad test -d extras/faad
(cd extras/faad ; ./configure ; make) (cd extras/faad && ./configure && cd libfaad && make)
./configure --mandir=$${prefix}/share/man \ ./configure --mandir=$${prefix}/share/man \
--infodir=$${prefix}/share/info $(CONFIG_FLAGS) --infodir=$${prefix}/share/info $(CONFIG_FLAGS)
...@@ -58,10 +59,11 @@ clean: ...@@ -58,10 +59,11 @@ clean:
# Check that we have an ffmpeg tree in here (can be a symlink) # Check that we have an ffmpeg tree in here (can be a symlink)
test -d extras/ffmpeg test -d extras/ffmpeg
-(cd extras/ffmpeg ; make distclean) -(cd extras/ffmpeg && make distclean)
# Check that we have an faad tree in here (can be a symlink) # Check that we have an faad tree in here (can be a symlink)
test -d extras/faad test -d extras/faad
-(cd extras/faad ; make distclean) -(cd extras/faad && make distclean)
-$(MAKE) distclean -$(MAKE) distclean
dh_clean dh_clean
...@@ -84,13 +86,15 @@ install: build ...@@ -84,13 +86,15 @@ install: build
mv debian/vlc/usr/bin/vlc-config debian/libvlc0-dev/usr/bin/ mv debian/vlc/usr/bin/vlc-config debian/libvlc0-dev/usr/bin/
mv debian/vlc/usr/lib/*.a debian/libvlc0-dev/usr/lib/ mv debian/vlc/usr/lib/*.a debian/libvlc0-dev/usr/lib/
mv debian/vlc/usr/lib/vlc/*.a debian/libvlc0-dev/usr/lib/vlc/ mv debian/vlc/usr/lib/vlc/*.a debian/libvlc0-dev/usr/lib/vlc/
mv debian/vlc/usr/include/vlc/* debian/libvlc0-dev/usr/include/vlc/ mv debian/vlc/usr/include/vlc/*.h debian/libvlc0-dev/usr/include/vlc/
rm -Rf debian/vlc/usr/include
ln -s vlc debian/libvlc0-dev/usr/share/doc/libvlc0-dev ln -s vlc debian/libvlc0-dev/usr/share/doc/libvlc0-dev
# Package: gnome-vlc # Package: gnome-vlc
mv debian/vlc/usr/bin/gnome-vlc debian/gnome-vlc/usr/bin/ mv debian/vlc/usr/bin/gnome-vlc debian/gnome-vlc/usr/bin/
ln -s vlc debian/gnome-vlc/usr/share/doc/gnome-vlc ln -s vlc debian/gnome-vlc/usr/share/doc/gnome-vlc
mv debian/vlc/usr/lib/vlc/gui/gnome.so debian/gnome-vlc/usr/lib/vlc/gui/ mv debian/vlc/usr/lib/vlc/gui/libgnome_plugin.so \
debian/gnome-vlc/usr/lib/vlc/gui/
ln -s vlc.1.gz debian/gnome-vlc/usr/share/man/man1/gnome-vlc.1.gz ln -s vlc.1.gz debian/gnome-vlc/usr/share/man/man1/gnome-vlc.1.gz
mv debian/vlc/$(VIDDIR)/gnome-vlc32x32.xpm debian/gnome-vlc/$(VIDDIR)/gnome-vlc.xpm mv debian/vlc/$(VIDDIR)/gnome-vlc32x32.xpm debian/gnome-vlc/$(VIDDIR)/gnome-vlc.xpm
mv debian/vlc/$(VIDDIR)/gnome-vlc48x48.png debian/gnome-vlc/$(PIXDIR)/gnome-vlc.png mv debian/vlc/$(VIDDIR)/gnome-vlc48x48.png debian/gnome-vlc/$(PIXDIR)/gnome-vlc.png
...@@ -98,72 +102,75 @@ install: build ...@@ -98,72 +102,75 @@ install: build
# Package: gvlc # Package: gvlc
mv debian/vlc/usr/bin/gvlc debian/gvlc/usr/bin/ mv debian/vlc/usr/bin/gvlc debian/gvlc/usr/bin/
ln -s vlc debian/gvlc/usr/share/doc/gvlc ln -s vlc debian/gvlc/usr/share/doc/gvlc
mv debian/vlc/usr/lib/vlc/gui/gtk.so debian/gvlc/usr/lib/vlc/gui/ mv debian/vlc/usr/lib/vlc/gui/libgtk_plugin.so \
mv debian/vlc/usr/lib/vlc/gui/familiar.so debian/gvlc/usr/lib/vlc/gui/ debian/gvlc/usr/lib/vlc/gui/
mv debian/vlc/usr/lib/vlc/gui/libfamiliar_plugin.so \
debian/gvlc/usr/lib/vlc/gui/
ln -s vlc.1.gz debian/gvlc/usr/share/man/man1/gvlc.1.gz ln -s vlc.1.gz debian/gvlc/usr/share/man/man1/gvlc.1.gz
mv debian/vlc/$(VIDDIR)/gvlc32x32.xpm debian/gvlc/$(VIDDIR)/gvlc.xpm mv debian/vlc/$(VIDDIR)/gvlc32x32.xpm debian/gvlc/$(VIDDIR)/gvlc.xpm
mv debian/vlc/$(VIDDIR)/gvlc48x48.png debian/gvlc/$(PIXDIR)/gvlc.png mv debian/vlc/$(VIDDIR)/gvlc48x48.png debian/gvlc/$(PIXDIR)/gvlc.png
# Package: vlc-plugin-esd # Package: vlc-plugin-esd
ln -s vlc debian/vlc-plugin-esd/usr/share/doc/vlc-plugin-esd ln -s vlc debian/vlc-plugin-esd/usr/share/doc/vlc-plugin-esd
mv debian/vlc/usr/lib/vlc/audio_output/esd.so \ mv debian/vlc/usr/lib/vlc/audio_output/libesd_plugin.so \
debian/vlc-plugin-esd/usr/lib/vlc/audio_output/ debian/vlc-plugin-esd/usr/lib/vlc/audio_output/
# Package: vlc-plugin-alsa # Package: vlc-plugin-alsa
ln -s vlc debian/vlc-plugin-alsa/usr/share/doc/vlc-plugin-alsa ln -s vlc debian/vlc-plugin-alsa/usr/share/doc/vlc-plugin-alsa
mv debian/vlc/usr/lib/vlc/audio_output/alsa.so \ mv debian/vlc/usr/lib/vlc/audio_output/libalsa_plugin.so \
debian/vlc-plugin-alsa/usr/lib/vlc/audio_output/ debian/vlc-plugin-alsa/usr/lib/vlc/audio_output/
# Package: vlc-plugin-sdl # Package: vlc-plugin-sdl
ln -s vlc debian/vlc-plugin-sdl/usr/share/doc/vlc-plugin-sdl ln -s vlc debian/vlc-plugin-sdl/usr/share/doc/vlc-plugin-sdl
mv debian/vlc/usr/lib/vlc/audio_output/sdl.so \ mv debian/vlc/usr/lib/vlc/audio_output/libaout_sdl_plugin.so \
debian/vlc-plugin-sdl/usr/lib/vlc/audio_output/ debian/vlc-plugin-sdl/usr/lib/vlc/audio_output/
mv debian/vlc/usr/lib/vlc/video_output/sdl.so \ mv debian/vlc/usr/lib/vlc/video_output/libvout_sdl_plugin.so \
debian/vlc-plugin-sdl/usr/lib/vlc/video_output/ debian/vlc-plugin-sdl/usr/lib/vlc/video_output/
# Package: vlc-plugin-ggi # Package: vlc-plugin-ggi
ln -s vlc debian/vlc-plugin-ggi/usr/share/doc/vlc-plugin-ggi ln -s vlc debian/vlc-plugin-ggi/usr/share/doc/vlc-plugin-ggi
mv debian/vlc/usr/lib/vlc/video_output/ggi.so \ mv debian/vlc/usr/lib/vlc/video_output/libggi_plugin.so \
debian/vlc-plugin-ggi/usr/lib/vlc/video_output/ debian/vlc-plugin-ggi/usr/lib/vlc/video_output/
# Package: vlc-plugin-glide # Package: vlc-plugin-glide
ifeq ($(DEB_BUILD_ARCH),i386) ifeq ($(DEB_BUILD_ARCH),i386)
ln -s vlc debian/vlc-plugin-glide/usr/share/doc/vlc-plugin-glide ln -s vlc debian/vlc-plugin-glide/usr/share/doc/vlc-plugin-glide
mv debian/vlc/usr/lib/vlc/video_output/glide.so \ mv debian/vlc/usr/lib/vlc/video_output/libglide_plugin.so \
debian/vlc-plugin-glide/usr/lib/vlc/video_output/ debian/vlc-plugin-glide/usr/lib/vlc/video_output/
endif endif
# Package: qvlc # Package: qvlc
mv debian/vlc/usr/bin/qvlc debian/qvlc/usr/bin/ mv debian/vlc/usr/bin/qvlc debian/qvlc/usr/bin/
ln -s vlc debian/qvlc/usr/share/doc/qvlc ln -s vlc debian/qvlc/usr/share/doc/qvlc
mv debian/vlc/usr/lib/vlc/gui/qt.so debian/qvlc/usr/lib/vlc/gui/ mv debian/vlc/usr/lib/vlc/gui/libqt_plugin.so \
debian/qvlc/usr/lib/vlc/gui/
ln -s vlc.1.gz debian/qvlc/usr/share/man/man1/qvlc.1.gz ln -s vlc.1.gz debian/qvlc/usr/share/man/man1/qvlc.1.gz
mv debian/vlc/$(VIDDIR)/qvlc32x32.xpm debian/qvlc/$(VIDDIR)/qvlc.xpm mv debian/vlc/$(VIDDIR)/qvlc32x32.xpm debian/qvlc/$(VIDDIR)/qvlc.xpm
mv debian/vlc/$(VIDDIR)/qvlc48x48.png debian/qvlc/$(PIXDIR)/qvlc.png mv debian/vlc/$(VIDDIR)/qvlc48x48.png debian/qvlc/$(PIXDIR)/qvlc.png
# Package: vlc-plugin-mad # Package: vlc-plugin-mad
ln -s vlc debian/vlc-plugin-mad/usr/share/doc/vlc-plugin-mad ln -s vlc debian/vlc-plugin-mad/usr/share/doc/vlc-plugin-mad
mv debian/vlc/usr/lib/vlc/codec/mad.so \ mv debian/vlc/usr/lib/vlc/codec/libmad_plugin.so \
debian/vlc-plugin-mad/usr/lib/vlc/codec/ debian/vlc-plugin-mad/usr/lib/vlc/codec/
# Package: vlc-plugin-arts # Package: vlc-plugin-arts
ln -s vlc debian/vlc-plugin-arts/usr/share/doc/vlc-plugin-arts ln -s vlc debian/vlc-plugin-arts/usr/share/doc/vlc-plugin-arts
mv debian/vlc/usr/lib/vlc/audio_output/arts.so \ mv debian/vlc/usr/lib/vlc/audio_output/libarts_plugin.so \
debian/vlc-plugin-arts/usr/lib/vlc/audio_output/ debian/vlc-plugin-arts/usr/lib/vlc/audio_output/
# Package: vlc-plugin-lirc # Package: vlc-plugin-lirc
ln -s vlc debian/vlc-plugin-lirc/usr/share/doc/vlc-plugin-lirc ln -s vlc debian/vlc-plugin-lirc/usr/share/doc/vlc-plugin-lirc
mv debian/vlc/usr/lib/vlc/control/lirc.so \ mv debian/vlc/usr/lib/vlc/control/liblirc_plugin.so \
debian/vlc-plugin-lirc/usr/lib/vlc/control/ debian/vlc-plugin-lirc/usr/lib/vlc/control/
# Package: vlc-plugin-aa # Package: vlc-plugin-aa
ln -s vlc debian/vlc-plugin-aa/usr/share/doc/vlc-plugin-aa ln -s vlc debian/vlc-plugin-aa/usr/share/doc/vlc-plugin-aa
mv debian/vlc/usr/lib/vlc/video_output/aa.so \ mv debian/vlc/usr/lib/vlc/video_output/libaa_plugin.so \
debian/vlc-plugin-aa/usr/lib/vlc/video_output/ debian/vlc-plugin-aa/usr/lib/vlc/video_output/
# Package: vlc-plugin-xosd # Package: vlc-plugin-xosd
ln -s vlc debian/vlc-plugin-xosd/usr/share/doc/vlc-plugin-xosd ln -s vlc debian/vlc-plugin-xosd/usr/share/doc/vlc-plugin-xosd
mv debian/vlc/usr/lib/vlc/visualization/xosd.so \ mv debian/vlc/usr/lib/vlc/visualization/libxosd_plugin.so \
debian/vlc-plugin-xosd/usr/lib/vlc/visualization/ debian/vlc-plugin-xosd/usr/lib/vlc/visualization/
# Package: mozilla-plugin-vlc # Package: mozilla-plugin-vlc
...@@ -173,21 +180,32 @@ endif ...@@ -173,21 +180,32 @@ endif
# Package: kvlc # Package: kvlc
mv debian/vlc/usr/bin/kvlc debian/kvlc/usr/bin/ mv debian/vlc/usr/bin/kvlc debian/kvlc/usr/bin/
ln -s vlc debian/kvlc/usr/share/doc/kvlc ln -s vlc debian/kvlc/usr/share/doc/kvlc
mv debian/vlc/usr/lib/vlc/gui/kde.so debian/kvlc/usr/lib/vlc/gui/ mv debian/vlc/usr/lib/vlc/gui/libkde_plugin.so \
debian/kvlc/usr/lib/vlc/gui/
ln -s vlc.1.gz debian/kvlc/usr/share/man/man1/kvlc.1.gz ln -s vlc.1.gz debian/kvlc/usr/share/man/man1/kvlc.1.gz
mv debian/vlc/$(VIDDIR)/kvlc32x32.xpm debian/kvlc/$(VIDDIR)/kvlc.xpm mv debian/vlc/$(VIDDIR)/kvlc32x32.xpm debian/kvlc/$(VIDDIR)/kvlc.xpm
mv debian/vlc/$(VIDDIR)/kvlc48x48.png debian/kvlc/$(PIXDIR)/kvlc.png mv debian/vlc/$(VIDDIR)/kvlc48x48.png debian/kvlc/$(PIXDIR)/kvlc.png
# Package: vlc-plugin-svgalib # Package: vlc-plugin-svgalib
ln -s vlc debian/vlc-plugin-svgalib/usr/share/doc/vlc-plugin-svgalib ln -s vlc debian/vlc-plugin-svgalib/usr/share/doc/vlc-plugin-svgalib
mv debian/vlc/usr/lib/vlc/video_output/svgalib.so \ mv debian/vlc/usr/lib/vlc/video_output/libsvgalib_plugin.so \
debian/vlc-plugin-svgalib/usr/lib/vlc/video_output debian/vlc-plugin-svgalib/usr/lib/vlc/video_output
# Package: vlc-plugin-dv # Package: vlc-plugin-dv
ln -s vlc debian/vlc-plugin-dv/usr/share/doc/vlc-plugin-dv ln -s vlc debian/vlc-plugin-dv/usr/share/doc/vlc-plugin-dv
mv debian/vlc/usr/lib/vlc/codec/dv.so \ mv debian/vlc/usr/lib/vlc/codec/libdv_plugin.so \
debian/vlc-plugin-dv/usr/lib/vlc/codec debian/vlc-plugin-dv/usr/lib/vlc/codec
# Package: vlc-plugin-a52
ln -s vlc debian/vlc-plugin-a52/usr/share/doc/vlc-plugin-a52
mv debian/vlc/usr/lib/vlc/codec/liba52_plugin.so \
debian/vlc-plugin-a52/usr/lib/vlc/codec
# Package: vlc-plugin-dvb
ln -s vlc debian/vlc-plugin-dvb/usr/share/doc/vlc-plugin-dvb
mv debian/vlc/usr/lib/vlc/access/libsatellite_plugin.so \
debian/vlc-plugin-dvb/usr/lib/vlc/access
# Clean up # Clean up
rm -f debian/vlc/$(VIDDIR)/*.png rm -f debian/vlc/$(VIDDIR)/*.png
......
usr/lib/vlc/access
usr/share/doc
usr/bin usr/bin
usr/lib/vlc/acess usr/lib/vlc/access
usr/lib/vlc/audio_filter usr/lib/vlc/audio_filter
usr/lib/vlc/audio_mixer usr/lib/vlc/audio_mixer
usr/lib/vlc/audio_output usr/lib/vlc/audio_output
......
Makefile
Makefile.in
...@@ -25,12 +25,12 @@ all: manual ...@@ -25,12 +25,12 @@ all: manual
manual: manual.txt manual.ps manual.html manual: manual.txt manual.ps manual.html
manual.tex: audio_output.xml debugging.xml decoders.xml gfdl.xml glossary.xml history.xml input.xml interface.xml manual.xml overview.xml ports.xml video_output.xml manual.tex: audio_output.xml debugging.xml decoders.xml gfdl.xml glossary.xml hacking.xml history.xml input.xml interface.xml manual.xml overview.xml ports.xml video_output.xml
$(JADE) -t tex -V %section-autolabel% -d $(PRINT_SS) $(XML_DECL) manual.xml $(JADE) -t tex -V %section-autolabel% -d $(PRINT_SS) $(XML_DECL) manual.xml
perl -i.bak -pe 's/\000//g' $@ && rm $*.tex.bak perl -i.bak -pe 's/\000//g' $@ && rm $*.tex.bak
# No it's not a joke # No it's not a joke
manual.html: audio_output.xml debugging.xml decoders.xml gfdl.xml glossary.xml history.xml input.xml interface.xml manual.xml overview.xml ports.xml video_output.xml manual.html: audio_output.xml debugging.xml decoders.xml gfdl.xml glossary.xml hacking.xml history.xml input.xml interface.xml manual.xml overview.xml ports.xml video_output.xml
$(JADE) -t sgml -V %section-autolabel% -V nochunks \ $(JADE) -t sgml -V %section-autolabel% -V nochunks \
-d $(HTML_SS) $(XML_DECL) manual.xml > $@ -d $(HTML_SS) $(XML_DECL) manual.xml > $@
...@@ -42,7 +42,7 @@ manual.dvi: manual.tex modules.eps ps.eps stream.eps ts.eps ...@@ -42,7 +42,7 @@ manual.dvi: manual.tex modules.eps ps.eps stream.eps ts.eps
manual.ps: manual.dvi manual.ps: manual.dvi
dvips -f $< > $@ dvips -f $< > $@
manual.txt: audio_output.xml debugging.xml decoders.xml gfdl.xml glossary.xml history.xml input.xml interface.xml manual.xml overview.xml ports.xml video_output.xml manual.txt: audio_output.xml debugging.xml decoders.xml gfdl.xml glossary.xml hacking.xml history.xml input.xml interface.xml manual.xml overview.xml ports.xml video_output.xml
$(JADE) -t sgml -V nochunks -d $(HTML_SS) $(XML_DECL) manual.xml > dump.html $(JADE) -t sgml -V nochunks -d $(HTML_SS) $(XML_DECL) manual.xml > dump.html
lynx -force_html -dump dump.html > $@ lynx -force_html -dump dump.html > $@
-rm -f dump.html -rm -f dump.html
......
<chapter> <title> VLC Overview </title>
<sect1> <title> LibVLC </title>
<para> LibVLC is the core part of VLC. It is a library providing an
interface for programs such as VLC to a lot of functionalities such as
stream access, audio and video output, plugin handling, a thread system.
All the LibVLC source files are located in the <filename>src/</filename>
directory and its subdirectories: </para>
<itemizedlist>
<listitem> <para> <filename>interface/</filename>: contains code for
user interaction such as key presses and device ejection. </para>
</listitem>
<listitem> <para> <filename>playlist/</filename>: manages playlist
interaction such as stop, play, next, or random playback. </para>
</listitem>
<listitem> <para> <filename>input/</filename>: opens an input module,
reads packets, parses them and passes reconstituted elementary streams
to the decoder(s). </para> </listitem>
<listitem> <para> <filename>video_output/</filename>: initializes the
video display, gets all pictures and subpictures (ie. subtitles) from
the decoder(s), optionally converts them to another format (such as YUV
to RGB), and displays them. </para></listitem>
<listitem> <para> <filename>audio_output/</filename>: initializes the
audio mixer, ie. finds the right playing frequency, and then resamples
audio frames received from the decoder(s). </para> </listitem>
<listitem> <para> <filename>stream_output/</filename>: TODO </para>
</listitem>
<listitem> <para> <filename>misc/</filename>: miscellaneous utilities
used in other parts of libvlc, such as the thread system, the message
queue, CPU detection, the object lookup system, or platform-specific
code. </para> </listitem>
</itemizedlist>
<mediaobject>
<imageobject>
<imagedata fileref="modules.eps" format="EPS" scalefit="1" scale="80"/>
</imageobject>
<imageobject>
<imagedata fileref="modules.gif" format="GIF" />
</imageobject>
<textobject>
<phrase> Data flow between modules </phrase>
</textobject>
</mediaobject>
</sect1>
<sect1> <title> VLC </title>
<para> VLC is a simple program written around LibVLC. It is very small,
but is a fully featured multimedia player thanks to LibVLC's support for
dynamic modules. </para>
</sect1>
<sect1> <title> Modules </title>
<para> Modules are located in the <filename>modules/</filename>
subdirectory and are loaded at runtime. Every module may offer different
features that will best suit a particular file or a particular
environment. Besides, most portability works result in the writing of an
audio_output/video_output/interface module to support a new platform (eg.
BeOS or MacOS X). </para>
<para> Plugin modules are loaded and unloaded dynamically
by functions in <filename>src/misc/modules.c</filename> and
<filename>include/modules*.h</filename>. The API for writing modules will
be discussed in a following chapter. </para>
<para> Modules can also be built directly into the application which uses
LibVLC, for instance on an operating system that does not have support for
dynamically loadable code. Modules statically built into the application
are called builtins. </para>
</sect1>
<sect1> <title> Threads </title>
<sect2> <title> Thread management </title>
<para> VLC is heavily multi-threaded. We chose against a single-thread
approach because decoder preemptibility and scheduling would be a
mastermind (for instance decoders and outputs have to be separated,
otherwise it cannot be warrantied that a frame will be played at the
exact presentation time), and we currently have no plan to support a
single-threaded client. Multi-process decoders usually imply more overhead
(problems of shared memory) and communication between processes is harder.
</para>
<para> Our threading structure is modeled on pthreads.
However, for portability reasons, we don't call
<function>pthread_*</function> functions directly, but use a
similar wrapper, made of <function>vlc_thread_create</function>,
<function>vlc_thread_exit</function>,
<function>vlc_thread_join</function>,
<function>vlc_mutex_init</function>, <function>vlc_mutex_lock</function>,
<function>vlc_mutex_unlock</function>,
<function>vlc_mutex_destroy</function>,
<function>vlc_cond_init</function>, <function>vlc_cond_signal</function>,
<function>vlc_cond_broadcast</function>,
<function>vlc_cond_wait</function>, <function>vlc_cond_destroy</function>,
and structures <type>vlc_thread_t</type>, <type>vlc_mutex_t</type>, and
<type>vlc_cond_t</type>. </para>
</sect2>
<sect2> <title> Synchronization </title>
<para> Another key feature of VLC is that decoding and playing are
asynchronous: decoding is done by a decoder thread, playing is done by
audio_output or video_output thread. The design goal is to ensure that
an audio or video frame is played exactly at the right time, without
blocking any of the decoder threads. This leads to a complex communication
structure between the interface, the input, the decoders and the outputs.
</para>
<para> Having several input and video_output threads reading multiple
files at the same time is permitted, despite the fact that the current
interface doesn't allow any way to do it [this is subject to change in the
near future]. Anyway the client has been written from the ground up with
this in mind. This also implies that a non-reentrant library (including in
particular liba52) cannot be used without using a global lock. </para>
<para> Presentation Time Stamps located in the system layer of the
stream are passed to the decoders, and all resulting samples are dated
accordingly. The output layers are supposed to play them at the right
time. Dates are converted to microseconds ; an absolute date is the number
of microseconds since Epoch (Jan 1st, 1970). The <type>mtime_t</type> type
is a signed 64-bit integer. </para>
<para> The current date can be retrieved with
<function>mdate()</function>. The execution of a thread can be suspended
until a certain <parameter>date</parameter> via <function>mwait</function>
<parameter>( mtime_t date )</parameter>. You can sleep for a fixed number
of microseconds with <function>msleep</function> <parameter>( mtime_t
delay )</parameter>. </para>
<warning> <para> Please remember to wake up slightly
<emphasis>before</emphasis> the presentation date, if some particular
treatment needs to be done (e.g. a chroma transformation). For instance
in <filename>modules/codec/mpeg_video/synchro.c</filename>, track of the
average decoding times is kept to ensure pictures are not decoded too
late. </para> </warning>
</sect2>
</sect1>
<sect1> <title> Code conventions </title>
<sect2> <title> Function naming </title>
<para>
All functions are named accordingly : module name (in lower case) + _ +
function name (in mixed case, <emphasis> without underscores</emphasis>).
For instance : <function>intf_FooFunction</function>. Static functions
don't need usage of the module name.
</para>
</sect2>
<sect2> <title> Variable naming </title>
<para>
Hungarian notations are used, that means we have the following prefixes :
</para>
<itemizedlist>
<listitem> <para> i_ for integers (sometimes l_ for long integers) ;
</para> </listitem>
<listitem> <para> b_ for booleans ; </para> </listitem>
<listitem> <para> d_ for doubles (sometimes f_ for floats) ;
</para> </listitem>
<listitem> <para> pf_ for function pointers ; </para> </listitem>
<listitem> <para> psz_ for a Pointer to a String terminated by a
Zero (C-string) ;
</para> </listitem>
<listitem> <para> More generally, we add a p when the variable is
a pointer to a type. </para> </listitem>
</itemizedlist>
<para>
If one variable has no basic type (for instance a complex structure), don't
put any prefix (except p_* if it's a pointer). After one prefix, put
an <emphasis> explicit </emphasis> variable name <emphasis> in lower
case</emphasis>. If several words are required, join them with an
underscore (no mixed case). Examples :
</para>
<itemizedlist>
<listitem> <para>
<type> data_packet_t * </type> <varname> p_buffer; </varname>
</para> </listitem> <listitem> <para>
<type> char </type> <varname> psz_msg_date[42]; </varname>
</para> </listitem> <listitem> <para>
<type> int </type> <varname> pi_es_refcount[MAX_ES]; </varname>
</para> </listitem> <listitem> <para>
<type> void </type> <varname> (* pf_next_data_packet)( int * ); </varname>
</para> </listitem>
</itemizedlist>
</sect2>
<sect2> <title> A few words about white spaces </title>
<para>
First, never use tabs in the source (you're entitled to use them in the
Makefile :-). Use <command> set expandtab </command> under <application>
vim </application> or the equivalent under <application>
emacs</application>. Indents are 4 spaces long.
</para>
<para>
Second, put spaces <emphasis> before and after </emphasis> operators, and
inside brackets. For instance :
<programlisting> for( i = 0; i &lt; 12; i++, j += 42 ); </programlisting>
</para>
<para>
Third, leave braces alone on their lines (GNU style). For instance :
<programlisting>
if( i_es == 42 )
{
p_buffer[0] = 0x12;
}
</programlisting>
</para>
<para>
We write C, so use C-style comments /* ... */.
</para>
</sect2>
</sect1>
</chapter>
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
[ [
<!ENTITY glossary SYSTEM "glossary.xml"> <!ENTITY glossary SYSTEM "glossary.xml">
<!ENTITY overview SYSTEM "overview.xml"> <!ENTITY overview SYSTEM "overview.xml">
<!ENTITY hacking SYSTEM "hacking.xml">
<!ENTITY interface SYSTEM "interface.xml"> <!ENTITY interface SYSTEM "interface.xml">
<!ENTITY input SYSTEM "input.xml"> <!ENTITY input SYSTEM "input.xml">
<!ENTITY decoders SYSTEM "decoders.xml"> <!ENTITY decoders SYSTEM "decoders.xml">
...@@ -57,7 +58,7 @@ ...@@ -57,7 +58,7 @@
<orgname> VideoLAN project </orgname> <orgname> VideoLAN project </orgname>
</affiliation> </affiliation>
</collab> </collab>
<pubdate> $Id: manual.xml,v 1.3 2002/08/29 23:53:22 massiot Exp $ </pubdate> <pubdate> $Id: manual.xml,v 1.4 2002/09/30 11:05:33 sam Exp $ </pubdate>
<copyright> <year> 2001 </year> <copyright> <year> 2001 </year>
<holder> Christophe Massiot, for IDEALX S.A.S. </holder> <holder> Christophe Massiot, for IDEALX S.A.S. </holder>
</copyright> </copyright>
...@@ -83,6 +84,11 @@ ...@@ -83,6 +84,11 @@
&overview; &overview;
<!-- ============================ HACKING =============================
-->
&hacking;
<!-- =========================== INTERFACE ============================ <!-- =========================== INTERFACE ============================
--> -->
......
This diff is collapsed.
...@@ -241,3 +241,83 @@ the Boston strangler is to the woman home alone. ...@@ -241,3 +241,83 @@ the Boston strangler is to the woman home alone.
-- #videolan -- #videolan
% %
<Dnumgis> what does vout_CreatePicture do?
<sam> asks for a picture to the video output thread
<Dnumgis> so it just returns the next picture to be displayed?
<sam> not necessarily the next
<sam> it's your duty to set its display date, afterwards
<Meuuh> I'd even say, it is your destiny, Luke, to set its display date
-- #videolan
%
<hh> When the first picture of the coded frame is a I-field picture, then the
second picture of the frame shall be either an I-field picture or a
P-field picture. If the second picture is a P-field picture then certain
restrictions apply, see 7.6.3.5.
<Meuuh> yeah
<Dnumgis> Meuuh: not sure if you sound more like an mpeg guru or a blues
artist
<Meuuh> like a cow, maybe ?
<Dnumgis> or something
-- #videolan
%
<deepmind> a52old & wi11y?
-- #videolan
%
<sam> bah oui tu peux faire de la doc sur n'importe quoi hein
<Meuuh> je fais bien une doc dveloppeur vlc
<Meuuh> comme si y'avait des dveloppeurs vlc part sam et moi !
-- #videolan
%
<deepmind> pis comme ca je me tiens au courant de o va vlc :)
<Meuuh> dans le mur ?
<Meuuh> y'a sam qui rajoute du charbon, moi je m'agrippe au frein
-- #videolan
%
<tooney> $grut Dnumgis
<gally> Dnumgis: tir ditt og ndhavn klikk ?
<Dnumgis> gally: og hva skulle det bety?
<Dnumgis> gally: what was that supposed to mean?
-- #videolan
%
<sam> $grut
<gally> vekt yrer gten ke utgjre kan
<Dnumgis> sam: you're insane
<Dnumgis> someone have too much spare time
<sam> definitely
<Dnumgis> maybe they should do something useful instead
<gally> grunt grunt snort grumpf grumpf gra grunt uiigrumpf uiihiiii snort !!
-- #videolan
%
<Meuuh> mais putain de bordel de chiottes de bite cul de merde de sa race
<Dnumgis> I think it may be a good thing that i don't understand that
sentence fully
-- #videolan
%
<Dnumgis> I just burned an amb duron trying to compile vlc :(
<Meuuh> is it my fault ?
<Dnumgis> no
<Dnumgis> unless you wrote blocks.c :)
<Meuuh> actually, I did...
-- #videolan
%
<Meuuh> pleasehelp : are you trying with a dolby trailer ?
<pleasehelp> no... using windows
-- #videolan
%
<henrisson> hal_3k: don't worry, I'll soon be replaced by a lib
<hal_3k> henri: you'll be replaced by a lib? does the lib know how to
program? ;)
<Meuuh> do you think henri knows ? :p
-- #videolan
%
...@@ -16,11 +16,10 @@ ...@@ -16,11 +16,10 @@
.\" .sp <n> insert n+1 empty lines .\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7) .\" for manpage-specific macros, see man(7)
.SH NAME .SH NAME
vlc, gvlc, gnome-vlc, qvlc \- The VideoLAN Client vlc, gvlc, gnome-vlc, kvlc, qvlc \- The VideoLAN Client
.SH SYNOPSIS .SH SYNOPSIS
.B vlc .B vlc
.RI [ OPTIONS ] .RI [ OPTIONS ]
.RI [ PARAMETERS ]
.RI [ ITEMS ]... .RI [ ITEMS ]...
.SH DESCRIPTION .SH DESCRIPTION
This manual page documents briefly the This manual page documents briefly the
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* modules_inner.h : Macros used from within a module. * modules_inner.h : Macros used from within a module.
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * Copyright (C) 2001 VideoLAN
* $Id: modules_inner.h,v 1.31 2002/08/21 17:31:58 sam Exp $ * $Id: modules_inner.h,v 1.32 2002/09/30 11:05:33 sam Exp $
* *
* Authors: Samuel Hocevar <sam@zoy.org> * Authors: Samuel Hocevar <sam@zoy.org>
* *
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
*****************************************************************************/ *****************************************************************************/
#if !defined( __PLUGIN__ ) && !defined( __BUILTIN__ ) #if !defined( __PLUGIN__ ) && !defined( __BUILTIN__ )
# define MODULE_NAME main # define MODULE_NAME main
# define MODULE_PATH main
#endif #endif
/***************************************************************************** /*****************************************************************************
...@@ -54,8 +53,8 @@ ...@@ -54,8 +53,8 @@
/* If the module is built-in, then we need to define foo_InitModule instead /* If the module is built-in, then we need to define foo_InitModule instead
* of InitModule. Same for Activate- and DeactivateModule. */ * of InitModule. Same for Activate- and DeactivateModule. */
#if defined( __BUILTIN__ ) #if defined( __BUILTIN__ )
# define E_( function ) CONCATENATE( function, MODULE_PATH ) # define E_( function ) CONCATENATE( function, MODULE_NAME )
# define __VLC_SYMBOL( symbol ) CONCATENATE( symbol, MODULE_PATH ) # define __VLC_SYMBOL( symbol ) CONCATENATE( symbol, MODULE_NAME )
# define DECLARE_SYMBOLS struct _u_n_u_s_e_d_ # define DECLARE_SYMBOLS struct _u_n_u_s_e_d_
# define STORE_SYMBOLS struct _u_n_u_s_e_d_ # define STORE_SYMBOLS struct _u_n_u_s_e_d_
#elif defined( __PLUGIN__ ) #elif defined( __PLUGIN__ )
...@@ -163,36 +162,3 @@ ...@@ -163,36 +162,3 @@
#define linked_with_a_crap_library_which_uses_atexit( ) \ #define linked_with_a_crap_library_which_uses_atexit( ) \
p_module->b_unloadable = VLC_FALSE p_module->b_unloadable = VLC_FALSE
/*
* module_activate: this function is called before functions can be accessed,
* we do allocation tasks here, and maybe additional stuff such as large
* table allocation. Once ActivateModule is called we are almost sure the
* module will be used.
*/
#define module_activate( prototype ) \
__module_activate( prototype ); \
int __VLC_SYMBOL( module_activate ) ( module_t *p_module ) \
{ \
STORE_SYMBOLS; \
config_SetCallbacks( p_module->p_config, p_config ); \
return __module_activate( p_module ); \
} \
\
static int __module_activate( prototype )
/*
* DeactivateModule: this function is called after we are finished with the
* module. Everything that has been done in ActivateModule needs to be undone
* here.
*/
#define module_deactivate( prototype ) \
__module_deactivate( prototype ); \
int __VLC_SYMBOL( module_deactivate )( module_t *p_module ) \
{ \
int i_ret = __module_deactivate( p_module ); \
config_UnsetCallbacks( p_module->p_config ); \
return i_ret; \
} \
\
static int __module_deactivate( prototype )
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment