The IFO file on a DVD describes all of the segements (cells) of a movie and how they are played. So a straight forward way to create a new cut/arrangement of the movie would be to edit the IFO and create different segments and sequences of the segments. This is what I am calling a a UIFO. (if you have a better name, let me know.
Rearranging the cell sequences in an IFO would still allow the IFO to be compatible with the video VOB data files. There could be a problem, however with altering the cell bounderies. The problem is that the cell information is also embedded in the VOB data. Some/most DVD players rely on the cell information in the VOB. To play a UIFO with modified cell bounderies, the DVD player must trust the IFO, and ignore cell number mismatches and bounderies in the VOB, instead using only the IFO cell bounderies.
First, libdvdnav needs to be modified to trust the IFO cell bounderies. The patch needed for this is:
libdvdnav-4.1.3-trust-ifo-cell.patch (default is off #define TRUST_IFO to enable)
(Older version: libdvdnav-0.1.10-trust-ifo-cell.patch - default is on)
Next, if your UIFO is sending Change Audio track commands at a cell end, VLC does not yet support that. The patch(hack is probably not completely correct) needed is vlc-audio-hack.patch
To play a disk, create a VIDEO_TS directory, with links pointing to the original files, except replace the same named IFO files with the UIFO files.
Note, that this works "sometiems" with encrypted discs. I am not sure of the magic here. It seems vlc has a problem playing encrypted discs via links. Perhaps play the disc first to get it to remember the encryption keys, then play the UIFO added directory.
Don Mahurin - 2006
uifo at openright dot org