@@ -17,6 +17,7 @@ static void FreeImageData(void *info, const void *data, size_t size) {
17
17
free ((void *)data);
18
18
}
19
19
static void CalcColorSpaceMono (avifImage * avif, CGColorSpaceRef* ref, BOOL * shouldRelease) {
20
+ [SDImageCoderHelper colorSpaceGetDeviceRGB ];
20
21
static CGColorSpaceRef defaultColorSpace;
21
22
{
22
23
static dispatch_once_t onceToken;
@@ -30,22 +31,24 @@ static void CalcColorSpaceMono(avifImage * avif, CGColorSpaceRef* ref, BOOL* sho
30
31
}
31
32
static void CalcColorSpaceRGB (avifImage * avif, CGColorSpaceRef* ref, BOOL * shouldRelease) {
32
33
static CGColorSpaceRef defaultColorSpace;
34
+ static CGColorSpaceRef sRGB ;
33
35
static CGColorSpaceRef bt709;
34
36
static CGColorSpaceRef bt2020;
35
37
{
36
38
static dispatch_once_t onceToken;
37
39
dispatch_once (&onceToken, ^{
40
+ defaultColorSpace = CGColorSpaceCreateDeviceRGB ();
38
41
if (@available (iOS 9.0 , tvOS 9.0 , *)) {
39
- defaultColorSpace = CGColorSpaceCreateWithName (kCGColorSpaceSRGB );
42
+ sRGB = CGColorSpaceCreateWithName (kCGColorSpaceSRGB );
40
43
} else {
41
- defaultColorSpace = CGColorSpaceCreateDeviceRGB () ;
44
+ sRGB = defaultColorSpace ;
42
45
}
43
- if (@available (macOS 10.11 , *)) {
46
+ if (@available (iOS 9.0 , tvOS 9.0 , *)) {
44
47
bt709 = CGColorSpaceCreateWithName (kCGColorSpaceITUR_709 );
45
48
} else {
46
49
bt709 = defaultColorSpace;
47
50
}
48
- if (@available (macOS 10.11 , *)) {
51
+ if (@available (iOS 9.0 , tvOS 9.0 , *)) {
49
52
bt2020 = CGColorSpaceCreateWithName (kCGColorSpaceITUR_2020 );
50
53
} else {
51
54
bt2020 = defaultColorSpace;
@@ -54,7 +57,7 @@ static void CalcColorSpaceRGB(avifImage * avif, CGColorSpaceRef* ref, BOOL* shou
54
57
}
55
58
56
59
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 , *)) {
58
61
*ref = CGColorSpaceCreateWithICCData (avif->icc .data );
59
62
*shouldRelease = TRUE ;
60
63
return ;
@@ -68,10 +71,17 @@ static void CalcColorSpaceRGB(avifImage * avif, CGColorSpaceRef* ref, BOOL* shou
68
71
if (colorPrimaries == AVIF_NCLX_COLOUR_PRIMARIES_BT709 && transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT709) {
69
72
*ref = bt709;
70
73
*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 ;
71
80
}
72
81
if (colorPrimaries == AVIF_NCLX_COLOUR_PRIMARIES_BT2020 && (transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT2020_10BIT || transferCharacteristics == AVIF_NCLX_TRANSFER_CHARACTERISTICS_BT2020_12BIT)) {
73
82
*ref = bt2020;
74
83
*shouldRelease = FALSE ;
84
+ return ;
75
85
}
76
86
77
87
default_color_space:
0 commit comments