@@ -395,6 +395,29 @@ void SDAVIFCalcColorSpaceRGB(avifImage * avif, CGColorSpaceRef* ref, BOOL* shoul
395395 *shouldRelease = FALSE ;
396396 return ;
397397 }
398+ if (colorPrimaries == AVIF_COLOR_PRIMARIES_BT2020 &&
399+ transferCharacteristics == AVIF_TRANSFER_CHARACTERISTICS_SMPTE2084) {
400+ static CGColorSpaceRef bt2020pq = NULL ;
401+ static dispatch_once_t onceToken;
402+ dispatch_once (&onceToken, ^{
403+ CFStringRef colorSpaceName = NULL ;
404+ if (@available (macOS 11.0 , iOS 14.0 , tvOS 14.0 , watchOS 7.0 , *)) {
405+ colorSpaceName = kCGColorSpaceITUR_2100_PQ ;
406+ } else if (@available (macOS 10.15.4 , iOS 13.4 , tvOS 13.4 , watchOS 6.2 , *)) {
407+ colorSpaceName = kCGColorSpaceITUR_2020_PQ ;
408+ } else if (@available (macOS 10.14.6 , iOS 12.6 , tvOS 12.0 , watchOS 5.0 , *)) {
409+ colorSpaceName = kCGColorSpaceITUR_2020_PQ_EOTF ;
410+ }
411+ if (colorSpaceName) {
412+ bt2020pq = CGColorSpaceCreateWithName (colorSpaceName);
413+ } else {
414+ bt2020pq = defaultColorSpace;
415+ }
416+ });
417+ *ref = bt2020pq;
418+ *shouldRelease = FALSE ;
419+ return ;
420+ }
398421 if (colorPrimaries == AVIF_COLOR_PRIMARIES_BT2020 &&
399422 transferCharacteristics == AVIF_TRANSFER_CHARACTERISTICS_LINEAR) {
400423 static CGColorSpaceRef bt2020linear = NULL ;
0 commit comments