What is DPG, nDs-mPeG?

nDs-mPeG, usually abbreviated DPG, is a special format of MPEG-1 video specifically for playback using the homebrew Moonshell program for the Nintendo DS. The video is encoded on a computer and then transferred, along with Moonshell, to the DS for playback.

DPG file format

The DPG file specification is simple. All DPG files contain a 36 byte header, followed by audio, and then a standard mpeg-1 video stream. The audio format can differ; older DPG files used a special WAV format audio, but newer versions of moonshell have phased that out in favor of MP2 audio.
The format specified below is the "DPG0" format. Moonshell supports additional versions of the DPG format[2], including DPG1, DPG2 and DPG3, though documentation of the revised formats is not included in this article at this time. DPG2 includes additional index information that allows fast relocation in the video/audio stream, thus allowing improved user navigation during playback.

DPG File Structure

A DPG0 file begins with a 36 byte header (Note: all of the numbers below are hexadecimal.):
44 50 47 30 (this stands for DPG0 in ASCII)
Four bytes for the number of frames in the video
Two bytes for the frames per second that the video runs
00 00
Four bytes for the audio sample rate
00 00 00 00 (this was the number of audio channels, now deprecated in favor of MP2 audio)
24 00 00 00 (this is the start of the audio file, i.e. right after the header)
Four bytes for the length, in bytes, of the audio
Four bytes for the above length + 36 bytes (i.e. the start of the video file)
Four bytes for the length, in bytes, of the video

DPG0
Mono audio was used

DPG1
Added stereo sound

DPG2
GOP List added for faster seeking

DPG3
Ability to choose OGG as audio format.
Better video Quality

DPG4 (MoonShell 2.00)
Audio bitrate is 160KB/s
Video Quality is slightly improved (TESTED: Video bitrate at 800+KB/s without skipping).

Nintendo DS DPG Related tools
1: DPG Converter.