Fix failed assertion when there's no menu.

Patch by Erik Hovland.


git-svn-id: svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav@1245 625a9de0-492d-0410-920c-a7e632af1907
Make sure we get nav packets for all cells in multi angle features

Currently libdvdnav uses the ILVU information to specify where a vobunit
ends if a feature is multiangled. However since one ILVU can contain
multiple vobunits, this means that libdvdnav never generates NAV events nor
updates highlight information for anything but the first vobunit in the
ILVU. It also causes issues for any player relying on timestamps in nav
packets to flatten the mpeg timestamps.

Patch by Joakim Plate.


git-svn-id: svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav@1246 625a9de0-492d-0410-920c-a7e632af1907
Restore C++ compatibility by renaming the parameter to 'self' like in
the other functions.

Revision 1208 ("Add dvdnav_program_play & dvdnav_current_title_program")
added dvdnav_program_play function to dvdnav.h. However, unlike the
other API functions, its first parameter is named 'this' instead of
'self'. 'this' is a C++ keyword and prevents compilation of C++ projects
using libdvdnav.

Patch by Anssi Hannula \anssi.hannula%iki.fi/


git-svn-id: svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav@1247 625a9de0-492d-0410-920c-a7e632af1907
Fix strict aliasing warnings.

Patch by Reimar Döffinger \Reimar.Doeffinger%gmx.de/


git-svn-id: svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav@1248 625a9de0-492d-0410-920c-a7e632af1907
Unbreak playback of DVDs with menus, broken by r1245.

Patch by Erik Auerswald \auerswal % unix-ag * uni-kl * de/.


git-svn-id: svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav@1251 625a9de0-492d-0410-920c-a7e632af1907
Add missing strings.h #include for strncasecmp().


git-svn-id: svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdnav@1252 625a9de0-492d-0410-920c-a7e632af1907
Pointer validation fixing

The files in question lack pointer checking in some way.
Initialize epos
Always check whether a still is being handled.

When a new cell is encountered dvdnav indicates it should wait
for sync. However it does not advance to the next cell. Instead it
assumes that there are only still frames. By removing the else
part of the if clause dvdnav will always at least advance to the
next cell because it is no longer assuming that it is on a still
Reformat for proper indentation
Test still like a boolean value and not an integer value
Remove commented out asserts
Initialize link_values
Remove unused variable and its assignment
Reindent a couple of lines to make them more readable
Replace assert w/ a conditional and a null return
Replace assert w/ a conditional and a null return
Rework functions that call vm_copy_vm()

Once vm_new_vm() can return NULL and doesn't assert then the functions
that call vm_copy_vm() need to be able to handle this issue.
Initialize next_vobu.

It is possible (although unlikely) that the while loop will
never execute and next_vobu will be uninitialized at this point.
Remove unneeded address-of of CLUT

The CLUT that is copied in from struct variable palette is an
array of 16 values. So the &(palette) is unnecessary. The size
argument was also changed to use the palette array instead of
the type (just in case palette ever gets changed).

Thanks goes to Lee Essen who originally submitted the patch
way back in 2008 and to Roger Pack who brought the patch to
our attention recently.