Protocols

The following protocols are available globally.

  • メディアストリームの機能を定義したプロトコルです。 デフォルトの実装は非公開 (internal) であり、カスタマイズはイベントハンドラでのみ可能です。 ソースコードは公開していますので、実装の詳細はそちらを参照してください。

    メディアストリームは映像と音声の送受信を行います。 メディアストリーム 1 つにつき、 1 つの映像と 1 つの音声を送受信可能です。

    See more

    Declaration

    Swift

    public protocol MediaStream : AnyObject
  • RPC メソッドを定義するためのプロトコル

    新しい RPC メソッドを SDK に追加する場合は、このプロトコルに準拠した型を定義してください。

    See more

    Declaration

    Swift

    public protocol RPCMethodProtocol
  • actor / Task 境界へ安全に渡せる RPC メソッドを定義するためのプロトコル

    RPCMethodProtocol を継承し、Params / Result に Sendable を要求します。 パラメータと結果を actor 境界や Task の @Sendable closure を越えて受け渡す場合は このプロトコルへ準拠し、MediaChannel.sendableRPC(method:params:isNotificationRequest:timeout:) を利用してください。

    既存の RPCMethodProtocol の制約は変更していないため、Sendable でない params / result を 使う既存の利用者定義メソッドはそのまま MediaChannel.rpc を利用できます。

    使用例

    struct MyRPCMethod: SendableRPCMethodProtocol {
      typealias Params = MyParams
      typealias Result = MyResult
      static let name = "2025.2.0/MyRPCMethod"
    }
    

    Declaration

    Swift

    public protocol SendableRPCMethodProtocol: RPCMethodProtocol
    where Params: Sendable, Result: Sendable
  • 映像フィルターの機能を定義したプロトコルです。 MediaStream.videoFilter にセットすると、 生成された映像フレームはこのプロトコルの実装によって加工されます。

    filter(videoFrame:) はストリームごとの直列 executor 上で呼ばれます。同じストリームで 同時に 2 つの frame がこのメソッドへ入ることはありません。同じ instance を複数の ストリームへセットした場合はストリームごとに直列化されるため、排他は利用者の責任です。 交換と frame 入力の関係は MediaStream.videoFilter の doc を参照してください。

    See more

    Declaration

    Swift

    public protocol VideoFilter : AnyObject
  • 映像の描画に必要な機能を定義したプロトコルです。

    SDK が呼ぶ callback の配送 executor はすべて main queue です。VideoRenderer の実装は main queue 上で呼ばれる前提で書けますが、利用者が任意のスレッドから直接呼ぶ契約は 変わりません。この protocol は @MainActor 隔離を持たないため、main queue 配送は 実行時の取り決めであり、型では保証されません。

    See more

    Declaration

    Swift

    public protocol VideoRenderer : AnyObject