CRI ADX  Last Updated: 2024-03-21 14:32 p
オンメモリ再生

サンプルのディレクトリ

/cri/pc/samples/criatomex/playback_memory

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

/cri/common/smpdata/criatomex/
  • music_loop.adx

サンプルの解説

メモリ上に読み込んだ音声データを、メモリアドレスとサイズを指定して再生することができます。
メモリの音声データを再生する、この方法をオンメモリ再生と呼びます。


オンメモリ再生はストリーミングを行う必要がないため、データ供給の滞りによる音途切れは発生しません。
また、全データがバッファリング済みなので、再生開始レイテンシも非常に低く抑えることができます。
以下、オンメモリ再生のコードを示します。
CriFsStdioHn fp;
CriSint64 filesize;
CriSint32 mem_file;
/* ファイルオープン */
fp = criFsStdio_OpenFile(NULL, PATH FILE, "r");
/* ファイルサイズを取得 */
filesize = criFsStdio_GetFileSize(fp);
/* ファイルサイズ分のメモリを確保 */
mem_file = user_alloc(NULL, (CriSint32)filesize);
/* 再生データのロード */
criFsStdio_ReadFile(fp, filesize, mem_file, filesize);
/* ファイルのクローズ */
/* ボイスプールの作成 */
voice_pool = criAtomExVoicePool_AllocateAdxVoicePool(NULL, NULL, 0);
/* プレーヤーの作成 */
player = criAtomExPlayer_Create(NULL, NULL, 0);
/* 再生データを読み込んだメモリアドレスとサイズを設定 */
criAtomExPlayer_SetData(player, mem_file, (CriSint32)filesize);
/* 再生の開始 */
CriFsStdioHn criFsStdio_OpenFile(CriFsBinderHn bndr, const char *fname, const char *mode)
ANSI C に準じたファイルオープン
CriError criFsStdio_CloseFile(CriFsStdioHn stdhn)
ANSI C に準じたファイルクローズ
CriSint64 criFsStdio_GetFileSize(CriFsStdioHn stdhn)
ANSI C に準じたAPIに基づくファイルサイズ取得
CriSint64 criFsStdio_ReadFile(CriFsStdioHn stdhn, CriSint64 rsize, void *buf, CriSint64 bsize)
ANSI C に準じたAPIに基づくファイルからのデータ読込
void criAtomExPlayer_SetData(CriAtomExPlayerHn player, void *buffer, CriSint32 size)
音声データのセット(オンメモリデータの指定)
CriAtomExPlaybackId criAtomExPlayer_Start(CriAtomExPlayerHn player)
再生の開始
CriAtomExPlayerObj * CriAtomExPlayerHn
プレーヤーハンドル
Definition: cri_atom_ex.h:3656
CriAtomExPlayerHn criAtomExPlayer_Create(const CriAtomExPlayerConfig *config, void *work, CriSint32 work_size)
AtomExPlayerの作成
struct CriAtomExVoicePoolTag * CriAtomExVoicePoolHn
ボイスプールハンドル
Definition: cri_atom_ex.h:3254
CriAtomExVoicePoolHn criAtomExVoicePool_AllocateAdxVoicePool(const CriAtomExAdxVoicePoolConfig *config, void *work, CriSint32 work_size)
ADXボイスプールの作成


オンメモリ再生の手順は次のようになります。
  1. メモリ上に音声データ(*.adxファイルや*.hcaファイル)を読み込む
  2. criAtomExPlayer_SetData 関数を使い、音声データの読み込みアドレスとサイズをプレーヤーに設定する
  3. criAtomExPlayer_Start 関数で再生を開始する