@@ -17,6 +17,7 @@ static void FreeImageData(void *info, const void *data, size_t size) {
1717 free ((void *)data);
1818}
1919static void CalcColorSpaceMono (avifImage * avif, CGColorSpaceRef* ref, BOOL * shouldRelease) {
20+ [SDImageCoderHelper colorSpaceGetDeviceRGB ];
2021 static CGColorSpaceRef defaultColorSpace;
2122 {
2223 static dispatch_once_t onceToken;
@@ -30,22 +31,24 @@ static void CalcColorSpaceMono(avifImage * avif, CGColorSpaceRef* ref, BOOL* sho
3031}
3132static void CalcColorSpaceRGB (avifImage * avif, CGColorSpaceRef* ref, BOOL * shouldRelease) {
3233 static CGColorSpaceRef defaultColorSpace;
34+ static CGColorSpaceRef sRGB ;
3335 static CGColorSpaceRef bt709;
3436 static CGColorSpaceRef bt2020;
3537 {
3638 static dispatch_once_t onceToken;
3739 dispatch_once (&onceToken, ^{
40+ defaultColorSpace = CGColorSpaceCreateDeviceRGB ();
3841 if (@available (iOS 9.0 , tvOS 9.0 , *)) {
39- defaultColorSpace = CGColorSpaceCreateWithName (kCGColorSpaceSRGB );
42+ sRGB = CGColorSpaceCreateWithName (kCGColorSpaceSRGB );
4043 } else {
41- defaultColorSpace = CGColorSpaceCreateDeviceRGB () ;
44+ sRGB = defaultColorSpace ;
4245 }
43- if (@available (macOS 10.11 , *)) {
46+ if (@available (iOS 9.0 , tvOS 9.0 , *)) {
4447 bt709 = CGColorSpaceCreateWithName (kCGColorSpaceITUR_709 );
4548 } else {
4649 bt709 = defaultColorSpace;
4750 }
48- if (@available (macOS 10.11 , *)) {
51+ if (@available (iOS 9.0 , tvOS 9.0 , *)) {
4952 bt2020 = CGColorSpaceCreateWithName (kCGColorSpaceITUR_2020 );
5053 } else {
5154 bt2020 = defaultColorSpace;
@@ -54,7 +57,7 @@ static void CalcColorSpaceRGB(avifImage * avif, CGColorSpaceRef* ref, BOOL* shou
5457 }
5558
5659 if ((avif->profileFormat == AVIF_PROFILE_FORMAT_ICC) && avif->icc .data && avif->icc .size ) {
57- if (@available (macOS 10.12 , *)) {
60+ if (@available (macOS 10.12 , iOS 10.0 , tvOS 10.0 , *)) {
5861 *ref = CGColorSpaceCreateWithICCData (avif->icc .data );
5962 *shouldRelease = TRUE ;
6063 return ;
@@ -68,10 +71,17 @@ static void CalcColorSpaceRGB(avifImage * avif, CGColorSpaceRef* ref, BOOL* shou
6871 if (colorPrimaries == AVIF_NCLX_COLOUR_PRIMARIES_BT709 && transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT709) {
6972 *ref = bt709;
7073 *shouldRelease = FALSE ;
74+ return ;
75+ }
76+ if (colorPrimaries == AVIF_NCLX_COLOUR_PRIMARIES_BT709 && transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_SRGB) {
77+ *ref = sRGB ;
78+ *shouldRelease = FALSE ;
79+ return ;
7180 }
7281 if (colorPrimaries == AVIF_NCLX_COLOUR_PRIMARIES_BT2020 && (transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT2020_10BIT || transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT2020_12BIT)) {
7382 *ref = bt2020;
7483 *shouldRelease = FALSE ;
84+ return ;
7585 }
7686
7787default_color_space:
0 commit comments