JPEG converts RGB data to YCrCb data. See
http://en.wikipedia.org/wiki/YCbCr
for details. By default, the JPEG library downsamples the color components (CbCr) by 2, so at 640x480 you'd have 320x240 color information.
At high qualities, it's better to disable chroma subsampling than to increase the quality number. I'm attaching a patch that reduces qulity from 95 to 90 and disables chroma subsampling, for both screenshots and MJPEG capture. This results in images that are more or less of the same size (subsampling or not chroma information takes much less space than luma) but which look much better (subsampling works well on natural images, but not in synthetic ones).
Before/after images:
Before:
http://img178.imageshack.us/img178/7703/shot0000lz9.jpghttp://img478.imageshack.us/img478/9738/shot0001wv6.jpg
After:
http://img280.imageshack.us/img280/5285/shot0002cp9.jpghttp://img444.imageshack.us/img444/8757/shot0003vj4.jpg
(look around the colored text and in the edges of the lava)
Note: the patch disables chroma subsampling only if the quality passed is >= 85.
Setting a QA contact on all ioquake3 bugs, even resolved ones. Sorry if you get a flood of email from this, it should only happen once. Apologies for the incovenience.
--ryan.
Created attachment 1008 [details] The patch