- All known bugs are fixed.
- There are some improvements in CMYK interpolation, it is about 20% faster
- jpgicc can now apply devicelinks without chrashing
- Matlab support is there!
Wednesday, April 7, 2010
Beta3 and release candidate
Here is beta3. We are almost done, so this is the release candidate.
Thursday, March 4, 2010
Beta 2 is ready
Time for a new beta. First one was very successful and several important bugs were found and fixed.
Beta2 will focus on quality and documentation, and will rest for a month.
I will give frequent updates on the status of the beta. You can download it from the link on the right.
Beta2 will focus on quality and documentation, and will rest for a month.
I will give frequent updates on the status of the beta. You can download it from the link on the right.
Monday, March 1, 2010
xput comparative 1.19 vs. 2.0
Here is the comparative for the code in git. I will publish beta2 in a couple of days. As you can see the xput improvements are considerable.
1.19
-----
16 bits on CLUT profiles : 10.6667 MPixel/sec.
8 bits on CLUT profiles : 9.75015 MPixel/sec.
8 bits on Matrix-Shaper profiles : 3.8638 MPixel/sec.
8 bits on SAME Matrix-Shaper profiles : 4.28495 MPixel/sec.
8 bits on Matrix-Shaper profiles (AbsCol) : 10.4507 MPixel/sec.
16 bits on Matrix-Shaper profiles : 3.92349 MPixel/sec.
16 bits on SAME Matrix-Shaper profiles : 3.96924 MPixel/sec.
16 bits on Matrix-Shaper profiles (AbsCol) : 10.6667 MPixel/sec.
8 bits on curves : 4.33839 MPixel/sec.
16 bits on curves : 4.3944 MPixel/sec.
8 bits on CMYK profiles : 4.09626 MPixel/sec.
16 bits on CMYK profiles : 3.96924 MPixel/sec.
8 bits on gray-to-gray : 24.3902 MPixel/sec.
8 bits on SAME gray-to-gray : 24.3902 MPixel/sec.
2.0
----
16 bits on CLUT profiles : 10.1394 MPixel/sec.
8 bits on CLUT profiles : 10.6667 MPixel/sec.
8 bits on Matrix-Shaper profiles : 26.2726 MPixel/sec.
8 bits on SAME Matrix-Shaper profiles : 30.1318 MPixel/sec.
8 bits on Matrix-Shaper profiles (AbsCol) : 10.5541 MPixel/sec.
16 bits on Matrix-Shaper profiles : 10.2433 MPixel/sec.
16 bits on SAME Matrix-Shaper profiles : 9.84615 MPixel/sec.
16 bits on Matrix-Shaper profiles (AbsCol) : 10.6667 MPixel/sec.
8 bits on curves : 30.0752 MPixel/sec.
16 bits on curves : 35.3201 MPixel/sec.
8 bits on CMYK profiles : 4.19727 MPixel/sec.
16 bits on CMYK profiles : 4.26667 MPixel/sec.
8 bits on gray-to-gray : 40.9207 MPixel/sec.
8 bits on SAME gray-to-gray : 40.9207 MPixel/sec.
8 bits on CMYK profiles : 4.3573 MPixel/sec.
16 bits on CMYK profiles : 4.55192 MPixel/sec.
8 bits on gray-to-gray : 39.312 MPixel/sec.
8 bits on SAME gray-to-gray : 40.9207 MPixel/sec.
Monday, February 15, 2010
Speed measurements
Here are some performance numbers, measured on my laptop. This is a pretty old compaq nc6400, Dual core T2300E (1.66GHZ) so it should rock in a modern machines. Note how fast transforms go when both profiles are implemented as matrix shaper. The measurements are using the code on git.
16 bits on CLUT profiles.. 5.95238 Mpixel/sec.
8 bits on CLUT profiles...10.5541 Mpixels/sec.
8 bits on Matrix-Shaper profiles..27.6817 Mpixels/sec.
8 bits on SAME Matrix-Shaper profiles...36.5297 Mpixels/sec.
8 bits on curves... 29.2505 Mpixels/sec.
8 bits on Matrix-Shaper profiles (AbsCol)...27.6817 Mpixels/sec.
16 bits on curves... 37.9147 Mpixel/sec.
8 bits on CMYK profiles... 8.90373 Mpixels/sec.
16 bits on CMYK profiles...4.45186 Mpixel/sec.
8 bits on gray-to-gray conversions.. 32.9897 Mpixels/sec.
8 bits on same gray-to-gray conversions ...39.312 Mpixels/sec.
16 bits on CLUT profiles.. 5.95238 Mpixel/sec.
8 bits on CLUT profiles...10.5541 Mpixels/sec.
8 bits on Matrix-Shaper profiles..27.6817 Mpixels/sec.
8 bits on SAME Matrix-Shaper profiles...36.5297 Mpixels/sec.
8 bits on curves... 29.2505 Mpixels/sec.
8 bits on Matrix-Shaper profiles (AbsCol)...27.6817 Mpixels/sec.
16 bits on curves... 37.9147 Mpixel/sec.
8 bits on CMYK profiles... 8.90373 Mpixels/sec.
16 bits on CMYK profiles...4.45186 Mpixel/sec.
8 bits on gray-to-gray conversions.. 32.9897 Mpixels/sec.
8 bits on same gray-to-gray conversions ...39.312 Mpixels/sec.
Sunday, February 14, 2010
Fixes on github
Ok, that seems to be working. I have received a couple of bug reports. Very helpful .There are now two nasty bugs less in the code base. Gray profiles were broken. That didn't work at all. I wonder how that passed the regression tests... ok, there was no regression tests for gray profiles. Now that is fixed as well. I still have to review documentation for some typos, but I think this can wait.
The latest (fixed) code is in the git. Or you can wait for beta2, which will be available on March.
http://github.com/mm2/Little-CMS
The latest (fixed) code is in the git. Or you can wait for beta2, which will be available on March.
http://github.com/mm2/Little-CMS
Friday, February 12, 2010
LittleCMS 2 on github
So here you go:
http://github.com/mm2/Little-CMS
You can review all files in a nice web page and also that makes fair easy to send patches. Many thanks to Richard Hughes for this nice idea!
You can also review the documentation in such way. It is located on 'doc' folder. The tutorial is a good starting point.
http://github.com/mm2/Little-CMS
You can review all files in a nice web page and also that makes fair easy to send patches. Many thanks to Richard Hughes for this nice idea!
You can also review the documentation in such way. It is located on 'doc' folder. The tutorial is a good starting point.
Friday, February 5, 2010
Little CMS 2.0 beta 1 is available!
Yes, that is. After so much time, all code, documentation, testbed, utilities... all is in the box, and all is working!
In one day or two I will announce the beta availability to the lcms mailing list, but meanwhile, you can be the very first to try it.
http://www.littlecms.com/lcms2-2.0beta1.tar.gz
Enjoy!
In one day or two I will announce the beta availability to the lcms mailing list, but meanwhile, you can be the very first to try it.
http://www.littlecms.com/lcms2-2.0beta1.tar.gz
Enjoy!
Thursday, December 10, 2009
Include files
Any application using LittleCMS 2 has to include just one header.
The header has been renamed to lcms2.h in order to improve the adoption of version 2. In fact, both Little CMS 1.x and 2.0 can coexist installed in same machine. This is very important on platforms like linux, where LittleCMS is nested deep in the dependency tree. Little CMS 2 no longer relies on icc34.h or any file coming from ICC. All costants are now prefixed by “cms” and there is one license for all package.
Lcms2.h does expose the API, and only the API. Unlike 1.xx series, all internal functions are no longer accesible for client applications.
A special case are the LittleCMS plug-ins. Those constructs can access more functions that the API, just because they are supposed to access Little CMS internals to add new functionality. There is a specialized include file for that:
This file should only be included when defining plug-ins. It defines some additional functions and is described in the LittleCMS2.0 Plugin API document.
#include “lcms2.h”
The header has been renamed to lcms2.h in order to improve the adoption of version 2. In fact, both Little CMS 1.x and 2.0 can coexist installed in same machine. This is very important on platforms like linux, where LittleCMS is nested deep in the dependency tree. Little CMS 2 no longer relies on icc34.h or any file coming from ICC. All costants are now prefixed by “cms” and there is one license for all package.
Lcms2.h does expose the API, and only the API. Unlike 1.xx series, all internal functions are no longer accesible for client applications.
A special case are the LittleCMS plug-ins. Those constructs can access more functions that the API, just because they are supposed to access Little CMS internals to add new functionality. There is a specialized include file for that:
#include “lcms2_plugin.h”
This file should only be included when defining plug-ins. It defines some additional functions and is described in the LittleCMS2.0 Plugin API document.
Saturday, December 5, 2009
Requeriments
In order to improve portability and minimize code complexity, LittleCMS 2.0 requires a C99 compliant compiler. This requirement has been relexed on Microsoft’s Visual Studio because its wide adoption by industry (VC is not fully C99 compliant). Borland C 5.5 (available for free) has been tested and found to work Ok. gcc and the Intel compiler does work ok.
Monday, November 30, 2009
Backwards compatibility
Little CMS 2 is almost a full rewrite of 1.x series, so there is no guarantee of backwards compatibility. Having said this, if your application doesn’t make use of advanced features, probably all what you need to do is to change the include file from lcms.h to lcms2.h and maybe to do some minor tweaks on your code. Profile opening and transform creation functions are kept the same, but there are some changes in the flags. Little CMS 2 does offer more ways to access profiles, so it is certainly possible your code will get simplified. The basic parts where Little CMS 2 differs from 1.x series are:
On internal advanced functions, the underlying implementation has changed significantly. You still can do all what lcms1 did, but in some cases by using a different approach. There are no longer gamma curves or matrix-shaper functions. Even the LUT functions are gone. All that has been superseded by:
- · Transform flags
- · Error handling
- · Textual information retrieval
- · New non-ICC intents
- · Floating point modes
- · Pipelines
On internal advanced functions, the underlying implementation has changed significantly. You still can do all what lcms1 did, but in some cases by using a different approach. There are no longer gamma curves or matrix-shaper functions. Even the LUT functions are gone. All that has been superseded by:
- · Gamma functions -> Tone curves
- · Matrix Shaper, LUT -> Pipelines
- · LUT resampling -> Optimization engine
Sunday, November 29, 2009
What is new from lcms 1.x
First obvious question is “why should I upgrade to Little CMS 2.0”. Here are some clues:
Little CMS 2.0 is a full v4 CMM, which can accept v2 profiles. Little CMS 1.xx was a v2 CMM which can deal with (some) V4 profiles. The difference is important, as 2.0 handling of PCS is different, definitively better and far more accurate.
Little CMS 2.0 is a full v4 CMM, which can accept v2 profiles. Little CMS 1.xx was a v2 CMM which can deal with (some) V4 profiles. The difference is important, as 2.0 handling of PCS is different, definitively better and far more accurate.
- It does accept and understand floating point profiles (MPE) with DToBxx tags. (Yes, it works!) It has 32 bits precision. (lcms 1.xx was 16 bits)
- It handles float and double formats directly. MPE profiles are evaluated in floating point with no precision loss.
- It has plug-in architecture that allows you to change interpolation, add new proprietary tags, add new “smart CMM” intents, etc.
- Is faster. In some combinations, has a x 6 throughput boost.
- Some new algorithms, incomplete state of adaptation, Jan Morovic’s segment maxima gamut boundary descriptor, better K preservation…
- Historic issues, like faulty icc34.h, freeing profiles after creating transform, etc. All is solved.
Saturday, November 28, 2009
Documentation strategy
Little CMS documentation is hold in three different papers. First one is the tutorial. Its goal is to introduce the engine and to guide you in its basic usage. It does not, however, give details on all available functionality. For that purpose, you can use the API reference, which gives information on all the constants, structures and functions in the engine. The third document is the plug-in documentation. It details how to extend the engine to fit your particular purposes. You need some experience in the core API to write plug-ins, therefore, the plug-in API reference is somehow more advanced that the remaining two.
Aside documentation, there are sample programs that you can explore. Those are located in the “utils” folder. Those programs are also handy in isolation. This is the list of utilities, each one is documented elsewere.
Aside documentation, there are sample programs that you can explore. Those are located in the “utils” folder. Those programs are also handy in isolation. This is the list of utilities, each one is documented elsewere.
- TiffICC
- JpegICC
- TransICC
- LinkICC
- TiffDiff
- psicc
Subscribe to:
Posts (Atom)