I am still having difficulty with calling cmsDoTransform with
variable-length arrays of bytes.
I always get MemoryAccessViolations errors.

Today's preliminary testing suggest I would have better luck using fixed
size arrays.

What will happen if I break down my bitmap image in fixed size chunks?

Suppose image size = 104 bytes 
Suppose I chose Fixed array size = 64 bytes

My new C# pinvoke function signature would look like this :

[DllImport(@lcms2Path, CallingConvention = CallingConvention.Winapi)]
static extern void cmsDoTransform(
            IntPtr xform,
            [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 64), In]
byte[] inputColors,
            [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 64), Out]
byte[] outputColors,
            uint Size);

Then, I will iterate cmsDoTransform 2x with 64 bytes each.

Upon return, it will be up to my code to throw away the remainder 2 x 64 =
128 - 104 -> 24 bytes.

I guess I will have to pad these extra 24 bytes with 00.

But, would this work?

At least, this approach has the merit of avoiding MemoryAccessViolations.

Best / Roger


------------------------------------------------------------------------------
Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San
Francisco, CA to explore cutting-edge tech and listen to tech luminaries
present their vision of the future. This family event has something for
everyone, including kids. Get more information and register today.
http://sdm.link/attshape
_______________________________________________
Lcms-user mailing list
Lcms-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lcms-user

Reply via email to