"W. Michael Petullo" wrote: > I have been trying to improve the performance of streamer, which is part > of the xawtv package. I would like to capture a jpeg encoded QuickTime > stream with a resolution of 640x480 pixels and a frame-rate of 25 frames > per second. > I tried plugging in the jpeg-mmx package from mjpeg tools, > http://mjpeg.sourceforge.net, but it seems to be > optimized only for decompression. I also tried mmxdct, > http://homex.coolconnect.com/user/xkwang/mmxdct/mmxdct-1.0.tar.gz, > but it actually seems slower than the stock libjpeg DCT code. If you want to try some alternate MMX DCT implementations, then the ones I'd suggest trying are: 1) The Intel block DCT/IDCT from the Heroine mpeg2movie (which apparently encodes very fast). http://heroinewarrior.com/mpeg2movie.php3 2) Royce Liao's DCT/IDCT from MJPEG tools mpeg2enc (not the same as the IDCT used in jpeg-mmx, which is a different Intel implementation), which is also apparently fast. Liao's DCT is also used in the BBMPeg encoder which I've tried and is fast, as well as in OpenDivX. Liao's IDCT is used in FlaskMPEG, which is probably also a good endorsement of his implementations. For some reason there are a couple of projects (BBMpeg, OpenDivX) which couple Liao's DCT with Peter Gubanov's IDCT. The OpenDivX decoder is fast, so this is probably a decent implementation, but I get the impression it was probably because Liao hadn't implemented the IDCT at that time (just the DCT). Both follow Intel's MMX DCT/IDCT app note # 922. You can get this either from MJPEG tools mpeg2enc or from Liao's home page: http://members.tripod.com/~liaor/ 3) Michael Shimek's DCT used in his mp1e encoder which encodes MPEG-1 in realtime on low end hardware. http://osiris.978.org/~brianr/mirrors/tars/ I've also been playing with libjpeg, and was going to take the approach of using an external DCT with it's raw read/write DCT coefficients interface, but obviously it'd be more useful to just replace the DCT in the library itself. As you noted jpeg-mmx only has an MMX IDCT, and I don't know whether that's the fastest one - it's not a widely used implementation. Hope this is useful - I don't have time to play with these myself at the moment, but I'd already done all the searching around to see what implementations are out there! Ben