Protocols
The following protocols are available globally.
-
メディアストリームの機能を定義したプロトコルです。 デフォルトの実装は非公開 (
internal) であり、カスタマイズはイベントハンドラでのみ可能です。 ソースコードは公開していますので、実装の詳細はそちらを参照してください。メディアストリームは映像と音声の送受信を行います。 メディアストリーム 1 つにつき、 1 つの映像と 1 つの音声を送受信可能です。
See moreDeclaration
Swift
public protocol MediaStream : AnyObject -
Declaration
Swift
public protocol RPCMethodProtocol -
actor / Task 境界へ安全に渡せる RPC メソッドを定義するためのプロトコル
RPCMethodProtocolを継承し、Params/ResultにSendableを要求します。 パラメータと結果を actor 境界やTaskの@Sendableclosure を越えて受け渡す場合は このプロトコルへ準拠し、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にセットすると、 生成された映像フレームはこのプロトコルの実装によって加工されます。
See morefilter(videoFrame:)はストリームごとの直列 executor 上で呼ばれます。同じストリームで 同時に 2 つの frame がこのメソッドへ入ることはありません。同じ instance を複数の ストリームへセットした場合はストリームごとに直列化されるため、排他は利用者の責任です。 交換と frame 入力の関係はMediaStream.videoFilterの doc を参照してください。Declaration
Swift
public protocol VideoFilter : AnyObject -
映像の描画に必要な機能を定義したプロトコルです。
SDK が呼ぶ callback の配送 executor はすべて main queue です。
See moreVideoRendererの実装は main queue 上で呼ばれる前提で書けますが、利用者が任意のスレッドから直接呼ぶ契約は 変わりません。この protocol は@MainActor隔離を持たないため、main queue 配送は 実行時の取り決めであり、型では保証されません。Declaration
Swift
public protocol VideoRenderer : AnyObject
View on GitHub
Install in Dash
Protocols Reference