FMOD使用过多的编解码器内存与非流采样



我目前使用的是FMODEx 4.40.10。我们像这样加载OGG样本:

uint uiFlags(FMOD_SOFTWARE | FMOD_LOWMEM | FMOD_CREATESAMPLE);
FMOD::SOUND* pSound(NULL);
m_pFMODSystem->createSound(sPath, uiFlags, NULL, &pSound);

查看这个声音的内存使用情况:

FMOD_MEMORY_USAGE_DETAILS usage;
pSound->getMemoryInfo(FMOD_MEMBITS_ALL, 0, NULL, &usage);

使用。编解码器报告大于0。这对我来说没有意义,因为FMOD文档声明FMOD_MEMORY_USAGE_DETAILS::codec是:

 codec
  [out] Codecs allocated for streaming 

从声音的加载方式可以看出,应该没有流。

加载多个OGG文件时,当我查询系统的内存使用情况时,它显示编解码器是一个很大的数字-所有单独的文件编解码器使用加在一起。FMOD报告的内存数量与我从自己的内存分析中看到的内存使用情况相匹配。

当我加载原始PCM数据时,使用。编码器报告为0。

当我加载非流OGG文件时,为什么"编解码器"大于0 ?是否有一种方法可以禁用此内存使用?

编辑:作为测试,在加载OGG后,我提取PCM数据并让FMOD创建一个新的声音。然后我释放从OGG发出的声音,并将其替换为从PCM数据加载的新声音。这是完美的。这进一步证明它分配的编解码器内存是不必要的。

http://www.fmod.org/forum/viewtopic.php?f=7&t=15762

FMOD证实了我的发现,并说加载压缩声音,提取PCM数据,卸载声音,然后从提取的PCM数据创建一个新的声音的解决方案是好的

最新更新