Skip to content

Commit 75678a8

Browse files
committed
Merge branch 'LD-5065-vp9-svc'
2 parents 30d41bf + 4735d61 commit 75678a8

File tree

54 files changed

+7745
-232
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

54 files changed

+7745
-232
lines changed

Example/Podfile.lock

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
PODS:
2-
- Mediasoup-Client-Swift (0.7.0)
2+
- Mediasoup-Client-Swift (0.8.0)
33

44
DEPENDENCIES:
55
- Mediasoup-Client-Swift (from `../`)
@@ -9,7 +9,7 @@ EXTERNAL SOURCES:
99
:path: "../"
1010

1111
SPEC CHECKSUMS:
12-
Mediasoup-Client-Swift: e8f187c336f948d8e865a198c85c02a1900a9455
12+
Mediasoup-Client-Swift: c6c318be2f5940a25eac32ee983840603de7a56e
1313

1414
PODFILE CHECKSUM: d4fe3294dd9c7fc46519b6a7b26527f1f545e8d3
1515

Mediasoup-Client-Swift.podspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Pod::Spec.new do |spec|
88
}
99

1010
spec.name = "Mediasoup-Client-Swift"
11-
spec.version = "0.7.0"
11+
spec.version = "0.8.0"
1212
spec.platform = :ios, "14.0"
1313
spec.module_name = "Mediasoup"
1414
spec.module_map = "Mediasoup/Mediasoup.modulemap"

Mediasoup.xcodeproj/project.pbxproj

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@
7474
FFCD791827F419E800D26B4C /* mediasoupclient.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFCD791727F419E800D26B4C /* mediasoupclient.xcframework */; };
7575
FFCD791D27F41A0900D26B4C /* sdptransform.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFCD791B27F41A0900D26B4C /* sdptransform.xcframework */; };
7676
FFCD791F27F41A0900D26B4C /* WebRTC.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFCD791C27F41A0900D26B4C /* WebRTC.xcframework */; };
77+
FFF004F92B592424007BA500 /* RTPParameters.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF004F82B592424007BA500 /* RTPParameters.swift */; };
78+
FFF004FB2B5986F6007BA500 /* ScalabilityMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF004FA2B5986F6007BA500 /* ScalabilityMode.swift */; };
79+
FFF004FF2B598D59007BA500 /* ScalabilityMode.h in Headers */ = {isa = PBXBuildFile; fileRef = FFF004FE2B59881C007BA500 /* ScalabilityMode.h */; settings = {ATTRIBUTES = (Private, ); }; };
80+
FFF005002B599102007BA500 /* ScalabilityMode.mm in Sources */ = {isa = PBXBuildFile; fileRef = FFF004FC2B598806007BA500 /* ScalabilityMode.mm */; };
81+
FFF005022B5A2968007BA500 /* WrappedRTPParameters.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FFF005012B5A2832007BA500 /* WrappedRTPParameters.hpp */; settings = {ATTRIBUTES = (Private, ); }; };
82+
FFF005042B5A29B6007BA500 /* WrappedRTPParameters.mm in Sources */ = {isa = PBXBuildFile; fileRef = FFF005032B5A29B6007BA500 /* WrappedRTPParameters.mm */; };
83+
FFF005072B5A4304007BA500 /* WrappedRTPParameters+Internal.mm in Sources */ = {isa = PBXBuildFile; fileRef = FFF005062B5A4304007BA500 /* WrappedRTPParameters+Internal.mm */; };
84+
FFF0050B2B5A62FD007BA500 /* RTPEncodingParameters.mm in Sources */ = {isa = PBXBuildFile; fileRef = FFF0050A2B5A62FD007BA500 /* RTPEncodingParameters.mm */; };
85+
FFF0050D2B5A631D007BA500 /* RTPEncodingParameters+Internal.mm in Sources */ = {isa = PBXBuildFile; fileRef = FFF0050C2B5A631D007BA500 /* RTPEncodingParameters+Internal.mm */; };
86+
FFF0050E2B5A641C007BA500 /* RTPEncodingParameters.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FFF005082B5A6192007BA500 /* RTPEncodingParameters.hpp */; settings = {ATTRIBUTES = (Private, ); }; };
7787
/* End PBXBuildFile section */
7888

7989
/* Begin PBXFileReference section */
@@ -143,6 +153,18 @@
143153
FFCD791727F419E800D26B4C /* mediasoupclient.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = mediasoupclient.xcframework; path = bin/mediasoupclient.xcframework; sourceTree = "<group>"; };
144154
FFCD791B27F41A0900D26B4C /* sdptransform.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = sdptransform.xcframework; path = bin/sdptransform.xcframework; sourceTree = "<group>"; };
145155
FFCD791C27F41A0900D26B4C /* WebRTC.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = WebRTC.xcframework; path = bin/WebRTC.xcframework; sourceTree = "<group>"; };
156+
FFF004F82B592424007BA500 /* RTPParameters.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RTPParameters.swift; sourceTree = "<group>"; };
157+
FFF004FA2B5986F6007BA500 /* ScalabilityMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScalabilityMode.swift; sourceTree = "<group>"; };
158+
FFF004FC2B598806007BA500 /* ScalabilityMode.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = ScalabilityMode.mm; sourceTree = "<group>"; };
159+
FFF004FE2B59881C007BA500 /* ScalabilityMode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScalabilityMode.h; sourceTree = "<group>"; };
160+
FFF005012B5A2832007BA500 /* WrappedRTPParameters.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = WrappedRTPParameters.hpp; sourceTree = "<group>"; };
161+
FFF005032B5A29B6007BA500 /* WrappedRTPParameters.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = WrappedRTPParameters.mm; sourceTree = "<group>"; };
162+
FFF005052B5A332F007BA500 /* WrappedRTPParameters+Internal.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = "WrappedRTPParameters+Internal.hpp"; sourceTree = "<group>"; };
163+
FFF005062B5A4304007BA500 /* WrappedRTPParameters+Internal.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "WrappedRTPParameters+Internal.mm"; sourceTree = "<group>"; };
164+
FFF005082B5A6192007BA500 /* RTPEncodingParameters.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = RTPEncodingParameters.hpp; sourceTree = "<group>"; };
165+
FFF005092B5A62B0007BA500 /* RTPEncodingParameters+Internal.hpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.h; path = "RTPEncodingParameters+Internal.hpp"; sourceTree = "<group>"; };
166+
FFF0050A2B5A62FD007BA500 /* RTPEncodingParameters.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RTPEncodingParameters.mm; sourceTree = "<group>"; };
167+
FFF0050C2B5A631D007BA500 /* RTPEncodingParameters+Internal.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = "RTPEncodingParameters+Internal.mm"; sourceTree = "<group>"; };
146168
/* End PBXFileReference section */
147169

148170
/* Begin PBXFrameworksBuildPhase section */
@@ -214,6 +236,8 @@
214236
FF7FA6C327FD5ECD000B6470 /* Transport.swift */,
215237
FFC5AC71282500A500C92A96 /* TransportConnectionState.swift */,
216238
FF7FA6C127FD5EA5000B6470 /* TransportDelegate.swift */,
239+
FFF004F82B592424007BA500 /* RTPParameters.swift */,
240+
FFF004FA2B5986F6007BA500 /* ScalabilityMode.swift */,
217241
);
218242
path = Mediasoup;
219243
sourceTree = "<group>";
@@ -246,6 +270,14 @@
246270
FF7FA6CB27FE9681000B6470 /* ProducerWrapper.hpp */,
247271
FF7FA6C927FE9674000B6470 /* ProducerWrapper.mm */,
248272
FF7FA6D127FF1755000B6470 /* ProducerWrapperDelegate.h */,
273+
FFF005082B5A6192007BA500 /* RTPEncodingParameters.hpp */,
274+
FFF0050A2B5A62FD007BA500 /* RTPEncodingParameters.mm */,
275+
FFF005092B5A62B0007BA500 /* RTPEncodingParameters+Internal.hpp */,
276+
FFF0050C2B5A631D007BA500 /* RTPEncodingParameters+Internal.mm */,
277+
FFF005012B5A2832007BA500 /* WrappedRTPParameters.hpp */,
278+
FFF005032B5A29B6007BA500 /* WrappedRTPParameters.mm */,
279+
FFF005052B5A332F007BA500 /* WrappedRTPParameters+Internal.hpp */,
280+
FFF005062B5A4304007BA500 /* WrappedRTPParameters+Internal.mm */,
249281
);
250282
path = Producer;
251283
sourceTree = "<group>";
@@ -264,6 +296,8 @@
264296
FFC5AC732825025100C92A96 /* MediasoupClientTransportConnectionState.mm */,
265297
FF89EFD127F5C97000EEF5CD /* MediasoupClientError */,
266298
FF89EFD227F5C99C00EEF5CD /* Device */,
299+
FFF004FC2B598806007BA500 /* ScalabilityMode.mm */,
300+
FFF004FE2B59881C007BA500 /* ScalabilityMode.h */,
267301
);
268302
path = Mediasoup_Private;
269303
sourceTree = "<group>";
@@ -325,11 +359,14 @@
325359
FFB7DDBB28228BE400FE2CC2 /* ReceiveTransportWrapperDelegate.h in Headers */,
326360
FFB7DDB828228ABA00FE2CC2 /* ReceiveTransportWrapper.hpp in Headers */,
327361
FF1E63582A5655830022A44A /* DataConsumerWrapper.hpp in Headers */,
362+
FFF004FF2B598D59007BA500 /* ScalabilityMode.h in Headers */,
328363
FF89EFC027F462F200EEF5CD /* MediasoupClientError.h in Headers */,
329364
FF7FA6A027FAAEF2000B6470 /* SendTransportWrapper.hpp in Headers */,
330365
FF7FA6BD27FB0FB7000B6470 /* SendTransportWrapperDelegate.h in Headers */,
331366
FF7FA6A427FAB838000B6470 /* SendTransportListenerAdapter.hpp in Headers */,
367+
FFF0050E2B5A641C007BA500 /* RTPEncodingParameters.hpp in Headers */,
332368
FF7FA6D427FF1A08000B6470 /* ProducerWrapperDelegate.h in Headers */,
369+
FFF005022B5A2968007BA500 /* WrappedRTPParameters.hpp in Headers */,
333370
FFB7DDBF28229BC100FE2CC2 /* ConsumerWrapperDelegate.h in Headers */,
334371
FF7FA6CE27FE9A4B000B6470 /* ProducerWrapper.hpp in Headers */,
335372
FF1E635B2A5655830022A44A /* DataConsumerWrapperDelegate.h in Headers */,
@@ -452,7 +489,10 @@
452489
isa = PBXSourcesBuildPhase;
453490
buildActionMask = 2147483647;
454491
files = (
492+
FFF005042B5A29B6007BA500 /* WrappedRTPParameters.mm in Sources */,
493+
FFF004FB2B5986F6007BA500 /* ScalabilityMode.swift in Sources */,
455494
FFB7DDB32822893C00FE2CC2 /* ReceiveTransportDelegate.swift in Sources */,
495+
FFF005072B5A4304007BA500 /* WrappedRTPParameters+Internal.mm in Sources */,
456496
FFC5AC782825170500C92A96 /* ConsumerWrapper.mm in Sources */,
457497
FFB7DDB12822891C00FE2CC2 /* ReceiveTransport.swift in Sources */,
458498
FFC2452127F6E8DF008F61DE /* MediaKind.swift in Sources */,
@@ -461,8 +501,12 @@
461501
FF7FA6C227FD5EA5000B6470 /* TransportDelegate.swift in Sources */,
462502
FFB7DDC3282398A500FE2CC2 /* ReceiveTransportListenerAdapter.mm in Sources */,
463503
FF7FA6A227FAB803000B6470 /* SendTransportListenerAdapter.mm in Sources */,
504+
FFF005002B599102007BA500 /* ScalabilityMode.mm in Sources */,
464505
FFC2452427F6E9DB008F61DE /* MediasoupClientMediaKind.mm in Sources */,
506+
FFF004F92B592424007BA500 /* RTPParameters.swift in Sources */,
465507
FF7FA6CA27FE9674000B6470 /* ProducerWrapper.mm in Sources */,
508+
FFF0050D2B5A631D007BA500 /* RTPEncodingParameters+Internal.mm in Sources */,
509+
FFF0050B2B5A62FD007BA500 /* RTPEncodingParameters.mm in Sources */,
466510
FFC5AC72282500A500C92A96 /* TransportConnectionState.swift in Sources */,
467511
FF7FA69A27FAACEE000B6470 /* SendTransportWrapper.mm in Sources */,
468512
FF7FA69527FAA930000B6470 /* SendTransport.swift in Sources */,

Mediasoup/Producer.swift

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,40 +6,50 @@ import WebRTC
66
public class Producer {
77
public weak var delegate: ProducerDelegate?
88

9+
/// The audio or video track being transmitted.
910
public var track: RTCMediaStreamTrack {
1011
return producer.track
1112
}
1213

14+
/// Producer identifier (matches server-side producer id).
1315
public var id: String {
1416
return producer.id
1517
}
1618

19+
/// Local producer identifier.
1720
public var localId: String {
1821
return producer.localId
1922
}
2023

24+
/// Whether the producer is closed.
2125
public var closed: Bool {
2226
return producer.closed
2327
}
2428

29+
/// Whether the producer is paused.
2530
public var paused: Bool {
2631
return producer.paused
2732
}
2833

34+
/// The media kind ("audio" or "video").
2935
public let kind: MediaKind
3036

37+
/// In case of simulcast, this value determines the highest stream (from 0 to N-1) being transmitted. See the `setMaxSpatialLayer` method for more about this.
3138
public var maxSpatialLayer: UInt8 {
3239
return producer.maxSpatialLayer
3340
}
3441

42+
/// Custom data Object provided by the application in the producer factory method. The app can modify its content at any time.
3543
public var appData: String {
3644
return producer.appData
3745
}
3846

47+
/// Producer RTP parameters. These parameters are internally built by the library and conform to the syntax and requirements of mediasoup, thus they can be transmitted to the server to invoke transport.produce() with them.
3948
public var rtpParameters: String {
4049
return producer.rtpParameters
4150
}
4251

52+
/// Gets the local RTP sender statistics by calling getStats() in the underlying RTCRtpSender instance.
4353
public var stats: String {
4454
return producer.stats
4555
}
@@ -52,29 +62,45 @@ public class Producer {
5262
producer.delegate = self
5363
}
5464

65+
/// Pauses the producer (no RTP is sent to the server). This method should be called when the server side producer has been paused (and vice-versa).
5566
public func pause() {
5667
producer.pause()
5768
}
5869

70+
/// Resumes the producer (RTP is sent again to the server). This method should be called when the server side producer has been resumed (and vice-versa).
5971
public func resume() {
6072
producer.resume()
6173
}
6274

75+
/// Closes the producer. No more media is transmitted. This method should be called when the server side producer has been closed (and vice-versa).
6376
public func close() {
6477
producer.close()
6578
}
6679

80+
/// In case of simulcast, this method limits the highest RTP stream being transmitted to the server.
81+
/// - Parameter layer: The index of the entry in encodings representing the highest RTP stream that will be transmitted.
6782
public func setMaxSpatialLayer(_ layer: Int) throws {
6883
guard let typedLayer = UInt8(exactly: layer) else {
6984
throw MediasoupError.invalidParameters("Layer index can not be negative")
7085
}
7186
try producer.setMaxSpatialLayer(typedLayer)
7287
}
7388

89+
public func updateSenderParameters(_ updater: @escaping (RTPParameters) -> RTPParameters) {
90+
producer.updateRTPParameters({ oldValue in
91+
let updatedValue = updater(RTPParameters(from: oldValue))
92+
return updatedValue.wrappedValue
93+
})
94+
}
95+
96+
/// Replaces the audio or video track being transmitted. No negotiation with the server is needed.
97+
/// - Parameter track: An audio or video track.
7498
public func replaceTrack(_ track: RTCMediaStreamTrack) throws {
7599
try producer.replaceTrack(track)
76100
}
77101

102+
/// Gets the local RTP sender statistics by calling getStats() in the underlying RTCRtpSender instance.
103+
/// - Returns: RTCStatsReport object serialized to JSON. See https://w3c.github.io/webrtc-pc/#dom-rtcstatsreport for format description.
78104
public func getStats() throws -> String {
79105
return try producer.getStats()
80106
}

0 commit comments

Comments
 (0)