CRI ADX  Last Updated: 2024-07-17 10:48 p
指定文件名播放

示例目录

/cri/pc/samples/criatomex/playback_fname


示例描述

CRI Atom支持直接指定文件名播放音频。
指定文件名播放音频数据的步骤如下。
  1. 创建用于流播放的D-BAS
  2. 创建可执行流播放的Voice池
  3. 创建带路径存储区域的AtomExPlayer
  4. 指定要播放的音频数据的文件名
  5. 指定要播放的音频的格式信息
  6. 开始播放
CriAtomExPlayerConfig player_config;
/* 创建D-BAS */
dbas_id = criAtomDbas_Create(NULL, NULL, 0);
/* 使用预设值初始化创建Voice池的参数 */
/* 指定文件名播放是流播放,因此请启用流播放 */
voice_pool_config.player_config.streaming_flag = CRI_TRUE;
/* 创建可执行流播放的Voice池 */
voice_pool = criAtomExVoicePool_AllocateStandardVoicePool(&voice_pool_config, NULL, 0);
/* 使用预设值初始化创建Player的参数 */
/* 指定路径存储区域大小以记住要播放的文件名 */
player_config.max_path_strings = 1;
player_config.max_path = SMP_PATH_LENGTH;
/* 创建Player */
player = criAtomExPlayer_Create(&player_config, NULL, 0);
/* 指定播放文件 */
criAtomExPlayer_SetFile(player, NULL, PATH FILE);
/* 开始播放 */
CriAtomDbasId CriAtomExDbasId
AtomEx D-BAS ID
Definition: cri_le_atom_ex.h:4450
void criAtomExPlayer_SetFile(CriAtomExPlayerHn player, CriFsBinderHn binder, const CriChar8 *path)
Set the sound data to play (specifying a file name)
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
#define criAtomExPlayer_SetDefaultConfig(p_config)
Assign the default values to the configuration structure used to create an AtomeEx Player
Definition: cri_le_atom_ex.h:710
#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
CriAtomDbasId criAtomDbas_Create(const CriAtomDbasConfig *config, void *work, CriSint32 work_size)
Create D-BAS
Configuration structure used when creating a player
Definition: cri_le_atom_ex.h:3484
CriSint32 max_path
Maximum path length
Definition: cri_le_atom_ex.h:3565
CriSint32 max_path_strings
Maximum number of path strings
Definition: cri_le_atom_ex.h:3544
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
 
各操作的说明如下。
创建D-BAS
执行流播放时,必须确保用于缓冲从文件读取的数据的区域。
Atom运行库使用名为D-BAS的机制来管理缓冲量。
执行流播放时,必须使用::criAtomDbas_Create函数创建D-BAS。
创建D-BAS时,需要指定要同时读取(执行流播放)的文件数以及它们的总比特率。
(创建D-BAS所需的工作区大小取决于最大同时播放数量和比特率。)
[备注]
可以使用::criAtomEx_CalculateAdxBitrate函数等计算音频文件的比特率。
创建Voice池
关于音频数据的解码和输出所需的 Voice , 请使用::criAtomExVoicePool_AllocateStandardVoicePool函数等。
[备注]
使用::criAtomExVoicePool_AllocateStandardVoicePool函数创建的Voice池, 可以播放ADX和HCA两种声音文件。
如果要把播放的音频文件格式限定为ADX, 但可以通过使用::criAtomExVoicePool_AllocateAdxVoicePool函数, 则减少所需的工作区大小。
(同样,如果只需播放HCA,则可以通过使用::criAtomExVoicePool_AllocateHcaVoicePool 函数来减少工作区。
如果要播放音频文件,则必须创建支持流播放的Voice池。
可以通过将用于创建Voice池的配置构件( ::CriAtomExStandardVoicePoolConfig等) 的player_config的streaming_flag设置为CRI_TRUE,来创建用于流播放的Voice池。
创建Player
指定文件名播放时,在创建AtomExPlayer时,Player中必须有用于存储路径名的区域。
路径存储区域的大小取决于创建AtomExPlayer的配置构件( CriAtomExPlayerConfig )的以下参数。
  • max_path_strings
  • max_path
max_path_strings是AtomExPlayer可同时存储的文件名数量。
如果要用一个Player播放两个以上的文件,则必须为 max_path_strings指定2以上的值。
为max_path指定要使用的路径字符串的最大长度。
指定文件信息
使用::criAtomExPlayer_SetFile函数指定要播放的文件路径。
同时使用以下函数指定要播放的音频数据的格式信息。

指定格式信息的函数列表

要指定的参数 使用的函数
格式 criAtomExPlayer_SetFormat
频道数量 criAtomExPlayer_SetNumChannels
采样率 criAtomExPlayer_SetSamplingRate
Atom运行库从Voice池中获取与这些API设置的参数相匹配的Voice, 执行音频数据的解码和输出。
开始播放
使用::criAtomExPlayer_Start函数开始播放。