#include <subscriber.h>

Datenfelder
void(* on_connected )(otc_Abonnent *Abonnent, void *user_data, const otc_stream *Stream)
void(* on_disconnected )(otc_Abonnent *Abonnent, void *user_data)
void(* on_reconnected )(otc_Abonnent *Abonnent, void *user_data)
void(* on_render_frame )(otc_Abonnent *Abonnent, void *user_data, const otc_video_frame *Rahmen)
void(* on_video_disabled )(otc_Abonnent *Abonnent, void *user_data, enum otc_video_reason Grund)
void(* on_video_enabled )(otc_Abonnent *Abonnent, void *user_data, enum otc_video_reason Grund)
void(* on_audio_disabled )(otc_Abonnent *Abonnent, void *user_data)
void(* on_audio_enabled )(otc_Abonnent *Abonnent, void *user_data)
void(* on_video_data_received )(otc_Abonnent *Abonnent, void *user_data)
void(* on_video_disable_warning )(otc_Abonnent *Abonnent, void *user_data)
void(* on_caption_text )(otc_Abonnent *Abonnent, void *user_data, const char *text, otc_bool is_final)
void(* on_video_disable_warning_aufgehoben )(otc_Abonnent *Abonnent, void *user_data)
void(* on_audio_stats )(otc_Abonnent *Abonnent, void *user_data, struct otc_subscriber_audio_stats audio_stats)
void(* on_video_stats )(otc_Abonnent *Abonnent, void *user_data, struct otc_subscriber_video_stats video_stats)
void(* on_audio_level_updated )(otc_Abonnent *Abonnent, void *user_data, float audio_level)
void(* on_error )(otc_Abonnent *Abonnent, void *user_data, const char *error_string, enum otc_subscriber_error_code Fehler)
void(* on_audio_data )(otc_Abonnent *Abonnent, void *user_data, const struct otc_audio_data *audio_data)
void(* on_video_quality_changed )(otc_Abonnent *Abonnent, void *user_data, const struct otc_subscriber_video_stats *Statistiken, Aufzählung otc_video_reason Grund)
void(* on_network_condition_changed )(otc_Abonnent *Abonnent, void *user_data, const struct otc_subscriber_media_link_stats *media_link_stats, Aufzählung otc_network_reason Grund)
void(* on_media_link_stats )(otc_Abonnent *Abonnent, void *user_data, const struct otc_subscriber_media_link_stats *media_link_stats)
void * user_data
void * reserviert

Ausführliche Beschreibung

Rückruffunktionen für Abonnenten.

Diese Struktur enthält eine Reihe von Funktionszeigern auf Funktionen, die bei Ereignissen im Zusammenhang mit einem OpenTok-Abonnenten aufgerufen werden können.

Alle Rückrufe erfolgen nicht über die Anwendung oder den Hauptthread, sondern über einen internen Thread. Die Anwendung sollte den Rückruf so schnell wie möglich zurückgeben, um ein Blockieren des internen Threads zu vermeiden.

Felddokumentation

on_audio_data

void(* on_audio_data) (otc_Abonnent *Abonnent, void *user_data, const struct otc_audio_data *audio_data)

Wird in regelmäßigen Abständen aufgerufen, um die Audiodaten des Teilnehmers zu melden. Die empfangenen Audioeigenschaften können sich dynamisch ändern. Ursachen für diese Änderungen sind beispielsweise die Aushandlung des Audio-Codecs oder die Netzwerkbedingungen. Die Verbraucher der Audiodaten sind dafür verantwortlich, diese Änderungen entsprechend dem implementierten Anwendungsfall zu verarbeiten (z. B. Audio-Resampling).

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf ausführt. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | audio_data | Die Audiodaten. |

on_audio_disabled

void(* on_audio_disabled) (otc_Abonnent *Abonnent, void *user_data)

Wird aufgerufen, wenn der Ton des Abonnenten deaktiviert ist.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. |

on_audio_enabled

void(* on_audio_enabled) (otc_Abonnent *Abonnent, void *user_data)

Wird aufgerufen, wenn die Audiofunktion des Teilnehmers aktiviert ist.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. |

on_audio_level_updated

void(* on_audio_level_updated) (otc_Abonnent *Abonnent, void *user_data, float audio_level)

Wird in regelmäßigen Abständen aufgerufen, um den Audiopegel des Teilnehmers zu melden.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | audio_level | Der Wert für die Lautstärke, zwischen 0 und 1,0. |

on_audio_stats

void(* on_audio_stats) (otc_Abonnent *Abonnent, void *user_data, struct otc_subscriber_audio_stats audio_stats)

Wird in regelmäßigen Abständen aufgerufen, um Audiostatistiken für den Teilnehmer zu melden.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | audio_stats | Ein Zeiger auf die Struktur „audio_stats“. |

on_caption_text

void(* on_caption_text) (otc_Abonnent *Abonnent, void *user_data, const char *text, otc_bool is_final)

Wird aufgerufen, wenn Untertiteltext für den Stream des Abonnenten verfügbar ist.

Parameter : | | | | --- | --- | | subscriber | Die Subscriber-Instanz. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | text | Zeiger auf den Bildunterschriftentext. | | is_final | Gibt an, ob eine Bildunterschrift abgeschlossen ist. |

on_connected

void(* on_connected) (otc_Abonnent *Abonnent, void *user_data, const otc_stream *Stream)

Wird aufgerufen, wenn die Instanz erfolgreich eine Verbindung zum Stream hergestellt hat und mit der Wiedergabe der Medien beginnt.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | stream | Der Stream des Abonnenten. Die Instanz besteht nicht länger als die Ausführung der Callback-Funktion. Stellen Sie sicher, dass Sie eine Kopie erstellen, falls diese Instanz später verwendet werden soll. |

on_disconnected

void(* on_disconnected) (otc_Abonnent *Abonnent, void *user_data)

Wird aufgerufen, wenn der Stream des Teilnehmers unterbrochen wurde. Dieser Callback wird nur aufgerufen, wenn die Funktion zur Wiederherstellung der Verbindung aktiviert ist; im Anschluss wird „on_reconnected“ aufgerufen, sofern die Wiederherstellung erfolgreich war. Normale Unterbrechungen, bei denen die Wiederherstellung der Verbindung nicht aktiviert ist, werden über den Callback „on_error“ gemeldet.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. |

on_error

void(* on_error) (otc_Abonnent *Abonnent, void *user_data, const char *error_string, enum otc_subscriber_error_code Fehler)

Wird aufgerufen, wenn der Teilnehmer ausfällt.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | error_string | Eine Zeichenkette, die die Fehlermeldung enthält. | | error | Wert der Fehlercode-Enumeration. |

on_media_link_stats

void(* on_media_link_stats) (otc_Abonnent *Abonnent, void *user_data, const struct otc_subscriber_media_link_stats *media_link_stats)

Wird in regelmäßigen Abständen aufgerufen, um Statistiken zu den Medienverbindungen des Teilnehmers zu melden.

Statistiken zu Medienverbindungen bieten einen einheitlichen Überblick über die Netzwerkbedingungen auf Transportebene.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | media_link_stats | Ein Zeiger auf die Struktur „media_link_stats“. |

on_network_condition_changed

void(* on_network_condition_changed) (otc_Abonnent *Abonnent, void *user_data, const struct otc_subscriber_media_link_stats *media_link_stats, Aufzählung otc_network_reason Grund)

Dieser Callback wird aufgerufen, wenn eine Änderung der Netzwerkbedingungen für den Abonnenten oder den Remote-Publisher festgestellt wird.

Die aktuelle Implementierung löst diesen Callback nur dann aus, wenn sich die Netzwerkbedingungen auf einer der beiden Seiten geändert haben.

Die reason Der Parameter gibt die Ursache des Ereignisses an und ist derzeit immer OTC_NETWORK_REASON_NETWORK_CONDITION_CHANGE.

Diese Veranstaltung unterscheidet sich von on_video_disabled und on_video_enabled Callbacks insofern, als es Änderungen des Netzwerkzustands meldet und nicht Änderungen des Status der Videospur des Teilnehmers. Anwendungen können diesen Callback nutzen, um auf Netzwerkprobleme zu reagieren, beispielsweise durch Aktualisierung der Benutzeroberfläche, Protokollierung von Telemetriedaten oder Auslösen adaptiver Verhaltensweisen.

Parameter : | | | | --- | --- | | subscriber | Die Abonnenteninstanz, die das Ereignis auslöst. | | user_data | Optionaler Zeiger auf Benutzerdaten, der bei der Registrierung des Callbacks übergeben wird. | | media_link_stats | Die Statistiken zum Medienlink. | | reason | Der Grund für die Änderung der Netzwerkbedingungen. |

on_reconnected

void(* on_reconnected) (otc_Abonnent *Abonnent, void *user_data)

Wird aufgerufen, wenn der Stream des Teilnehmers wieder aufgenommen wurde.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. |

on_render_frame

void(* on_render_frame) (otc_Abonnent *Abonnent, void *user_data, const otc_video_frame *Rahmen)

Wird aufgerufen, wenn ein neues Videobild für den Teilnehmer zur Darstellung bereit ist. Nicht OpenTok-API-Funktionen aufrufen (mit Ausnahme derjenigen in video_frame.h) in demselben Thread, der diesen Callback aufruft. Wenn Sie eine OpenTok-API-Funktion aufrufen müssen (beispielsweise Funktionen in publisher.h oder subscriber.h), die Ausführung auf einen anderen Thread verlagern.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | frame | Der Videorahmen. |

on_video_data_received

void(* on_video_data_received) (otc_Abonnent *Abonnent, void *user_data)

Wird aufgerufen, wenn ein Abonnent zum ersten Mal Videodaten empfängt.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. |

on_video_disable_warning

void(* on_video_disable_warning) (otc_Abonnent *Abonnent, void *user_data)

Wird aufgerufen, wenn der OpenTok Media Router feststellt, dass sich die Stream-Qualität verschlechtert hat und das Video deaktiviert wird, sollte sich die Qualität weiter verschlechtern.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. |

on_video_disable_warning_aufgehoben

void(* on_video_disable_warning_lifted) (otc_Abonnent *Abonnent, void *user_data)

Wird aufgerufen, wenn der OpenTok Media Router feststellt, dass sich die Stream-Qualität so weit verbessert hat, dass das Deaktivieren des Videos kein unmittelbares Risiko mehr darstellt.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. |

on_video_disabled

void(* on_video_disabled) (otc_Abonnent *Abonnent, void *user_data, enum otc_video_reason Grund)

Wird aufgerufen, wenn das Video des Teilnehmers deaktiviert wird.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | reason | Enthält weitere Details dazu, warum das Video deaktiviert wurde. |

on_video_enabled

void(* on_video_enabled) (otc_Abonnent *Abonnent, void *user_data, enum otc_video_reason Grund)

Wird aufgerufen, wenn das Video des Teilnehmers aktiviert ist.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf auslöst. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | reason | Liefert weitere Details dazu, warum das Video aktiviert wurde. |

on_video_quality_changed

void(* on_video_quality_changed) (otc_Abonnent *Abonnent, void *user_data, const struct otc_subscriber_video_stats *Statistiken, Aufzählung otc_video_reason Grund)

Dieser Callback wird aufgerufen, wenn auf der Abonnentenseite ein qualitätsbezogenes Ereignis erkannt wird.

Die aktuelle Implementierung löst dies nur im Falle einer Videounterbrechung (Pause), eines Codec-Wechsels oder einer Änderung der Auflösung aus. Einfrieren werden intern erfasst und über Statistiken ausgewiesen, jedoch wird aufgrund ihrer kurzen Dauer und der potenziell hohen Häufigkeit nicht bei jedem Einfrieren ein Callback ausgelöst. Ein Callback wird nur ausgelöst, wenn eine Pause erkannt wird (z. B. wenn über 5 Sekunden lang kein Bild gerendert wird), da dies eine bedeutendere Unterbrechung der Medienwiedergabe darstellt.

Die reason Der Parameter gibt die Ursache des Ereignisses an und wird in der folgenden Prioritätsreihenfolge berücksichtigt: OTC_VIDEO_REASON_VIDEO_INTERRUPT, OTC_VIDEO_REASON_CODEC_CHANGE, OTC_VIDEO_REASON_RESOLUTION_CHANGE.

Diese Veranstaltung unterscheidet sich von on_video_disabled und on_video_enabled Callbacks, da es Änderungen meldet, die für die Videoqualität relevant sind. on_video_disabled und `on_video_enabled geben lediglich an, dass die Videospur des Abonnenten ein- oder ausgeschaltet wurde (beispielsweise aufgrund einer Aktualisierung der Stream-Eigenschaften oder eines Audio-Fallbacks). Im Gegensatz dazu liefert dieses Ereignis Diagnoseinformationen zu Ursachen für Qualitätseinbußen, wie z. B. Bildfrieren, Pausenanzahl und aktualisierte Statistiken.

Dieser Callback berücksichtigt alle Arten von Videounterbrechungen, die 5 Sekunden oder länger dauern. Das bedeutet, dass im konkreten Fall eines Audio-Fallbacks oder von Änderungen an den Stream-Eigenschaften (z. B. wenn das Video deaktiviert wird) neben der Auslösung des on_video_disabled und on_video_enabled Bei Callbacks wird die Unterbrechung ebenfalls als Pause in der Videostatistik erfasst, und es wird eine entsprechende Video-Unterbrechungsqualität

Applications can use this Callback to respond to quality issues, such as updating the user interface, logging telemetry data, or notifying the user.

Parameter : | | | | --- | --- | | subscriber | Die Subscriber-Instanz, die das Ereignis auslöst. | | stats | Die aktuellsten Videostatistiken des Subscribers zum Zeitpunkt des Ereignisses. | | user_data | Optionaler Zeiger auf Benutzerdaten, der bei der Registrierung des Callbacks übergeben wird. | | reason | Der Grund für das Qualitätsereignis, basierend auf otc_video_reason. |

on_video_stats

void(* on_video_stats) (otc_Abonnent *Abonnent, void *user_data, struct otc_subscriber_video_stats video_stats)

Wird in regelmäßigen Abständen aufgerufen, um Videostatistiken für den Abonnenten zu melden.

Parameter : | | | | --- | --- | | subscriber | Die Instanz, die diesen Aufruf ausführt. | | user_data | Zeiger auf benutzerdefinierte Daten, die an diese Struktur gebunden sind. | | video_stats | Ein Zeiger auf die Struktur „video_stats“. |

reserviert

void* reserviert

Ein void-Zeiger auf einen Speicherbereich, der reservierte Ressourcen enthält, die für die interne Implementierung verwendet werden.

user_data

void* user_data

Dieses Struktur-Element kann auf Daten verweisen, die sich auf den Abonnenten beziehen und die der Entwickler möglicherweise benötigt.