Re: Improving the performance of xawtv's streamer - libjpeg

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



"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





[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux