User/Viewer cut IFO files - UIFO

Sometimes, there is a desire to cut or rearrange a DVD movie. There are plenty of DVD editing software, but ideally you could use the orriginal media and just specify the changes.

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.

Playing a UIFO using VLC

Two modifications are needed to play UIFO's using VLC.

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.

Example - The Matrix - Music only

This is not complete yet, but the idea was to create a version of the Matrix using the Music track to create a mostly nusic sound track. It is not yet complete, but demonstrates a UIFO. matrix-mostly-music

How this UIFO was created

The process to create such a modified IFO, is not yet a pretty proccess. I will add details to this explanation, but basically, it was:
-get a list of cell times and sector information with vobtimes.c (I hope that was the version that I used)
-create a file that describes cell deletions, additions and audio changes. See matrix times
-convert IFO to XML with bin2xml
-run celltimes2xml, which uses input from vobtimes file and user file, outputting a xml segment.
-replace similar xml segment in IFO xml file.
- convert IFO xml to IFO, using bin2xml.
- I used pgcedit, to add any audio change cell commands. need docs here.

Ideal world

In an ideal world, your DVD player would have a USB port, where you could plug in a USB flash device, and the IFO/UIFO files could allow you to watch the internet cut of your favorite movie.

Don Mahurin - 2006
uifo at openright dot org