CRI ADX  Last Updated: 2024-07-17 10:48 p
同时使用ADX与Sofdec2时的注意事项是什么?

初始化程序库时的注意事项

(1) 错误回调

所有程序库只有一个错误回调函数。
如果多次执行::criErr_SetCallback 函数,则先前注册的回调函数将被稍后注册的回调函数覆盖。
(即使发生错误,也不会调用先前注册的回调函数。)

(2) 初始化顺序

必须按照以下顺序初始化程序库。

  • (1) L3840运行库的初始化处理 ( criFs_InitializeLibrary )
  • (2) CRI Atom运行库的初始化处理 ( criAtomEx_Initialize_~ )
  • (3) CRI Mana运行库的初始化处理 ( criMana_Initialize_~ )
应按照与初始化处理相反的顺序执行终止处理。

  • (1) CRI Mana运行库的结束处理 ( criMana_Finalize_~ )
  • (2) CRI Atom运行库的结束处理 ( criAtomEx_Finalize_~ )
  • (3) CRI File System库的结束处理 ( criFs_FinalizeLibrary )
[备注]
使用CRI Atom运行库时,可以省略CRI File System库的初始化/终止处理。
如果省略CRI File System库的初始化,则在CRI Atom运行库端执行CRI File System库的初始化处理。

(3) 线程框架

必须为CRI Atom运行库和CRI File System库指定相同的线程框架。
具体来说,初始化每个程序库时,必须为以下构件成员设置相同的线程框架类型(线程模型)。
  • ::CriFsConfig 构件的thread_model成员
  • CriAtomExConfig 构件的 thread_model 成员 
[备注]
CRI Mana运行库的线程框架可以设置与CRI Atom运行库和CRI File System库不同的线程模型。
  • ::LibConfig 构件的 thread_model 成员 

程序库间共享的资源

(1) 线程

CRI Atom运行库的Server处理线程和CRI File System库的Server处理线程是相同的线程。
使用::criAtomEx_SetThreadPriority_PC 函数等更改CRI Atom运行库的线程参数时,CRI File System库的Server处理线程的参数也将被更改。

(2) Binder

CRI Atom运行库在加载AWB文件时使用Binder。
加载AWB文件时,必须以能够保证AWB文件数量的Binder的设置来初始化CRI File System库。
[注意]
除使用::criAtomAwb_LoadToc 函数等加载AWB文件的情况外,使用::criAtomExAcb_LoadAcbFile 函数等加载串流播放的ACB文件时也需要Binder。
(加载串流播放的ACB文件时,成对的AWB文件也将一起被加载。)

(3) 加载器

CRI Atom运行库和CRI Mana运行库使用CRI File System库的加载器执行串流播放。
执行串流播放时,除用于读取文件的加载器数量外,还需要额外保证Voice池中的Voice数量和ManaPlayer数量的加载器。
以下API在函数执行时临时使用加载器( CriFsLoaderHn )。
(开始执行函数时,使用criFsLoader_Create函数保证加载器。)

- criAtomEx_RegisterAcfFile
- criAtomEx_RegisterAcfFileById
- criAtomEx_GetAcfVersionFromFile
- criAtomEx_GetAcfVersionFromFileById
- criAtomExAcb_LoadAcbFile
- criAtomExAcb_LoadAcbFileById
- criAtomExStreamingCache_LoadWaveformByNameAsync
- criAtomExStreamingCache_LoadWaveformByIdAsync
.
执行上述函数时,请调整加载器数量变为至少有一个空闲加载器句柄的状态。
[注意]
上述API中,关于::criAtomExStreamingCache_LoadWaveformByNameAsync 函数和::criAtomExStreamingCache_LoadWaveformByIdAsync 函数, 必须由用户需要单独丢弃函数返回的加载器句柄。
关于其他API,将在函数结束时使用criFsLoader_Destroy函数来丢弃加载器。

(4) Server处理

CRI Atom运行库的Server处理 ( criAtomEx_ExecuteMain 函数 ) 和CRI File System库的Server处理 ( criFs_ExecuteMain函数 ) 是具有相同实体的函数。
因此,同时使用CRI Atom运行库和CRI File库时,请只执行其中一个Server处理。
(如果执行两边的Server处理,将双重执行处理。)
[注意]
同时使用CRI Mana运行库时,必须与CRI Atom运行库的Server处理(或CRI File System库的Server处理)分开执行CRI Mana运行库的Server处理( ::criMana_ExecuteMain 函数)。

串流播放的注意事项

(1) D-BAS

同时执行音频串流播放和视频串流播放时,为D-BAS指定的串流数量和最大比特率必须指定二者相加的数量。
[备注]
关于音频/视频串流以外的数据读取,无需添加到创建D-BAS时的参数中。
使用加载器等后台读取数据,是在串流的空闲时间内且在无缓冲的情况下进行的,因此创建D-BAS时无需考虑。

(2) 优先级

以高于加载器可设置的最高优先级 ( CRIFSLOADER_PRIORITY_HIGHEST ) 的优先级执行音频和视频串流。
因此,即使在串流播放期间用加载器读取大量数据,串流播放期间的音频和视频也不会中断。
[注意]
读取数据会频繁中断串流数据的读取,因此会减慢串流中的数据读取速度。