CRI ADX  Last Updated: 2024-07-17 10:48 p
串流

内存播放和串流播放

CRI将整个音频数据读取内存再播放的方法称为“内存播放”。
将一边一点一点读取音频数据到内存一边播放的方法称为“串流播放”。
二者的优点和缺点如下。
内存播放 串流播放
内存大小 缺点:需要大量工作内存 优点:工作内存的需要量不大
播放准备 缺点:在读取整个音频数据之前无法开始播放 优点:无需等待读取整个音频数据
发声延迟 优点:低发声延迟 缺点:收到播放请求后开始串流播放,发声延迟长
文件访问 优点:播放期间不会影响读取其他文件 缺点:读取其他文件的时间增长
很多应用程序无法提供用于预先读取大量和大容量音频数据的内存区域。
在这种情况下,必须有能够节省内存播放音频数据的串流播放功能。

串流播放的方法

Voice可以串流播放存储在媒体上的音频文件。
如果设置音频文件名和 AWB文件 中的文件ID,则执行串流播放。
(AWB文件是打包多个声音文件的文件)
即使通过Cue播放,也可以在创建工具上指定串流播放作为播放方式,自动执行串流播放。

应用程序在初始化时为串流设置缓冲区。串流播放的Voice可以根据需要使用此缓冲区。



D-BAS

串流播放需要轮串流使用 一定大小的缓冲区来播放音频数据。
此缓冲区称为串流缓冲区
ADX使用CRI独有的D-BAS技术来有效管理串流缓冲区。
D-BAS会预先以固定长度分配串流缓冲区,
是一种以块为单位为每个串流播放分配串流缓冲区的机制。
D-BAS具有以下优点。
  1. 可轻松估计串流缓冲区的大小
  2. 可有效使用固定长度的串流缓冲区
  3. 不会产生内存碎片
创建D-BAS时,请指定应用程序中的最大串流播放数量、串流播放的最大瞬时比特率。
也就是说,设想最差的串流播放状态
此时,如果还要同时串流播放视频等,请根据以上要求设置播放数量和比特率。
由于是设想串流播放的最差状态来分配串流缓冲区,
因此只要应用程序端促成创建D-BAS时的设置值,就不会出现串流来不及的情况。
(如果超出了设置值,执行串流播放时将出现错误。)
此外,D-BAS根据串流播放的数量和比特率,
为每个串流播放动态分配缓冲区块。
如下图所示,当串流播放的数量少时,会使用剩余的缓冲区,
为每个串流播放分配比最低限度大小多的串流缓冲区。
由于缓冲区大小增加,因此可以减少串流播放访问存储媒体的次数,
从而有效地加载其他文件。
另一方面,如果串流播放的情况接近最差状态时,则如下图所示,
为每个串流播放分配所需最低限度的串流缓冲区。
即使在这种情况下,每个串流播放也不会中断,也可以加载其他文件。
但是,由于频繁访问媒体,会降低其他文件的加载效率。