Accommodate duplicate language units and pgcs.
authorDominik Mierzejewski <dominik@greysector.net>
Sun, 9 Dec 2012 21:07:59 +0000 (21:07 +0000)
committerDominik Mierzejewski <dominik@greysector.net>
Sun, 9 Dec 2012 21:07:59 +0000 (21:07 +0000)
commitcc6493368b865a9b7315672287b4eb5f097d016b
treeed8b6eb3b0d0edf34e32451ea808202a4d3abed4
parente67eb24c1be1fbee8f760c5cdaa90c3dc0cf111c
Accommodate duplicate language units and pgcs.

Many dvd's are showing up that have titles that have numerous repeated
language unit tables and pgc's. The new release "Up" is an example.  I
believe "Dark Knight" also exhibits this. When scanning such discs
with lsdvd (and other programs that scan all titles), libdvdread will
consume many GB of data for these repeated elements and gets very slow
(e.g hours to read all titles) on OS X due to reading the duplicate
data from uncached raw devices.

This patch detects duplicates and reference counts pgc's and pgcit's.
When a duplicate is detected, a reference count is incremented instead
of allocating new memory and re-reading the data.

Patch by John Stebbins.

git-svn-id: svn://svn.mplayerhq.hu/dvdnav/trunk/libdvdread@1244 625a9de0-492d-0410-920c-a7e632af1907
src/dvdread/ifo_types.h
src/ifo_read.c