[XviD-devel] Improving encoding speed with additional information

Peter Bergmann bergmann.peter at gmx.net
Wed Feb 2 07:44:51 CET 2005


(sorry if this is a repost, but my first msg prob. didn't go through)

Dear all,

I'm writing a simple xvid streaming backend for an animation application.
(Moving rectangles, fonts and other primitives, small icons and images
flying around the screen and stuff like that)
I've already "encoded" the information into vnc using libvncserver. 
Actually this was working very well but the bandwidth was very high with
vnc when many images were involved.

Now I've done an experiment: I've played a 10 minute animation and
everytime my animation screen changed (something was drwan, moved, ...)
I converted the rgb data to yuv(2:4:0) and feeded the frame via stdin to
the xvid_encore sample and redirected the m4v data into a file.

I've played this m4v file with ffplay (from ffmpeg) and the result was
great. But the best result was the size compared to vnc: 50%!!

The only disadvantage is the cpu time which is very hight compared
to the vnc encoder.

Now my questions:

1)
Compared to video data I have very small changes from frame to frame
because most parts of the screen do not change at all. What are the best 
(speed/quality) xvid encoding parameters for such
"video data" ?

2)
I have a big advantage: I do know exactly which parts (rectangle area) 
of the new frame has changed compared to the previous one. So there 
should be no need for xvid to analyse the complete frame!
Is there a way to "help" the encoder using this information?
How can I tell xvid which areas did not or did change ?
How much cpu could be save?

Thanks a lot!

Cheers,
Pet









More information about the XviD-devel mailing list