Skip to content

Commit d54ea00

Browse files
authored
Merge pull request #287 from shiguredo/feature/simulcast-request-rid
SimulcastRequestRid に対応する
2 parents 3320ce1 + 67bc64e commit d54ea00

File tree

4 files changed

+64
-1
lines changed

4 files changed

+64
-1
lines changed

CHANGES.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,9 @@
1616
- [UPDATE] Statistics, StatisticsEntry をドキュメント対象として公開する
1717
- `getStats` メソッドの返り値である `Statistics` のドキュメントを生成するため
1818
- @t-miya
19+
- [UPDATE] Configuration.simulcastRid を非推奨にする
20+
- 移行先は `Configuration.simulcastRequestRid`
21+
- @zztkm
1922
- [ADD] MediaChannel に libwebrtc の統計情報を取得する `getStats` メソッドを追加する
2023
- @t-miya
2124
- [ADD] RTCAudioTrack から音声データを受け取るためのコールバックプロトコルである RTCAudioTrackSink を追加する
@@ -25,6 +28,10 @@
2528
- `addAudioTrackSink(_ sink: RTCAudioTrackSink)`
2629
- `removeAudioTrackSink(_ sink: RTCAudioTrackSink)`
2730
- @zztkm
31+
- [ADD] シグナリング接続時に視聴するストリームの rid を指定する `Configuration.simulcastRequestRid: SimulcastRequestRid?` を追加する
32+
- SimulcastRequestRid は none 、 r0 、 r1 、 r2 を指定できる
33+
- role が sendrecv または recvonly の場合、かつ simulcast が true の場合にのみ有効
34+
- @zztkm
2835

2936
### misc
3037

Sora/Configuration.swift

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,22 @@ public struct Configuration {
139139
public var simulcastEnabled: Bool = false
140140

141141
/// サイマルキャストでの映像の種類。
142-
/// ロールが `.sendrecv` または `.recvonly` のときのみ有効です。
142+
/// ロールが `.sendrecv` または `.recvonly` かつ `simulcastEnabled` が true のときのみ有効です。
143+
///
144+
/// simulcastRequestRid と同時に設定された場合、Sora 2025.2.0 以降では simulcastRequestRid が優先されます。
145+
@available(
146+
*, deprecated,
147+
message: "2027 年 12 月リリース予定の Sora にて廃止予定です。",
148+
renamed: "simulcastRequestRid"
149+
)
143150
public var simulcastRid: SimulcastRid?
144151

152+
/// サイマルキャストで視聴する映像の種類。
153+
/// ロールが `.sendrecv` または `.recvonly` かつ `simulcastEnabled` が true のときのみ有効です。
154+
///
155+
/// このプロパティは Sora 2025.2.0 以降で利用可能です。
156+
public var simulcastRequestRid: SimulcastRequestRid?
157+
145158
/// スポットライトの可否
146159
/// 詳しくは Sora のスポットライト機能を参照してください。
147160
public var spotlightEnabled: Spotlight = .disabled

Sora/PeerChannel.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,7 @@ class PeerChannel: NSObject, RTCPeerConnectionDelegate {
353353
spotlightUnfocusRid: configuration.spotlightUnfocusRid,
354354
simulcastEnabled: simulcast,
355355
simulcastRid: configuration.simulcastRid,
356+
simulcastRequestRid: configuration.simulcastRequestRid,
356357
soraClient: soraClient,
357358
webRTCVersion: webRTCVersion,
358359
environment: DeviceInfo.current.description,

Sora/Signaling.swift

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,21 @@ public enum SimulcastRid {
198198
case r2
199199
}
200200

201+
/// サイマルキャストで視聴する映像の種類を表します。
202+
public enum SimulcastRequestRid {
203+
/// 映像を受信しない
204+
case none
205+
206+
/// r0
207+
case r0
208+
209+
/// r1
210+
case r1
211+
212+
/// r2
213+
case r2
214+
}
215+
201216
/// スポットライトの映像の種類を表します 。
202217
public enum SpotlightRid {
203218
/**
@@ -310,6 +325,9 @@ public struct SignalingConnect {
310325
/// サイマルキャストでの映像の種類
311326
public var simulcastRid: SimulcastRid?
312327

328+
/// サイマルキャストで視聴する映像の種類
329+
public var simulcastRequestRid: SimulcastRequestRid?
330+
313331
/// :nodoc:
314332
public var soraClient: String?
315333

@@ -768,6 +786,27 @@ extension SimulcastRid: Codable {
768786
}
769787
}
770788

789+
private var simulcastRequestRidTable: PairTable<String, SimulcastRequestRid> =
790+
PairTable(
791+
name: "simulcastRequestRid",
792+
pairs: [
793+
("none", .none),
794+
("r0", .r0),
795+
("r1", .r1),
796+
("r2", .r2),
797+
])
798+
799+
/// :nodoc:
800+
extension SimulcastRequestRid: Codable {
801+
public init(from decoder: Decoder) throws {
802+
throw SoraError.invalidSignalingMessage
803+
}
804+
805+
public func encode(to encoder: Encoder) throws {
806+
try simulcastRequestRidTable.encode(self, to: encoder)
807+
}
808+
}
809+
771810
private var spotlightRidTable: PairTable<String, SpotlightRid> =
772811
PairTable(
773812
name: "spotlightRid",
@@ -830,6 +869,7 @@ extension SignalingConnect: Codable {
830869
case spotlight_unfocus_rid
831870
case simulcast
832871
case simulcast_rid
872+
case simulcast_request_rid
833873
case video
834874
case audio
835875
case sora_client
@@ -952,6 +992,8 @@ extension SignalingConnect: Codable {
952992
switch role {
953993
case .sendrecv, .recvonly:
954994
try container.encodeIfPresent(simulcastRid, forKey: .simulcast_rid)
995+
try container.encodeIfPresent(
996+
simulcastRequestRid, forKey: .simulcast_request_rid)
955997
default:
956998
break
957999
}

0 commit comments

Comments
 (0)