Container Structure Correction is a repair technique that acts upon the container structure data, leaving the media data and the index and tables untouched.
Unlike reindexing or other techniques that need to act on hundreds of audio or video frames, a structure correction is usually a question of few bytes to correct or a misplaced block of data.
The easiest way is certainly to ask our Movie Repair Service to do it for you. If the same correction has to be applied on a collection of files, then maybe it's worth spending time automating the structure correction.
But for those who are not afraid of using an Hex editor and want to experiment a bit, read the full article:
Structure correction can apply to any type of container. See dedicated page for more information.
Most common structure damages and how to fix them:
Full movie data, including container, is embedded in a larger file, for example after a data recovery.
In this case, the data can be extracted and saved with the container suffix and it usually works.
In this example, we have found an intact RIFF structure in the middle of a file. Note that the length of the structure 0x49e4 is encoded just after RIFF in 32 bits, big-endian.
A quick check shows that after 0x49e4+8 bytes, there is suddenly no data, thus confirming that we are into something.
02a3970: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 02a3980: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 02a3990: 5249 4646 e449 0000 4156 4920 4c49 5354 RIFF.I..AVI LIST 02a39a0: 2004 0000 6864 726c 6176 6968 3800 0000 ...hdrlavih8... 02a39b0: 8545 0100 f816 0000 0000 0000 1008 0000 .E.............. 02a39c0: 0500 0000 0000 0000 0100 0000 7c0b 0000 ............|... 02a39d0: 3c00 0000 3100 0000 0000 0000 0000 0000 <...1........... 02a39e0: 0000 0000 0000 0000 4c49 5354 d403 0000 ........LIST.... .......... 02a8310: b9b9 b9b9 b9b9 b9b9 b9b9 b9b9 b9b9 b9b9 ................ 02a8320: b9b9 b9b9 6964 7831 5000 0000 3030 6462 ....idx1P...00db 02a8330: 1000 0000 0400 0000 7c0b 0000 3030 6462 ........|...00db 02a8340: 1000 0000 880b 0000 7c0b 0000 3030 6462 ........|...00db 02a8350: 1000 0000 0c17 0000 7c0b 0000 3030 6462 ........|...00db 02a8360: 1000 0000 9022 0000 7c0b 0000 3030 6462 ....."..|...00db 02a8370: 1000 0000 142e 0000 7c0b 0000 0000 0000 ........|....... 02a8380: 0000 0000 0000 0000 0000 0000 0000 0000 ................
By copying this data to a new file and saving with an AVI suffix, we now have a valid movie.
Multiple moov atoms found, but last one is corrupt
When you edit a movie in-place (ie without writing again all the file), some edition softwares just add a new moov container at the end of the file, without bothering to remove older ones. If the file has become corrupt, those old containers can still work.
The trick consists in finding the moov structures and redirect towards an older one
You'll need an Hex editor and good knowledge of QuickTime file format to do that.
Mispositioned blocks of data
Files from a data recovery can present defects: contents not matching the file name, truncated files, mashed contents coming from several files, moved or missing blocks.
As data recovery acts at the lower filesystem level, the data is always presented in blocks, for example exactly 2048 bytes.
A movie can fail to open because some blocks have been moved, duplicated or missing. The fact have blocks always have a length of 2048 bytes helps to detect and correct those problems. It's like solving a puzzle and is usually complex.
Light-weight containers like AIFF, WAV, MPEG program stream, or AAC wrappers, often need only a few bytes in front of file to explain what it contains.
If this information is missing, the file is unplayable. By identifying the settings of the file, such header can be recreated.
The dedicated article explains how to fix.
Other structure faults can be found with Hex editors and structure dumpsters. If the structure is too damaged, the repair will probably needed a reindexing.