Commit 0b7064f4 authored by Reinhard Tartler's avatar Reinhard Tartler

Imported Upstream version 4.1.3

parent 90c50d89
autom4te.cache
config.status
This code is Copyright (C) 2000, 2001 by:
Bjrn Englund <d4bjorn@dtek.chalmers.se>,
Hkan Hjort <d95hjort@dtek.chalmers.se>,
Billy Biggs <vektor@dumbterm.net>,
Christian Wolff <scarabaeus@convergence.de>
Daniel Caujolle-Bert <segfault@club-internet.fr>
Thomas Vander Stichele <thomas@apestaart.org>
Rich Wareham <richwareham@users.sourceforge.net>
Kees Cook <kees@outflux.net>
Michael Roitzsch <mroi@users.sourceforge.net>
Frantisek Dvorak <valtri@users.sourceforge.net>
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
duration
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
improvements)
* 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 <richwareham@users.sourceforge.net> 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 <jcdutton@users.sourceforge.net> 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 <pmhahn@titan.lahn.de> 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 <pmhahn@titan.lahn.de> 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 <siggi@debian.org> Mon, 20 May 2002 15:57:40 +0200
libdvdnav (0.0.1-1) unstable; urgency=low
* Repackaged using dh-make.
-- Philipp Matthias Hahn <pmhahn@titan.lahn.de> Sun, 7 Apr 2002 16:29:35 +0200
libdvdnav (0.0.1) unstable; urgency=low
* Initial release.
* Split from xine-dvdnav
-- rjw57 <rjw57@hermes.cam.ac.uk> Tue, 12 Mar 2002 19:41:13 +0000
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.
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software
Foundation, Inc.
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005 Free
Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
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.
These are generic installation instructions.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
......@@ -70,9 +67,9 @@ The simplest way to compile this package is:
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.
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
......@@ -85,7 +82,7 @@ is an example:
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
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
......@@ -102,19 +99,19 @@ for another architecture.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
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
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
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=DIR' to specify different values for particular
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.
......@@ -125,7 +122,7 @@ option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
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
......@@ -140,11 +137,11 @@ you can use the `configure' options `--x-includes=DIR' and
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
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:
......@@ -159,7 +156,7 @@ where SYSTEM can have one of these forms:
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
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
......@@ -170,9 +167,9 @@ 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 `config.site' that gives default
values for variables like `CC', `cache_file', and `prefix'.
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
......@@ -181,7 +178,7 @@ 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
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
......@@ -189,18 +186,14 @@ them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script). Here is a another example:
/bin/bash ./configure CONFIG_SHELL=/bin/bash
Here the `CONFIG_SHELL=/bin/bash' operand causes subsequent
configuration-related scripts to be executed by `/bin/bash'.
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 operates.
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
......
include config.mak
.SUFFIXES: .so
AR=ar
LD=ld
RANLIB=ranlib
VPATH+= $(SRC_PATH_BARE)/src
CFLAGS += $(USEDEBUG) -Wall -funsigned-char
CFLAGS += -I$(CURDIR) -I$(SRC_PATH)/src
CFLAGS += -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
CFLAGS += -DHAVE_CONFIG_H -DHAVE_DLFCN_H
L=libdvdread
DVDREAD_L=libdvdread
DVDREAD_LIB = $(DVDREAD_L).a
DVDREAD_SHLIB = $(DVDREAD_L).so
VPATH+= $(SRC_PATH_BARE)/src
DVDREAD_HEADERS = src/dvd_reader.h \
src/ifo_print.h \
src/ifo_read.h \
src/ifo_types.h \
src/nav_print.h \
src/nav_read.h \
src/dvd_udf.h \
src/nav_types.h \
src/bitreader.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
CFLAGS += -I$(SRC_PATH)/src
LIB = $(L).a
SHLIB = $(L).so
.OBJDIR= obj
DEPFLAG = -M
OBJS = $(patsubst %.c,%.o, $(SRCS))
DVDREAD_OBJS = $(patsubst %.c,%.o, $(DVDREAD_SRCS))
SHOBJS = $(patsubst %.c,%.so, $(SRCS))
DVDREAD_SHOBJS = $(patsubst %.c,%.so, $(DVDREAD_SRCS))
DEPS= ${OBJS:%.o=%.d}
DVDREAD_DEPS= ${DVDREAD_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
endif
ifeq ($(BUILD_STATIC),yes)
all: $(LIB) $(DVDREAD_LIB) dvdread-config pkgconfig
install: $(LIB) $(DVDREAD_LIB) install-static install-dvdread-config install-pkgconfig
endif
install: install-headers
# Let version.sh create version.h
SVN_ENTRIES = $(SRC_PATH_BARE)/.svn/entries
ifeq ($(wildcard $(SVN_ENTRIES)),$(SVN_ENTRIES))
version.h: $(SVN_ENTRIES)
endif
version.h:
sh $(SRC_PATH)/version.sh $(SRC_PATH) "$(SHLIB_VERSION)"
$(SRCS) $(DVDREAD_SRCS): version.h
# General targets
${DVDREAD_LIB}: version.h $(DVDREAD_OBJS) $(BUILDDEPS)
cd $(.OBJDIR) && $(AR) rc $@ $(DVDREAD_OBJS)
cd $(.OBJDIR) && $(RANLIB) $@
${DVDREAD_SHLIB}: version.h $(DVDREAD_SHOBJS) $(BUILDDEPS)
cd $(.OBJDIR) && $(CC) $(SHLDFLAGS) $(LDFLAGS) -ldl -Wl,-soname=$(DVDREAD_SHLIB).$(SHLIB_MAJOR) -o $@ $(DVDREAD_SHOBJS)
.c.so: $(BUILDDEPS)
cd $(.OBJDIR) && $(CC) -fPIC -DPIC -MD $(CFLAGS) -c -o $@ $<
.c.o: $(BUILDDEPS)
cd $(.OBJDIR) && $(CC) -MD $(CFLAGS) -c -o $@ $<
# Install targets
install-headers:
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) \
$(DESTDIR)$(shlibdir)/$(SHLIB).$(SHLIB_VERSION)
cd $(DESTDIR)$(shlibdir) && \
ln -sf $(SHLIB).$(SHLIB_VERSION) $(SHLIB).$(SHLIB_MAJOR)
cd $(DESTDIR)$(shlibdir) && \
ln -sf $(SHLIB).$(SHLIB_MAJOR) $(SHLIB)
install $(INSTALLSTRIP) -m 755 $(.OBJDIR)/$(DVDREAD_SHLIB) \
$(DESTDIR)$(shlibdir)/$(DVDREAD_SHLIB).$(SHLIB_VERSION)
cd $(DESTDIR)$(shlibdir) && \
ln -sf $(DVDREAD_SHLIB).$(SHLIB_VERSION) $(DVDREAD_SHLIB).$(SHLIB_MAJOR)
cd $(DESTDIR)$(shlibdir) && \
ln -sf $(DVDREAD_SHLIB).$(SHLIB_MAJOR) $(DVDREAD_SHLIB)
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
clean:
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/dvdread-config.sh >> $(.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,' \
-e 's,@VERSION@,$(SHLIB_VERSION),'
pkgconfig: $(.OBJDIR)/dvdread.pc
$(.OBJDIR)/dvdread.pc: misc/dvdread.pc.in $(BUILDDEPS)
$(pcedit) $< > $@
install-pkgconfig: $(.OBJDIR)/dvdread.pc
install -d $(DESTDIR)$(libdir)/pkgconfig
install -m 0644 $(.OBJDIR)/dvdread.pc $(DESTDIR)$(libdir)/pkgconfig
vpath %.so ${.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 = dvdread src
EXTRA_DIST = bootstrap
SUBDIRS = src misc m4
EXTRA_DIST = autogen.sh \
AUTHORS \
ChangeLog \
configure \
config.guess \
config.sub \
COPYING \
INSTALL \
install-sh \
libtool \
ltmain.sh \
missing \
mkinstalldirs \
README \
TODO
MOSTLYCLEANFILES += $(PACKAGE)_$(VERSION).tar.gz \
$(distdir).tar.gz $(PACKAGE).tgz package_descriptions
MAINTAINERCLEANFILES += configure $(ACLOCAL_M4) config.h.in \
ltmain.sh config.guess config.sub install-sh missing \
mkinstalldirs
world:
@$(MAKE) clean all install 2> warnings.log
test -s warnings.log || rm warnings.log
prune-cache:
-rm -f config.cache
release-check:
@./config.status misc/relchk.sh
@./autogen.sh noconfig && $(SHELL) misc/relchk.sh
dist-hook:
cp -r $(srcdir)/msvc $(distdir)/msvc
rm -rf `find $(distdir)/msvc -name CVS`
This diff is collapsed.
Version 0.9.4
Environment variable DVDREAD_NOKEYS can be used to turn off reading all key.
Only export the functions in the public interface.
New functions DVDDiscID, DVDUDFVolumeInfo and DVDISOVolumeInfo.
Can optionally link with libdvdcss instead of trying to dlopen it.
Several data structures now have more fields that where unknown earlier.
Compilable with Sun's Forte compiler.
Remove all asserts, now just print an error message and continues.
Use swap functions in FreeBSD 5.
Add types, read and print functions for VTS_TMAPT (Time map table).
Add Multichannel Extension, correct PLT_MAIT (Parental Management) info.
More Doxygen markup and comments.
Fix a seg fault and key issue for access to DVDs as a collection of files.
Build fixes.
Version 0.9.3
Support for MacOS X/Darwin have been added.
Ported to use libdvdcss2 (1.2.0 and later).
Can now use libdvdcss to also decrypt files on a normal filsystem.
A bit more tolerant of incorrectly mastered DVDs.
Build robustness fixes from Mark Espie.
Added some Doxygen markup and comments.
Version 0.9.2
Add support for BSD/OS. Make sure that the raw device is used on all
BSD variants for the CSS ioctls to work correctly. Small bug fix for
access to mounted DVD via soft-links and a malloc/free mistake.
Increase an assert level for pgcn numbers in the part of title list.
Version 0.9.1
Change the way the endian swaps are defined and make sure Solaris x86 works.
Fix from Juergen Keil for a bug that caused libdvdread to close random fds.
Update the limit on the number of pgcs in the pgcit to 10000.
Correct bug in 0.9.0 that made using a DVD located on a normal filsystem
impossible.
Version 0.9.0
API breakage, new types to not be influenced by differing off_t types
and DVDReadBlocks now returns blocks read not bytes read.
Changed to use libdvdcss (from VideoLAN).
Add support for finding the raw devices of a DVD on Solaris.
FreeBSD fixes from Marc van Woerkom and OpenBSD fixes from Björn Sandell.
Configure fixes to work better on *BSD and other systems.
Version 0.8.0
Initial public release.
This file is unused.
The ChangeLog file lists changes for new versions.
What is this all about?
-----------------------
libdvdread
==========
libdvdnav is a library that allows easy use of sophisticated DVD navigation
features such as DVD menus, multiangle playback and even interactive DVD games.
All this functionality is provided through a simple API which provides the
DVD playback as a single logical stream of blocks, intermitted by special
dvdnav events to report certain conditions. The main usage of libdvdnav is a
loop regularly calling a function to get the next block, surrounded by
additional calls to tell the library of user interaction.
The whole DVD virtual machine and internal playback states are completely
encapsulated.
libdvdread provides a simple foundation for reading DVD-Video images.
It offers DVD applications:
Where does it come from?
------------------------
1. A simple abstraction for reading the files on a DVD image
(dvd_reader.h).
2. A simple library for parsing the information (IFO) files
(ifo_read.h/ifo_types.h).
3. A simple library for parsing the navigation (NAV) packets
(nav_read.h/nav_types.h).
This library is based on a lot of code and expertise from the Ogle project.
Ogle was the first DVD player who implemented free DVD navigation. The
libdvdnav developers wish to express their gratitude to the Ogle people
for all the valuable research work they have done.
This allows application designers to access some of the more advanced
features of the DVD format.
Initially, the dvdnav code was part of a plugin to the xine media player
called xine-dvdnav. Later on, the DVD VM specific code was split
from xine-dvdnav and went into the first version of libdvdnav.
libdvdread currently uses libdl to dynamically probe for libdvdcss at
runtime. If libdvdcss is found, then it will be used to decrypt the
encrypted sections of a DVD.
Where is it now?
----------------
libdvdnav is hosted on http://www.mplayerhq.hu/MPlayer/releases/dvdnav/ .
Please report bugs to the developers mailinglist at
mailto:dvdnav-discuss@mplayerhq.hu .
We are still in beta stage, but libdvdnav is already quite usable. With
regular DVD playback, there should not be any serious issues. The library
also makes some limited effort to handle error situations gracefully, but
there are still assertions in the code that may trigger on some DVDs. Please
send a report to the developer mailinglist, if you encounter such problems.
How can I use it?
-----------------
libdvdnav is completely licensed under GPL. You may use it at wish within the
bounds of this license. See the file "COPYING" for a copy of the GPL.
Sources for documentation on libdvdnav are:
* the examples directory contains a simple program using libdvdnav
this one is well-commented and therefore a good starting point
* the public header dvdnav.h documents the API
* the public header dvdnav_events.h documents the dvdnav events
* doc/library_layout contains some info on the internal working of libdvdnav
Sources for documentation on DVD terminology, structure and surrounding concepts:
* doc/dvd_structures briefly explains DVD terms and organization
* a more detailed description of DVD structures is available at
http://www.mpucoder.com/dvd/
* the ifo_types.h and nav_types.h headers are also interesting if you
are already used to the sometimes cryptical abbreviations
* we don't have any functions for reading / printing TXT_MGI
* rename zero_1 and add bitfields / macro constants in pgcit_srpt
- done, are any of the other pgci_t pgci_ut_t pgci_lu_t affected?
* if an encrypted block is being read and libdvdcss is unavailable,
we should probably return 0 to help it fail.
* add some sort of header versioning , so that we don't get old headers mixed up with a newer version of the library (or vise versa).
* make portability changes, packed/align stuff
* Support DVDs with errors on them. So we can recover from corrupt sectors in the .VOB. Also, handle corrupt .IFO files by using the backup .BUP files.
* Support Random and Shuffle Titles. Only sequencial Titles are currently supported.
* rework documentation
* implement restriction levels:
0 - execute everything as the app commands
1 - do some sensible sanity checking
2 - be more careful, when operations are prohibited (like not seeking/jumping in the presence of stills or cell commands)
3 - fully respect user prohibitions
* cleanup public API and fix libtool versioning
* Update decoder.c with some of the more rare commands. Update already done to vmcmd.c
* RELEASE! (maybe it's time for libdvdnav 0.5?)
* Replace the auto* build system with a custom and clean one based on ffmpeg's (partly done)
dnl AC_C_ATTRIBUTE_PACKED
dnl set ATTRIBUTE_PACKED if this is supported
AC_DEFUN([AC_C_ATTRIBUTE_PACKED],
[AC_CACHE_CHECK([__attribute__ ((packed)) support],
[ac_cv_c_attribute_packed],
[AC_TRY_COMPILE([],
[static struct { int a; } __attribute__ ((packed)) c = {0};],
[ac_cv_c_attribute_packed=yes],
[ac_cv_c_attribute_packed=no])
])
if test x"$ac_cv_c_attribute_packed" = x"yes"; then
ATTRIBUTE_PACKED="__attribute__ ((packed))"
fi])
dnl The following AC macros are from mpeg2dec.
dnl Written by Michel Lespinasse <walken@zoy.org>
dnl AC_C_ATTRIBUTE_ALIGNED
dnl define ATTRIBUTE_ALIGNED_MAX to the maximum alignment if this is supported
AC_DEFUN([AC_C_ATTRIBUTE_ALIGNED],
[AC_CACHE_CHECK([__attribute__ ((aligned ())) support],
[ac_cv_c_attribute_aligned],
[ac_cv_c_attribute_aligned=0
for ac_cv_c_attr_align_try in 2 4 8 16 32 64; do
AC_TRY_COMPILE([],
[static char c __attribute__ ((aligned($ac_cv_c_attr_align_try))) = 0; return c;],
[ac_cv_c_attribute_aligned=$ac_cv_c_attr_align_try])
done])
if test x"$ac_cv_c_attribute_aligned" != x"0"; then
AC_DEFINE_UNQUOTED([ATTRIBUTE_ALIGNED_MAX],
[$ac_cv_c_attribute_aligned],[maximum supported data alignment])
fi])
dnl AC_TRY_CFLAGS (CFLAGS, [ACTION-IF-WORKS], [ACTION-IF-FAILS])
dnl check if $CC supports a given set of cflags
AC_DEFUN([AC_TRY_CFLAGS],
[AC_MSG_CHECKING([if $CC supports $1 flags])
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$1"
AC_TRY_COMPILE([],[],[ac_cv_try_cflags_ok=yes],[ac_cv_try_cflags_ok=no])
CFLAGS="$SAVE_CFLAGS"
AC_MSG_RESULT([$ac_cv_try_cflags_ok])
if test x"$ac_cv_try_cflags_ok" = x"yes"; then
ifelse([$2],[],[:],[$2])
else
ifelse([$3],[],[:],[$3])
fi])
This diff is collapsed.