diff --git a/HaishinKit.xcodeproj/project.pbxproj b/HaishinKit.xcodeproj/project.pbxproj index 3e2888181..efd0b8e93 100644 --- a/HaishinKit.xcodeproj/project.pbxproj +++ b/HaishinKit.xcodeproj/project.pbxproj @@ -29,7 +29,6 @@ 291619661E7EFB09009FB344 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 291619621E7EFA2A009FB344 /* Main.storyboard */; }; 291619691E7EFEA8009FB344 /* CameraIngestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291619671E7EFE4E009FB344 /* CameraIngestViewController.swift */; }; 2916196A1E7EFF38009FB344 /* Preference.swift in Sources */ = {isa = PBXBuildFile; fileRef = 291468161E581C7D00E619BA /* Preference.swift */; }; - 2916196C1E7F0768009FB344 /* CMFormatDescription+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2916196B1E7F0768009FB344 /* CMFormatDescription+Extension.swift */; }; 2917CB662104CA2800F6823A /* AudioSpecificConfigTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2917CB652104CA2800F6823A /* AudioSpecificConfigTests.swift */; }; 291F4E381CF206E600F59C51 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 291F4E361CF206E200F59C51 /* Icon.png */; }; 2923A1F31D63004E0019FBCD /* VisualEffect.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2965436A1D62FEB700734698 /* VisualEffect.swift */; }; @@ -465,7 +464,6 @@ 2915EC531D85BDF100621092 /* ReplayKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ReplayKit.framework; path = System/Library/Frameworks/ReplayKit.framework; sourceTree = SDKROOT; }; 291619631E7EFA2A009FB344 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 291619671E7EFE4E009FB344 /* CameraIngestViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CameraIngestViewController.swift; sourceTree = ""; }; - 2916196B1E7F0768009FB344 /* CMFormatDescription+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CMFormatDescription+Extension.swift"; sourceTree = ""; }; 2917CB652104CA2800F6823A /* AudioSpecificConfigTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioSpecificConfigTests.swift; sourceTree = ""; }; 291F4E361CF206E200F59C51 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; 29205CBD1E461F4E009D3FFF /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; @@ -1173,7 +1171,6 @@ BC2828AE2AA322E400741013 /* AVFrameRateRange+Extension.swift */, 29EA87E51E79A2780043A5F8 /* CMAudioFormatDescription+Extension.swift */, 29EA87E91E79A3B70043A5F8 /* CMBlockBuffer+Extension.swift */, - 2916196B1E7F0768009FB344 /* CMFormatDescription+Extension.swift */, 29EA87DE1E79A0810043A5F8 /* CMSampleBuffer+Extension.swift */, BC04A2D52AD2D95500C87A3E /* CMTime+Extension.swift */, 29EA87E11E79A1E90043A5F8 /* CMVideoFormatDescription+Extension.swift */, @@ -1886,7 +1883,6 @@ BC7C56B7299E579F00C41A9B /* AudioCodecSettings.swift in Sources */, 29B876AC1CD70B2800FC07DA /* AMF3Serializer.swift in Sources */, BC31DBD22A653D1600C4DEA3 /* IOAudioMonitor.swift in Sources */, - 2916196C1E7F0768009FB344 /* CMFormatDescription+Extension.swift in Sources */, BCB976DF26107B5600C9A649 /* TSField.swift in Sources */, BC11024A2925147300D48035 /* IOCaptureUnit.swift in Sources */, 29B876921CD70AFE00FC07DA /* IOMixer.swift in Sources */, diff --git a/README.md b/README.md index c7a1acd8c..6adb3f495 100644 --- a/README.md +++ b/README.md @@ -136,8 +136,8 @@ open HaishinKit.xcodeproj ### OS |-|iOS|tvOS|macOS|visionOS|watchOS| |:----|:----:|:----:|:----:|:----:|:----:| -|HaishinKit|12.0+|12.0+|10.13+|1.0+|-| -|SRTHaishinKit|12.0+|-|13.0+|-|-| +|HaishinKit|13.0+|13.0+|10.15+|1.0+|-| +|SRTHaishinKit|13.0+|-|13.0+|-|-| ### Cocoa Keys Please contains Info.plist. diff --git a/Sources/Codec/VideoCodec.swift b/Sources/Codec/VideoCodec.swift index c183aec6a..1e43a1da2 100644 --- a/Sources/Codec/VideoCodec.swift +++ b/Sources/Codec/VideoCodec.swift @@ -160,7 +160,7 @@ final class VideoCodec { var attributes: [NSString: AnyObject] = [:] if let inputFormat { // Specify the pixel format of the uncompressed video. - attributes[kCVPixelBufferPixelFormatTypeKey] = inputFormat._mediaSubType as CFNumber + attributes[kCVPixelBufferPixelFormatTypeKey] = inputFormat.mediaType.rawValue as CFNumber } return attributes.isEmpty ? nil : attributes case .decompression: diff --git a/Sources/Extension/AVCaptureDevice.Format+Extension.swift b/Sources/Extension/AVCaptureDevice.Format+Extension.swift index 72528f3f2..0ca556de5 100644 --- a/Sources/Extension/AVCaptureDevice.Format+Extension.swift +++ b/Sources/Extension/AVCaptureDevice.Format+Extension.swift @@ -1,14 +1,7 @@ import AVFoundation import Foundation -#if os(iOS) -extension AVCaptureDevice.Format { - @available(iOS, obsoleted: 13.0) - var isMultiCamSupported: Bool { - return false - } -} -#elseif os(macOS) +#if os(macOS) extension AVCaptureDevice.Format { var isMultiCamSupported: Bool { return true diff --git a/Sources/Extension/CMFormatDescription+Extension.swift b/Sources/Extension/CMFormatDescription+Extension.swift deleted file mode 100644 index fd8f5d35a..000000000 --- a/Sources/Extension/CMFormatDescription+Extension.swift +++ /dev/null @@ -1,12 +0,0 @@ -import CoreMedia -import Foundation - -extension CMFormatDescription { - var _mediaType: CMMediaType { - CMFormatDescriptionGetMediaType(self) - } - - var _mediaSubType: FourCharCode { - CMFormatDescriptionGetMediaSubType(self) - } -} diff --git a/Sources/IO/IOStream.swift b/Sources/IO/IOStream.swift index 2afe1356c..db255d200 100644 --- a/Sources/IO/IOStream.swift +++ b/Sources/IO/IOStream.swift @@ -364,12 +364,12 @@ open class IOStream: NSObject { /// Append a CMSampleBuffer. /// - Warning: This method can't use attachCamera or attachAudio method at the same time. public func append(_ sampleBuffer: CMSampleBuffer, channel: UInt8 = 0) { - switch sampleBuffer.formatDescription?._mediaType { - case kCMMediaType_Audio: + switch sampleBuffer.formatDescription?.mediaType { + case .audio?: mixer.audioIO.lockQueue.async { self.mixer.audioIO.append(sampleBuffer, channel: channel) } - case kCMMediaType_Video: + case .video?: mixer.videoIO.lockQueue.async { self.mixer.videoIO.append(sampleBuffer, channel: channel) } diff --git a/Sources/IO/IOStreamRecorder.swift b/Sources/IO/IOStreamRecorder.swift index 34268e035..a0f66d049 100644 --- a/Sources/IO/IOStreamRecorder.swift +++ b/Sources/IO/IOStreamRecorder.swift @@ -76,7 +76,7 @@ public final class IOStreamRecorder { guard isRunning.value else { return } - let mediaType: AVMediaType = (sampleBuffer.formatDescription?._mediaType == kCMMediaType_Video) ? .video : .audio + let mediaType: AVMediaType = (sampleBuffer.formatDescription?.mediaType == .video) ? .video : .audio lockQueue.async { guard let writer = self.writer,