tinyjpeg: Better luminance quantization table for Pixart JPEG
PATCH 1/1 tinyjpeg: Better luminance quantization table for Pixart JPEG
An other luminance quantization table gives a better quality to the Pixart images created by the webcams handled by the gspca drivers pac7302 and pac7311 (pixel format 'PJPG').
Tests have been done with 5 different pac7302 webcams. The marker was always 0x44.
lib/libv4lconvert/tinyjpeg.c +8 -8
@@ -206,14 +206,14 @@ static const unsigned char val_ac_chrominance[] = { };const unsigned char pixart_quantization[][64 ] = { { -0x07 ,0x07 ,0x08 ,0x0a ,0x09 ,0x07 ,0x0d ,0x0b , -0x0c ,0x0d ,0x11 ,0x10 ,0x0f ,0x12 ,0x17 ,0x27 , -0x1a ,0x18 ,0x16 ,0x16 ,0x18 ,0x31 ,0x23 ,0x25 , -0x1d ,0x28 ,0x3a ,0x33 ,0x3d ,0x3c ,0x39 ,0x33 , -0x38 ,0x37 ,0x40 ,0x48 ,0x5c ,0x4e ,0x40 ,0x44 , -0x57 ,0x45 ,0x37 ,0x38 ,0x50 ,0x6d ,0x51 ,0x57 , -0x5f ,0x62 ,0x67 ,0x68 ,0x67 ,0x3e ,0x4d ,0x71 , -0x79 ,0x70 ,0x64 ,0x78 ,0x5c ,0x65 ,0x67 ,0x63 , +0x08 ,0x08 ,0x08 ,0x08 ,0x08 ,0x08 ,0x10 ,0x10 , +0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 , +0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 , +0x10 ,0x10 ,0x10 ,0x10 ,0x20 ,0x20 ,0x20 ,0x20 , +0x20 ,0x20 ,0x20 ,0x20 ,0x20 ,0x20 ,0x20 ,0x20 , +0x20 ,0x20 ,0x20 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 , +0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 , +0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 , }, {0x11 ,0x12 ,0x12 ,0x18 ,0x15 ,0x18 ,0x2f ,0x1a ,
Signature · 2 lines
Ken ar c'hentañ | ** Breizh ha Linux atav! ** Jef | http://moinejf.free.fr/
Hi,
Thanks for the patch, I've pushed it to v4l-utils master and I will cherry-pick it into the stable-0.8 branch after this mail.
I noticed while testing with a pac7302 camera, that under certain circumstances the jpeg decompression still goes wrong. When you point the camera at a high contrast picture in proper daylight, it switches to a higher compression for certain areas of the picture, and these areas become quite "blockey" when this happens the marker changes to a different value. I think we should use a different quant. table when this happens. It would be great if you can reproduce this and find out a way to make the image less blocky in these cases.
Thanks & Regards,
Hans
Quoted 37 lines · Jean-Francois Moine
An other luminance quantization table gives a better quality to the Pixart images created by the webcams handled by the gspca drivers pac7302 and pac7311 (pixel format 'PJPG').
Tests have been done with 5 different pac7302 webcams. The marker was always
0x44.Signed-off-by Jean-François Moine<[email protected]>lib/libv4lconvert/tinyjpeg.c +8
-8@@ -206,14 +206,14 @@ static const unsigned char val_ac_chrominance[] = { };const unsigned char pixart_quantization[][64 ] = { { -0x07 ,0x07 ,0x08 ,0x0a ,0x09 ,0x07 ,0x0d ,0x0b , -0x0c ,0x0d ,0x11 ,0x10 ,0x0f ,0x12 ,0x17 ,0x27 , -0x1a ,0x18 ,0x16 ,0x16 ,0x18 ,0x31 ,0x23 ,0x25 , -0x1d ,0x28 ,0x3a ,0x33 ,0x3d ,0x3c ,0x39 ,0x33 , -0x38 ,0x37 ,0x40 ,0x48 ,0x5c ,0x4e ,0x40 ,0x44 , -0x57 ,0x45 ,0x37 ,0x38 ,0x50 ,0x6d ,0x51 ,0x57 , -0x5f ,0x62 ,0x67 ,0x68 ,0x67 ,0x3e ,0x4d ,0x71 , -0x79 ,0x70 ,0x64 ,0x78 ,0x5c ,0x65 ,0x67 ,0x63 , +0x08 ,0x08 ,0x08 ,0x08 ,0x08 ,0x08 ,0x10 ,0x10 , +0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 , +0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 ,0x10 , +0x10 ,0x10 ,0x10 ,0x10 ,0x20 ,0x20 ,0x20 ,0x20 , +0x20 ,0x20 ,0x20 ,0x20 ,0x20 ,0x20 ,0x20 ,0x20 , +0x20 ,0x20 ,0x20 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 , +0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 , +0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 ,0x40 , }, {0x11 ,0x12 ,0x12 ,0x18 ,0x15 ,0x18 ,0x2f ,0x1a ,