eCosPro-MMFS - Multimedia File System for eCosPro RTOS
eCosPro-MMFS is an optional middleware package for the eCosPro RTOS that provides a high performance filesystem specifically designed for streaming high volume and time critical data.
Typical markets for eCosPro-MMFS are personal video recorders (PVR), set-top boxes (STB), harddisk based video cameras, instrument recorders, personal radio recorders (PRR), video surveillance applications, multi-room video and audio, and similar high volume streaming applications.
eCosPro-MMFS provides both random access and streamed reading and writing of files. Streams support simultaneous reading and writing, and read position skipping. This later functionality facilitates the implementation of PVR features such as pause, fast forward and reverse viewing of live video.
The filesystem has been designed to provide near optimal throughput for modern hard disk and disk interface implementations. The performance of the filesystem not only enables improved functionality to be delivered to the end user, but also provides the opportunity to specify lower performance and correspondingly lower cost disks, whilst still meeting application performance goals.
Suitable for deployment in sealed-box consumer designs and other high reliability applications, the filesystem features automatic self initialization, self checking, and self healing. eCosPro-MMFS is shipped as an integral part of NXP STB220 set top box development kits.
Although eCosPro-MMFS is usually employed in the context of a hard disk based systems, it can also be used to extract the best performance from slower speed media, such as flash based removable cards. This can be beneficial in PRRs and instrument recorder type applications.
As a demonstration of the functionality and performance of eCosPro-MMFS, consider a generic HDTV STB/PVR application. The imaginary hardware featuring triple tuners, dual video outputs, and an IDE hard disk. HDTV programs can be recorded from two different channels directly on to disk, while the user watches a third channel live. The live channel is buffered onto hard disk and can be paused and rewound as required. While the recording and live playback is taking place, a previously recorded program is archived onto a DVD-R via the second video output. Each HDTV channel is assumed to be a 1080i/25 or 720p/50 format stream, using H.264/AVC compression, broadcast using DVB-S2, with a required sustained datarate of 8Mib/s (megabits per second).
The total combine bitrate for the example workload equates to 3 x 8Mib/s write and 2 x 8Mib/s read, for a combined required throughput of 5 x 8Mib/s, or 315MB per minute.
eCosPro-MMFS has been demonstrated delivering the above multi-stream workload, with the maximum throughput sustained over periods of several hours. This workload still leaves more than enough disk throughput headroom to spare for EPG and other disk based activity. The demonstration hardware consisted of a NXP Nexperia PNX8330 CPU (MIPS core) based STB220, equiped with a standard consumer grade Maxtor "Diamond Max 9" 160GB IDE drive, connected via an ATA 133 interface. MMFS will generally extract the maximum possible performance from a given system and is typically only constrained by the hard disk and associated disk interface hardware. On the example hardware above the maximum data rates are on the order of 30MB/16.5MB per second (rd/wr), or 1.8GB/1.0GB per minute (rd/wr).
In keeping with the customizable philosophy of eCos, MMFS is fully configurable and can be tuned for performance, disk utilization, memory footprint, maximum file size and directory entries, and so forth. Configurable elements include file system block size, root directory size, file block allocation table size, and cache and buffer organization. The figures presented below are for the default configuration of MMFS, as used for the performance example above. These use a block size of 256KB, a block allocation table size of 2 blocks, and a single block root directory.
- Maximum disk size: 2 terabytes (limited by IDE disk addressing only)
- Maximum file size: 32 gigabytes (9 hour HDTV program length @ 8Mib/s)
- Maximum number of files: 1024
- Maximum filename length: 63 bytes
- Per file resource data: 160 bytes held in directory entry
- Designed to support high volume streaming applications
- Capable of supporting multiple concurrent streams of compressed high definition video
- Fully buffered and cached operation to enable near optimal disk performance on streamed data
- Designed for fully autonomous operation it features self initialization, self checking, and self healing
- Standard eCos filesystem API for random access
- MMFSlib filesystem API extension for full streaming performance and control
- Filesystem parameters fully configurable and tuneable to application requirements
- Single non-hierarchical directory system
- Per file resource data
- Requires associated DMA based IDE/SATA driver for maximum performance
eCosPro-MMFS is supplied as an installable and configurable eCos EPK module. Full source code and documentation are included along with engineering technical support. Its license allows for an unlimited number of deployed devices and is royalty free.