Skip to content

Commit 22ec8ae

Browse files
kdroidFilterclaude
andcommitted
fix(native): Handle MTAudioProcessingTapCreate API change for Swift 6.2+
On macOS 26+ (Xcode 26/Swift 6.2), MTAudioProcessingTapCreate signature changed to return MTAudioProcessingTap? directly instead of Unmanaged<MTAudioProcessingTap>?. Use conditional compilation to support both old and new SDK versions. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent f5cf75c commit 22ec8ae

1 file changed

Lines changed: 19 additions & 1 deletion

File tree

mediaplayer/src/jvmMain/native/macos/NativeVideoPlayer.swift

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1020,8 +1020,25 @@ class MacVideoPlayer {
10201020
process: self.tapProcess
10211021
)
10221022

1023-
var tap: Unmanaged<MTAudioProcessingTap>?
10241023
// Create the audio processing tap
1024+
// On macOS 26+ (Swift 6.2+), MTAudioProcessingTapCreate returns
1025+
// MTAudioProcessingTap? directly instead of Unmanaged<MTAudioProcessingTap>?
1026+
#if compiler(>=6.2)
1027+
var tap: MTAudioProcessingTap?
1028+
let status = MTAudioProcessingTapCreate(
1029+
kCFAllocatorDefault, &callbacks, kMTAudioProcessingTapCreationFlag_PostEffects, &tap
1030+
)
1031+
if status == noErr, let tap = tap {
1032+
print("Audio tap created successfully")
1033+
inputParams.audioTapProcessor = tap
1034+
let audioMix = AVMutableAudioMix()
1035+
audioMix.inputParameters = [inputParams]
1036+
playerItem.audioMix = audioMix
1037+
} else {
1038+
print("Audio Tap creation failed with status: \(status)")
1039+
}
1040+
#else
1041+
var tap: Unmanaged<MTAudioProcessingTap>?
10251042
let status = MTAudioProcessingTapCreate(
10261043
kCFAllocatorDefault, &callbacks, kMTAudioProcessingTapCreationFlag_PostEffects, &tap
10271044
)
@@ -1034,6 +1051,7 @@ class MacVideoPlayer {
10341051
} else {
10351052
print("Audio Tap creation failed with status: \(status)")
10361053
}
1054+
#endif
10371055
}
10381056
}
10391057

0 commit comments

Comments
 (0)