CRI ADX  Last Updated: 2024-09-25 17:41 p
再生開始の同期

サンプルのディレクトリ

/cri/pc/samples/criatomex/pause_playback

サンプルで使用しているデータ

/cri/common/smpdata/criatomex/
  • SampleAdxPack.awb

サンプルの解説

複数本のストリーミング再生の開始で同期をとりたい場合は、 criAtomExPlayer_Prepare 関数を使います。
criAtomExPlayer_Prepare 関数を使うと、すぐに発音できる直前まで再生開始の準備を進めます。


再生準備の完了は、再生IDのステータスが CRIATOMEXPLAYBACK_STATUS_PLAYING になることで確認できます。
(再生を開始できない状態は CRIATOMEXPLAYBACK_STATUS_PREP です。)
再生IDは criAtomExPlayer_Prepare 関数の戻り値として取得できるので、アプリケーション側で保持してください。


再生準備完了後、実際に再生を開始するためには、 criAtomExPlayback_Pause 関数を使い、再生IDに対して一時停止の解除を行います。
CriAtomExPlayeBackId playback_id; /* 再生ID */
/* 再生準備開始 */
criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER1);
playback_id = criAtomExPlayer_Prepare(player);
for(;;) {
CriAtomExPlaybackStatus playback_status;
sleep(1);
playback_status = criAtomExPlayback_GetStatus(playback_id);
if (playback_status == CRIATOMEXPLAYBACK_STATUS_PLAYING) {
/* 再生準備完了 */
break;
}
}
/* 発音開始(再生IDの一時停止解除) */
criAtomExPlayback_Pause(playback_id, CRI_FALSE);
void criAtomEx_ExecuteMain(void)
サーバー処理の実行
CriAtomExPlaybackStatus criAtomExPlayback_GetStatus(CriAtomExPlaybackId id)
再生ステータスの取得
void criAtomExPlayback_Pause(CriAtomExPlaybackId id, CriBool sw)
再生音のポーズ/ポーズ解除
enum CriAtomExPlaybackStatusTag CriAtomExPlaybackStatus
再生ステータス
@ CRIATOMEXPLAYBACK_STATUS_PLAYING
Definition: cri_le_atom_ex.h:4186
CriAtomExPlayerObj * CriAtomExPlayerHn
プレーヤーハンドル
Definition: cri_le_atom_ex.h:3628
CriAtomExPlaybackId criAtomExPlayer_Prepare(CriAtomExPlayerHn player)
再生の準備
void criAtomExPlayer_SetCueId(CriAtomExPlayerHn player, CriAtomExAcbHn acb_hn, CriAtomExCueId id)
音声データのセット(キューID指定)


再生開始タイミングを同期させる場合は、とりあえず一つのプレーヤーで複数のボイスに対して再生準備を済ませておき、 プレーヤーの一時停止を解除することで、一斉に発音開始させます。
この場合の再生準備の完了は、 CriAtomExPlayerHn のステータスで確認します。
/* 再生準備開始 */
criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER1);
criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER2);
criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER3);
for(;;) {
CriAtomExPlayerStatus player_status;
sleep(1);
player_status = criAtomExPlayer_GetStatus(player);
if (player_status == CRIATOMEXPLAYER_STATUS_PLAYING) {
/* 再生準備完了 */
break;
}
}
/* 一斉に発音開始(開始タイミングの同期) */
criAtomExPlayer_Pause(player, CRI_FALSE);
CriAtomExPlayerStatus criAtomExPlayer_GetStatus(CriAtomExPlayerHn player)
ステータスの取得
enum CriAtomExPlayerStatusTag CriAtomExPlayerStatus
プレーヤーステータス
void criAtomExPlayer_Pause(CriAtomExPlayerHn player, CriBool sw)
ポーズ/ポーズ解除
@ CRIATOMEXPLAYER_STATUS_PLAYING
Definition: cri_le_atom_ex.h:3675