New indexing approach speeds up loading of MXF files

It previously took us up to several minutes to load certain MXF files – usually the ones with a missing index table. Basically, all this time is used to read the file and build the index table when the file is being opened. This problem is hardly noticeable on small MXF files, but turns into a big problem for our customers, when files reach several gigabytes.

We've redesigned the MXF load process to solve this problem: we will now build the index table in the background, which will allow us to start playback almost right away. In addition to that, we will save this index table, so next time we won't have to do it again.

This feature is available starting with MPlatform SDK 1.6.2.8815 and MFormats SDK 1.2.2.8815.

Index file storage location

There are 3 possible places where the indexing table can be stored after creation:

1. As an alternate data stream (ADS) in the NTFS file system. As long as you don't copy the file to a FAT file system or send it over the network, the index table will always be available locally. You can learn more about ADS in the NTFS article in Wikipedia. It is very important that the original MXF file will not be modified.
 
2. As a separate file in the same folder where the original MXF file is stored. The index file has the same name as the original MXF file and an *.idx resolution. For example: file_name.mxf.idx.

3. As a separate file in a custom folder location. The index file has the same name as original MXF file and an *.idx resolution. For example: file_name.mxf.idx.

Configuration

The new indexing logic is always enabled and the only thing you need to configure is the storage location for the index files. You can change it using the MFileFFM properties:

mxf.hidden_index - specifies preferred index files storage location. Possible values:

  • true – MFileFFM will store the index as a hidden compartment of the original MXF file (option 1);
  • false – MFileFFM will store the index as a separate file in the same folder where original MXF file is stored.

   
mxf.index_path – specifies a custom path for the index files storage. If specified, MFileFFM will store the index as a separate file in a custom folder.