PDA

View Full Version : list index out of bounds (0) error IC7, analysis - solution


jippiejajee
25th November 2003, 22:18
Recently I experienced a problem with IC7, the famous 'list index out of bounds (0)'message, which stops execution of IC7.

As MackemX already explained several time LIOOB erros are caused by errors in ifo's caused by a failure in the stripping process.

It is always a challenge to find out why and where is the problem, so I spend some evenings in digging this one out. Think the rsult of my anaysis are interesting for the other freaks around here encountering this annying problem.

In my case in fact it appeared to be to my opinion something what you could consider as a bug in IFOEDIT, which in this case does not update the ifo completely as it should be done after doing some stripping work with it.
Read below the full story if you have the time.
I did some general stripping with IFOEDIT and found when loading them in IC7 I got the 'list index out of bounds (0)' error.
I noticed that IC7 gave the message just after starting analyzing the titlesets so I guessed the video_ts.ifo was the
problem. Checked the content of the ifo but could not find any error. Then I decided to do something bold, I just copied the original video_ts.ifo and bup file to the directory with the stripped ifo's and vob's and fired up IC7 and it did not complain on LIOOB (0) and completed its work without problem. So indeed the stripped video_ts.ifo was the problem. As I could not found any error in sthe stripped ifo, I loaded the stripped and and original video_ts.ifo in wincommander and compared the content of the files. It showed differences but those were exacly on places were ifoedit made its modification and these were in line with what I stripped and wanted to change, and as such still no reasons found to get an LIOOB error. Hmmm... what next I wondered.
Then I noticed that as well original video_ts.ifo as stripped one had exactly same size althoug some stripping was done.
What I did during the stripping this ifo was simply pressing deleted playback to get rid of some logo's played in during starting up the DVD in the Menu language Unit section of this ifo, just exactly as described by Derrow in his guide to remove annoying warnings. And IIFOEDIT did it is job, it changed the program and cells numbers for that menu in "0" and on PC playback the logo was no longer shown. In comparing the original and stripped video_ts.ifo with wincommander it showed indeed only changes on these places where you would expect them to find. So what is overlooked here ?
After detailed study with hex editor of IFOEDIT I finnally found the problem which is that IFOEDIT 'forgets' to update the coresponding PGC Program Map, Cell Playback Information Table and Cell Position Information table. In fact it leaves them untouched. Funny is that the content is no longer shown in the standard view of IFOEDIT after the strip but it is still there as it was in the original ifo, containing the old program and cell numbers which are now out of bounds. You can see them with the hex editor of IFOEDIT but not in the standard view. IC7 apparently reads these (hidden) map and tables and find these original numbers of programs and cells which are now of course out of bounds. Typically is that the stripped ifo when loaded in IFOEDIT still shows the names PGC Program Map, Cell Playback Information Table and Cell Position Information table just below PCG command table but with no content information anymore, although it is still there in the ifo. remark: in case a menu contains originally no programs and cells IFOEDIT reports that there is NO PGC program map, NO cell playback information table and NO cell position table. In case you delete playback by purpose the text is slightly different, the word NO is missing, and now content informat is displayed anumore, although it is still there.
To solve my list index out of bounds (0) problem I just edited, with a hex editor this map and tables to correct values. Hell of job and easy to make mistake. Note: In standard view IFOEDIT this editing is no longer possible as content is no longer shown. After doing this loaded the ifo in IC7 and it acceoted it so no longer a LIOOB problem anymore. So problem found and solved, but solution is complicated

So the bottom line in this case was that IFOEDIT when deleting playback does not update the PGC Program Map, Cell Playback Information Table and Cell Position Information table, it just hides it and leaves it as it is, result a LIOOB error when loaded in IC7. To my opinion a bug or at least an improvemt opportunity. Maybe it is no problem for playback of the titleset on PC or standalone DVD player but IC7 has a problem with it, it simple stops working with a LIOOB error.

I strongly believe the same happens when you completely remove a PCG from an IFO with IFOEDIT. Life could become easier if we could find an easy fix for this.
The question is now how to make IFOEDIT to update the PGC Program Map, Cell Playback Information Table and Cell Position Information table when deleting playback, or is there another program with could do this.

Another lesson learned, do not use delete playback button in IFOEDIT as you will encounter a LIOOB (0) error when loading your ifo's in IC7.

To all you expert the question do you have any suggestions how we could fix this problem in an easy way.

The reproduce the problem just pick a video_ts.ifo and delete some menuplaybacks with the delete playback button of IFOEDIT.


Cheers, Jippie

MackemX
25th November 2003, 23:09
nice work ;)

it's true, IC will not load a DVD when you have used delete playback

the simple answer is to use the delete playback after processing but it involves extracting the PDI file just to do it :)

so it's either strip it properly or mod the IFO to satisfy IC if you don't want to extract the PDI just to delete playback

I think I even tried loading the DVD untouched and then being sneaky I tried deleting playback but I can't remember if it works as it was so long ago :D