Commit 01f7ff3a authored by Matteo F. Vescovi's avatar Matteo F. Vescovi

Imported Upstream version 4.9.9

parent b9946169
......@@ -4,3 +4,27 @@ Rich Wareham <>
Kees Cook <>
Michael Roitzsch <>
Frantisek Dvorak <>
Nico Sabbi <>
Dominik Mierzejewski <>
Erik Hovland <>
Diego Biurrun <>
John Stebbins <>
Dan Nicholson <>
KO Myung-Hun <>
Reimar Döffinger <>
Frédéric Marchal <>
Rafaël Carré <>
Alexander Roalter <>
Benjamin Kerensa <>
Brad Smith <>
Doug Springer <>
Erik Auerswald <>
Ganael Laplanche <>
Ingo Brückl <>
Jindrich Makovicka <>
Jorgen Lundman <>
LRN <>
Mike Castle <>
Reinhard Tartler <>
Roger Pack <>
Rémi Duraffort <>
This diff is collapsed.
This fork of dvdnav was created to overcome the lack of responsiveness
of the official development channel, not to bastardize this library in
something for specific usage by mplayer, so these are the rules to follow
when developing code:
- don't remove pre-existing code that mplayer doesn't need
- don't add code to expose the internals of dvdnav
- don't add code that binds applications to side-effects of the library
- don't alter the API in an incompatible manner
When committing code to the repository always follow these rules:
- don't break the compilability of the library - always keep svn checkouts usable
- never mix cosmetical and functional changes
- don't commit unrelated changes as a single transaction
- don't split strictly related changes over multiple commits
- never alter the indentation / bracing / prototyping style of existing files
- if you break something by accident fix it as soon as possible using the appropriate
svn tools to revert your commit(s). If in doubt ask explanations to the
mailing list
- trivial patches such as spell fixes, prototype mismatch, missing includes,
more proper variable typization and similar should be committed without asking
prior authorization
If in reiterated violation of these rules your account will be deleted.
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. (Caching is
disabled by default to prevent problems with accidental use of stale
cache files.)
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `' (or `') is used to create
`configure' by a program called `autoconf'. You only need
`' if you want to change it or regenerate `configure' using
a newer version of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system. If you're
using `csh' on an old version of System V, you might need to type
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
Compilers and Options
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c89 CFLAGS=-O2 LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you must use a version of `make' that
supports the `VPATH' variable, such as GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
If you have to use a `make' that does not support the `VPATH'
variable, you have to compile the package for one architecture at a
time in the source code directory. After you have installed the
package for one architecture, use `make distclean' before reconfiguring
for another architecture.
Installation Names
By default, `make install' will install the package's files in
`/usr/local/bin', `/usr/local/man', etc. You can specify an
installation prefix other than `/usr/local' by giving `configure' the
option `--prefix=PATH'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
give `configure' the option `--exec-prefix=PATH', the package will use
PATH as the prefix for installing programs and libraries.
Documentation and other data files will still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=PATH' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
where SYSTEM can have one of these forms:
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the `--target=TYPE' option to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/' if it exists, then
`PREFIX/etc/' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
will cause the specified gcc to be used as the C compiler (unless it is
overridden in the site shell script).
`configure' Invocation
`configure' recognizes the following options to control how it
Print a summary of the options to `configure', and exit.
Print the version of Autoconf used to generate the `configure'
script, and exit.
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
Alias for `--cache-file=config.cache'.
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
include config.mak
CFLAGS += $(USEDEBUG) -Wall -funsigned-char
DVDREAD_HEADERS = src/dvdread/dvd_reader.h \
src/dvdread/ifo_print.h \
src/dvdread/ifo_read.h \
src/dvdread/ifo_types.h \
src/dvdread/nav_print.h \
src/dvdread/nav_read.h \
src/dvdread/dvd_udf.h \
src/dvdread/nav_types.h \
DVDREAD_SRCS = dvd_input.c dvd_reader.c dvd_udf.c ifo_print.c ifo_read.c \
md5.c nav_print.c nav_read.c bitreader.c
LIB = $(L).a
SHLIB = $(L).so
.OBJDIR= obj
OBJS = $(patsubst %.c,%.o, $(SRCS))
DVDREAD_OBJS = $(patsubst %.c,%.o, $(DVDREAD_SRCS))
SHOBJS = $(patsubst %.c,, $(SRCS))
DVDREAD_SHOBJS = $(patsubst %.c,, $(DVDREAD_SRCS))
DEPS= ${OBJS:%.o=%.d}
BUILDDEPS = Makefile config.mak
ifeq ($(BUILD_SHARED),yes)
all: $(SHLIB) $(DVDREAD_SHLIB) dvdread-config pkgconfig
install: $(SHLIB) $(DVDREAD_SHLIB) install-shared install-dvdread-config install-pkgconfig
ifeq ($(BUILD_STATIC),yes)
all: $(LIB) $(DVDREAD_LIB) dvdread-config pkgconfig
install: $(LIB) $(DVDREAD_LIB) install-static install-dvdread-config install-pkgconfig
install: install-headers
# Let create version.h
SVN_ENTRIES = $(SRC_PATH_BARE)/.svn/entries
ifeq ($(wildcard $(SVN_ENTRIES)),$(SVN_ENTRIES))
version.h: $(SVN_ENTRIES)
$(SRCS) $(DVDREAD_SRCS): version.h
# General targets
cd $(.OBJDIR) && $(AR) rc $@ $(DVDREAD_OBJS)
cd $(.OBJDIR) && $(RANLIB) $@
cd $(.OBJDIR) && $(CC) -fPIC -DPIC -MD $(CFLAGS) -c -o $@ $<
.c.o: $(BUILDDEPS)
cd $(.OBJDIR) && $(CC) -MD $(CFLAGS) -c -o $@ $<
# Install targets
install -d $(DESTDIR)$(dvdread_incdir)
install -m 644 $(DVDREAD_HEADERS) $(DESTDIR)$(dvdread_incdir)
install-shared: $(SHLIB)
install -d $(DESTDIR)$(shlibdir)
install $(INSTALLSTRIP) -m 755 $(.OBJDIR)/$(SHLIB) \
cd $(DESTDIR)$(shlibdir) && \
cd $(DESTDIR)$(shlibdir) && \
install $(INSTALLSTRIP) -m 755 $(.OBJDIR)/$(DVDREAD_SHLIB) \
cd $(DESTDIR)$(shlibdir) && \
cd $(DESTDIR)$(shlibdir) && \
install-static: $(LIB)
install -d $(DESTDIR)$(libdir)
install $(INSTALLSTRIP) -m 755 $(.OBJDIR)/$(LIB) $(DESTDIR)$(libdir)/$(LIB)
install $(INSTALLSTRIP) -m 755 $(.OBJDIR)/$(DVDREAD_LIB) $(DESTDIR)$(libdir)/$(DVDREAD_LIB)
# Clean targets
rm -rf *~ $(.OBJDIR)/* version.h
distclean: clean
find . -name "*~" | xargs rm -rf
rm -rf config.mak $(.OBJDIR)
dvdread-config: $(.OBJDIR)/dvdread-config
$(.OBJDIR)/dvdread-config: $(BUILDDEPS)
@echo '#!/bin/sh' > $(.OBJDIR)/dvdread-config
@echo 'prefix='$(PREFIX) >> $(.OBJDIR)/dvdread-config
@echo 'libdir='$(shlibdir) >> $(.OBJDIR)/dvdread-config
@echo 'version='$(SHLIB_VERSION) >> $(.OBJDIR)/dvdread-config
@echo >> $(.OBJDIR)/dvdread-config
cat $(SRC_PATH_BARE)/misc/ >> $(.OBJDIR)/dvdread-config
chmod 0755 $(.OBJDIR)/dvdread-config
install-dvdread-config: dvdread-config
install -d $(DESTDIR)$(PREFIX)/bin
install -m 0755 $(.OBJDIR)/dvdread-config $(DESTDIR)$(PREFIX)/bin/dvdread-config
pcedit = sed \
-e 's,@prefix@,$(PREFIX),' \
-e 's,@exec_prefix@,$(PREFIX),' \
-e 's,@libdir@,$(shlibdir),' \
-e 's,@includedir@,$(PREFIX)/include,' \
pkgconfig: $(.OBJDIR)/dvdread.pc
$(.OBJDIR)/dvdread.pc: misc/ $(BUILDDEPS)
$(pcedit) $< > $@
install-pkgconfig: $(.OBJDIR)/dvdread.pc
install -d $(DESTDIR)$(libdir)/pkgconfig
install -m 0644 $(.OBJDIR)/dvdread.pc $(DESTDIR)$(libdir)/pkgconfig
vpath ${.OBJDIR}
vpath %.o ${.OBJDIR}
vpath ${LIB} ${.OBJDIR}
# include dependency files if they exist
$(addprefix ${.OBJDIR}/, ${DEPS}): ;
-include $(addprefix ${.OBJDIR}/, ${DEPS})
include $(top_srcdir)/misc/Makefile.common
SUBDIRS = src misc m4
ChangeLog \
configure \
config.guess \
config.sub \
install-sh \
libtool \ \
missing \
mkinstalldirs \
$(distdir).tar.gz $(PACKAGE).tgz package_descriptions
MAINTAINERCLEANFILES += configure $(ACLOCAL_M4) \ config.guess config.sub install-sh missing \
@$(MAKE) clean all install 2> warnings.log
test -s warnings.log || rm warnings.log
-rm -f config.cache
@./config.status misc/
@./ noconfig && $(SHELL) misc/
cp -r $(srcdir)/msvc $(distdir)/msvc
rm -rf `find $(distdir)/msvc -name CVS`
AM_CPPFLAGS = -I$(top_srcdir)/src $(CSS_CFLAGS)
ChangeLog: $(wildcard $(srcdir)/.git/logs/HEAD)
-cd $(srcdir) && git log > $(abs_builddir)/$(@)-tmp
test -s $(@)-tmp && mv $(@)-tmp $(@)
-rm -f $(@)-tmp
test -e $(@) || touch $(@)
EXTRA_DIST = msvc/ doc/footer.html doc/header.html
libdvdread_la_SOURCES = \
src/bitreader.c \
src/bswap.h \
src/dvd_input.c \
src/dvd_input.h \
src/dvd_reader.c \
src/dvd_udf.c \
src/dvdread_internal.h \
src/ifo_print.c \
src/ifo_read.c \
src/md5.c \
src/md5.h \
src/nav_print.c \
libdvdread_la_LIBADD = $(CSS_LIBS)
libdvdread_la_LDFLAGS = -version-info $(DVDREAD_LTVERSION) \
-export-symbols-regex "(^dvd.*|^nav.*|^ifo.*|^DVD.*|^UDF.*)"
pkgincludedir = $(includedir)/dvdread
pkginclude_HEADERS = \
src/dvdread/bitreader.h \
src/dvdread/dvd_reader.h \
src/dvdread/dvd_udf.h \
src/dvdread/ifo_print.h \
src/dvdread/ifo_read.h \
src/dvdread/ifo_types.h \
src/dvdread/nav_print.h \
src/dvdread/nav_read.h \
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = misc/dvdread.pc
all-local: apidoc
install-data-local: install-apidoc
uninstall-hook: uninstall-apidoc
apidoc: stamp-doxygen
stamp-doxygen: doc/doxygen.cfg
cd doc && doxygen doxygen.cfg
touch $@
-rm -Rf stamp-doxygen doc/html
$(MKDIR_P) $(DESTDIR)$(htmldir)
for file in doc/html/*; do \
$(INSTALL_DATA) $$file "$(DESTDIR)$(htmldir)" || exit 1; \
-rm -Rf $(DESTDIR)$(htmldir)/*.png $(DESTDIR)$(htmldir)/*.html $(DESTDIR)$(htmldir)/*.css $(DESTDIR)$(htmldir)/*.js
This diff is collapsed.
This file is unused.
The ChangeLog file lists changes for new versions.
libdvdread (4.9.9)
* major cleanup
* rewritten build system, including removal of configure2 and dvdread-config
* numerous crashes fixed, notably on ARCCOS protected DVDs,
like Transformers 3, Brave, The Express, Sherlock Holmes DVDs
* added QNX support
* updated to support libdvdcss 1.3.0
* improved dlopen support for Win32
* simplify static linking of libdvdcss
libdvdread (4.2.0)
* added OS/2 support
* fixed ARM memory alignment issue
* portability fixes for *BSD, Mac OS X, MINGW and OS/2
* added a missing DVDFileStat function
* exposed the dvd_stat_t struct in header
* fixed libdvdread closing stdin if it can't open the file/device
* fixed a segfault in UDFFileEntry on some badly mastered DVDs
* fixed big-endian builds
* Win32: large file support under Mingw to go over 2G limits
* configure: remove the special case test for uid=0
* provide BUP file support for more issues
* move UDFReadBlocksRaw declaration to dvdread_internal.h
* fixed double free of parental management information
* configure2: Use a single = instead of ==
* fixed crash when PTT is too short
* fixed segfault when reading certain DVDs, for example "Thor"
libdvdread (4.1.3)
* an embarassing amount of fixes regarding potential memory and resource leaks
(patches contributed by Erik Hovland)
* added dvdread-config (dvdnav-config's younger brother)
* added pkgconfig support
* split dvdread to a separate tree
libdvdnav (4.1.2)
* multiple build system fixes
* added dvdnav_describe_title_chapters(title) to get title and chapters
libdvdnav (4.1.1)
* added dvdnav_audio_stream_channels() to return number of channels
* fixed dvdnav_time_search() in multi-angle dvds (but it still needs
* added dvdnav_audio_stream_format() to identify the codec used
in audio streams
* starting DVD playback at specific title/part positions with
dvdnav_{title,part}_play() works again
* removed wrong SPU stream change event filter
(fixes unwanted subtitles in the trailer of "Girl, interrupted", RC2)
* fixed error "Expected NAV packet but none found." occuring sometimes
on resume from menu
libdvdnav (0.1.10)
* filter the symbols that we export.
* fix LinkNextC assertion failure (fixes LotR-SEE bonus disc image gallery)
* detect zero stilltime still cells inside PGCs, not only at the end
(fixes "Red Dragon" RC2 scene selection)
* PGC stills seem to work, assertion removed
* fix rare race condition after Exit commands
* fix wrong JumpSS_VTSM execution in German RC2 "Anatomie"
(fix ported from Ogle)
libdvdnav (0.1.9)
* libdvdnav does not depend on libdvdread any more. It has it's own version.
* fix some situations where an unlucky user could trigger assertions
libdvdnav (0.1.8)
* more timing info in cell change event struct
* documentation review
libdvdnav (0.1.7)
* fixed a bug in title jumping, where the title number would not be
converted from TTN to VTS_TTN properly
* some minor sanity checks added to prevent segfaults
libdvdnav (0.1.6) unstable; urgency=low
* new event DVDNAV_WAIT to fix consistency problems in applications with fifos
where libdvdnav is always a bit ahead in the stream, the event forces
the application to wait for its fifos to get empty
* correct HIGHLIGHT reporting when a button is activated
* method to try-run VM operations, now used for safer chapter skipping and menu jumps
* fixed detection of current PTT to not assume a 1:1 mapping between PTTs and PGs
* releasing stills when jumping to menu fixes some state inconsistencies
* do not assume PGs to be physically layed out in sequence on the disc
* optional PGC based seeking
* new event on cell changes for timing info
libdvdnav (0.1.5) unstable; urgency=low
* some bugfixes
* code cleanup
* build process polishing
* more sensible event order in get_next_block to ensure useful event delivery
* VOBU level resume
* fixed: seeking in a multiangle feature briefly showed the wrong angle
libdvdnav (0.1.4) unstable; urgency=low
* more read cache improvements
* minor fixes for some problematic DVDs
libdvdnav (0.1.3-1) unstable; urgency=low
* Zero-copy read cache.
* More support for alternative Menu languages.
-- Rich Wareham <> Fri, 2 Aug 2002 08:52:24 +0100
libdvdnav (0.1.2-1) unstable; urgency=low
* Read Cache changes. Recommended setting for read_cache is OFF.
Unless one's DVD drive has too small a buffer.
* Should work with xine 0.9.10 or above.
-- James Courtier-Dutton <> Sun, 3 Jul 2002 15:30:00 +0000
libdvdnav (0.1.1-1) unstable; urgency=low
* New upstream version. (closes: #148495)
* Include TODO
* Fix config.h problem
* Threaded cache
-- Philipp Matthias Hahn <> Sat, 1 Jun 2002 17:47:59 +0200
libdvdnav (0.1.0-2) unstable; urgency=low
* Add manual page dvdnav-config.1
* Add bug-presubj on Daniel's request
* Get dvdnav.c:1.17 from CVS to fix angle support
* Merge patch from Jamie Wilkinson (#146699)
* Rerun automake to fix dependencies
* Ack NMU from siggi
* Fix include in examples/menus.c
-- Philipp Hahn <> Thu, 23 May 2002 09:41:15 +0200
libdvdnav (0.1.0-1.1) unstable; urgency=low
* Prepared for first 'real' release.
* Bug fixes
* Changes to allow apps to 'roll-their-own' dvdnav_get_next_block functions.
* NMU in order to get xine-dvdnav running again
- changed package name to libdvdnav0
(see patch from Jamie Wilkinson for a better solution)
-- Siggi Langauf <> Mon, 20 May 2002 15:57:40 +0200
libdvdnav (0.0.1-1) unstable; urgency=low
* Repackaged using dh-make.
-- Philipp Matthias Hahn <> Sun, 7 Apr 2002 16:29:35 +0200
libdvdnav (0.0.1) unstable; urgency=low
* Initial release.
* Split from xine-dvdnav
-- rjw57 <> Tue, 12 Mar 2002 19:41:13 +0000