libdvdnav is a library that allows easy use of sophisticated DVD navigation features such as DVD menus, interactive DVD games and multiangle playback. 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.
Where does it come from?
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.
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.
Where is it now?
libdvdnav is hosted on MPlayer homepage.
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
What's New in This Release: [ read full changelog ]
· Starting with this version, libdvdread was split from libdvdnav and is now developed in a separate tree, retaining API compatibility with the old upstream.
· Apart from the split, the highlights for this release include a large number of memory and resource leak fixes, pkgconfig support and the introduction of dvdread-config script.
· 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 pkg-config support
· split dvdread to a separate tree; now you need to check it out and install it before building libdvdnav. In order to configure libdvdnav We need the executable dvdread-config somewhere in the PATH or explicitly specified to configure with --with-dvdread-config=~/bin/dvdread-config