Treat null profiles as sRGB

Change-Id: Id5acafa76e4590c8c0b89ba75972d0304b084a6a
Reviewed-on: https://skia-review.googlesource.com/136620
Commit-Queue: Brian Osman <brianosman@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
Auto-Submit: Brian Osman <brianosman@google.com>
Reviewed-by: Mike Klein <mtklein@google.com>
diff --git a/src/Transform.c b/src/Transform.c
index 0de0727..f07c5e7 100644
--- a/src/Transform.c
+++ b/src/Transform.c
@@ -404,9 +404,12 @@
     }
     int n = (int)nz;
 
-    // Both profiles can be null if we're just doing format conversion, otherwise both are needed
-    if (!dstProfile != !srcProfile) {
-        return false;
+    // Null profiles default to sRGB. Passing null for both is handy when doing format conversion.
+    if (!srcProfile) {
+        srcProfile = skcms_sRGB_profile();
+    }
+    if (!dstProfile) {
+        dstProfile = skcms_sRGB_profile();
     }
 
     // We can't transform in place unless the PixelFormats are the same size.
@@ -442,7 +445,7 @@
         *ops++ = Op_swap_rb;
     }
 
-    if (srcProfile && srcProfile->data_color_space == skcms_Signature_CMYK) {
+    if (srcProfile->data_color_space == skcms_Signature_CMYK) {
         // Photoshop creates CMYK images as inverse CMYK.
         // These happen to be the only ones we've _ever_ seen.
         *ops++ = Op_invert;
diff --git a/tests.c b/tests.c
index 00fd64d..fea003b 100644
--- a/tests.c
+++ b/tests.c
@@ -47,10 +47,6 @@
 }
 
 static void test_FormatConversions() {
-    // If we use a single skcms_ICCProfile, we should be able to use skcms_Transform()
-    // to do skcms_PixelFormat conversions.
-    skcms_ICCProfile profile;
-
     // We can interpret src as 85 RGB_888 pixels or 64 RGB_8888 pixels.
     uint8_t src[256],
             dst[85*4];
@@ -59,16 +55,16 @@
     }
 
     // This should basically be a really complicated memcpy().
-    expect(skcms_Transform(src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            64));
     for (int i = 0; i < 256; i++) {
         expect(dst[i] == i);
     }
 
     // We can do RGBA -> BGRA swaps two ways:
-    expect(skcms_Transform(src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            64));
     for (int i = 0; i < 64; i++) {
         expect(dst[4*i+0] == 4*i+2);
@@ -76,8 +72,8 @@
         expect(dst[4*i+2] == 4*i+0);
         expect(dst[4*i+3] == 4*i+3);
     }
-    expect(skcms_Transform(src, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            64));
     for (int i = 0; i < 64; i++) {
         expect(dst[4*i+0] == 4*i+2);
@@ -87,8 +83,8 @@
     }
 
     // Let's convert RGB_888 to RGBA_8888...
-    expect(skcms_Transform(src, skcms_PixelFormat_RGB_888  , skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_RGB_888  , skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            85));
     for (int i = 0; i < 85; i++) {
         expect(dst[4*i+0] == 3*i+0);
@@ -97,8 +93,8 @@
         expect(dst[4*i+3] ==   255);
     }
     // ... and now all the variants of R-B swaps.
-    expect(skcms_Transform(src, skcms_PixelFormat_BGR_888  , skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_BGR_888  , skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            85));
     for (int i = 0; i < 85; i++) {
         expect(dst[4*i+0] == 3*i+0);
@@ -106,8 +102,8 @@
         expect(dst[4*i+2] == 3*i+2);
         expect(dst[4*i+3] ==   255);
     }
-    expect(skcms_Transform(src, skcms_PixelFormat_BGR_888  , skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_BGR_888  , skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            85));
     for (int i = 0; i < 85; i++) {
         expect(dst[4*i+0] == 3*i+2);
@@ -115,8 +111,8 @@
         expect(dst[4*i+2] == 3*i+0);
         expect(dst[4*i+3] ==   255);
     }
-    expect(skcms_Transform(src, skcms_PixelFormat_RGB_888  , skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_RGB_888  , skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            85));
     for (int i = 0; i < 85; i++) {
         expect(dst[4*i+0] == 3*i+2);
@@ -127,13 +123,13 @@
 
     // Let's test in-place transforms.
     // RGBA_8888 and RGB_888 aren't the same size, so we shouldn't allow this call.
-    expect(!skcms_Transform(src, skcms_PixelFormat_RGB_888  , skcms_AlphaFormat_Unpremul, &profile,
-                            src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(!skcms_Transform(src, skcms_PixelFormat_RGB_888  , skcms_AlphaFormat_Unpremul, NULL,
+                            src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                             85));
 
     // These two should work fine.
-    expect(skcms_Transform(src, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, &profile,
-                           src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, NULL,
+                           src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            64));
     for (int i = 0; i < 64; i++) {
         expect(src[4*i+0] == 4*i+2);
@@ -141,8 +137,8 @@
         expect(src[4*i+2] == 4*i+0);
         expect(src[4*i+3] == 4*i+3);
     }
-    expect(skcms_Transform(src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
-                           src, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
+                           src, skcms_PixelFormat_BGRA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            64));
     for (int i = 0; i < 64; i++) {
         expect(src[4*i+0] == 4*i+0);
@@ -153,8 +149,8 @@
 
     uint32_t _8888[3] = { 0x03020100, 0x07060504, 0x0b0a0908 };
     uint8_t _888[9];
-    expect(skcms_Transform(_8888, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
-                           _888 , skcms_PixelFormat_RGB_888  , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(_8888, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
+                           _888 , skcms_PixelFormat_RGB_888  , skcms_AlphaFormat_Unpremul, NULL,
                            3));
     expect(_888[0] == 0 && _888[1] == 1 && _888[2] ==  2);
     expect(_888[3] == 4 && _888[4] == 5 && _888[5] ==  6);
@@ -162,10 +158,6 @@
 }
 
 static void test_FormatConversions_565() {
-    // If we use a single skcms_ICCProfile, we should be able to use skcms_Transform()
-    // to do skcms_PixelFormat conversions.
-    skcms_ICCProfile profile;
-
     // This should hit all the unique values of each lane of 565.
     uint16_t src[64];
     for (int i = 0; i < 64; i++) {
@@ -178,8 +170,8 @@
     expect(src[63] == 0xffff);
 
     uint32_t dst[64];
-    expect(skcms_Transform(src, skcms_PixelFormat_RGB_565  , skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_RGB_565  , skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            64));
     // We'll just spot check these results a bit.
     for (int i = 0; i < 64; i++) {
@@ -192,8 +184,8 @@
 
     // Let's convert back the other way.
     uint16_t back[64];
-    expect(skcms_Transform(dst , skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
-                           back, skcms_PixelFormat_RGB_565  , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(dst , skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
+                           back, skcms_PixelFormat_RGB_565  , skcms_AlphaFormat_Unpremul, NULL,
                            64));
     for (int i = 0; i < 64; i++) {
         expect(src[i] == back[i]);
@@ -201,8 +193,6 @@
 }
 
 static void test_FormatConversions_16161616() {
-    skcms_ICCProfile profile;
-
     // We want to hit each 16-bit value, 4 per each of 16384 pixels.
     uint64_t* src = malloc(8 * 16384);
     for (int i = 0; i < 16384; i++) {
@@ -216,8 +206,8 @@
     expect(src[16383] == 0xfffffffefffdfffc);
 
     uint32_t* dst = malloc(4 * 16384);
-    expect(skcms_Transform(src, skcms_PixelFormat_RGBA_16161616, skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_RGBA_8888    , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_RGBA_16161616, skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_RGBA_8888    , skcms_AlphaFormat_Unpremul, NULL,
                            16384));
 
     // skcms_Transform() will treat src as holding big-endian 16-bit values,
@@ -230,8 +220,8 @@
     // We've lost precision when transforming to 8-bit, so these won't quite round-trip.
     // Instead we should see the 8-bit dst value byte-doubled, as 65535/255 = 257 = 0x0101.
     uint64_t* back = malloc(8 * 16384);
-    expect(skcms_Transform(dst , skcms_PixelFormat_RGBA_8888    , skcms_AlphaFormat_Unpremul, &profile,
-                           back, skcms_PixelFormat_RGBA_16161616, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(dst , skcms_PixelFormat_RGBA_8888    , skcms_AlphaFormat_Unpremul, NULL,
+                           back, skcms_PixelFormat_RGBA_16161616, skcms_AlphaFormat_Unpremul, NULL,
                            16384));
     for (int i = 0; i < 16384; i++) {
         expect( ((back[i] >>  0) & 0xffff) == ((dst[i] >>  0) & 0xff) * 0x0101);
@@ -246,16 +236,14 @@
 }
 
 static void test_FormatConversions_161616() {
-    skcms_ICCProfile profile;
-
     // We'll test the same cases as the _16161616() test, as if they were 4 RGB pixels.
     uint16_t src[] = { 0x0000, 0x0001, 0x0002,
                        0x0003, 0x7efc, 0x7efd,
                        0x7efe, 0x7eff, 0xfffc,
                        0xfffd, 0xfffe, 0xffff };
     uint32_t dst[4];
-    expect(skcms_Transform(src, skcms_PixelFormat_RGB_161616, skcms_AlphaFormat_Unpremul, &profile,
-                           dst, skcms_PixelFormat_RGBA_8888 , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(src, skcms_PixelFormat_RGB_161616, skcms_AlphaFormat_Unpremul, NULL,
+                           dst, skcms_PixelFormat_RGBA_8888 , skcms_AlphaFormat_Unpremul, NULL,
                            4));
 
     expect(dst[0] == 0xff020100);
@@ -266,8 +254,8 @@
     // We've lost precision when transforming to 8-bit, so these won't quite round-trip.
     // Instead we should see the most signficant (low) byte doubled, as 65535/255 = 257 = 0x0101.
     uint16_t back[12];
-    expect(skcms_Transform(dst , skcms_PixelFormat_RGBA_8888 , skcms_AlphaFormat_Unpremul, &profile,
-                           back, skcms_PixelFormat_RGB_161616, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(dst , skcms_PixelFormat_RGBA_8888 , skcms_AlphaFormat_Unpremul, NULL,
+                           back, skcms_PixelFormat_RGB_161616, skcms_AlphaFormat_Unpremul, NULL,
                            4));
     for (int i = 0; i < 12; i++) {
         expect(back[0] == (src[0] & 0xff) * 0x0101);
@@ -275,34 +263,32 @@
 }
 
 static void test_FormatConversions_101010() {
-    skcms_ICCProfile profile;
-
     uint32_t src = (uint32_t)1023 <<  0    // 1.0.
                  | (uint32_t) 511 << 10    // About 1/2.
                  | (uint32_t)   4 << 20    // Smallest 10-bit channel that's non-zero in 8-bit.
                  | (uint32_t)   1 << 30;   // 1/3, smallest non-zero alpha.
     uint32_t dst;
-    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Unpremul, &profile,
-                           &dst, skcms_PixelFormat_RGBA_8888   , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Unpremul, NULL,
+                           &dst, skcms_PixelFormat_RGBA_8888   , skcms_AlphaFormat_Unpremul, NULL,
                            1));
     expect(dst == 0x55017fff);
 
     // Same as above, but we'll ignore the 1/3 alpha and fill in 1.0.
-    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Opaque  , &profile,
-                           &dst, skcms_PixelFormat_RGBA_8888   , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Opaque  , NULL,
+                           &dst, skcms_PixelFormat_RGBA_8888   , skcms_AlphaFormat_Unpremul, NULL,
                            1));
     expect(dst == 0xff017fff);
 
     // Converting 101010x <-> 1010102 will force opaque in either direction.
-    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Unpremul, &profile,
-                           &dst, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Opaque  , &profile,
+    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Unpremul, NULL,
+                           &dst, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Opaque  , NULL,
                            1));
     expect(dst == ( (uint32_t)1023 <<  0
                   | (uint32_t) 511 << 10
                   | (uint32_t)   4 << 20
                   | (uint32_t)   3 << 30));
-    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Opaque  , &profile,
-                           &dst, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Opaque  , NULL,
+                           &dst, skcms_PixelFormat_RGBA_1010102, skcms_AlphaFormat_Unpremul, NULL,
                            1));
     expect(dst == ( (uint32_t)1023 <<  0
                   | (uint32_t) 511 << 10
@@ -311,8 +297,6 @@
 }
 
 static void test_FormatConversions_half() {
-    skcms_ICCProfile profile;
-
     uint16_t src[] = {
         0x3c00,  // 1.0
         0x3800,  // 0.5
@@ -325,21 +309,21 @@
     };
 
     uint32_t dst[2];
-    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_hhhh, skcms_AlphaFormat_Unpremul, &profile,
-                           &dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_hhhh, skcms_AlphaFormat_Unpremul, NULL,
+                           &dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            2));
     expect(dst[0] == 0x000180ff);
     expect(dst[1] == 0x000000ff);  // Notice we've clamped 2.0 to 0xff and -1.0 to 0x00.
 
-    expect(skcms_Transform(&src, skcms_PixelFormat_RGB_hhh  , skcms_AlphaFormat_Unpremul, &profile,
-                           &dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&src, skcms_PixelFormat_RGB_hhh  , skcms_AlphaFormat_Unpremul, NULL,
+                           &dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            2));
     expect(dst[0] == 0xff0180ff);
     expect(dst[1] == 0xff00ff00);  // Remember, this corresponds to src[3-5].
 
     float fdst[8];
-    expect(skcms_Transform( &src, skcms_PixelFormat_RGBA_hhhh, skcms_AlphaFormat_Unpremul, &profile,
-                           &fdst, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform( &src, skcms_PixelFormat_RGBA_hhhh, skcms_AlphaFormat_Unpremul, NULL,
+                           &fdst, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, NULL,
                            2));
     expect(fdst[0] ==  1.0f);
     expect(fdst[1] ==  0.5f);
@@ -352,8 +336,8 @@
 
     // Now convert back, first to RGBA halfs, then RGB halfs.
     uint16_t back[8];
-    expect(skcms_Transform(&fdst, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, &profile,
-                           &back, skcms_PixelFormat_RGBA_hhhh, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&fdst, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, NULL,
+                           &back, skcms_PixelFormat_RGBA_hhhh, skcms_AlphaFormat_Unpremul, NULL,
                            2));
     expect(back[0] == src[0]);
     expect(back[1] == src[1]);
@@ -364,8 +348,8 @@
     expect(back[6] == src[6] || back[6] == 0x0000);
     expect(back[7] == src[7]);
 
-    expect(skcms_Transform(&fdst, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, &profile,
-                           &back, skcms_PixelFormat_RGB_hhh  , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&fdst, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, NULL,
+                           &back, skcms_PixelFormat_RGB_hhh  , skcms_AlphaFormat_Unpremul, NULL,
                            2));
     expect(back[0] == src[0]);
     expect(back[1] == src[1]);
@@ -376,19 +360,17 @@
 }
 
 static void test_FormatConversions_float() {
-    skcms_ICCProfile profile;
-
     float src[] = { 1.0f, 0.5f, 1/255.0f, 1/512.0f };
 
     uint32_t dst;
-    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, &profile,
-                           &dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&src, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, NULL,
+                           &dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            1));
     expect(dst == 0x000180ff);
 
     // Same as above, but we'll ignore the 1/512 alpha and fill in 1.0.
-    expect(skcms_Transform(&src, skcms_PixelFormat_RGB_fff  , skcms_AlphaFormat_Unpremul, &profile,
-                           &dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&src, skcms_PixelFormat_RGB_fff  , skcms_AlphaFormat_Unpremul, NULL,
+                           &dst, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
                            1));
     expect(dst == 0xff0180ff);
 
@@ -398,8 +380,8 @@
     for (int i = 0; i < 64; i++) {
         bytes[i] = 0x03020100 + 0x04040404 * (uint32_t)i;
     }
-    expect(skcms_Transform(&bytes, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, &profile,
-                            &fdst, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(&bytes, skcms_PixelFormat_RGBA_8888, skcms_AlphaFormat_Unpremul, NULL,
+                            &fdst, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, NULL,
                            64));
     for (int i = 0; i < 256; i++) {
         expect(fdst[i] == i*(1/255.0f));
@@ -407,13 +389,13 @@
 
     float ffff[16] = { 0,1,2,3, 4,5,6,7, 8,9,10,11, 12,13,14,15 };
     float  fff[12] = { 0,0,0, 0,0,0, 0,0,0, 0,0,0};
-    expect(skcms_Transform(ffff, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, &profile,
-                           fff , skcms_PixelFormat_RGB_fff  , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(ffff, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, NULL,
+                           fff , skcms_PixelFormat_RGB_fff  , skcms_AlphaFormat_Unpremul, NULL,
                            1));
     expect(fff[0] == 0); expect(fff[1] == 1); expect(fff[2] == 2);
 
-    expect(skcms_Transform(ffff, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, &profile,
-                           fff , skcms_PixelFormat_RGB_fff  , skcms_AlphaFormat_Unpremul, &profile,
+    expect(skcms_Transform(ffff, skcms_PixelFormat_RGBA_ffff, skcms_AlphaFormat_Unpremul, NULL,
+                           fff , skcms_PixelFormat_RGB_fff  , skcms_AlphaFormat_Unpremul, NULL,
                            4));
     expect(fff[0] ==  0); expect(fff[ 1] ==  1); expect(fff[ 2] ==  2);
     expect(fff[3] ==  4); expect(fff[ 4] ==  5); expect(fff[ 5] ==  6);