[XviD-devel] x-vid algorithm explanation?

Christoph Lampert chl at math.uni-bonn.de
Sat Aug 7 13:23:37 CEST 2004


On Fri, 6 Aug 2004, Ricardo Garcia wrote:

> Hi, I've been searching in the web for an explanation on how
> divx/xvid/ms-mpeg4 work.

Better also search the newsgroups/mailing likt archives. Much is hidden 
there in less structured form. 
I always wanted to start a MPEG-4 Wiki, but I never found time. 
 
> I read a bit of the MPEG4 standard, and it's filled with
> non-implementable (yet) stuff as sprites, textures, etc etc etc.
> 
> I'd really like to know how the algorithm works (mainly, to see how it
> can be improved ;-) ). But all the explanations are rather about a
> "how-to-encode-your-own" stuff.
> 
> Can you guys give me some directions? (and no "get the source code"
> answers, please).

Okay, I can give some directions, but I'm afraid the walking you have to 
do yourself...

First of all, it's not good to start with MPEG-4, because that has many 
advanced and (as you noticed) often unused features. Start with 

1) JPEG because that's basically the same as MJPEG, which is almost MPEG 
   with keyframes (aka I-frames, aka I-VOPs) only

you will learn about (macro)blocks, about DCT and run-level-encoding. 
Then search for 

2) MPEG1 and/or MPEG2 (there isn't much about MPEG1, I believe, but they 
   are very simlilar)

that tells you the ideas of Motion Estimation and Motion Compensation, as 
well as some predictions methods (basically, how to use the fact that 
video signals have high _spacial_ and _temporal_ _redundancy_. 
Finally, search for

3) overviews of MPEG-4, but not the standard, more like PowerPoint 
   presentations or PDFs online. 

They are usually called "The upcoming MPEG-4 standard blabla". Those
sometimes go into detail about the differences between MPEG-2 and MPEG-4,
which are details, nothing crucial. In those, you can first skip 
everything beyong the "Simple Profile", which means discarding almost 
everything that isn't known from MPEG-2 already. If possible, you can 
search for the "Advanced Simple Profile" as well, that's basically what 
XviD, DivX etc. implement. Everything beyond (in particular Sprites, 
arebitrary shaped Objects, interactivity, scalability) you can forget.

4) at any time, feel free to ask in the forum at xvid.org or here for 
   explenations. 

If they are specific like "How does motion compensation deal with blocks 
outside the image" they are usually easy and fast to answer. More general 
stuff like "How does MPEG-4 work?" might end unanswered, because one 
could spend weeks answering that. Also, it's good to give you background 
(first year student of english literature, or PhD in astrophysics), 
because that makes it easier to adapt the techincal terms. 

chl



More information about the XviD-devel mailing list