CRI ADX  Last Updated: 2024-07-17 10:48 p
内存播放

示例目录

/cri/pc/samples/criatomex/playback_memory


示例描述

可以通过指定内存地址和大小来播放加载到内存中的音频数据。
这种播放内存中的音频数据的方法称为内存播放


由于内存播放不需要流,因此声音不会因数据供应延迟而中断。
此外,由于所有数据都已缓冲完毕,因此可以将播放开始延迟降至极低。
内存播放的代码如下。
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);
/* 关闭文件 */
criFsStdio_CloseFile(fp);
/* 创建Voice池 */
voice_pool = criAtomExVoicePool_AllocateAdxVoicePool(NULL, NULL, 0);
/* 创建Player */
player = criAtomExPlayer_Create(NULL, NULL, 0);
/* 设置读取播放数据的内存地址和大小 */
criAtomExPlayer_SetData(player, mem_file, (CriSint32)filesize);
/* 开始播放 */
void criAtomExPlayer_SetData(CriAtomExPlayerHn player, void *buffer, CriSint32 size)
Set the sound data to play (specifying in-memory data)
CriAtomExPlaybackId criAtomExPlayer_Start(CriAtomExPlayerHn player)
Start the playback
CriAtomExPlayerObj * CriAtomExPlayerHn
Player handle
Definition: cri_le_atom_ex.h:3622
CriAtomExPlayerHn criAtomExPlayer_Create(const CriAtomExPlayerConfig *config, void *work, CriSint32 work_size)
Create an AtomEx player
struct CriAtomExVoicePoolTag * CriAtomExVoicePoolHn
Voice Pool handle
Definition: cri_le_atom_ex.h:3220
CriAtomExVoicePoolHn criAtomExVoicePool_AllocateAdxVoicePool(const CriAtomExAdxVoicePoolConfig *config, void *work, CriSint32 work_size)
Create an ADX Voice Pool


内存播放的步骤如下。


  1. 在内存中读取音频数据(*.adx文件和*.hca文件)
  2. 使用::criAtomExPlayer_SetData函数,为Player设置音频数据的读取地址和大小
  3. 使用::criAtomExPlayer_Start函数开始播放