2025.1.1
2025.1.1
リリース日: 2025-08-07
- [FIX] Sora の設定が、DataChannel 経由のシグナリングの設定、かつ、WebSocket の切断を Sora への接続が切断したと判断しない設定の場合に、
type: switchedとtype: re-offerをほぼ同時に受信すると SDP 再交換に失敗することがある問題を修正するtype: re-answerを WebSocket 経由で Sora へ送信する前に、Sora からtype: switchedを受信して、WebSocket 経由から DataChannel 経由へのシグナリングの切り替えの処理が実行されて、WebSocket の切断処理が実行されたため、type: re-answerを Sora へ送信できなくなり、SDP の再交換に失敗する- DataChannel 経由のシグナリングへの切り替え後でも、まだ WebSocket 経由で送信中のメッセージが存在する可能性を考慮し、10 秒間の WebSocket 切断の猶予時間を設けた
- この遅延処理はコルーチンを利用して非同期で行う
- @miosakuma
2025.1.0
リリース日: 2025-01-27
- [UPDATE] libwebrtc を 132.6834.5.0 に上げる
- [UPDATE] SoraForwardingFilterOption 型の引数を Sora での 2025 年 12 月の廃止に向けて非推奨にする
- 今後はリスト形式の転送フィルター設定を利用してもらう
- 非推奨になるクラス
- SoraMediaChannel
- SignalingChannelImpl
- ConnectMessage (Any で定義されているが、実態は SoraForwardingFilterOption を Map に変換したもの)
- @zztkm
- [UPDATE] OfferMessage に項目を追加する
- 追加した項目
versionsimulcastMulticodecspotlightchannelIdsessionIdaudioaudioCodecTypeaudioBitRatevideovideoCodecTypevideoBitRate
- @zztkm
- 追加した項目
- [UPDATE] NotificationMessage に項目を追加する
- 追加した項目
timestampspotlightNumberfailedConnectionIdcurrentStatepreviousState
- @zztkm
- 追加した項目
- [ADD] 転送フィルター機能の設定を表すクラス
SoraForwardingFilterOptionにnameとpriorityを追加する - [ADD] 転送フィルターをリスト形式で指定するためのプロパティを追加する
- プロパティが追加されるクラス
- SoraMediaChannel に
forwardingFiltersOptionを追加する - SignalingChannelImpl に
forwardingFiltersOptionを追加する - ConnectMessage に
forwardingFiltersを追加する - クラスそのものに変更はないが
MessageConverter.buildConnectMessageにforwardingFiltersOptionを追加する
- SoraMediaChannel に
- @zztkm
- プロパティが追加されるクラス
- [FIX] SoraMediaChannel のコンストラクタで
signalingMetadataとsignalingNotifyMetadataに Map オブジェクトを指定した場合、null を持つフィールドが connect メッセージ送信時に省略されてしまう問題を修正signalingMetadataとsignalingNotifyMetadataに設定する情報はユーザが任意に設定する項目であり value 値が null の情報も送信できるようにする必要がある- Gson は JSON シリアライズ時、デフォルトで null フィールドを無視するので、null を持つフィールドは省略される
- これを回避するために Gson をインスタンス化するときに
serializeNulls()を利用してインスタンスを作成する必要がある - https://github.com/google/gson/blob/main/UserGuide.md#null-object-support
- これを回避するために Gson をインスタンス化するときに
signalingMetadataとsignalingNotifyMetadataのみ null フィールドを省略しないようにする必要があるため、以下のような手順で JSON シリアライズを行うようにした- まず、デフォルトの Gson インスタンスで ConnectMessage をシリアライズする
- その後、シリアライズした JSON 文字列を JsonObject に変換する (この時点で null のフィールドは省略されている)
- JsonObject に metadata, signalingNotifyMetadata をセットし直す
- JsonObject を
serializeNulls()を呼び出した Gson インスタンスでシリアライズする
- @zztkm
misc
- [CHANGE] GitHub Actions の ubuntu-latest を ubuntu-24.04 に変更する
- [UPDATE] システム条件を更新する
- Android Studio 2024.2.2 以降
- @miosakuma @zztkm
- [ADD] Canary Release 用スクリプトの canary.py を追加する