SkyWay Embedded SDK 0.1.0
読み取り中…
検索中…
一致する文字列を見つけられません
subscription.h ファイル

Subscriptionのイベントハンドラの登録。 [詳解]

#include <stddef.h>
#include <stdint.h>
#include "member.h"
#include "publication.h"

[ソースコード]

データ構造

struct  skw_room_subscription_data_field_t
 Subscriptionの取得結果を受け取る出力先。NULLを設定したフィールドには格納されない。 [詳解]
struct  skw_room_subscription_handlers_t
 Subscriptionの各イベント通知を受け取るハンドラ。不要なイベントのフィールドはNULLにできる。 [詳解]

マクロ定義

#define SKW_ROOM_SUBSCRIPTION_ID_SIZE   (36+1)
 SubscriptionIDを格納するバッファのサイズ(NUL終端を含む)。

型定義

typedef char skw_room_subscription_id_t[SKW_ROOM_SUBSCRIPTION_ID_SIZE]
 SubscriptionIDを格納する文字列型(NUL終端を含む)。
typedef void(* skw_room_subscription_on_data_t) (const char *subscription_id, const char *publication_id, const uint8_t *data, size_t length)
 SubscribeしているStreamからデータを受信したときに呼ばれます。ハンドラ内からunsubscribe等の破棄を伴うAPIとsubscribeは呼び出せません。
typedef void(* skw_room_subscription_on_video_frame_t) (const char *subscription_id, const char *publication_id, const uint8_t *data, size_t length, uint32_t pts)
 SubscribeしているStreamからエンコード済み映像フレーム(H.264)を受信したときに呼ばれます。ハンドラ内からunsubscribe等の破棄を伴うAPIとsubscribeは呼び出せません。
typedef void(* skw_room_subscription_on_audio_frame_t) (const char *subscription_id, const char *publication_id, const uint8_t *data, size_t length, uint32_t pts)
 SubscribeしているStreamからエンコード済み音声フレーム(Opus)を受信したときに呼ばれます。ハンドラ内からunsubscribe等の破棄を伴うAPIとsubscribeは呼び出せません。

列挙型

enum  skw_room_subscription_err_t {
  SKW_ROOM_SUBSCRIPTION_OK = 0 , SKW_ROOM_SUBSCRIPTION_ERR_NULL_ARGS = 1 , SKW_ROOM_SUBSCRIPTION_ERR_INVALID_ARGS = 2 , SKW_ROOM_SUBSCRIPTION_ERR_CONTEXT_NOT_INITED = 3 ,
  SKW_ROOM_SUBSCRIPTION_ERR_CONTEXT_NOT_SETUP = 4 , SKW_ROOM_SUBSCRIPTION_ERR_REQUEST_FAILED = 5 , SKW_ROOM_SUBSCRIPTION_ERR_MUTEX_UNLOCK_FAILED = 6 , SKW_ROOM_SUBSCRIPTION_ERR_CALLED_IN_HANDLER = 7 ,
  SKW_ROOM_SUBSCRIPTION_ERR_SEND_FAILED = 8 , SKW_ROOM_SUBSCRIPTION_ERR_TIMEOUT = 9 , SKW_ROOM_SUBSCRIPTION_ERR_CONNECTION_CLOSED = 10 , SKW_ROOM_SUBSCRIPTION_ERR_RESPONSE_TOO_LARGE = 11 ,
  SKW_ROOM_SUBSCRIPTION_ERR_RESPONSE_PARSE_FAILED = 12 , SKW_ROOM_SUBSCRIPTION_ERR_UNKNOWN = 99 , SKW_ROOM_SUBSCRIPTION_ERR_BAD_REQUEST = 400 , SKW_ROOM_SUBSCRIPTION_ERR_UNAUTHORIZED = 401 ,
  SKW_ROOM_SUBSCRIPTION_ERR_FORBIDDEN = 403 , SKW_ROOM_SUBSCRIPTION_ERR_NOT_FOUND = 404 , SKW_ROOM_SUBSCRIPTION_ERR_ALREADY_EXIST = 409 , SKW_ROOM_SUBSCRIPTION_ERR_TOO_LARGE = 413 ,
  SKW_ROOM_SUBSCRIPTION_ERR_TOO_MANY_REQUESTS = 429 , SKW_ROOM_SUBSCRIPTION_ERR_SERVER_INTERNAL = 500 , SKW_ROOM_SUBSCRIPTION_ERR_SERVER_BUSY = 503
}
 Subscription APIのエラーコード。 [詳解]

関数

skw_room_subscription_err_t skw_room_subscription_register_handlers (const skw_room_subscription_handlers_t *handlers)
 Subscriptionのイベント通知を受け取るハンドラを登録します。登録できる集合は単一で、再登録すると上書きされます。
skw_room_subscription_err_t skw_room_subscription_unregister_handlers (void)
 登録済みのイベント通知ハンドラを解除します。

詳解

Subscriptionのイベントハンドラの登録。

型定義詳解

◆ skw_room_subscription_on_audio_frame_t

typedef void(* skw_room_subscription_on_audio_frame_t) (const char *subscription_id, const char *publication_id, const uint8_t *data, size_t length, uint32_t pts)

SubscribeしているStreamからエンコード済み音声フレーム(Opus)を受信したときに呼ばれます。ハンドラ内からunsubscribe等の破棄を伴うAPIとsubscribeは呼び出せません。

引数
subscription_id対象のSubscriptionのID
publication_id対象のPublicationのID
data受信したフレームデータ(呼び出し中のみ有効)
length受信したフレームデータの長さ(バイト数)
ptsフレームの表示タイムスタンプ(ミリ秒)

◆ skw_room_subscription_on_data_t

typedef void(* skw_room_subscription_on_data_t) (const char *subscription_id, const char *publication_id, const uint8_t *data, size_t length)

SubscribeしているStreamからデータを受信したときに呼ばれます。ハンドラ内からunsubscribe等の破棄を伴うAPIとsubscribeは呼び出せません。

引数
subscription_id対象のSubscriptionのID
publication_id対象のPublicationのID
data受信したデータ(呼び出し中のみ有効)
length受信したデータの長さ(バイト数)

◆ skw_room_subscription_on_video_frame_t

typedef void(* skw_room_subscription_on_video_frame_t) (const char *subscription_id, const char *publication_id, const uint8_t *data, size_t length, uint32_t pts)

SubscribeしているStreamからエンコード済み映像フレーム(H.264)を受信したときに呼ばれます。ハンドラ内からunsubscribe等の破棄を伴うAPIとsubscribeは呼び出せません。

引数
subscription_id対象のSubscriptionのID
publication_id対象のPublicationのID
data受信したフレームデータ(呼び出し中のみ有効)
length受信したフレームデータの長さ(バイト数)
ptsフレームの表示タイムスタンプ(ミリ秒)

列挙型詳解

◆ skw_room_subscription_err_t

Subscription APIのエラーコード。

列挙値
SKW_ROOM_SUBSCRIPTION_OK 

正常終了

SKW_ROOM_SUBSCRIPTION_ERR_NULL_ARGS 

引数がNULL

SKW_ROOM_SUBSCRIPTION_ERR_INVALID_ARGS 

引数の値が不正

SKW_ROOM_SUBSCRIPTION_ERR_CONTEXT_NOT_INITED 

Contextが初期化されていない

SKW_ROOM_SUBSCRIPTION_ERR_CONTEXT_NOT_SETUP 

Contextがセットアップされていない

SKW_ROOM_SUBSCRIPTION_ERR_REQUEST_FAILED 

リクエストの実行に失敗

SKW_ROOM_SUBSCRIPTION_ERR_MUTEX_UNLOCK_FAILED 

Subscription APIのアンロックに失敗

SKW_ROOM_SUBSCRIPTION_ERR_CALLED_IN_HANDLER 

イベントハンドラ内から呼ばれた

SKW_ROOM_SUBSCRIPTION_ERR_SEND_FAILED 

リクエストの送信に失敗

SKW_ROOM_SUBSCRIPTION_ERR_TIMEOUT 

応答の受信がタイムアウトした

SKW_ROOM_SUBSCRIPTION_ERR_CONNECTION_CLOSED 

応答待ちの間に接続が切断された

SKW_ROOM_SUBSCRIPTION_ERR_RESPONSE_TOO_LARGE 

応答が受信バッファのサイズを超過した

SKW_ROOM_SUBSCRIPTION_ERR_RESPONSE_PARSE_FAILED 

応答の解析に失敗した

SKW_ROOM_SUBSCRIPTION_ERR_UNKNOWN 

不明なエラー

SKW_ROOM_SUBSCRIPTION_ERR_BAD_REQUEST 

リクエストパラメータが不正

SKW_ROOM_SUBSCRIPTION_ERR_UNAUTHORIZED 

AuthTokenが不正、もしくは有効期限切れ

SKW_ROOM_SUBSCRIPTION_ERR_FORBIDDEN 

必要な権限が無い

SKW_ROOM_SUBSCRIPTION_ERR_NOT_FOUND 

リソースが見つからない

SKW_ROOM_SUBSCRIPTION_ERR_ALREADY_EXIST 

すでに存在するリソースを作成しようとした

SKW_ROOM_SUBSCRIPTION_ERR_TOO_LARGE 

リクエストパラメータが大きすぎる

SKW_ROOM_SUBSCRIPTION_ERR_TOO_MANY_REQUESTS 

レートリミット超過

SKW_ROOM_SUBSCRIPTION_ERR_SERVER_INTERNAL 

サーバー内部エラー

SKW_ROOM_SUBSCRIPTION_ERR_SERVER_BUSY 

サーバーが過負荷で一時的に利用できない

関数詳解

◆ skw_room_subscription_register_handlers()

skw_room_subscription_err_t skw_room_subscription_register_handlers ( const skw_room_subscription_handlers_t * handlers)

Subscriptionのイベント通知を受け取るハンドラを登録します。登録できる集合は単一で、再登録すると上書きされます。

引数
handlersSubscriptionのイベント通知を受け取るハンドラのポインタ
戻り値
エラーコード

◆ skw_room_subscription_unregister_handlers()

skw_room_subscription_err_t skw_room_subscription_unregister_handlers ( void )

登録済みのイベント通知ハンドラを解除します。

戻り値
エラーコード