#include <subscriber.h>

データフィールド
void(* on_connected )(otc_加入者 *subscriber, void *ユーザーデータ, const otc_stream *ストリーム)
void(* on_disconnected )(otc_加入者 *subscriber, void *ユーザーデータ)
void(* on_reconnected )(otc_加入者 *subscriber, void *ユーザーデータ)
void(* on_render_frame )(otc_加入者 *subscriber, void *ユーザーデータ, const otc_video_frame *フレーム)
void(* on_video_disabled )(otc_加入者 *subscriber, void *ユーザーデータ, enum otc_video_reason 理由)
void(* on_video_enabled )(otc_加入者 *subscriber, void *ユーザーデータ, enum otc_video_reason 理由)
void(* on_audio_disabled )(otc_加入者 *subscriber, void *ユーザーデータ)
void(* on_audio_enabled )(otc_加入者 *subscriber, void *ユーザーデータ)
void(* on_video_data_received )(otc_加入者 *subscriber, void *ユーザーデータ)
void(* on_video_disable_warning )(otc_加入者 *subscriber, void *ユーザーデータ)
void(* on_caption_text )(otc_加入者 *subscriber, void *ユーザーデータ, const char *text, otc_bool is_final)
void(* on_video_disable_warning_lifted )(otc_加入者 *subscriber, void *ユーザーデータ)
void(* on_audio_stats )(otc_加入者 *subscriber, void *ユーザーデータ, struct otc_加入者_音声_統計 (audio_stats)
void(* on_video_stats )(otc_加入者 *subscriber, void *ユーザーデータ, struct otc_加入者動画統計 video_stats)
void(* on_audio_level_updated )(otc_加入者 *subscriber, void *ユーザーデータ, float audio_level)
void(* on_error )(otc_加入者 *subscriber, void *ユーザーデータ, const char *error_string, enum otc_加入者_エラーコード (エラー)
void(* on_audio_data )(otc_加入者 *subscriber, void *ユーザーデータ, const struct otc_audio_data *audio_data)
void(* on_video_quality_changed )(otc_加入者 *subscriber, void *ユーザーデータ, const struct otc_加入者動画統計 *統計、列挙型 otc_video_reason 理由)
void(* on_network_condition_changed )(otc_加入者 *subscriber, void *ユーザーデータ, const struct otc_加入者_メディア_リンク_統計 *media_link_stats, 列挙型 otc_network_reason 理由)
void(* on_media_link_stats )(otc_加入者 *subscriber, void *ユーザーデータ, const struct otc_加入者_メディア_リンク_統計 *media_link_stats)
void * ユーザーデータ
void * 予約済み

詳細な説明

サブスクライバーのコールバック関数。

この構造体は、OpenTokのサブスクライバーに関連するイベントが発生した際に呼び出される関数への関数ポインタの集合です。

すべてのコールバックは、アプリケーションやメインスレッド上ではなく、内部スレッド上で行われる。アプリケーションは、内部スレッドのブロックを避けるために、できるだけ早くコールバックを返すべきである。

現場記録

on_audio_data

void(* on_audio_data) (otc_加入者 *subscriber, void *ユーザーデータ, const struct otc_audio_data *audio_data)

加入者のオーディオデータを報告するために定期的に呼び出されます。受信したオーディオのプロパティは動的に変化する場合があります。こうした変化の原因としては、オーディオコーデックのネゴシエーションやネットワーク状況などが挙げられます。オーディオデータの利用者は、実装されたユースケース(例:オーディオのリサンプリング)に応じて、これらの変化に対処する責任があります。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | audio_data | オーディオデータ。 |

on_audio_disabled

void(* on_audio_disabled) (otc_加入者 *subscriber, void *ユーザーデータ)

サブスクライバーのオーディオが無効になったときに呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 |

on_audio_enabled

void(* on_audio_enabled) (otc_加入者 *subscriber, void *ユーザーデータ)

加入者の音声が有効になったときに呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 |

on_audio_level_updated

void(* on_audio_level_updated) (otc_加入者 *subscriber, void *ユーザーデータ, float audio_level)

加入者の音声レベルを報告するために、定期的に呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | audio_level | オーディオレベルの値(0 から 1.0 まで)。 |

on_audio_stats

void(* on_audio_stats) (otc_加入者 *subscriber, void *ユーザーデータ, struct otc_加入者_音声_統計 (audio_stats)

加入者の音声統計情報を報告するために、定期的に呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | audio_stats | オーディオ統計構造体へのポインタ。 |

on_caption_text

void(* on_caption_text) (otc_加入者 *subscriber, void *ユーザーデータ, const char *text, otc_bool is_final)

加入者のストリームのキャプションテキストが利用可能になったときに呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | サブスクライバーインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | text | キャプションテキストへのポインタ。 | | is_final | キャプションが完了しているかどうかを示します。 |

on_connected

void(* on_connected) (otc_加入者 *subscriber, void *ユーザーデータ, const otc_stream *ストリーム)

インスタンスがストリームへの接続に成功し、メディアの再生を開始したときに呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザー定義データへのポインタ。 | | stream | サブスクライバーのストリーム。このインスタンスは、コールバック関数の実行が終了すると破棄されます。後でこのインスタンスを使用する場合は、必ずコピーを作成してください。 |

on_disconnected

void(* on_disconnected) (otc_加入者 *subscriber, void *ユーザーデータ)

加入者のストリームが中断された際に呼び出されます。このコールバックは、再接続機能が有効になっている場合にのみ呼び出され、再接続に成功した場合は続いて on_reconnected が呼び出されます。再接続が無効になっている場合の通常の中断については、on_error コールバックを通じて通知されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 |

on_error

void(* on_error) (otc_加入者 *subscriber, void *ユーザーデータ, const char *error_string, enum otc_加入者_エラーコード (エラー)

加入者に障害が発生した際に呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | error_string | エラーメッセージを含む文字列。 | | error | エラーコードの列挙型値。 |

on_media_link_stats

void(* on_media_link_stats) (otc_加入者 *subscriber, void *ユーザーデータ, const struct otc_加入者_メディア_リンク_統計 *media_link_stats)

加入者のメディアリンク統計を報告するために、定期的に呼び出されます。

メディアリンクの統計情報は、トランスポート層レベルのネットワーク状況を包括的に把握することを可能にします。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | media_link_stats | メディアリンク統計構造体へのポインタ。 |

on_network_condition_changed

void(* on_network_condition_changed) (otc_加入者 *subscriber, void *ユーザーデータ, const struct otc_加入者_メディア_リンク_統計 *media_link_stats, 列挙型 otc_network_reason 理由)

このコールバックは、サブスクライバーまたはリモートパブリッシャーのネットワーク状態の変化が検出されたときに呼び出されます。

現在の実装では、いずれかの側のネットワーク状態が変化した場合にのみ、このコールバックが呼び出されます。

について reason このパラメータはイベントの原因を示しており、現在は常に OTC_NETWORK_REASON_NETWORK_CONDITION_CHANGE.

このイベントは、 on_video_disabled そして on_video_enabled このコールバックは、加入者のビデオトラックの状態の変化ではなく、ネットワークの状態の変化を報告するという点で、他のコールバックとは異なります。Applicationsはこのコールバックを利用して、UIの更新、テレメトリの記録、適応型動作のトリガーなど、ネットワークの問題に対応することができます。

パラメータ : | | | | --- | --- | | subscriber | イベントをトリガーしたサブスクライバーインスタンス。 | | user_data | コールバック登録時に渡される、オプションのユーザーデータポインタ。 | | media_link_stats | メディアリンクの統計情報。 | | reason | ネットワーク状態が変化した理由。 |

on_reconnected

void(* on_reconnected) (otc_加入者 *subscriber, void *ユーザーデータ)

加入者のストリームが再開されたときに呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 |

on_render_frame

void(* on_render_frame) (otc_加入者 *subscriber, void *ユーザーデータ, const otc_video_frame *フレーム)

加入者向けの新しいビデオフレームがレンダリング可能な状態になったときに呼び出されます。 しないでください OpenTok API の関数を呼び出す(ただし、 video_frame.h) このコールバックを呼び出すのと同じスレッド上で実行されます。OpenTok API 関数(たとえば、 publisher.h または subscriber.h)、その実行を別のスレッドに振り替える。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | frame | ビデオフレーム。 |

on_video_data_received

void(* on_video_data_received) (otc_加入者 *subscriber, void *ユーザーデータ)

加入者が初めて動画データを受信した際に呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 |

on_video_disable_warning

void(* on_video_disable_warning) (otc_加入者 *subscriber, void *ユーザーデータ)

OpenTok Media Router がストリームの品質が低下したと判断し、さらに品質が低下した場合に動画が停止されることになる場合に呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 |

on_video_disable_warning_lifted

void(* on_video_disable_warning_lifted) (otc_加入者 *subscriber, void *ユーザーデータ)

OpenTok Media Router が、ストリームの品質が改善し、無効化される動画が直ちにリスクをもたらさない状態になったと判断した際に呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 |

on_video_disabled

void(* on_video_disabled) (otc_加入者 *subscriber, void *ユーザーデータ, enum otc_video_reason 理由)

加入者の動画が無効化されたときに呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザー固有のデータへのポインタ。 | | reason | 動画が無効化された理由に関する詳細情報を示します。 |

on_video_enabled

void(* on_video_enabled) (otc_加入者 *subscriber, void *ユーザーデータ, enum otc_video_reason 理由)

加入者の動画機能が有効になったときに呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | reason | 動画が有効化された理由に関する詳細情報を示します。 |

on_video_quality_changed

void(* on_video_quality_changed) (otc_加入者 *subscriber, void *ユーザーデータ, const struct otc_加入者動画統計 *統計、列挙型 otc_video_reason 理由)

このコールバックは、サブスクライバー側で品質に関連するイベントが検出された際に呼び出されます。

現在の実装では、動画の中断(一時停止)、コーデックの変更、または解像度の変更が発生した場合にのみ、これがトリガーされます。 フリーズは内部で追跡され、統計情報として公開されていますが、その持続時間が短く発生頻度が高いため、フリーズごとにコールバックはトリガーされません。コールバックがトリガーされるのは、一時停止が検出された場合(例:5秒以上フレームがレンダリングされない状態)のみです。これは、一時停止がメディア再生においてより重大な中断を意味するためです。

について reason このパラメータはイベントの原因を示しており、以下の優先順位に従って考慮されます: OTC_VIDEO_REASON_VIDEO_INTERRUPT, OTC_VIDEO_REASON_CODEC_CHANGE, OTC_VIDEO_REASON_RESOLUTION_CHANGE.

このイベントは、 on_video_disabled そして on_video_enabled コールバックと同様に、動画の品質に関連する変更を報告します。 on_video_disabled また、`on_video_enabled` は、加入者のビデオトラックがオンまたはオフになったこと(たとえば、ストリームプロパティの更新やオーディオフォールバックなどによる)を示すだけです。これに対し、このイベントは、映像のフリーズや一時停止回数、更新された統計情報など、画質低下の原因に関する診断情報を提供します。

このコールバックは、5秒以上続くあらゆる種類の動画の中断を対象とします。つまり、オーディオへのフォールバックやストリームのプロパティ変更(動画が無効化されるなど)といった特定のケースでは、 on_video_disabled そして on_video_enabled コールバックの場合、その中断は動画統計において一時停止として記録され、それに対応する動画中断の品質も

Applications can use this callback to respond to quality issues, such as updating the UI, logging telemetry, or notifying the user.

パラメータ : | | | | --- | --- | | subscriber | イベントをトリガーしたサブスクライバーのインスタンス。 | | stats | イベント発生時点での最新のサブスクライバーの動画統計情報。 | | user_data | コールバック登録時に渡される、オプションのユーザーデータポインタ。 | | reason | 品質イベントの発生理由。以下に基づいて決定されます。 otc_video_reason. |

on_video_stats

void(* on_video_stats) (otc_加入者 *subscriber, void *ユーザーデータ, struct otc_加入者動画統計 video_stats)

加入者の動画統計情報を報告するために、定期的に呼び出されます。

パラメータ : | | | | --- | --- | | subscriber | この呼び出しを実行するインスタンス。 | | user_data | この構造体にバインドされたユーザーカスタムデータへのポインタ。 | | video_stats | 動画統計構造体へのポインタ。 |

予約済み

void* reserved

内部実装に使用される、予約済みリソースが格納されているメモリ領域へのvoidポインタ。

ユーザーデータ

void* user_data

この構造体のメンバは、開発者が必要とする可能性のある、サブスクライバーに関連するデータを指すことができます。