示例目录
- /cri/pc/samples/criatomex/seamless_playback
示例描述
- Atom运行库提供名为 “无缝连接播放” 功能,用于连接播放多个不同的波形数据。
(通常也称为“无缝播放功能”。)
通过使用无缝连接播放功能,可以循环播放没有循环信息的波形数据(重复播放相同的波形数据),或者以任意组合播放分割成各个部分的波形数据。
- 使用无缝连接播放功能的步骤如下。
- 使用::criAtomExPlayer_Create函数创建AtomExPlayer。
- 使用::criAtomExPlayer_SetDataRequestCallback函数,为AtomExPlayer注册数据请求回调函数。
- 使用::criAtomExPlayer_SetData函数等指定最初要播放的音频数据。
- 使用::criAtomExPlayer_Start函数开始播放。
- 由于在设置的音频数据读取完成时执行数据请求回调函数,因此将在回调函数中设置接下来要播放的数据。
- 播放开始前的处理代码如下。
:
app_obj->player, app_data_request_callback, app_obj);
:
CriAtomExPlaybackId criAtomExPlayer_Start(CriAtomExPlayerHn player)
Start the playback
CriAtomExPlayerHn criAtomExPlayer_Create(const CriAtomExPlayerConfig *config, void *work, CriSint32 work_size)
Create an AtomEx player
void criAtomExPlayer_SetDataRequestCallback(CriAtomExPlayerHn player, CriAtomExPlayerDataRequestCbFunc func, void *obj)
Register the data request callback function
void criAtomExPlayer_SetCueId(CriAtomExPlayerHn player, CriAtomExAcbHn acb_hn, CriAtomExCueId id)
Set the sound data to play (specifying a Cue ID)
-
- 此外,对AtomExPlayer执行回调设置和初始数据设置,但如果要在回调内添加数据,则必须使用下层(Atom层)的 “ AtomPlayer” 的 API。
- 例如,在连接播放多个内存数据时,对AtomExPlayer执行::criAtomExPlayer_SetData函数以完成初始数据设置,但要在回调函数中指定后续数据时,需要对于用回调函数的参数传递的AtomPlayer句柄,使用::criAtomPlayer_SetData函数来指定数据。
- [备注]
波形数据级别的连接处理是通过Voice执行,不会使用AtomExPlayer。
因此,连接播放的回调不会从AtomExPlayer返回,而是从Voice内部保持的AtomPlayer返回。
- 此外,由于Atom层不具有播放Cue的功能,因此在连接播放Cue中的波形数据时,必须从Cue中获取AWB句柄和波形数据ID。
- 播放Cue中的波形数据时,处理步骤如下。
-# 使用::criAtomExAcb_GetWaveformInfoById函数获取Cue中包含的波形数据的信息。
-# 如果波形数据是内存数据,则使用::criAtomExAcb_GetOnMemoryAwbHandle函数获取AWB句柄,如果是流播放数据,则使用::criAtomExAcb_GetStreamingAwbHandle函数获取AWB句柄。
-# 使用AWB句柄和波形ID执行::criAtomPlayer_SetWaveId函数。
.
- 具体处理代码如下。
:
} else {
}
*/
*/
:
CriAtomAwbHn criAtomExAcb_GetOnMemoryAwbHandle(CriAtomExAcbHn acb_hn)
Get an AWB handle from an ACB handle (for in-memory playback)
CriBool criAtomExAcb_GetWaveformInfoById(CriAtomExAcbHn acb_hn, CriAtomExCueId id, CriAtomExWaveformInfo *waveform_info)
Get information about the waveform played by the Cue whose ID is given
CriAtomAwbHn criAtomExAcb_GetStreamingAwbHandle(CriAtomExAcbHn acb_hn)
Get an AWB handle from an ACB handle (for streaming playback)
struct CriAtomAwbTag * CriAtomAwbHn
AWB handle
Definition: cri_le_atom.h:1349
void criAtomPlayer_SetWaveId(CriAtomPlayerHn player, CriAtomAwbHn awb, CriSint32 id)
Set sound data (specify sound data ID)
- 注意
- 无缝连接播放将Cue中包含同样是 一个波形数据 连接起来。
对于含有多个波形数据的Cue,由于将选择并播放Cue中所含的某个波形,因此无法保证预期的动作。
使用Cue执行无缝连接播放时,请使用不包含多个波形数据的Cue。
请注意:连接的波形数据是通过指定波形ID来播放,因此不会使用音量和Pan设置等对Cue指定的任何参数。
(而第一个播放的Cue的参数将继续使用。)
用于连接播放的波形数据的参数必须全部相同。
具体来说,以下参数必须相同。
如果尝试连接参数不同的波形,则可能会出现各种问题,例如以非预期速度播放音频数据或错误回调等。
示例使用的数据中AtomCraft项目的目录
- /cri/tools/criatomex/examples/tutorial_data_for_runtime