@@ -33,6 +33,7 @@ static void CalcColorSpaceMono(avifImage * avif, CGColorSpaceRef* ref, BOOL* sho
3333static void CalcColorSpaceRGB (avifImage * avif, CGColorSpaceRef* ref, BOOL * shouldRelease) {
3434 static CGColorSpaceRef defaultColorSpace = NULL ;
3535 static CGColorSpaceRef sRGB = NULL ;
36+ static CGColorSpaceRef sRGBlinear = NULL ;
3637 static CGColorSpaceRef bt709 = NULL ;
3738 static CGColorSpaceRef bt2020 = NULL ;
3839 static CGColorSpaceRef bt2020hlg = NULL ;
@@ -64,6 +65,11 @@ static void CalcColorSpaceRGB(avifImage * avif, CGColorSpaceRef* ref, BOOL* shou
6465 } else {
6566 p3 = defaultColorSpace;
6667 }
68+ if (@available (macOS 10.12 , iOS 10.0 , tvOS 10.0 , *)) {
69+ sRGBlinear = CGColorSpaceCreateWithName (kCGColorSpaceLinearSRGB );
70+ } else {
71+ sRGBlinear = defaultColorSpace;
72+ }
6773 if (@available (macOS 10.14.3 , iOS 12.3 , tvOS 12.3 , *)) {
6874 p3linear = CGColorSpaceCreateWithName (kCGColorSpaceExtendedLinearDisplayP3 );
6975 bt2020linear = CGColorSpaceCreateWithName (kCGColorSpaceExtendedLinearITUR_2020 );
@@ -111,6 +117,12 @@ static void CalcColorSpaceRGB(avifImage * avif, CGColorSpaceRef* ref, BOOL* shou
111117 *shouldRelease = FALSE ;
112118 return ;
113119 }
120+ if (colorPrimaries == AVIF_NCLX_COLOUR_PRIMARIES_SRGB &&
121+ transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_LINEAR) {
122+ *ref = sRGBlinear ;
123+ *shouldRelease = FALSE ;
124+ return ;
125+ }
114126 if (colorPrimaries == AVIF_NCLX_COLOUR_PRIMARIES_BT2020 &&
115127 (transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT2020_10BIT ||
116128 transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT2020_12BIT)) {
0 commit comments