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
core
core.*
gmon.out
configure.ac
configure
config.h
config.h.*
......@@ -20,12 +21,15 @@ Makefile.in
Makefile.opts
Makefile.modules
Makefile.config
Modules.am
build-stamp
stamp-h*
aclocal.m4
install-sh
missing
mkinstalldirs
compile
depcomp
vlc-debug.*
vlc-log.*
vlc-config
......
#===================#
# ChangeLog for vlc #
#===================#
0.5.0
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
===========
Requirements
------------
You will need the following tools if you plan to use the CVS version of vlc:
- 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)
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
as a recent Linux distribution), run bootstrap, and then copy the whole
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
vlc
vlc-plugin-*
......
......@@ -2,7 +2,7 @@ Source: vlc
Section: graphics
Priority: optional
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
Package: vlc
......@@ -297,3 +297,21 @@ Description: DV codec plugin for vlc
.
This plugin adds support for the DV video format to vlc, the VideoLAN
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/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/share/doc
......@@ -12,7 +12,8 @@ export DH_COMPAT=3
# 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-faad --with-faad-tree=extras/faad
ifeq ($(DEB_BUILD_ARCH),i386)
......@@ -38,11 +39,11 @@ build-stamp:
# Check that we have an ffmpeg tree in here (can be a symlink)
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)
test -d extras/faad
(cd extras/faad ; ./configure ; make)
(cd extras/faad && ./configure && cd libfaad && make)
./configure --mandir=$${prefix}/share/man \
--infodir=$${prefix}/share/info $(CONFIG_FLAGS)
......@@ -58,10 +59,11 @@ clean:
# Check that we have an ffmpeg tree in here (can be a symlink)
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)
test -d extras/faad
-(cd extras/faad ; make distclean)
-(cd extras/faad && make distclean)
-$(MAKE) distclean
dh_clean
......@@ -84,13 +86,15 @@ install: build
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/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
# Package: gnome-vlc
mv debian/vlc/usr/bin/gnome-vlc debian/gnome-vlc/usr/bin/
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
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
......@@ -98,72 +102,75 @@ install: build
# Package: gvlc
mv debian/vlc/usr/bin/gvlc debian/gvlc/usr/bin/
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/familiar.so debian/gvlc/usr/lib/vlc/gui/
mv debian/vlc/usr/lib/vlc/gui/libgtk_plugin.so \
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
mv debian/vlc/$(VIDDIR)/gvlc32x32.xpm debian/gvlc/$(VIDDIR)/gvlc.xpm
mv debian/vlc/$(VIDDIR)/gvlc48x48.png debian/gvlc/$(PIXDIR)/gvlc.png
# Package: 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/
# Package: 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/
# Package: 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/
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/
# Package: 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/
# Package: vlc-plugin-glide
ifeq ($(DEB_BUILD_ARCH),i386)
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/
endif
# Package: qvlc
mv debian/vlc/usr/bin/qvlc debian/qvlc/usr/bin/
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
mv debian/vlc/$(VIDDIR)/qvlc32x32.xpm debian/qvlc/$(VIDDIR)/qvlc.xpm
mv debian/vlc/$(VIDDIR)/qvlc48x48.png debian/qvlc/$(PIXDIR)/qvlc.png
# Package: 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/
# Package: 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/
# Package: 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/
# Package: 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/
# Package: 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/
# Package: mozilla-plugin-vlc
......@@ -173,21 +180,32 @@ endif
# Package: kvlc
mv debian/vlc/usr/bin/kvlc debian/kvlc/usr/bin/
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
mv debian/vlc/$(VIDDIR)/kvlc32x32.xpm debian/kvlc/$(VIDDIR)/kvlc.xpm
mv debian/vlc/$(VIDDIR)/kvlc48x48.png debian/kvlc/$(PIXDIR)/kvlc.png
# Package: 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
# Package: 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
# 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
rm -f debian/vlc/$(VIDDIR)/*.png
......
usr/lib/vlc/access
usr/share/doc
usr/bin
usr/lib/vlc/acess
usr/lib/vlc/access
usr/lib/vlc/audio_filter
usr/lib/vlc/audio_mixer
usr/lib/vlc/audio_output
......
Makefile
Makefile.in
......@@ -25,12 +25,12 @@ all: manual
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
perl -i.bak -pe 's/\000//g' $@ && rm $*.tex.bak
# 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 \
-d $(HTML_SS) $(XML_DECL) manual.xml > $@
......@@ -42,7 +42,7 @@ manual.dvi: manual.tex modules.eps ps.eps stream.eps ts.eps
manual.ps: manual.dvi
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
lynx -force_html -dump 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 @@
[
<!ENTITY glossary SYSTEM "glossary.xml">
<!ENTITY overview SYSTEM "overview.xml">
<!ENTITY hacking SYSTEM "hacking.xml">
<!ENTITY interface SYSTEM "interface.xml">
<!ENTITY input SYSTEM "input.xml">
<!ENTITY decoders SYSTEM "decoders.xml">
......@@ -57,7 +58,7 @@
<orgname> VideoLAN project </orgname>
</affiliation>
</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>
<holder> Christophe Massiot, for IDEALX S.A.S. </holder>
</copyright>
......@@ -83,6 +84,11 @@
&overview;
<!-- ============================ HACKING =============================
-->
&hacking;
<!-- =========================== INTERFACE ============================
-->
......
This diff is collapsed.
This diff is collapsed.
......@@ -16,11 +16,10 @@
.\" .sp <n> insert n+1 empty lines
.\" for manpage-specific macros, see man(7)
.SH NAME
vlc, gvlc, gnome-vlc, qvlc \- The VideoLAN Client
vlc, gvlc, gnome-vlc, kvlc, qvlc \- The VideoLAN Client
.SH SYNOPSIS
.B vlc
.RI [ OPTIONS ]
.RI [ PARAMETERS ]
.RI [ ITEMS ]...
.SH DESCRIPTION
This manual page documents briefly the
......
This diff is collapsed.
......@@ -237,7 +237,7 @@
/* Optimization level, from 0 to 2 - 1 is generally a good compromise. Remember
* that raising this level dramatically lengthens the compilation time. */
#if defined( HAVE_RELEASE ) || defined( __pentiumpro__ )
#if defined( HAVE_RELEASE )
# define VPAR_OPTIM_LEVEL 2
#else
# define VPAR_OPTIM_LEVEL 1
......
This diff is collapsed.
Makefile
Makefile.in
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