Chen Liang Brings the Multimedia PC to Modern Microcontrollers with an FMV MPEG-1 Decoder
With modern microcontrollers easily outperforming the personal computers of the 1990s, it's time for a second multimedia revolution.
Maker Chen Liang (陳亮) is bringing the multimedia revolution to a microcontroller near you with an MPEG-1 decoder for the LILYGO T-Keyboard handheld development board — offering full-screen, full-color, full-motion video playback.
Readers of a certain vintage will recall the multimedia hype of the 1990s, which saw the Multimedia PC standard released: a 386 processor running at 16MHz with 2MB of RAM, a 30MB hard disk, VGA graphics, and a single-speed CD-ROM drive — which, it was required, would take up no more than 40 per cent of the CPU's capabilities during reading. This was considered the bare minimum to take part in the multimedia revolution — which, at the time, largely meant software that would occasionally play back a postage-stamp-sized video clip laughingly called "Full Motion Video (FMV)."
These videos were typically encoded using MPEG-1, the Moving Picture Experts Group Phase 1 (MPEG-1) codec — perhaps best known for giving rise to the MP3 audio format. While today media playback on PCs — and tablets, and smartphones, and even watches — uses newer and more efficient codecs, MPEG-1 is still the most broadly compatible. To prove it, Liang has written a decoder that can run on a microcontroller.
The project, brought to our attention by Adafruit, focuses on the LILYGO T-Keyboard, a compact all-in-one development board with an Espressif ESP32-C3 or ESP32-S3 at its heart depending on model. Despite its compact size and low power draw, the board easily exceeds the performance requirements of the Multimedia PC standard — so long as you ignore the fact it's not a PC, of course. The result: a software decoder that can play back MPEG-1 video with synchronized audio at up to 320×240 resolution.
The source code for the project, along with instructions on converting existing videos to MPEG-1 format, has been published to GitHub under an unspecified license.