CRI ADX  Last Updated: 2024-07-17 10:48 p
Cue ID播放

示例目录

/cri/pc/samples/criatomex/playback_cue


示例描述

播放用创建工具创建的Cue的步骤如下。
  1. 使用::criAtomEx_RegisterAcfFile函数注册创建工具输出的ACF文件 。
  2. 使用::criAtomEx_LoadAcbFile函数注册由创建工具输出的ACB文件和AWB文件。
  3. 创建Voice池和D-BAS、Player以播放Cue。
  4. 使用::criAtomExPlayer_SetCueId函数,为Player指定要播放的Cue ID。
  5. 使用::criAtomExPlayer_Start函数开始播放Cue。
指定Cue ID播放音频的代码如下。
/* 创建可流播放的Voice池 */
vp_config.player_config.streaming_flag = CRI_TRUE;
stmvoice_pool = criAtomExVoicePool_AllocateStandardVoicePool(&vp_config, NULL, 0);
/* 创建D-BAS */
dbas_id = criAtomExDbas_Create(NULL, NULL, 0);
/* 加载ACB文件 */
acb_hn = criAtomExAcb_LoadAcbFile(NULL, PATH ACB_FILE, NULL, PATH AWB_FILE, NULL, 0);
/* 创建Player */
player = criAtomExPlayer_Create(NULL, NULL, 0);
/* 指定要播放的Cue ID */
criAtomExPlayer_SetCueId(player, acb_hn, 15);
/* 开始播放 */
CriAtomDbasId CriAtomExDbasId
AtomEx D-BAS ID
Definition: cri_le_atom_ex.h:4450
#define criAtomExDbas_Create(config, work, work_size)
Create a D-BAS
Definition: cri_le_atom_ex.h:811
CriAtomExAcbObj * CriAtomExAcbHn
ACB handle
Definition: cri_le_atom_ex.h:3033
CriAtomExAcbHn criAtomExAcb_LoadAcbFile(CriFsBinderHn acb_binder, const CriChar8 *acb_path, CriFsBinderHn awb_binder, const CriChar8 *awb_path, void *work, CriSint32 work_size)
Load an ACB file
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
void criAtomExPlayer_SetCueId(CriAtomExPlayerHn player, CriAtomExAcbHn acb_hn, CriAtomExCueId id)
Set the sound data to play (specifying a Cue ID)
#define criAtomExVoicePool_SetDefaultConfigForStandardVoicePool(p_config)
Assign the default values to the configuration structure used to create a standard Voice Pool
Definition: cri_le_atom_ex.h:564
CriAtomExVoicePoolHn criAtomExVoicePool_AllocateStandardVoicePool(const CriAtomExStandardVoicePoolConfig *config, void *work, CriSint32 work_size)
Create a standard Voice Pool
struct CriAtomExVoicePoolTag * CriAtomExVoicePoolHn
Voice Pool handle
Definition: cri_le_atom_ex.h:3220
Configuration structure used when creating a standard Voice Pool
Definition: cri_le_atom_ex.h:3255
CriAtomStandardPlayerConfig player_config
Definition: cri_le_atom_ex.h:3258
CriBool streaming_flag
Whether to perform streaming playback
Definition: cri_le_atom.h:1484
关于如何指定Cue
在上述示例中通过指定ID来指定Cue, 也可以使用::criAtomExPlayer_SetCueName函数和::criAtomExPlayer_SetCueIndex函数, 通过Cue名和Cue索引(文件中的Cue的偏移号)来指定Cue。
此外,通过包括由创建工具输出的头文件, 也可以不使用数值,而用宏定义名来指定Cue ID。
关于要播放的音频频道数量
在上面的示例中,为播放音频创建了可执行流播放的标准Voice池。
可以用上述代码播放普通的音频数据(单声道/立体声 ADX / HCA 数据), 但如果需要播放多重声道音频时,则需要修改部分代码。
具体来说,需要支持多声道音频播放时,则在创建Voice池时, 必须增加player_config.max_channels的值。

关于仅执行内存播放
不执行流播放,仅播放内存中的数据(仅使用ACB文件)时, 可以通过以下修改来减少要使用的内存大小。
- 加载ACB文件时,不指定AWB文件路径。
- 不创建D-BAS。
- 创建Voice池时,将player_config.streaming_flag设置为CRI_FALSE。
.

示例使用的数据中AtomCraft项目的目录

/cri/tools/criatomex/examples/tutorial_data_for_runtime