diff --git a/Example/Podfile.lock b/Example/Podfile.lock index 1cc63e6..0e86094 100644 --- a/Example/Podfile.lock +++ b/Example/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - Mediasoup-Client-Swift (0.6.0) + - Mediasoup-Client-Swift (0.7.0) DEPENDENCIES: - Mediasoup-Client-Swift (from `../`) @@ -9,8 +9,8 @@ EXTERNAL SOURCES: :path: "../" SPEC CHECKSUMS: - Mediasoup-Client-Swift: 33ed0404165bd39146452953de31bc23c4cd5ffb + Mediasoup-Client-Swift: e8f187c336f948d8e865a198c85c02a1900a9455 PODFILE CHECKSUM: d4fe3294dd9c7fc46519b6a7b26527f1f545e8d3 -COCOAPODS: 1.13.0 +COCOAPODS: 1.14.3 diff --git a/Mediasoup-Client-Swift.podspec b/Mediasoup-Client-Swift.podspec index f9c6644..438217d 100644 --- a/Mediasoup-Client-Swift.podspec +++ b/Mediasoup-Client-Swift.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |spec| } spec.name = "Mediasoup-Client-Swift" - spec.version = "0.6.1" + spec.version = "0.7.0" spec.platform = :ios, "14.0" spec.module_name = "Mediasoup" spec.module_map = "Mediasoup/Mediasoup.modulemap" diff --git a/Mediasoup/SendTransport.swift b/Mediasoup/SendTransport.swift index 27844d6..c147ff9 100644 --- a/Mediasoup/SendTransport.swift +++ b/Mediasoup/SendTransport.swift @@ -35,6 +35,26 @@ public class SendTransport { return Producer(producer: producer, mediaKind: mediaKind) } } + + public func createProducer( + for track: RTCMediaStreamTrack, + encoding: RTCRtpEncodingParameters, + scalabilityMode: String, + codecOptions: String?, + codec: String?, + appData: String? + ) throws -> Producer { + + guard let mediaKind = MediaKind(stringValue: track.kind) else { + throw MediasoupError.invalidParameters("Unknown media kind") + } + + return try convertMediasoupErrors { + let producer = try self.transport.createProducer(for: track, encoding: encoding, + scalabilityMode: scalabilityMode, codecOptions: codecOptions, codec: codec, appData: appData) + return Producer(producer: producer, mediaKind: mediaKind) + } + } } extension SendTransport: Transport { diff --git a/Mediasoup_Private/Transport/SendTransportWrapper.hpp b/Mediasoup_Private/Transport/SendTransportWrapper.hpp index cb0468c..a4fa6fa 100644 --- a/Mediasoup_Private/Transport/SendTransportWrapper.hpp +++ b/Mediasoup_Private/Transport/SendTransportWrapper.hpp @@ -47,6 +47,14 @@ class SendTransportListenerAdapter; appData:(NSString *_Nullable)appData error:(out NSError *__autoreleasing _Nullable *_Nullable)error; +- (ProducerWrapper *_Nullable)createProducerForTrack:(RTCMediaStreamTrack *_Nonnull)mediaTrack + encoding:(RTCRtpEncodingParameters *_Nonnull)encoding + scalabilityMode:(NSString *_Nonnull)scalabilityMode + codecOptions:(NSString *_Nullable)codecOptions + codec:(NSString *_Nullable)codec + appData:(NSString *_Nullable)appData + error:(out NSError *__autoreleasing _Nullable *_Nullable)error; + @end #endif /* SendTransportWrapper_h */ diff --git a/Mediasoup_Private/Transport/SendTransportWrapper.mm b/Mediasoup_Private/Transport/SendTransportWrapper.mm index 0fd0272..8a52057 100644 --- a/Mediasoup_Private/Transport/SendTransportWrapper.mm +++ b/Mediasoup_Private/Transport/SendTransportWrapper.mm @@ -85,8 +85,32 @@ - (void)updateICEServers:(NSString *_Nonnull)iceServers }, error); } +- (ProducerWrapper *_Nullable)createProducerForTrack:(RTCMediaStreamTrack *_Nonnull)mediaTrack + encoding:(RTCRtpEncodingParameters *_Nonnull)encoding + scalabilityMode:(NSString *_Nonnull)scalabilityMode + codecOptions:(NSString *_Nullable)codecOptions + codec:(NSString *_Nullable)codec + appData:(NSString *_Nullable)appData + error:(out NSError *__autoreleasing _Nullable *_Nullable)error { + + return [self createProducerForTrack:mediaTrack encodings:@[encoding] scalabilityMode:scalabilityMode + codecOptions:codecOptions codec:codec appData:appData error:error]; +} + +- (ProducerWrapper *_Nullable)createProducerForTrack:(RTCMediaStreamTrack *_Nonnull)mediaTrack + encodings:(NSArray *_Nullable)encodings + codecOptions:(NSString *_Nullable)codecOptions + codec:(NSString *_Nullable)codec + appData:(NSString *_Nullable)appData + error:(out NSError *__autoreleasing _Nullable *_Nullable)error { + + return [self createProducerForTrack:mediaTrack encodings:encodings scalabilityMode:nil + codecOptions:codecOptions codec:codec appData:appData error:error]; +} + - (ProducerWrapper *_Nullable)createProducerForTrack:(RTCMediaStreamTrack *_Nonnull)mediaTrack encodings:(NSArray *_Nullable)encodings + scalabilityMode:(NSString *_Nullable)scalabilityMode codecOptions:(NSString *_Nullable)codecOptions codec:(NSString *_Nullable)codec appData:(NSString *_Nullable)appData @@ -118,6 +142,10 @@ - (ProducerWrapper *_Nullable)createProducerForTrack:(RTCMediaStreamTrack *_Nonn if (encoding.scaleResolutionDownBy != nil) { nativeEncoding.scale_resolution_down_by = absl::make_optional(encoding.scaleResolutionDownBy.doubleValue); } + if (scalabilityMode != nil) { + nativeEncoding.scalability_mode = + absl::make_optional(std::string(scalabilityMode.UTF8String)); + } encodingsVector.emplace_back(nativeEncoding); } } diff --git a/Package.swift b/Package.swift index 4a1b97e..ff4947b 100644 --- a/Package.swift +++ b/Package.swift @@ -2,9 +2,9 @@ import PackageDescription -let version = "0.6.1" -let mediasoupChecksum = "30f275dca53705e8177d953a365dee829eddfe3df35231302b5d67edaf7cbc56" -let webrtcChecksum = "542bbf59b77450aceb1fddd8bb5a60540fb1c9af400dc6565077f18e63c96124" +let version = "0.7.0" +let mediasoupChecksum = "477062773f0b1e6157bccd814d7f121ddce8084dc682636389eb7acfe756f631" +let webrtcChecksum = "ede4b5f7ab9ef9cfb6e15e60b564ce9ac69d0310d8de458ef18c460287c4165c" let package = Package( diff --git a/README.md b/README.md index f3f2df2..226bb86 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Swift wrapper for libmediasoupclient with iOS support If you don't need to customize Mediasoup-Client-Swift itself or its dependencies, just use Swift Package Manager or CocoaPods: ```Ruby - pod 'Mediasoup-Client-Swift', '0.6.1' + pod 'Mediasoup-Client-Swift', '0.7.0' ``` 3. **Ease of building from scratch** diff --git a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Mediasoup b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Mediasoup index 315052a..bb883dc 100755 Binary files a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Mediasoup and b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Mediasoup differ diff --git a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo index 2cd0467..668673c 100644 Binary files a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo and b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo differ diff --git a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.abi.json b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.abi.json index 589d407..3c02b65 100644 --- a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.abi.json +++ b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.abi.json @@ -1908,6 +1908,88 @@ "throwing": true, "funcSelfKind": "NonMutating" }, + { + "kind": "Function", + "name": "createProducer", + "printedName": "createProducer(for:encoding:scalabilityMode:codecOptions:codec:appData:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Producer", + "printedName": "Mediasoup.Producer", + "usr": "s:9Mediasoup8ProducerC" + }, + { + "kind": "TypeNominal", + "name": "RTCMediaStreamTrack", + "printedName": "WebRTC.RTCMediaStreamTrack", + "usr": "c:objc(cs)RTCMediaStreamTrack" + }, + { + "kind": "TypeNominal", + "name": "RTCRtpEncodingParameters", + "printedName": "WebRTC.RTCRtpEncodingParameters", + "usr": "c:objc(cs)RTCRtpEncodingParameters" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:9Mediasoup13SendTransportC14createProducer3for8encoding15scalabilityMode12codecOptions0J07appDataAA0E0CSo19RTCMediaStreamTrackC_So24RTCRtpEncodingParametersCS2SSgA2QtKF", + "mangledName": "$s9Mediasoup13SendTransportC14createProducer3for8encoding15scalabilityMode12codecOptions0J07appDataAA0E0CSo19RTCMediaStreamTrackC_So24RTCRtpEncodingParametersCS2SSgA2QtKF", + "moduleName": "Mediasoup", + "declAttributes": [ + "AccessControl" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + }, { "kind": "Var", "name": "id", diff --git a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.private.swiftinterface b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.private.swiftinterface index 2ef2a3d..93772a8 100644 --- a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.private.swiftinterface +++ b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.private.swiftinterface @@ -83,6 +83,7 @@ public enum TransportConnectionState { weak public var delegate: (any Mediasoup.SendTransportDelegate)? @objc deinit public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encodings: [WebRTC.RTCRtpEncodingParameters]?, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer + public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encoding: WebRTC.RTCRtpEncodingParameters, scalabilityMode: Swift.String, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer } extension Mediasoup.SendTransport : Mediasoup.Transport { public var id: Swift.String { diff --git a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.swiftinterface b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.swiftinterface index 2ef2a3d..93772a8 100644 --- a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.swiftinterface +++ b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios.swiftinterface @@ -83,6 +83,7 @@ public enum TransportConnectionState { weak public var delegate: (any Mediasoup.SendTransportDelegate)? @objc deinit public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encodings: [WebRTC.RTCRtpEncodingParameters]?, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer + public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encoding: WebRTC.RTCRtpEncodingParameters, scalabilityMode: Swift.String, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer } extension Mediasoup.SendTransport : Mediasoup.Transport { public var id: Swift.String { diff --git a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/PrivateHeaders/SendTransportWrapper.hpp b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/PrivateHeaders/SendTransportWrapper.hpp index cb0468c..a4fa6fa 100644 --- a/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/PrivateHeaders/SendTransportWrapper.hpp +++ b/bin/Mediasoup.xcframework/ios-arm64/Mediasoup.framework/PrivateHeaders/SendTransportWrapper.hpp @@ -47,6 +47,14 @@ class SendTransportListenerAdapter; appData:(NSString *_Nullable)appData error:(out NSError *__autoreleasing _Nullable *_Nullable)error; +- (ProducerWrapper *_Nullable)createProducerForTrack:(RTCMediaStreamTrack *_Nonnull)mediaTrack + encoding:(RTCRtpEncodingParameters *_Nonnull)encoding + scalabilityMode:(NSString *_Nonnull)scalabilityMode + codecOptions:(NSString *_Nullable)codecOptions + codec:(NSString *_Nullable)codec + appData:(NSString *_Nullable)appData + error:(out NSError *__autoreleasing _Nullable *_Nullable)error; + @end #endif /* SendTransportWrapper_h */ diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Mediasoup b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Mediasoup index 9096d8d..973575b 100755 Binary files a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Mediasoup and b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Mediasoup differ diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo index 84f941f..290019e 100644 Binary files a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo and b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo differ diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo index d3d872a..5b91407 100644 Binary files a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo and b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo differ diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.abi.json b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.abi.json index 589d407..3c02b65 100644 --- a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.abi.json +++ b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.abi.json @@ -1908,6 +1908,88 @@ "throwing": true, "funcSelfKind": "NonMutating" }, + { + "kind": "Function", + "name": "createProducer", + "printedName": "createProducer(for:encoding:scalabilityMode:codecOptions:codec:appData:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Producer", + "printedName": "Mediasoup.Producer", + "usr": "s:9Mediasoup8ProducerC" + }, + { + "kind": "TypeNominal", + "name": "RTCMediaStreamTrack", + "printedName": "WebRTC.RTCMediaStreamTrack", + "usr": "c:objc(cs)RTCMediaStreamTrack" + }, + { + "kind": "TypeNominal", + "name": "RTCRtpEncodingParameters", + "printedName": "WebRTC.RTCRtpEncodingParameters", + "usr": "c:objc(cs)RTCRtpEncodingParameters" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:9Mediasoup13SendTransportC14createProducer3for8encoding15scalabilityMode12codecOptions0J07appDataAA0E0CSo19RTCMediaStreamTrackC_So24RTCRtpEncodingParametersCS2SSgA2QtKF", + "mangledName": "$s9Mediasoup13SendTransportC14createProducer3for8encoding15scalabilityMode12codecOptions0J07appDataAA0E0CSo19RTCMediaStreamTrackC_So24RTCRtpEncodingParametersCS2SSgA2QtKF", + "moduleName": "Mediasoup", + "declAttributes": [ + "AccessControl" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + }, { "kind": "Var", "name": "id", diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface index 27f51f0..9c11b5f 100644 --- a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +++ b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface @@ -83,6 +83,7 @@ public enum TransportConnectionState { weak public var delegate: (any Mediasoup.SendTransportDelegate)? @objc deinit public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encodings: [WebRTC.RTCRtpEncodingParameters]?, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer + public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encoding: WebRTC.RTCRtpEncodingParameters, scalabilityMode: Swift.String, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer } extension Mediasoup.SendTransport : Mediasoup.Transport { public var id: Swift.String { diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftinterface b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftinterface index 27f51f0..9c11b5f 100644 --- a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftinterface +++ b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftinterface @@ -83,6 +83,7 @@ public enum TransportConnectionState { weak public var delegate: (any Mediasoup.SendTransportDelegate)? @objc deinit public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encodings: [WebRTC.RTCRtpEncodingParameters]?, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer + public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encoding: WebRTC.RTCRtpEncodingParameters, scalabilityMode: Swift.String, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer } extension Mediasoup.SendTransport : Mediasoup.Transport { public var id: Swift.String { diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.abi.json b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.abi.json index 589d407..3c02b65 100644 --- a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.abi.json +++ b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.abi.json @@ -1908,6 +1908,88 @@ "throwing": true, "funcSelfKind": "NonMutating" }, + { + "kind": "Function", + "name": "createProducer", + "printedName": "createProducer(for:encoding:scalabilityMode:codecOptions:codec:appData:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Producer", + "printedName": "Mediasoup.Producer", + "usr": "s:9Mediasoup8ProducerC" + }, + { + "kind": "TypeNominal", + "name": "RTCMediaStreamTrack", + "printedName": "WebRTC.RTCMediaStreamTrack", + "usr": "c:objc(cs)RTCMediaStreamTrack" + }, + { + "kind": "TypeNominal", + "name": "RTCRtpEncodingParameters", + "printedName": "WebRTC.RTCRtpEncodingParameters", + "usr": "c:objc(cs)RTCRtpEncodingParameters" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:9Mediasoup13SendTransportC14createProducer3for8encoding15scalabilityMode12codecOptions0J07appDataAA0E0CSo19RTCMediaStreamTrackC_So24RTCRtpEncodingParametersCS2SSgA2QtKF", + "mangledName": "$s9Mediasoup13SendTransportC14createProducer3for8encoding15scalabilityMode12codecOptions0J07appDataAA0E0CSo19RTCMediaStreamTrackC_So24RTCRtpEncodingParametersCS2SSgA2QtKF", + "moduleName": "Mediasoup", + "declAttributes": [ + "AccessControl" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + }, { "kind": "Var", "name": "id", diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface index 77ff3cc..b834c52 100644 --- a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +++ b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface @@ -83,6 +83,7 @@ public enum TransportConnectionState { weak public var delegate: (any Mediasoup.SendTransportDelegate)? @objc deinit public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encodings: [WebRTC.RTCRtpEncodingParameters]?, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer + public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encoding: WebRTC.RTCRtpEncodingParameters, scalabilityMode: Swift.String, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer } extension Mediasoup.SendTransport : Mediasoup.Transport { public var id: Swift.String { diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftinterface b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftinterface index 77ff3cc..b834c52 100644 --- a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +++ b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftinterface @@ -83,6 +83,7 @@ public enum TransportConnectionState { weak public var delegate: (any Mediasoup.SendTransportDelegate)? @objc deinit public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encodings: [WebRTC.RTCRtpEncodingParameters]?, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer + public func createProducer(for track: WebRTC.RTCMediaStreamTrack, encoding: WebRTC.RTCRtpEncodingParameters, scalabilityMode: Swift.String, codecOptions: Swift.String?, codec: Swift.String?, appData: Swift.String?) throws -> Mediasoup.Producer } extension Mediasoup.SendTransport : Mediasoup.Transport { public var id: Swift.String { diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/PrivateHeaders/SendTransportWrapper.hpp b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/PrivateHeaders/SendTransportWrapper.hpp index cb0468c..a4fa6fa 100644 --- a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/PrivateHeaders/SendTransportWrapper.hpp +++ b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/PrivateHeaders/SendTransportWrapper.hpp @@ -47,6 +47,14 @@ class SendTransportListenerAdapter; appData:(NSString *_Nullable)appData error:(out NSError *__autoreleasing _Nullable *_Nullable)error; +- (ProducerWrapper *_Nullable)createProducerForTrack:(RTCMediaStreamTrack *_Nonnull)mediaTrack + encoding:(RTCRtpEncodingParameters *_Nonnull)encoding + scalabilityMode:(NSString *_Nonnull)scalabilityMode + codecOptions:(NSString *_Nullable)codecOptions + codec:(NSString *_Nullable)codec + appData:(NSString *_Nullable)appData + error:(out NSError *__autoreleasing _Nullable *_Nullable)error; + @end #endif /* SendTransportWrapper_h */ diff --git a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/_CodeSignature/CodeResources b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/_CodeSignature/CodeResources index 1ed81bd..dea4b1e 100644 --- a/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/_CodeSignature/CodeResources +++ b/bin/Mediasoup.xcframework/ios-arm64_x86_64-simulator/Mediasoup.framework/_CodeSignature/CodeResources @@ -14,19 +14,19 @@ Modules/Mediasoup.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo - nC2s4H7qwp5ODyGk9vKN/vWuYnQ= + IrZlGakFVH4YiJlxliXx25NKXB0= Modules/Mediasoup.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo - K2AMopjHvpD9Sr9M4GEeESS1JGQ= + yLxV2qX3srh8xWUv5DJv7yZatx8= Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.abi.json - MQVus3hsn1g/73b0/gf3Q+0kzF8= + CeGyeppWdIk3xGY1mnRJmqtspPo= Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface - a+Nnm1Efu10cqzM3k1fFgtPjvy0= + eZLIJ4QPQTf1O5f2DNNP2PQqMvQ= Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftdoc @@ -34,19 +34,19 @@ Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftinterface - a+Nnm1Efu10cqzM3k1fFgtPjvy0= + eZLIJ4QPQTf1O5f2DNNP2PQqMvQ= Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftmodule - swq/+ZxApwo8/KGOp2ai4d1glW0= + 3xoSeSScuq7vQwp5H8KtGaq+2pY= Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.abi.json - MQVus3hsn1g/73b0/gf3Q+0kzF8= + CeGyeppWdIk3xGY1mnRJmqtspPo= Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface - W96H7vwQTyNxrC8gXnQWfpwdt3g= + anyJKeQgk6u3Vds8LRrNCTaH+Wc= Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftdoc @@ -54,11 +54,11 @@ Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftinterface - W96H7vwQTyNxrC8gXnQWfpwdt3g= + anyJKeQgk6u3Vds8LRrNCTaH+Wc= Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftmodule - RZq+Co0bU1F7UNWy/I4wwK5L5lk= + o9ujjITpMRbUA0e/mHORou1zVqs= Modules/module.modulemap @@ -130,7 +130,7 @@ PrivateHeaders/SendTransportWrapper.hpp - FudLXkmjmezMJ9+pwphT/7LyPUM= + pxXUVibWK4X4lCWcs3TU1KAGYtA= PrivateHeaders/SendTransportWrapperDelegate.h @@ -150,28 +150,28 @@ hash2 - gbcGUOb7fnXPGOVvFuZmjtHT3JS0Tj5xpMNiNjTNZKQ= + w6zBS0BtLJhAzK6Py1LM4zyrs0XWT7i2YVLuy4bBFpA= Modules/Mediasoup.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo hash2 - 2hJ65wSfpSiBncRId2/B7X9CeqQy99I0eQibE3xw7Xw= + /cn+jvoLRJKIsGYE+wGE2v+RuxFzIqR7Vdph9xb9jH4= Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.abi.json hash2 - 3N+uyFUHbgX4RSdISOhlgJv7yUhxr6bW8XEfJkq/zHY= + aLoMhWww0aiLXWvmA0PafPjkK0FiNm/AGypGPTuu/zA= Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface hash2 - vIByRoHHXXehM0ONNhr0oN3L51QbQqeboWJ/SJZKoto= + 5M3zusO9b7ELrz0L5jEFyMqmzl3yf9kpFQP7J1WX+sE= Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftdoc @@ -185,28 +185,28 @@ hash2 - vIByRoHHXXehM0ONNhr0oN3L51QbQqeboWJ/SJZKoto= + 5M3zusO9b7ELrz0L5jEFyMqmzl3yf9kpFQP7J1WX+sE= Modules/Mediasoup.swiftmodule/arm64-apple-ios-simulator.swiftmodule hash2 - /h9EeIaLHmGu+ahjzUwhC+vXrFRXmX0gPjHJOHXi3rA= + /7Zp2DNQoWHLWNC5F60PpVc/ZwO6H0s4M9oCnYsBcbI= Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.abi.json hash2 - 3N+uyFUHbgX4RSdISOhlgJv7yUhxr6bW8XEfJkq/zHY= + aLoMhWww0aiLXWvmA0PafPjkK0FiNm/AGypGPTuu/zA= Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface hash2 - gfzTmTPUjxzd6VG0/bUAM7qsjXR+9hEI5KNJp6t6xW8= + P4L/l6R/iHlDxxLXTt0iPGtMmD66N33exR+vM4ZhRc8= Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftdoc @@ -220,14 +220,14 @@ hash2 - gfzTmTPUjxzd6VG0/bUAM7qsjXR+9hEI5KNJp6t6xW8= + P4L/l6R/iHlDxxLXTt0iPGtMmD66N33exR+vM4ZhRc8= Modules/Mediasoup.swiftmodule/x86_64-apple-ios-simulator.swiftmodule hash2 - Or1e5R+LYwm+eucEhUJNozdOGoXmfnn9ygmu8kB8kGw= + qikdWrKXHIvWugQWVDqKXXvZAni9m4Sk66im7lycjUM= Modules/module.modulemap @@ -353,7 +353,7 @@ hash2 - fHeRtrOEZK1KHRMGPx9VFgf7kBpZX9tnatfItubIHbo= + b8mFT1IySQ4fP9qZp55Lh/k7bcq7LLRbWcAuGOlvmug= PrivateHeaders/SendTransportWrapperDelegate.h diff --git a/bin/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/WebRTC.h b/bin/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/WebRTC.h index d36305c..67c12ca 100644 --- a/bin/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/WebRTC.h +++ b/bin/WebRTC.xcframework/ios-arm64/WebRTC.framework/Headers/WebRTC.h @@ -1,5 +1,5 @@ /* - * Copyright 2023 The WebRTC project authors. All Rights Reserved. + * Copyright 2024 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source diff --git a/bin/WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC b/bin/WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC index 6eb1156..fa28dc3 100755 Binary files a/bin/WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC and b/bin/WebRTC.xcframework/ios-arm64/WebRTC.framework/WebRTC differ diff --git a/bin/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/WebRTC.h b/bin/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/WebRTC.h index d36305c..67c12ca 100644 --- a/bin/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/WebRTC.h +++ b/bin/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/Headers/WebRTC.h @@ -1,5 +1,5 @@ /* - * Copyright 2023 The WebRTC project authors. All Rights Reserved. + * Copyright 2024 The WebRTC project authors. All Rights Reserved. * * Use of this source code is governed by a BSD-style license * that can be found in the LICENSE file in the root of the source diff --git a/bin/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC b/bin/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC index 3f92f81..78a6397 100755 Binary files a/bin/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC and b/bin/WebRTC.xcframework/ios-arm64_x86_64-simulator/WebRTC.framework/WebRTC differ diff --git a/bin/mediasoupclient.xcframework/Info.plist b/bin/mediasoupclient.xcframework/Info.plist index d1f1924..454a49e 100644 --- a/bin/mediasoupclient.xcframework/Info.plist +++ b/bin/mediasoupclient.xcframework/Info.plist @@ -8,32 +8,32 @@ BinaryPath libmediasoupclient.a LibraryIdentifier - ios-arm64 + ios-arm64_x86_64-simulator LibraryPath libmediasoupclient.a SupportedArchitectures arm64 + x86_64 SupportedPlatform ios + SupportedPlatformVariant + simulator BinaryPath libmediasoupclient.a LibraryIdentifier - ios-arm64_x86_64-simulator + ios-arm64 LibraryPath libmediasoupclient.a SupportedArchitectures arm64 - x86_64 SupportedPlatform ios - SupportedPlatformVariant - simulator CFBundlePackageType diff --git a/bin/mediasoupclient.xcframework/ios-arm64/libmediasoupclient.a b/bin/mediasoupclient.xcframework/ios-arm64/libmediasoupclient.a index 1830393..d840f5f 100644 Binary files a/bin/mediasoupclient.xcframework/ios-arm64/libmediasoupclient.a and b/bin/mediasoupclient.xcframework/ios-arm64/libmediasoupclient.a differ diff --git a/bin/mediasoupclient.xcframework/ios-arm64_x86_64-simulator/libmediasoupclient.a b/bin/mediasoupclient.xcframework/ios-arm64_x86_64-simulator/libmediasoupclient.a index 70f59f6..2b076c4 100644 Binary files a/bin/mediasoupclient.xcframework/ios-arm64_x86_64-simulator/libmediasoupclient.a and b/bin/mediasoupclient.xcframework/ios-arm64_x86_64-simulator/libmediasoupclient.a differ diff --git a/bin/sdptransform.xcframework/ios-arm64/libsdptransform.a b/bin/sdptransform.xcframework/ios-arm64/libsdptransform.a index 393aaf6..051f1ee 100644 Binary files a/bin/sdptransform.xcframework/ios-arm64/libsdptransform.a and b/bin/sdptransform.xcframework/ios-arm64/libsdptransform.a differ diff --git a/bin/sdptransform.xcframework/ios-arm64_x86_64-simulator/libsdptransform.a b/bin/sdptransform.xcframework/ios-arm64_x86_64-simulator/libsdptransform.a index 26c08a7..ab44933 100644 Binary files a/bin/sdptransform.xcframework/ios-arm64_x86_64-simulator/libsdptransform.a and b/bin/sdptransform.xcframework/ios-arm64_x86_64-simulator/libsdptransform.a differ diff --git a/build.sh b/build.sh index bca4c82..e758a9d 100755 --- a/build.sh +++ b/build.sh @@ -162,6 +162,7 @@ function patchWebRTC() { patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/audio_device_module_mm.patch patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/objc_video_decoder_factory_h.patch patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/objc_video_encoder_factory_h.patch + patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/objc_video_encoder_factory_mm.patch patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/video_decoder_factory_h.patch patch -b -p0 -d $WORK_DIR < $PATCHES_DIR/video_encoder_factory_h.patch } @@ -274,7 +275,6 @@ gn_arguments=( 'rtc_enable_protobuf=false' 'rtc_include_tests=false' 'rtc_include_builtin_audio_codecs=true' - 'rtc_include_builtin_video_codecs=true' 'rtc_include_pulse_audio=false' 'use_rtti=true' 'use_custom_libcxx=false' diff --git a/patches/objc_video_encoder_factory_mm.patch b/patches/objc_video_encoder_factory_mm.patch new file mode 100644 index 0000000..e95268b --- /dev/null +++ b/patches/objc_video_encoder_factory_mm.patch @@ -0,0 +1,34 @@ +--- webrtc/src/sdk/objc/native/src/objc_video_encoder_factory.mm ++++ webrtc/src/sdk/objc/native/src/objc_video_encoder_factory.mm +@@ -19,6 +19,7 @@ + #import "sdk/objc/api/peerconnection/RTCEncodedImage+Private.h" + #import "sdk/objc/api/peerconnection/RTCVideoCodecInfo+Private.h" + #import "sdk/objc/api/peerconnection/RTCVideoEncoderSettings+Private.h" ++#import "sdk/objc/api/peerconnection/RTCRtpCodecParameters.h" + #import "sdk/objc/api/video_codec/RTCVideoCodecConstants.h" + #import "sdk/objc/api/video_codec/RTCWrappedNativeVideoEncoder.h" + #import "sdk/objc/helpers/NSString+StdString.h" +@@ -30,6 +31,7 @@ + #include "modules/video_coding/include/video_error_codes.h" + #include "rtc_base/logging.h" + #include "sdk/objc/native/src/objc_video_frame.h" ++#include "modules/video_coding/codecs/vp9/include/vp9.h" + + namespace webrtc { + +@@ -164,8 +166,13 @@ void OnCurrentEncoder(const SdpVideoFormat &format) override { + std::vector ObjCVideoEncoderFactory::GetSupportedFormats() const { + std::vector supported_formats; + for (RTC_OBJC_TYPE(RTCVideoCodecInfo) * supportedCodec in [encoder_factory_ supportedCodecs]) { +- SdpVideoFormat format = [supportedCodec nativeSdpVideoFormat]; +- supported_formats.push_back(format); ++ if ([supportedCodec.name isEqual:kRTCVp9CodecName]) { ++ std::vector vp9codecs = webrtc::SupportedVP9Codecs(true); ++ supported_formats.insert( supported_formats.end(), vp9codecs.begin(), vp9codecs.end() ); ++ } else { ++ SdpVideoFormat format = [supportedCodec nativeSdpVideoFormat]; ++ supported_formats.push_back(format); ++ } + } + + return supported_formats;