Dear group,

Forget it. I did indeed something dead wrong :)
The image has (unexpected) different sizes in the comparison.
I'm sorry for bothering.

Jos


Jos De Laender schreef:
> Dear group,
>
> Probably I'm doing something dead wrong, but using your lcms2 library in 
> my own application, I seem to note a 50%-100% performance drop going 
> from lcms to lcms2.
> The piece of code is, I think, pretty straightforward and goes 
> hereafter. What am I doing wrong or what are the suggestions ?
> (For your reference, it's a piece of code that transforms a linear image 
> representation to a screen, using a profile). OMP I took out of the 
> equation.
>
> Thanks for the library, thanks for the feedback !
>
> Code :
>
>     QTime Time;
>     Time.start();
>
>     if (m_OutProfile) {
>
>       // Some lcms initialization.
>       cmsCIExyY       D65;
>       cmsCIExyY       D50;
>
>       cmsSetLogErrorHandler(lcmsError);
>       cmsWhitePointFromTemp(&D65,6503);
>       cmsWhitePointFromTemp(&D50,5003);
>
>       cmsToneCurve* GammaCurve    = cmsBuildGamma(NULL,1.0);
>       cmsToneCurve* GammaCurves[] = {GammaCurve,GammaCurve,GammaCurve};
>  
>       cmsHPROFILE InProfile = 0;
>  
>       cmsCIExyY       DFromReference;
>
>       short ColorSpace = m_RelatedImage->m_ColorSpace;
>  
>       switch (ColorSpace) {
>         case dlSpace_sRGB_D65 :
>         case dlSpace_AdobeRGB_D65 :
>           DFromReference = D65;
>           break;
>         case dlSpace_WideGamutRGB_D50 :
>         case dlSpace_ProPhotoRGB_D50 :
>           DFromReference = D50;
>           break;
>         default:
>           DL_ERROR(Error_SwitchCase,"Unexpected switch 
> case","%d",ColorSpace);
>       }
>    
>       InProfile =
>         cmsCreateRGBProfile(&DFromReference,
>                             (cmsCIExyYTRIPLE*)&RGBPrimaries[ColorSpace],
>                             GammaCurves);
>       if (!InProfile) {
>         DL_ERROR(Error_Profile,"Could not open profile","%s","InProfile");
>       }
>    
>       cmsFreeToneCurve(GammaCurve);
>    
>       cmsHTRANSFORM Transform;
>       Transform = cmsCreateTransform(InProfile,
>                                      TYPE_RGBA_8,
>                                      m_OutProfile,
>                                      TYPE_RGBA_8,
>                                      m_Intent,
>                                      0);
>                                      // Addition of those drops 
> performance even further.
>                                      //cmsFLAGS_NOOPTIMIZE |
>                                      //cmsFLAGS_BLACKPOINTCOMPENSATION);
>       TRACEKEYVALS("Elapsed","%d",Time.elapsed());
>    
>       TRACEKEYVALS("cmsDoTransform on QImage","%p",m_QImageZoomed);
>       const uint32_t Size = m_ZoomWidth*m_ZoomHeight;
>       short NrTiles = 1;
>       #ifdef _OPENMP
>         // XXX JDLA  NrTiles = omp_get_num_threads();
>       #endif
>       uint32_t Step = Size/NrTiles;
>       #pragma omp parallel for default(shared) schedule(static)
>       for (short Tile=0; Tile<NrTiles; Tile++) {
>         uint32_t Start = Tile*Step;
>         uint32_t End   = (Tile == NrTiles-1) ? Size : Start+Step;
>         cmsDoTransform(Transform,
>                        m_QImageZoomed->bits()+Start*4,
>                        m_QImageZoomed->bits()+Start*4,
>                        End-Start);
>       }
>
>       cmsDeleteTransform(Transform);
>       cmsCloseProfile(InProfile);
>      
>     }
>
>     TRACEKEYVALS("Elapsed","%d",Time.elapsed());
>   }
>
>   


-- 
Jos De Laender
www.jodela.net


------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to