Skip to content

Commit a620b07

Browse files
committed
Support sRGB
1 parent b827838 commit a620b07

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

SDWebImageAVIFCoder/Classes/SDImageAVIFCoder.m

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ static void FreeImageData(void *info, const void *data, size_t size) {
1717
free((void *)data);
1818
}
1919
static 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
}
3132
static 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

7787
default_color_space:

0 commit comments

Comments
 (0)