再生開始の同期

サンプルのディレクトリ

/cri/pc/samples/criatomex/pause_playback

サンプルの解説

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

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

再生準備完了後、実際に再生を開始するためには、criAtomExPlayback_Pause関数を使い、再生IDに対して一時停止の解除を行います。
    CriAtomExPlayeBackId playback_id; /* 再生ID */
    CriAtomExPlayerHn player;

    /* 再生準備開始 */
    criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER1);
    playback_id = criAtomExPlayer_Prepare(player);
    for(;;) {
        CriAtomExPlaybackStatus playback_status;
        sleep(1);
        criAtomEx_ExecuteMain();
        playback_status = criAtomExPlayback_GetStatus(playback_id);
        if (playback_status == CRIATOMEXPLAYBACK_STATUS_PLAYING) {
            /* 再生準備完了 */
            break;
        }
    }

    /* 発音開始(再生IDの一時停止解除) */
    criAtomExPlayback_Pause(playback_id, CRI_FALSE);

再生開始タイミングを同期させる場合は、とりあえず一つのプレーヤーで複数のボイスに対して再生準備を済ませておき、 プレーヤーの一時停止を解除することで、一斉に発音開始させます。
この場合の再生準備の完了は、CriAtomExPlayerHnのステータスで確認します。
    CriAtomExPlayerHn player;

    /* 再生準備開始 */
    criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER1);
    criAtomExPlayer_Prepare(player);
    criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER2);
    criAtomExPlayer_Prepare(player);
    criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_THUNDER3);
    criAtomExPlayer_Prepare(player);

    for(;;) {
        CriAtomExPlayerStatus player_status;
        sleep(1);
        criAtomEx_ExecuteMain();
        player_status = criAtomExPlayer_GetStatus(player);
        if (player_status == CRIATOMEXPLAYER_STATUS_PLAYING) {
            /* 再生準備完了 */
            break;
        }
    }

    /* 一斉に発音開始(開始タイミングの同期) */
    criAtomExPlayer_Pause(player, CRI_FALSE);



CRI Middleware logo Copyright (c) 2006-2018 CRI Middleware Co., Ltd.