Skip to content

Commit 1d22f4b

Browse files
committedSep 18, 2024
Workaound - Fix incompatibility w/ some CMFormatDescriptionExtensions under macOS 15.0.
1 parent 25df672 commit 1d22f4b

File tree

1 file changed

+41
-25
lines changed

1 file changed

+41
-25
lines changed
 

‎Sources/DLABridging/src/DLABVideoSetting.mm

+41-25
Original file line numberDiff line numberDiff line change
@@ -803,7 +803,12 @@ - (void)buildFormatDescriptionExtensionsOf:(OSType)cvPixelFormat width:(long)wid
803803

804804
// gamma level (legacy)
805805
NSString* keyGamma = (__bridge NSString*)kCMFormatDescriptionExtension_GammaLevel;
806-
extensions[keyGamma] = @(2.2);
806+
// WORKAROUND: Under macOS 15.0 double value wont work; use float value instead
807+
if (@available(macOS 15.0, *)) {
808+
extensions[keyGamma] = @(2.2f);
809+
} else {
810+
extensions[keyGamma] = @(2.2);
811+
}
807812
}
808813
{
809814
// Color space
@@ -922,30 +927,41 @@ - (void)buildFormatDescriptionExtensionsOf:(OSType)cvPixelFormat width:(long)wid
922927
NSNumber* clapHOffset = @((double_t)self.clapHOffsetN/self.clapHOffsetD);
923928
NSNumber* clapVOffset = @((double_t)self.clapVOffsetN/self.clapVOffsetD);
924929

925-
NSString* keyClapWidthR = (__bridge NSString*)kCMFormatDescriptionKey_CleanApertureWidthRational;
926-
NSString* keyClapHeightR = (__bridge NSString*)kCMFormatDescriptionKey_CleanApertureHeightRational;
927-
NSString* keyClapHOffsetR = (__bridge NSString*)kCMFormatDescriptionKey_CleanApertureHorizontalOffsetRational;
928-
NSString* keyClapVOffsetR = (__bridge NSString*)kCMFormatDescriptionKey_CleanApertureVerticalOffsetRational;
929-
930-
NSNumber* clapWidthN = @(self.clapWidthN);
931-
NSNumber* clapWidthD = @(self.clapWidthD);
932-
NSNumber* clapHeightN = @(self.clapHeightN);
933-
NSNumber* clapHeightD = @(self.clapHeightD);
934-
NSNumber* clapHOffsetN = @(self.clapHOffsetN);
935-
NSNumber* clapHOffsetD = @(self.clapHOffsetD);
936-
NSNumber* clapVOffsetN = @(self.clapVOffsetN);
937-
NSNumber* clapVOffsetD = @(self.clapVOffsetD);
938-
939-
NSDictionary* valueClap = @{
940-
keyClapWidth : clapWidth,
941-
keyClapHeight : clapHeight,
942-
keyClapHOffset : clapHOffset,
943-
keyClapVOffset : clapVOffset,
944-
keyClapWidthR : @[clapWidthN, clapWidthD],
945-
keyClapHeightR : @[clapHeightN, clapHeightD],
946-
keyClapHOffsetR : @[clapHOffsetN, clapHOffsetD],
947-
keyClapVOffsetR : @[clapVOffsetN, clapVOffsetD],
948-
};
930+
NSDictionary* valueClap = nil;
931+
// WORKAROUND: macOS 15.0 seems to break rational value support
932+
if (@available(macOS 15.0, *)) {
933+
valueClap = @{
934+
keyClapWidth : clapWidth,
935+
keyClapHeight : clapHeight,
936+
keyClapHOffset : clapHOffset,
937+
keyClapVOffset : clapVOffset,
938+
};
939+
} else {
940+
NSString* keyClapWidthR = (__bridge NSString*)kCMFormatDescriptionKey_CleanApertureWidthRational;
941+
NSString* keyClapHeightR = (__bridge NSString*)kCMFormatDescriptionKey_CleanApertureHeightRational;
942+
NSString* keyClapHOffsetR = (__bridge NSString*)kCMFormatDescriptionKey_CleanApertureHorizontalOffsetRational;
943+
NSString* keyClapVOffsetR = (__bridge NSString*)kCMFormatDescriptionKey_CleanApertureVerticalOffsetRational;
944+
945+
NSNumber* clapWidthN = @(self.clapWidthN);
946+
NSNumber* clapWidthD = @(self.clapWidthD);
947+
NSNumber* clapHeightN = @(self.clapHeightN);
948+
NSNumber* clapHeightD = @(self.clapHeightD);
949+
NSNumber* clapHOffsetN = @(self.clapHOffsetN);
950+
NSNumber* clapHOffsetD = @(self.clapHOffsetD);
951+
NSNumber* clapVOffsetN = @(self.clapVOffsetN);
952+
NSNumber* clapVOffsetD = @(self.clapVOffsetD);
953+
954+
valueClap = @{
955+
keyClapWidth : clapWidth,
956+
keyClapHeight : clapHeight,
957+
keyClapHOffset : clapHOffset,
958+
keyClapVOffset : clapVOffset,
959+
keyClapWidthR : @[clapWidthN, clapWidthD],
960+
keyClapHeightR : @[clapHeightN, clapHeightD],
961+
keyClapHOffsetR : @[clapHOffsetN, clapHOffsetD],
962+
keyClapVOffsetR : @[clapVOffsetN, clapVOffsetD],
963+
};
964+
}
949965
extensions[keyClap] = valueClap;
950966

951967
self.extensionsW = extensions;

0 commit comments

Comments
 (0)
Please sign in to comment.