summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorvan <[email protected]>2009-05-16 07:00:02 +0000
committervan <[email protected]>2009-05-16 07:00:02 +0000
commit9088803bc54b71516392ba83d7b6c58b55a89be8 (patch)
tree382f64befa66d02475e86d5d09a0414706319bc4 /contrib
parent8bb84abfb17b321ddaa5e2c5dd2c43486fe3dc29 (diff)
- Handle titles that use more than one PGC (like the one in this thread: http://forum.handbrake.fr/viewtopic.php?f=5&t=10678&p=55575&hilit=genesis#p55620).
- Make pgcn_map local rather than static since there can be simultaneous scans from both GUI and queue service threads and statics aren't thread safe. Also make map 32 bytes since standard allows only 255 PGCs per title. - Fix minor bugs in NextPgcn (used pgcn rather than next_pgcn so tested wrong bit) and dvdnav_seek (missing 'break' & extraneous 'while'). git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2420 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'contrib')
-rw-r--r--contrib/libdvdnav/A02-mult-pgc.patch22
1 files changed, 22 insertions, 0 deletions
diff --git a/contrib/libdvdnav/A02-mult-pgc.patch b/contrib/libdvdnav/A02-mult-pgc.patch
new file mode 100644
index 000000000..5ccaa689e
--- /dev/null
+++ b/contrib/libdvdnav/A02-mult-pgc.patch
@@ -0,0 +1,22 @@
+# the bit tested here does not indicate 'random or shuffle' - it only says
+# that the title uses multiple PGCs. Since libdvdnav mostly deals correctly
+# with mult PGC titles (modulo some weirdness when seeking) we need the
+# state to get set correctly.
+--- libdvdnav/src/vm/vm.c.orig 2009-05-13 20:44:12.000000000 -0700
++++ libdvdnav/src/vm/vm.c 2009-05-13 20:46:02.000000000 -0700
+@@ -1758,14 +1758,10 @@
+ if((vm->state).TTN_REG > vm->vmgi->tt_srpt->nr_of_srpts)
+ return 0; /* ?? */
+ pb_ty = &vm->vmgi->tt_srpt->title[(vm->state).TTN_REG - 1].pb_ty;
+- if(pb_ty->multi_or_random_pgc_title == /* One_Sequential_PGC_Title */ 0) {
++
+ int dummy, part;
+ vm_get_current_title_part(vm, &dummy, &part);
+ (vm->state).PTTN_REG = part;
+- } else {
+- /* FIXME: Handle RANDOM or SHUFFLE titles. */
+- fprintf(MSG_OUT, "libdvdnav: RANDOM or SHUFFLE titles are NOT handled yet.\n");
+- }
+ }
+ return 1;
+ }