DVDFab Beta

Brilliant work, Fengtao and Ting! :clap: :clap: :clap:

Many thanks to you, and the rest of your team, for all the hard work you put into updating DVDFab like this. Greatly appreciated.

My two daughters send their regards and thanks as well.

See you later then, and thanks again. Jim :slight_smile:

[B]Thank You for the Nintendo DS support![/B] :clap:

However there are som kind of problem with the converted files.
I’m not able to play them in the Nintendo Ds player or in the the pc-based
player. The error I get is “Can not decode GSM audio”

If you want to try, you can download the file “moonshell171_with_dpgtools13.zip” which includes a windowsprogram “dpgshow.exe” here:


Converted with DVDFab (not working)
SoundChannels=GSM 2ch(s)
PixelFormat=3 RGB24

Working files (not converted with DVDFab):
beta version data
SoundChannels=Build-in mpeg1-audio-layer-2 (mp2)
PixelFormat=3 RGB24

SoundChannels=Build-in mpeg1-audio-layer-2 (mp2)
PixelFormat=3 RGB24

hi, DS-DPG

Please try the new beta, I do some fixed for the dpg file support, but strange thing is the app "dpgshow.exe " always show my mp2 stream in dpg as gsm stream.

I use another dpg player can play this file correctly, the player is DPGPlayer. because I have not a NDs, so I cannot try it in the NDS. please try it or maybe you know some information about this problem, please tell me.


Hi Ting,
thanks for your work!

The problem with the converted file is still there, the Nintendo Ds is not able to play the converted file. (as you noticed, you get the same problem with dpgshow.exe and dpginfo.exe).


Ok, I have been doing some hexediting and I have found that you only have to change one byte in the header to make it work. The sequence “02 00 00 00” should be changed to “00 00 00 00”.

Since i had my nose in the file I found out that the DPG3-version have a 48 byte header and it includes a GOPlist feature which can be nice to have…

Not Working:
44 50 47 30 - DPG0
CB 0E 00 00 - Number of frames = 3787
00 18 - Frames per second = 24
00 00
00 7D 00 00 - Audio sample rate = 32000
02 00 00 00 - 00 00 00 00 (this was the number of audio channels, now deprecated in favor of MP2 audio) ***
24 00 00 00 - Start of audio = 36 i.e. right after the header
80 8C 26 00 - Lenght of audio = 2526336 byte
A4 8C 26 00 - Start of video (36+2526336) = 2526372
9F 07 4C 00 - Lenght of video = 4982687 byte

44 50 47 33 - DPG3
F2 03 00 00 - Number of frames = 1010
00 14 - Frames per second = 20
00 00
00 80 00 00 - Audio sample rate = 32768
00 00 00 00 - 00 00 00 00 (this was the number of audio channels, now deprecated in favor of MP2 audio) ***
30 00 00 00 - Start of audio, New header size=48
00 9F 0C 00 - Lenght of audio = 827136 byte
30 9F 0C 00 - Start of video (48+827136) = 827184
A6 D6 1D 00 - Lenght of video = 1955494 byte
00 - ?
D8 75 2A 00 - GOPListData start = 2782680
90 00 00 00 - Lenght of GOPListData = 144
03 - Pixelformat = 3 RGB24 (0=RGB15, 1=RGB18, 2=RGB21, 3=RGB24)
00 00 00 - EndOfHeader

[GOP List]
The Group Of Pictures (GOP) list of a file is the last section of
a DPG file. It consists of an array of a “FrameIndex” and "Offset"
pair, both are read as an unsigned 32 bit value from within Moonshell.

The use of the GOP list, within Moonshell, is when requesting a
jump to a certain frame. In the case when a GOP list exists, it is
searched in order to find the frame within the GOP list lower than or
equal to the requested frame. (The search in Moonshell requires the
GOP list to be ordered. Also a trivial optimization was omitted,
namely to break out of the search loop once the GOP frame number is
larger than the requested one.)

So, to get clean seeks, I would put I-frames from the MPEG stream in
the GOP list.

Regards /Peter

help with the original question. :confused: what makes the determination to use one versus the other. :bow: