IMF Track Files

March 1, 2024 ยท View on GitHub

The MXF OP1a writer has an Interoperable Master Format (IMF) flavour that helps with the creation of IMF Track Files (as defined in SMPTE ST 2067-2). The flavour makes it easier to create IMF Track Files by pre-selecting certain required options. However, it does not have knowledge of all the Track Files defined for IMF (across SMPTE ST 2067-2, the IMF Applications, the IMF Plug-ins, etc) and it does not enforce compliance. For example, it does not check that the input essence and metadata will result in a compliant Track File.

The IMF flavour is enabled using the -t imf clip type option in bmxtranswrap and raw2bmx. This results in the following settings for OP1a,

  • fill after the header metadata is at least 8192 bytes (--head-fill 8192)
  • index table follows the essence, even for clip-wrapped audio (--index-follows)
  • creates partitions every 60 seconds for frame-wrapped essence (--part 60)
  • audio clip-wrapping (--clip-wrap)
  • combines audio into a single track by default (--track-map singlemca)
  • adds a Primary Package property (--primary-package)
  • disables creation of timecode tracks (--no-tc-track)
  • adds the audio Channel Assignment label descriptor property and sets it to the IMF label by default (--audio-layout imf). Use the --audio-layout option to override this default value.
  • add the Display F2 Offset and sets it to 0 for progressive JPEG 2000 and RDD 36 video (--display-f2-offset 0)

The settings can be found in the code by searching for the OP1a define OP1A_IMF_FLAVOUR and the descriptor define MXFDESC_IMF_FLAVOUR. E.g. see if ((flavour & OP1A_IMF_FLAVOUR)) in src/mxf_op1a/OP1AFile.cpp for the bulk of the settings.

IMF Track Files contain only a single essence component. bmx provides support for creating such files. If the input MXF files contain multiple essence tracks then use options such as --disable-video, --disable-audio, --disable-data and --track-map to disable tracks.

A number of topics related to creating complete IMF Track Files can be found in the docs/ directory, including Multi-channel Audio Labels, Timed Text, JPEG 2000 and ProRes.

The bmxtranswrap and raw2bmx tools allow setting metadata defined in SMPTE ST 2067-2,

  • Reference Image Edit Rate (--ref-image-edit-rate)
  • Reference Audio Alignment Level (--ref-audio-align-level)
  • Active Height (--active-height)
  • Active Width (--active-width)
  • Active X Offset (--active-x-offset)
  • Active Y Offset (--active-y-offset)
  • Alternative Center Cuts (--center-cut-4-3 and --center-cut-14-9)

and SMPTE ST 2067-21 - Application #2E,

  • Mastering Display Primaries (--display-primaries)
  • Mastering Display White Point Chromaticity (--display-white-point)
  • Mastering Display Maximum Luminance (--display-max-luma)
  • Mastering Display Minimum Luminance (--display-min-luma)

IMF Track File names conventionally include the UUID material number of the top-level file source package UMID. This can be accomplished automatically by supplying an output filename argument as a pattern, such as -o {Type}_{fp_uuid}.mxf. This example pattern results in a filename beginning with VIDEO, AUDIO or DATA, such as VIDEO_a145db5d-4623-4233-913f-15e16980b840.mxf, but can be tuned with the --ess-type-names parameter.