CRI ADX  Last Updated: 2024-07-17 10:48 p
用户PCM输出

示例目录

/cri/pc/samples/criatomex/user_pcm_output


示例描述

执行::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[])
Get the PCM data
#define criAtomEx_InitializeForUserPcmOutput_PC(config, work, work_size)
Initialize the user PCM output library
Definition: cri_le_atom_pc.h:543
[备注]
使用::criAtomEx_InitializeForUserPcmOutput_PC函数初始化程序库时,必须使用::criAtomEx_FinalizeForUserPcmOutput_PC函数执行程序库的结束处理。
注意
必须在独立的线程上定期执行::criAtomExAsr_GetPcmDataFloat32调用。
目前,有一些Atom运行库的API在输出PCM数据之前不会返回处理。
(例如Voice池的丢弃处理等。)
如果在同一线程上按顺序调用这些函数和本函数,则相应API可能会永远等待PCM数据的输出,可能导致处理无法恢复。