大量ストリーミングボイス再生

サンプルのディレクトリ

/cri/pc/samples/criatomex/playback_many_streaming_voices

サンプルの解説

ストリーミングボイスを大量に用意して、ストリーミングデータを大量に再生します。
#define SMP_NUM_VOICE   (100)

CriFsConfig fs_config;
CriAtomExConfig atomex_config;
CriAtomExAcbHn acb_hn;
CriAtomExAdxVoicePoolConfig adxvp_config;
CriAtomExVoicePoolHn voice_pool;
CriAtomExPlayerHn player;

    /* CRI File Systemの設定パラメーターをデフォルト値で初期化 */
    criFs_SetDefaultConfig(&fs_config);
    /* ローダ数を(デフォルト値+再生ボイス数)分に増やす */
    fs_config.num_loaders = fs_config.num_loaders + SMP_NUM_VOICE;
    /* ファイルハンドル数を(デフォルト値+再生ボイス数)分に増やす */
    fs_config.max_files = fs_config.max_files + SMP_NUM_VOICE;

    /* ライブラリ設定をデフォルト値で初期化 */
    criAtomEx_SetDefaultConfig(&atomex_config);
    /* バーチャルボイス数を設定 */
    atomex_config.max_virtual_voices = SMP_NUM_VOICE;
    /* CRI File Systemの初期化パラメーターを渡す */
    atomex_config.fs_config = &fs_config;
    /* ライブラリの初期化 */
    criAtomEx_Initialize(&atomex_config, NULL, 0);

    /* ACFファイルの読み込みと登録 */
    criAtomEx_RegisterAcfFile(NULL, PATH ACF_FILE, NULL, 0);

    /* ACBファイルを読み込み、ACBハンドルを作成 */
    acb_hn = criAtomExAcb_LoadAcbFile(NULL, PATH ACB_FILE, NULL, PATH AWB_FILE, NULL, 0);

    /* ADXボイスプールの作成 */
    criAtomExVoicePool_SetDefaultConfigForAdxVoicePool(&adxvp_config);
    adxvp_config.num_voices = SMP_NUM_VOICE;
    adxvp_config.player_config.streaming_flag = CRI_TRUE;
    voice_pool = criAtomExVoicePool_AllocateAdxVoicePool(&adxvp_config, NULL, 0);

    /* プレーヤーの作成 */
    player = criAtomExPlayer_Create(NULL, NULL, 0);
    /* キューIDの指定 */
    criAtomExPlayer_SetCueId(player, acb_hn, CRI_ATOMCUESHEET_MUSIC_LOOP);
    /* 再生の開始 */
    criAtomExPlayer_Start(player);

CRI AtomはCRI File Systemライブラリを介してファイルアクセスを行っており、 1ストリーミング処理あたり1つのローダーハンドルを消費します。
つまり、CRI Atomでストリーミングデータを大量に再生するためには、 CRI File System側のローダーハンドル数、ファイルハンドル数も増やす必要があります。

CRI File Systemのパラメーター設定をアプリケーション側で変更する場合は、CriFsConfig構造体の値を変更した後、 CriAtomExConfig構造体のfs_configメンバーに登録し、CRI Atomを初期化します。

また、ストリーミング再生を行うので、ボイスプール作成時に streaming_flag メンバーをCRI_TRUEに設定します。

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