Multimedia Container Format, abbreviated MCF, is an unfinished container format specification and a predecessor of Matroska. The project has been abandoned since early 2004, but many of its innovative features found their way into Matroska.
The crucial event in the project's history was the invention of EBML in the fall of 2002, a binary meta-format inspired by XML, by the programmer Steve Lhomme, quickly followed by a six months long coding break by Kärkkäinen due to military service. Since MCF was deemed nearly release-ready at the time, EBML was not accepted, which led Lhomme to fork his own Matroska project based on EBML. Due to the absence of the lead developer, most of the interest quickly shifted to the new project; by the time Kärkkäinen returned from the army, the developer community around MCF had completely disintegrated. Lack of manpower and educational commitments caused Kärkkäinen's attempts at reviving the project to fail. The final specifications were never published, and the last news entry on the project's SourceForge web page is dated September 6th, 2003.
The key feature of MCF was being able to store several chapters of video, menus, subtitles in several languages and multiple audio streams (e.g. for different languages) in the same file. At the same time, the content could be split between several files called segments; assembling the segments into a complete movie was automatic, given the segments were all present. Segments could also be played separately, and overlap between segments was customizable. The format also allowed for variable frame rate video. To verify integrity, CRC32 checksums were embedded into the file, and digital signatures were supported. A degree of resilience was built into the parser, allowing for playback of partially corrupted movies.
MCF's per-frame overhead (7 bytes) was considerably lower than AVI (40 bytes), and comparable to Matroska (10 bytes).
The limits of the MCF format were based on human perception and expectations of progress in bitrates of video. The time code precision of the format is limited to 1 ms. The addressing in the file is limited to 64 bits, which is extremely large. Frame size is limited by 32-bit frame size number, limiting frame size at 4 GiB. Time codes are stored as 40-bit integers, which caps maximum movie length at approximately 35 years. The number of distinct streams in one file is 216, or 65536. A movie can be split into a maximum of 255 segments.