Skip to content

Commit

Permalink
Quick hack to support 10 bit HDR AVIF using PQ transfer function...
Browse files Browse the repository at this point in the history
  • Loading branch information
dreampiggy committed Jul 22, 2023
1 parent 2cad767 commit f9ad108
Showing 1 changed file with 23 additions and 0 deletions.
23 changes: 23 additions & 0 deletions SDWebImageAVIFCoder/Classes/ColorSpace.m
Expand Up @@ -395,6 +395,29 @@ void SDAVIFCalcColorSpaceRGB(avifImage * avif, CGColorSpaceRef* ref, BOOL* shoul
*shouldRelease = FALSE;
return;
}
if(colorPrimaries == AVIF_COLOR_PRIMARIES_BT2020 &&
transferCharacteristics == AVIF_TRANSFER_CHARACTERISTICS_SMPTE2084) {
static CGColorSpaceRef pq2020 = NULL;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
CFStringRef colorSpaceName = NULL;
if (@available(macOS 11.0, iOS 14.0, tvOS 14.0, watchOS 7.0, *)) {
colorSpaceName = kCGColorSpaceITUR_2100_PQ;
} else if (@available(macOS 10.15.4, iOS 13.4, tvOS 13.4, watchOS 6.2, *)) {
colorSpaceName = kCGColorSpaceITUR_2020_PQ;
} else if (@available(macOS 10.14.6, iOS 12.6, tvOS 12.0, watchOS 5.0, *)) {
colorSpaceName = kCGColorSpaceITUR_2020_PQ_EOTF;
}
if (colorSpaceName) {
pq2020 = CGColorSpaceCreateWithName(colorSpaceName);
} else {
pq2020 = defaultColorSpace;
}
});
*ref = pq2020;
*shouldRelease = FALSE;
return;
}
if(colorPrimaries == AVIF_COLOR_PRIMARIES_BT2020 &&
transferCharacteristics == AVIF_TRANSFER_CHARACTERISTICS_LINEAR) {
static CGColorSpaceRef bt2020linear = NULL;
Expand Down

0 comments on commit f9ad108

Please sign in to comment.