Since the time I first looked at XVD-related codecs I dug deeper and at one point considered implementing it all for NihAV
. But every time I look at Muzip or some logic inside video decoders I lose all interest. So finally I’ve documented my finds on The Wiki and now I can forget about it and move to something else.
Some of it was easy to investigate since VGM demuxer along with Muzip CTP06/CTP07
, Domen
and VT2k
decoders are present in Java applets that can be easily decompiled. Some like V2K-II
or XVD
can be easily decompiled with Ghidra
and produce mostly understandable code (except for wavelet decoding part in XVD
). Muzip4
and VT
on the other hand have hard to follow logic. And VGM2 demuxer is available only as DirectShow splitter which is a pain to search for the COM object responsible for the demuxing itself.
Funny enough now Alaris VGPixel looks more related since VT
codec has similar mode of compression. Additionally both the official player and demo programs from VGM-XVD developer site use the same trick—they put all .dll
s in compressed form (the standard SZDD
compression) at the end of executable, which decompresses and loads them at start.
Also it’s worth mentioning that all decoders (except for VGPixel) have the same interface via the functions UCF_InitCodec
, UCF_ProcessFrame
and such. Anybody interested enough can write his own program that demuxes VGM or VGM2, loads the proper decoder libraries and does something with the result. At least I’ve documented it as much as I could (or cared) so there’s some foundation to start from.