Skip to content

Commit 8188d8b

Browse files
committed
add linear sRGB
1 parent 5bc2327 commit 8188d8b

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

SDWebImageAVIFCoder/Classes/SDImageAVIFCoder.m

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ static void CalcColorSpaceMono(avifImage * avif, CGColorSpaceRef* ref, BOOL* sho
3333
static 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

Comments
 (0)