MP4 Demultiplexer Movie UI Demo




The following describes how to use the MP4 data streaming special playback application (mp4dmxui). This application can play video/audio using a monitor with HDMI input terminals and a built-in speaker. You can play back only on 1 screen on TV.

Also, use the controller for debugging to control the application. You can perform the following with the controller:

Basic operations are as follows:

  1. Select a content.
  2. Press the A Button to start the demo.
  3. Press the A Button to cancel or pause playback, and then press the A Button to resume playback.
  4. Press the Y Button to stop playback and return to the content selection screen.


Press the X Button to seek the time specified. Use Up/Down on the +Control Pad to specify the seek time. The seek interval can be specified in increments of 10 seconds and 120 seconds. If seeking is performed to the top of the content, playback will start automatically.


Use Left/Right on the +Control Pad to specify the speed. You can specify the speed to be 2, 4, 8, or 16x. Rewinding all the way to the top of the content stops temporarily; press the A Button to start.

Following compile switches are available for the Makefile.

RANDOM_SEEK_PLAY Decode mode changes into seek loop repeat play. The purpose of this mode is to check whether seeking the player application can be performed correctly by looping specific intervals. The starting point of a playback interval is decided randomly, from which video/audio play back for 10 seconds.

Known Issues

mp4dmxui can decode only 2ch sound. If mp4dmxui tries to load 5.1ch sounds, it shows "File Not Supported" on console and trigger OSPanic.

How to Run

Run the application in the Cafe SDK environment as shown below. Building generates an executable file in the following location (assumed the current directory).


Execute the file by running the following command.

% caferun mp4dmxui.elf

In this sample code, by modifying the following parameters in the main file (mp4dmx_main.c), the user can change allowable delay time and input file size that goes into memory.

VIDEOSKIP_DELAYAllowable processing delay time: The default should be set to 70[ms]. (approximately 2 frame-worth of input data @ 30fps) If PTS shows that the specified time has already elapsed from the current time on the display thread, video decoding will be skipped until the next key frame. In this case, the display will stop until the next key frame, but the audio will play continuously without stopping. * However, jumpiness due to processing delay caused by file read may not be avoided.
FILEMEMORYSIZEThe maximum file size to read into memory. By reading input data into memory ahead of time, processing delay due to a bottleneck caused by file access can be avoided. * Normal operation has been verified for the 512Mbyte setting. When specifying a smaller size and providing data via file input, frames may skip due to the image size and bitrate.


$CAFE_ROOT/system/src/demo/codec/mp4dmxui/***.c mp4dmxui source code
$CAFE_ROOT/system/src/demo/codec/mp4dmxui/***.h Header file

Revision History

2013/10/07 Added note that mp4dmxui demo can not decode 5.1ch sound.
2013/05/08 Automated cleanup pass.
2012/12/13 Demo cleanup and support HE-AAC as default.
2012/08/27 DRAFT.