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.