MXF Inspect is a fully functional and completely free Windows tool to display the internal structure of a MXF (Material eXchange Format) file. It can NOT play the MXF movie itself. There is no demo and advanced mode, it is completely free. The application is tested on Windows 7 and Windows 8.
MXF files are extensively used in the broadcast industry. Since I am working in the broadcast industries, I personally use a lot of MXF files. I wanted to determine if certain MXF files were valid but could not find any good (free) tools on the internet so I decided to make my own. The source code is released under the GPL and can be downloaded below.
New Version 188.8.131.52 features
The latest version of MXF Inspect, version 184.108.40.206, introduces some new functionality.
- Large file support: It is now possible to load very huge MXF files (several Gigabyte) in seconds. Since the previous version was parsing the entire MXF file, it could take minutes to open large MXF files. The reading mechanism has been completely rewritten. When opening a new MXF file, MXF inspect starts by reading the header, footer partition and the first body partition and will then stop reading. Whenever a new partition is opened in the tree, that partition will be read from disk. It is possible to change this behavior in the (new) settings dialog, called ‘partial-loading‘.
- ‘Syntax‘ coloring: Different types of metadata can be given separate colors so it is easier to discontinuous between the different types. The colors can be customized in the settings dialog. The following colors can be changed: Partition, Essences, Index Tables, RIP, System Items, Meta data, Fillers and Specials.
- Settings dialog: Introduced a settings dialog.
- The ‘Index table test’ is not executed automatically when a file is partially loaded (the test requires all data to be loaded). By pressing the new button ‘Execute all tests‘ in the report screen, the test will be executed. This will result in a delay since the entire file must then be loaded.
- Disabled the UI when a MXF file is loading (this to prevent crashes when loading a file and selecting menu items).
- Minor bugfixes.
- Open multiple MXF files at once.
- View offsets, parsed MXF data and raw data in a glance.
- Offset and Logical view present.
- Jump to the next/previous object of the same type.
- Only show/filter the current object type.
- Show/hide fillers.
- Report screen that shows the results of the following tests:
- Consistency of partitions (check if the previous/next partitions and footer partitions are filled in correctly)
- RIP check (present and pointing to valid partitions)
- Check if every entry in all index tables point to valid essences.
- Test if the user dates in all system items (if present) increase correct (no jumps present).
- Test continuity counter of the system items increases.
The MXF file specification is huge! The specification allows for a lot of different ‘tastes’ of MXF files. I started developing this application by using the SMPTE 377-1-2009 specifications only. But during development I realized that I needed to use a lot of other SMPTE specs as well. Some specifications are a bit unclear (at least to me). I don’t know if I understood/implemented them correctly which might result in a warning or error for some tests… The default label and key names found in SMPTE 377 are hardcoded into the MXF library, all other names are dynamically retrieved from the following SMPTE lists:
- SMPTE Metadata Dictionary as specified in RP210v13-2012
- SMPTE Labels Registry as specified in RP224v12-2012
- SMPTE Class 13 and Class 14 registrations list
The newest version (version 220.127.116.11) of MXF inspect can be downloaded from GitHub here:
Executing the setup program will install the MXF Inspect application in the program files folder.
Some more screenshots:
The complete application is written in C#. The application consists of a .NET class library that is able to read the MXF file and a separate .NET forms GUI that can display multiple MXFFile instances at once. Since the GUI heavily depends upon the ObjectListView code from Phillip Piper, that source is also included. The main object in the class library is the MXFFile object, that will (after parsing the entire MXF file) have a collection of partitions, that will contain the the different descriptors, essence, fillers etc. etc.
The complete source code can be found at my github page: https://github.com/Myriadbits/MXFInspect
There are a number of features that require some work:
- Implement more tests in the report screen
- Improve the tracks information display in the report screen.
- Logical view should also include the logical track object hierarchy, maybe include the data itself.
- Ability to display the real subtitles information.
- Search and jump to a specific date/time/frame number.
- Search for text.
Last updated 11-3-2021, Jochem Bakker