summaryrefslogtreecommitdiffstats
path: root/contrib
diff options
context:
space:
mode:
authorjstebbins <[email protected]>2009-11-27 20:27:07 +0000
committerjstebbins <[email protected]>2009-11-27 20:27:07 +0000
commit38d0c1ea31a5cfc6c616ca99f4041bbd2320d5fd (patch)
tree4b8a7145ac0eafb0172f566cbe2bfa5389cdf737 /contrib
parent2e67232172e322cae20434318dffec1426822d69 (diff)
fix another MTR feature title extraction issue
jump instructions to titles which were removed by MTR caused asserts. now such jump instructions just transition to the Exit state. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@2988 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'contrib')
-rw-r--r--contrib/libdvdnav/A07-missing-menu.patch61
1 files changed, 54 insertions, 7 deletions
diff --git a/contrib/libdvdnav/A07-missing-menu.patch b/contrib/libdvdnav/A07-missing-menu.patch
index 078f4748e..7f035592a 100644
--- a/contrib/libdvdnav/A07-missing-menu.patch
+++ b/contrib/libdvdnav/A07-missing-menu.patch
@@ -1,6 +1,6 @@
diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
--- libdvdnav.orig/src/vm/vm.c 2009-10-29 09:10:44.836643320 -0700
-+++ libdvdnav/src/vm/vm.c 2009-11-16 11:10:07.527247268 -0800
++++ libdvdnav/src/vm/vm.c 2009-11-27 11:32:47.475322754 -0800
@@ -585,6 +585,9 @@
switch(menuid) {
case DVD_MENU_Title:
@@ -29,7 +29,43 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
return 0;
}
-@@ -1488,6 +1495,10 @@
+@@ -1412,8 +1419,9 @@
+ if(link_values.data2 != 0)
+ (vm->state).HL_BTNN_REG = link_values.data2 << 10;
+ if(!set_VTS_PTT(vm, (vm->state).vtsN, (vm->state).VTS_TTN_REG, link_values.data1))
+- assert(0);
+- link_values = play_PG(vm);
++ link_values.command = Exit;
++ else
++ link_values = play_PG(vm);
+ break;
+ case LinkPGN:
+ /* Link to Program Number:data1 */
+@@ -1458,8 +1466,9 @@
+ /* Set SPRM1 and SPRM2 */
+ assert((vm->state).domain == VTSM_DOMAIN || (vm->state).domain == VTS_DOMAIN); /* ?? */
+ if(!set_VTS_TT(vm, (vm->state).vtsN, link_values.data1))
+- assert(0);
+- link_values = play_PGC(vm);
++ link_values.command = Exit;
++ else
++ link_values = play_PGC(vm);
+ break;
+ case JumpVTS_PTT:
+ /* Jump to Part:data2 of Title:data1 in same VTS Title Domain */
+@@ -1469,8 +1478,9 @@
+ /* Set SPRM1 and SPRM2 */
+ assert((vm->state).domain == VTSM_DOMAIN || (vm->state).domain == VTS_DOMAIN); /* ?? */
+ if(!set_VTS_PTT(vm, (vm->state).vtsN, link_values.data1, link_values.data2))
+- assert(0);
+- link_values = play_PGC_PG(vm, (vm->state).pgN);
++ link_values.command = Exit;
++ else
++ link_values = play_PGC_PG(vm, (vm->state).pgN);
+ break;
+
+ case JumpSS_FP:
+@@ -1488,6 +1498,10 @@
/* Allowed from anywhere except the VTS Title domain */
/* Stop SPRM9 Timer and any GPRM counters */
assert((vm->state).domain != VTS_DOMAIN); /* ?? */
@@ -40,7 +76,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
(vm->state).domain = VMGM_DOMAIN;
if(!set_MENU(vm, link_values.data1))
assert(0);
-@@ -1504,14 +1515,22 @@
+@@ -1504,14 +1518,22 @@
if (link_values.data1 != (vm->state).vtsN) {
/* the normal case */
assert((vm->state).domain == VMGM_DOMAIN || (vm->state).domain == FP_DOMAIN); /* ?? */
@@ -64,7 +100,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
(vm->state).domain = VTSM_DOMAIN;
}
} else {
-@@ -1533,6 +1552,10 @@
+@@ -1533,6 +1555,10 @@
/* set_PGCN:data1 */
/* Stop SPRM9 Timer and any GPRM counters */
assert((vm->state).domain != VTS_DOMAIN); /* ?? */
@@ -75,7 +111,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
(vm->state).domain = VMGM_DOMAIN;
if(!set_PGCN(vm, link_values.data1))
assert(0);
-@@ -1552,6 +1575,10 @@
+@@ -1552,6 +1578,10 @@
/* set_RSMinfo:data2 */
assert((vm->state).domain == VTS_DOMAIN); /* ?? */
/* Must be called before domain is changed */
@@ -86,7 +122,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
(vm->state).domain = VMGM_DOMAIN;
if(!set_MENU(vm, link_values.data1))
-@@ -1563,6 +1590,10 @@
+@@ -1563,6 +1593,10 @@
/* set_RSMinfo:data2 */
assert((vm->state).domain == VTS_DOMAIN); /* ?? */
/* Must be called before domain is changed */
@@ -97,7 +133,7 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
(vm->state).domain = VTSM_DOMAIN;
if(!set_MENU(vm, link_values.data1))
-@@ -1574,6 +1605,10 @@
+@@ -1574,6 +1608,10 @@
/* set_RSMinfo:data2 */
assert((vm->state).domain == VTS_DOMAIN); /* ?? */
/* Must be called before domain is changed */
@@ -108,3 +144,14 @@ diff -Naur libdvdnav.orig/src/vm/vm.c libdvdnav/src/vm/vm.c
set_RSMinfo(vm, link_values.data2, /* We dont have block info */ 0);
(vm->state).domain = VMGM_DOMAIN;
if(!set_PGCN(vm, link_values.data1))
+@@ -1634,7 +1672,9 @@
+ (vm->state).TT_PGCN_REG = pgcN;
+ (vm->state).PTTN_REG = part;
+ (vm->state).TTN_REG = get_TT(vm, vtsN, vts_ttn);
+- assert( (vm->state.TTN_REG) != 0 );
++ if( (vm->state.TTN_REG) == 0 )
++ return 0;
++
+ (vm->state).VTS_TTN_REG = vts_ttn;
+ (vm->state).vtsN = vtsN; /* Not sure about this one. We can get to it easily from TTN_REG */
+ /* Any other registers? */