Index: code/renderer/tr_init.c =================================================================== --- code/renderer/tr_init.c (revision 831) +++ code/renderer/tr_init.c (working copy) @@ -423,7 +423,7 @@ } ri.FS_WriteFile( fileName, buffer, 1 ); // create path - SaveJPG( fileName, 95, glConfig.vidWidth, glConfig.vidHeight, buffer); + SaveJPG( fileName, 90, glConfig.vidWidth, glConfig.vidHeight, buffer); ri.Hunk_FreeTempMemory( buffer ); } @@ -727,7 +727,7 @@ if( cmd->motionJpeg ) { - frameSize = SaveJPGToBuffer( cmd->encodeBuffer, 95, + frameSize = SaveJPGToBuffer( cmd->encodeBuffer, 90, cmd->width, cmd->height, cmd->captureBuffer ); ri.CL_WriteAVIVideoFrame( cmd->encodeBuffer, frameSize ); } Index: code/renderer/tr_image.c =================================================================== --- code/renderer/tr_image.c (revision 831) +++ code/renderer/tr_image.c (working copy) @@ -1816,6 +1816,11 @@ * Here we just illustrate the use of quality (quantization table) scaling: */ jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values */); + /* If quality is set high, disable chroma subsampling */ + if (quality >= 85) { + cinfo.comp_info[0].h_samp_factor = 1; + cinfo.comp_info[0].v_samp_factor = 1; + } /* Step 4: Start compressor */ @@ -1890,6 +1895,11 @@ jpeg_set_defaults(&cinfo); jpeg_set_quality(&cinfo, quality, TRUE /* limit to baseline-JPEG values */); + /* If quality is set high, disable chroma subsampling */ + if (quality >= 85) { + cinfo.comp_info[0].h_samp_factor = 1; + cinfo.comp_info[0].v_samp_factor = 1; + } /* Step 4: Start compressor */ jpeg_start_compress(&cinfo, TRUE);