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

Publicationのメタデータ更新・フレーム送信とイベントハンドラの登録。 [詳解]

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

[ソースコード]

データ構造

struct  skw_room_publication_data_field_t
 Publicationの取得結果を受け取る出力先。NULLを設定したフィールドには格納されない。 [詳解]
 skw_room_publication_update_metadataのパラメータ。 [詳解]
struct  skw_room_publication_send_data_params_t
 skw_room_publication_send_dataのパラメータ。 [詳解]
struct  skw_room_publication_send_frame_params_t
 skw_room_publication_send_video_frame/send_audio_frameのパラメータ。 [詳解]
struct  skw_room_publication_handlers_t
 Publicationの各イベント通知を受け取るハンドラ。不要なイベントのフィールドはNULLにできる。 [詳解]

マクロ定義

#define SKW_ROOM_PUBLICATION_ID_SIZE   (36+1)
 PublicationIDを格納するバッファのサイズ(NUL終端を含む)。
#define SKW_ROOM_PUBLICATION_METADATA_SIZE   (1024+1)
 PublicationMetadataを格納するバッファのサイズ(NUL終端を含む)。
#define SKW_ROOM_PUBLICATION_UPDATE_METADATA_PARAMS_INIT(...)
 skw_room_publication_update_metadata_params_tの初期化子。指定しなかったフィールドには既定値が入ります。
#define SKW_ROOM_PUBLICATION_SEND_DATA_PARAMS_INIT(...)
 skw_room_publication_send_data_params_tの初期化子。指定しなかったフィールドには既定値が入ります。
#define SKW_ROOM_PUBLICATION_SEND_FRAME_PARAMS_INIT(...)
 skw_room_publication_send_frame_params_tの初期化子。指定しなかったフィールドには既定値が入ります。

型定義

typedef char skw_room_publication_id_t[SKW_ROOM_PUBLICATION_ID_SIZE]
 PublicationIDを格納する文字列型(NUL終端を含む)。
typedef char skw_room_publication_metadata_t[SKW_ROOM_PUBLICATION_METADATA_SIZE]
 PublicationMetadataを格納する文字列型(NUL終端を含む)。
typedef void(* skw_room_publication_on_keyframe_request_t) (const char *publication_id)
 キーフレームの生成要求を受け取るハンドラ。subscriberが映像を復号できないときに呼ばれます。

列挙型

enum  skw_room_publication_err_t {
  SKW_ROOM_PUBLICATION_OK = 0 , SKW_ROOM_PUBLICATION_ERR_NULL_ARGS = 1 , SKW_ROOM_PUBLICATION_ERR_INVALID_ARGS = 2 , SKW_ROOM_PUBLICATION_ERR_CONTEXT_NOT_INITED = 3 ,
  SKW_ROOM_PUBLICATION_ERR_CONTEXT_NOT_SETUP = 4 , SKW_ROOM_PUBLICATION_ERR_REQUEST_FAILED = 5 , SKW_ROOM_PUBLICATION_ERR_MUTEX_UNLOCK_FAILED = 6 , SKW_ROOM_PUBLICATION_ERR_CALLED_IN_HANDLER = 7 ,
  SKW_ROOM_PUBLICATION_ERR_SEND_FAILED = 8 , SKW_ROOM_PUBLICATION_ERR_TIMEOUT = 9 , SKW_ROOM_PUBLICATION_ERR_CONNECTION_CLOSED = 10 , SKW_ROOM_PUBLICATION_ERR_RESPONSE_TOO_LARGE = 11 ,
  SKW_ROOM_PUBLICATION_ERR_RESPONSE_PARSE_FAILED = 12 , SKW_ROOM_PUBLICATION_ERR_NOT_JOINED = 13 , SKW_ROOM_PUBLICATION_ERR_CONTENT_TYPE_MISMATCH = 14 , SKW_ROOM_PUBLICATION_ERR_NOT_PUBLISHED = 15 ,
  SKW_ROOM_PUBLICATION_ERR_UNKNOWN = 99 , SKW_ROOM_PUBLICATION_ERR_BAD_REQUEST = 400 , SKW_ROOM_PUBLICATION_ERR_UNAUTHORIZED = 401 , SKW_ROOM_PUBLICATION_ERR_FORBIDDEN = 403 ,
  SKW_ROOM_PUBLICATION_ERR_NOT_FOUND = 404 , SKW_ROOM_PUBLICATION_ERR_ALREADY_EXIST = 409 , SKW_ROOM_PUBLICATION_ERR_TOO_LARGE = 413 , SKW_ROOM_PUBLICATION_ERR_TOO_MANY_REQUESTS = 429 ,
  SKW_ROOM_PUBLICATION_ERR_SERVER_INTERNAL = 500 , SKW_ROOM_PUBLICATION_ERR_SERVER_BUSY = 503
}
 Publication APIのエラーコード。 [詳解]
enum  skw_room_publication_type_t { SKW_ROOM_PUBLICATION_TYPE_P2P = 0 , SKW_ROOM_PUBLICATION_TYPE_SFU = 1 }
 Publicationの配信方式。 [詳解]
enum  skw_room_publication_content_type_t { SKW_ROOM_PUBLICATION_CONTENT_TYPE_VIDEO = 0 , SKW_ROOM_PUBLICATION_CONTENT_TYPE_AUDIO = 1 , SKW_ROOM_PUBLICATION_CONTENT_TYPE_DATA = 2 }
 Publicationのコンテンツ種別。 [詳解]

関数

skw_room_publication_err_t skw_room_publication_register_handlers (const skw_room_publication_handlers_t *handlers)
 Publicationのイベント通知を受け取るハンドラを登録します。登録できる集合は単一で、再登録すると上書きされます。
skw_room_publication_err_t skw_room_publication_unregister_handlers (void)
 登録済みのイベント通知ハンドラを解除します。
skw_room_publication_err_t skw_room_publication_update_metadata (const skw_room_publication_update_metadata_params_t *params)
 PublicationのMetadataを更新します。
skw_room_publication_err_t skw_room_publication_send_data (const skw_room_publication_send_data_params_t *params)
 PublishしたDataStreamへデータを送信します。Streamが確立している全subscriberへ送信されます。 subscriberがいない場合は何も送信せずに成功を返します。
skw_room_publication_err_t skw_room_publication_send_video_frame (const skw_room_publication_send_frame_params_t *params)
 PublishしたVideoStreamへエンコード済みフレーム(H.264)を送信します。Streamが確立している全subscriberへ送信されます。 subscriberがいない場合は何も送信せずに成功を返します。
skw_room_publication_err_t skw_room_publication_send_audio_frame (const skw_room_publication_send_frame_params_t *params)
 PublishしたAudioStreamへエンコード済みフレーム(Opus)を送信します。Streamが確立している全subscriberへ送信されます。 subscriberがいない場合は何も送信せずに成功を返します。

詳解

Publicationのメタデータ更新・フレーム送信とイベントハンドラの登録。

マクロ定義詳解

◆ SKW_ROOM_PUBLICATION_SEND_DATA_PARAMS_INIT

#define SKW_ROOM_PUBLICATION_SEND_DATA_PARAMS_INIT ( ...)
値:
{__VA_ARGS__}

skw_room_publication_send_data_params_tの初期化子。指定しなかったフィールドには既定値が入ります。

◆ SKW_ROOM_PUBLICATION_SEND_FRAME_PARAMS_INIT

#define SKW_ROOM_PUBLICATION_SEND_FRAME_PARAMS_INIT ( ...)
値:
{__VA_ARGS__}

skw_room_publication_send_frame_params_tの初期化子。指定しなかったフィールドには既定値が入ります。

◆ SKW_ROOM_PUBLICATION_UPDATE_METADATA_PARAMS_INIT

#define SKW_ROOM_PUBLICATION_UPDATE_METADATA_PARAMS_INIT ( ...)
値:
{__VA_ARGS__}

skw_room_publication_update_metadata_params_tの初期化子。指定しなかったフィールドには既定値が入ります。

型定義詳解

◆ skw_room_publication_on_keyframe_request_t

typedef void(* skw_room_publication_on_keyframe_request_t) (const char *publication_id)

キーフレームの生成要求を受け取るハンドラ。subscriberが映像を復号できないときに呼ばれます。

引数
publication_id要求されたPublicationのID

列挙型詳解

◆ skw_room_publication_content_type_t

Publicationのコンテンツ種別。

列挙値
SKW_ROOM_PUBLICATION_CONTENT_TYPE_VIDEO 

映像

SKW_ROOM_PUBLICATION_CONTENT_TYPE_AUDIO 

音声

SKW_ROOM_PUBLICATION_CONTENT_TYPE_DATA 

データ

◆ skw_room_publication_err_t

Publication APIのエラーコード。

列挙値
SKW_ROOM_PUBLICATION_OK 

正常終了

SKW_ROOM_PUBLICATION_ERR_NULL_ARGS 

引数がNULL

SKW_ROOM_PUBLICATION_ERR_INVALID_ARGS 

引数の値が不正

SKW_ROOM_PUBLICATION_ERR_CONTEXT_NOT_INITED 

Contextが初期化されていない

SKW_ROOM_PUBLICATION_ERR_CONTEXT_NOT_SETUP 

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

SKW_ROOM_PUBLICATION_ERR_REQUEST_FAILED 

リクエストの実行に失敗

SKW_ROOM_PUBLICATION_ERR_MUTEX_UNLOCK_FAILED 

Publication APIのアンロックに失敗

SKW_ROOM_PUBLICATION_ERR_CALLED_IN_HANDLER 

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

SKW_ROOM_PUBLICATION_ERR_SEND_FAILED 

リクエストの送信に失敗

SKW_ROOM_PUBLICATION_ERR_TIMEOUT 

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

SKW_ROOM_PUBLICATION_ERR_CONNECTION_CLOSED 

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

SKW_ROOM_PUBLICATION_ERR_RESPONSE_TOO_LARGE 

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

SKW_ROOM_PUBLICATION_ERR_RESPONSE_PARSE_FAILED 

応答の解析に失敗した

SKW_ROOM_PUBLICATION_ERR_NOT_JOINED 

LocalPersonが存在しない

SKW_ROOM_PUBLICATION_ERR_CONTENT_TYPE_MISMATCH 

Publicationのコンテンツ種別と送信APIが一致しない

SKW_ROOM_PUBLICATION_ERR_NOT_PUBLISHED 

指定したPublicationをPublishしていない

SKW_ROOM_PUBLICATION_ERR_UNKNOWN 

不明なエラー

SKW_ROOM_PUBLICATION_ERR_BAD_REQUEST 

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

SKW_ROOM_PUBLICATION_ERR_UNAUTHORIZED 

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

SKW_ROOM_PUBLICATION_ERR_FORBIDDEN 

必要な権限が無い

SKW_ROOM_PUBLICATION_ERR_NOT_FOUND 

リソースが見つからない

SKW_ROOM_PUBLICATION_ERR_ALREADY_EXIST 

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

SKW_ROOM_PUBLICATION_ERR_TOO_LARGE 

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

SKW_ROOM_PUBLICATION_ERR_TOO_MANY_REQUESTS 

レートリミット超過

SKW_ROOM_PUBLICATION_ERR_SERVER_INTERNAL 

サーバー内部エラー

SKW_ROOM_PUBLICATION_ERR_SERVER_BUSY 

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

◆ skw_room_publication_type_t

Publicationの配信方式。

列挙値
SKW_ROOM_PUBLICATION_TYPE_P2P 

P2P

SKW_ROOM_PUBLICATION_TYPE_SFU 

SFU

関数詳解

◆ skw_room_publication_register_handlers()

skw_room_publication_err_t skw_room_publication_register_handlers ( const skw_room_publication_handlers_t * handlers)

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

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

◆ skw_room_publication_send_audio_frame()

skw_room_publication_err_t skw_room_publication_send_audio_frame ( const skw_room_publication_send_frame_params_t * params)

PublishしたAudioStreamへエンコード済みフレーム(Opus)を送信します。Streamが確立している全subscriberへ送信されます。 subscriberがいない場合は何も送信せずに成功を返します。

引数
params送信パラメータのポインタ
戻り値
エラーコード

◆ skw_room_publication_send_data()

skw_room_publication_err_t skw_room_publication_send_data ( const skw_room_publication_send_data_params_t * params)

PublishしたDataStreamへデータを送信します。Streamが確立している全subscriberへ送信されます。 subscriberがいない場合は何も送信せずに成功を返します。

引数
params送信パラメータのポインタ
戻り値
エラーコード

◆ skw_room_publication_send_video_frame()

skw_room_publication_err_t skw_room_publication_send_video_frame ( const skw_room_publication_send_frame_params_t * params)

PublishしたVideoStreamへエンコード済みフレーム(H.264)を送信します。Streamが確立している全subscriberへ送信されます。 subscriberがいない場合は何も送信せずに成功を返します。

引数
params送信パラメータのポインタ
戻り値
エラーコード

◆ skw_room_publication_unregister_handlers()

skw_room_publication_err_t skw_room_publication_unregister_handlers ( void )

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

戻り値
エラーコード

◆ skw_room_publication_update_metadata()

skw_room_publication_err_t skw_room_publication_update_metadata ( const skw_room_publication_update_metadata_params_t * params)

PublicationのMetadataを更新します。

引数
params更新パラメータのポインタ
戻り値
エラーコード