The MXF Book

Bruce Devlin
Media files can contain many different types of associated data, and it is the job of MXF to synchronize and relate these different sorts of data in an extensible way. Over the years, there have been many ad-hoc solutions to synchronizing data with video and audio. Methods include hiding it in video blanking, carrying it inside user bits in the audio/video data stream, carrying it as a parallel data stream in a multiplex, or even printing it onto film near the sprocket holes.
The goal of MXF is to provide a common environment for the carriage of data, and a common approach to synchronizing it to the video and audio essence. In order to do this, the MXF designers recognized that there are different types of data to be transported, and different reasons why the data is transported. This has led to a number of different carriage mechanisms, optimized for the different data types.
Essence-like or streaming data
Lumpy or non-streaming data
Opaque ancillary data carriage
Examples of streaming data include scene depth information, GPS positioning information, lens focal length information, etc. In these cases, there is a continuous stream of data synchronized to the video and audio. The temporal characteristics of the stored data are similar to the temporal characteristics of video and audio. This means that the data values may or may not change very much on a frame-by-frame basis, but there is always changing data to...