Added some code for getting minimum/maximum coefs images.
--- a/qjpeg/plugins/QCS.cpp Sun Dec 02 17:10:30 2007 +0100
+++ b/qjpeg/plugins/QCS.cpp Sun Dec 02 17:56:34 2007 +0100
@@ -141,10 +141,38 @@
std::fclose(f);
}
}
- if (DCTimage.getPtr()[j] > DCTmax.getPtr()[j])
- DCTimage.getPtr()[j] = DCTmax.getPtr()[j];
- else if (DCTimage.getPtr()[j] < DCTmin.getPtr()[j])
- DCTimage.getPtr()[j] = DCTmin.getPtr()[j];
+
+ if (1) /* normal flow */
+ {
+ if (DCTimage.getPtr()[j] > DCTmax.getPtr()[j])
+ DCTimage.getPtr()[j] = DCTmax.getPtr()[j];
+ else if (DCTimage.getPtr()[j] < DCTmin.getPtr()[j])
+ DCTimage.getPtr()[j] = DCTmin.getPtr()[j];
+ } else if (0) /* Minimum coefs */
+ {
+ float &min = DCTmin.getPtr()[j];
+ float &max = DCTmax.getPtr()[j];
+ float &final = DCTimage.getPtr()[j];
+
+ if (min > 0 && max > 0)
+ final = min;
+ else if (min < 0 && max > 0)
+ final = 0;
+ else
+ final = max;
+ } else if (0) /* Maximum coefs */
+ {
+ float &min = DCTmin.getPtr()[j];
+ float &max = DCTmax.getPtr()[j];
+ float &final = DCTimage.getPtr()[j];
+
+ if (min > 0 && max > 0)
+ final = max;
+ else if (min < 0 && max > 0)
+ final = max;
+ else
+ final = min;
+ }
}
fdct_inverse_image(DCTimage.getPtr(), out.getPtr(), width, height);