show App
Treasured's Movie Repair Guide -- MXF Files

What is MXF?

MXF stands for Media Exchange Format, a standard defined by SMPTE used by the production and broadcasting industry.
MXF is not a video or audio format, but a container format:

MXF has been around for many years. Back in 2005, it was already used by Panasonic cameras using P2 storage (DVCPRO format).
Recently, the success of XDCAM HD422 camcorders like Sony PWM-200 and of Canon XF products like Cinema EOS C300 has given MXF a promiment place in professional workflows.
New 4K and Cinema formats like XAVC, Sony RAW and CinemaDNG use MXF as their container format.

MXF vendors

MXF has several strong points:

RAW workflows used in high-end productions often use MXF in capture, color-grading and editing stages.

Structure of MXF files

To analyze MXF files, you can use several utilities.

For example, MXFDump comes bundled with AVID Media Composer. In Mac OS X, this utility is installed in /Applications/Utilities/AVID Utilities Dumpers folder.

The first page of a "dump" looks like this: (see below)

[ K = Header ( 0000000000000000 )
06.0e.2b.34.02.05.01.01.0d.01.02.01.01.02.04.00, L =        136 (88) ]
       Major Version = 0001
       Minor Version = 0003
             KAGSize = 00000200
       ThisPartition = 0000000000000000
   PreviousPartition = 0000000000000000
     FooterPartition = 0000000005b4a400
     HeaderByteCount = 0000000000014000
      IndexByteCount = 0000000000000000
            IndexSID = 00000000
          BodyOffset = 0000000000000000
             BodySID = 00000000
 Operational Pattern = 06.0e.2b.34.04.01.01.01.0d.01.02.01.01.01.09.00
                     = [ 1a - Single Item, Single Package ]
   EssenceContainers = [ count =          3 ]
                   0 = 06.0e.2b.34.04.01.01.02.0d.01.03.01.02.04.60.01
                     = [ MPEG Elementary Stream - stream id 0x60 (frame wrapped) ]
                   1 = 06.0e.2b.34.04.01.01.01.0d.01.03.01.02.06.03.00
                     = [ AES3/BWF - AES3 (frame wrapped) ]
                   2 = 06.0e.2b.34.04.01.01.03.0d.01.03.01.02.7f.01.00
                     = [ Not recognized ]

[ K = KLVFill ( 000000000000009c )
06.0e.2b.34.01.01.01.02.03.01.02.10.01.00.00.00, L =        336 (150) ]

[ K = Primer ( 0000000000000200 )
06.0e.2b.34.02.05.01.01.0d.01.02.01.01.05.01.00, L =       1736 (6c8) ]
  [ Number of entries =         96, Entry size        =         18 ]
  Local Tag      UID
  02.01     :    06.0e.2b.34.01.01.01.02.04.07.01.00.00.00.00.00

Note that information is structured in "atoms" that have the following attributes:
  • Atom Type Ex: Header, KLV Fill, Primer, ...
  • Atom Signature Ex: 06.0e.2b.34.02.05.01.01.0d.01.02.01.01.02.04.00 for Header (always 16 bytes starting with 06 0e 2b 34 word.
  • Atom Address and Length Ex: KLVFill starts at address 0x9c and has a length of 336 bytes

The Header atom also declares the video and audio formats used in the file. Here, we have a MPEG Elementary Stream (actually XDCAM HD422) and AES3 audio (Linear PCM).
KLVFill atoms don't contain information. They just add padding so that the next atom starts on a "round" address, like 0x200 for Primer.

Top-Level Structure

We have 4 top-level structures.

Header
Body
  IndexTableSegment
    SystemMetadata
    Essence Element (Video)
    Essence Element x number of Audio channels
    ...
    ... repeat x number of video frames
Footer
RandomIndexMetadata
  • Header and Footer are almost identical. They declare all the audio and video settings, and how tracks are organized.
  • Body is by far the biggest section of the file. It contains one or several indexes and frames made of a SystemMetadat and several Essence Elements. Essence Elements is where actual media is stored.
  • An optional RandomIndexMetadata will optimize random access inside the video file.

Header and Footer

Header and Footage contain complex substructures: (KLVFill atoms have been omitted for clarity)

Header
  Primer
  MXFPreface
  MXFIdentification
  MXFContentStorage
  MXFMaterialPackage
     x times (one per track)
       MXFTrack
       MXFSequence
       MXFSourceClip or MXFTimeCodeComponent
  MXFSourcePackage
     x times (one per track)
       MXFTrack
       MXFSequence
       MXFSourceClip or MXFTimeCodeComponent	
  MXFMultipleDescriptor
  MXFGenericPictureEssenceDescriptor
  x times MXFAES3PCMDescriptor
  Dark Atom (proprietary information)
  MXFEssenceContainerData

Some atoms contain information that can easily by understood:

Inside MXFMPEG2VideoDescriptor:
  [ k = DisplayHeight
  32.08, l =     4 (0004) ]
       0  00 00 04 38                                        ...8
  [ k = DisplayWidth
  32.09, l =     4 (0004) ]
       0  00 00 07 80                                        ....
  
Inside MXFTrack:
  [ k = EditRate
  4b.01, l =     8 (0008) ]
       0  00 00 5d c0 00 00 03 e9                            ..].....

Where:
  • 07 80 and 04 38 in hexadecimal represent 1920x1080 resolution (fullHD)
  • 5d c0 and 03 e9 represent 1001/24000, or 23.976 frames per second

Corrupt MXF Files

Most common Failure Modes

Most common situations where MXF files need to be repaired are:
  • CF card formatted in camera or deleted accidentally
  • Compact Flash card became corrupt and MXF files were recovered using disk recovery software
  • A full CF card was put in camera instead of a blank one, footage was overwritten with new content before operator could dump the data off of it
  • Last clip on Canon CF card is unplayable. Rest of clips are OK
  • Card failed to copy data across on computer
  • Everything transferred correctly but movie was corrupted on computer hard drive.

Fixing Corrupt MXF Files

Corrupt MXF files don't have a coherent structure. In the worst case, there is only raw data belonging to the Body section.
Therefore, to repair them, it's necessary to organize the data, re-creating the Header, Body and Footer structures.

Copying and pasting together existing valid structures (from other playable MXF files) won't work, because every MXF file has a unique Body size, duration, and timecode.

To make things worse, audio and video media can be recorded in separate files, causing raw data to be interleaved after a data recovery: You can find an audio frame in the middle of a video frame. Usually those interruptions happen on addresses multiple of 0x80000, but it makes MXF recovery much more difficult.

At Aero Quartet, we have developed MXF repair algorithms for most common situations. If you need to repair corrupt MXF, please download our free diagnostics app Treasured and send us a request.

Free Preview of corrupt MXF videos with:

Treasured

Treasured icon
Download button
Free Preview of corrupt videos
Version 4.1 • June '17 • 10 MB • Mac OS X