Re: [Lcms-user] making many transforms efficient
An ICC-based CMM for color management
Brought to you by:
mm2
From: Marti M. <ma...@li...> - 2003-11-29 17:49:45
|
Hi, >I am trying to figure out which lcms functions are the >memory/time-expensive ones in order to integrate it in an efficient way. Opening profiles is not expensive. However, a transform may be very memory intensive. There two ways to handle that. First, you have control on the memory/precission tradeoff by using following flags: cmsFLAGS_HIGHRESPRECALC: Very memory intensive, fast on transforming, slow on creating transform. Accurate. cmsFLAGS_LOWRESPRECALC: Uses less memory, fast on transforming, fast on creating transform. Visually correct, but no so accurate (no flags given - default): Moderate memory usage, fast on transforming, no so fast on creating transform. Very accurate, but not perfect. cmsFLAGS_NOTPRECALC: No memory overhead, VERY SLOW ON TRANSFORMING, very fast on creating transform. Maximum accurancy. Second, If you plan to do some cach=E9 on transforms, you could use devicelinks. A yet existing transform can be saved as a devicelink using cmsTransform2DeviceLink(). Then, opening this devicelink is very fast. The drawback is devicelink is a "snapshot" of the transform, and cannot be modified if any of the profiles or the intent does change. Hope this helps, Marti. ----- Original Message -----=20 From: "Stefan Klein" <kl...@we...> To: <lcm...@li...> Sent: Friday, November 28, 2003 4:21 PM Subject: [Lcms-user] making many transforms efficient Hi, I am trying to figure out which lcms functions are the memory/time-expensive ones in order to integrate it in an efficient way. I gathered that profiles are not kept in memory when opened, so I should be able to load loads of them. However, once you generate a transform from two profiles, I assume from a few glances at the code that all its tables are kept in memory which means I shouldn't have too many open at the same time. Is that right? What I'd like to do is have a whole bunch of images displayed at the same time, each of them possibly requiring a different transformation and each of them being transformed on-the-fly for screen display. However generating the transform every time before rendering the image would probably be too time-consuming. Generating all the transforms in advance would be very memory-consuming. (If I understand things right). Would storing the transform on disk (in a temporary device-link profile) and loading the pre-calculated profile/transformation whenever necessary speed things up, you think? Any pointers would be very welcome. If not, I'll go ahead experimenting myself and will report back what worked best for me. Thanks Stefan ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/ _______________________________________________ Lcms-user mailing list Lcm...@li... https://lists.sourceforge.net/lists/listinfo/lcms-user |