CRI ADX  Last Updated: 2024-03-21 14:32 p
ユーザーPCM出力

サンプルのディレクトリ

/cri/pc/samples/criatomex/user_pcm_output

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

/cri/common/smpdata/criatomex/
  • SampleProject.acf
  • AtomCueSheet.acb
  • AtomCueSheet.awb

サンプルの解説

criAtomEx_Initialize_WASAPI 関数を実行すると、Atomライブラリは内部的にWASAPIを初期化し、音声の出力に使用します。
これに対し、初期化関数に criAtomEx_InitializeForUserPcmOutput_PC 関数を使用した場合、AtomライブラリはWASAPIの初期化を行いません。
(Atomライブラリ内でサウンドを出力する処理が行われなくなります。)
criAtomEx_InitializeForUserPcmOutput_PC 関数を使用してライブラリを初期化する場合、サウンドの出力処理はアプリケーション側で行う必要があります。
具体的には、 criAtomExAsr_GetPcmDataFloat32 関数でAtomライブラリから出力用のPCMデータを取得し、アプリケーション側で音声出力処理を行う形になります。
/* メイン処理 */
int main(int argc, char *argv[])
{
/* ユーザーPCM出力用にライブラリを初期化 */
}
/* サウンド出力スレッド処理 */
static CriUint32 user_sound_output_func(
void *obj, CriUint32 nch, CriFloat32 *sample[], CriUint32 nsmpl)
{
/* PCMデータを取得 */
num_written = criAtomExAsr_GetPcmDataFloat32(nch, nsmpl, sample);
/* 取得したPCMデータを出力 */
}
CriSint32 criAtomExAsr_GetPcmDataFloat32(CriSint32 output_channels, CriSint32 output_samples, CriFloat32 *output_buffer[])
PCMデータの取得
#define criAtomEx_InitializeForUserPcmOutput_PC(config, work, work_size)
ユーザPCM出力用ライブラリ初期化
Definition: cri_atom_pc.h:551
[備考]
criAtomEx_InitializeForUserPcmOutput_PC 関数を使用してライブラリを初期化した場合、ライブラリの終了処理を criAtomEx_FinalizeForUserPcmOutput_PC 関数を用いて行う必要があります。
注意
criAtomExAsr_GetPcmDataFloat32 呼び出しは、独立したスレッド上で定期的に行う必要があります。
現状、AtomライブラリのAPIには、PCMデータが出力されるまで処理を返さないものがいくつか存在します。
(ボイスプールの破棄処理等。)
こういった関数と本関数とを同一スレッド上で順番に呼び出すと、当該APIがPCMデータの出力を永遠に待ち続ける形になり、処理が復帰しなくなる可能性があります。