Я использую 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, use.codec сообщает как 0.
Почему «кодек» больше 0, когда я загружаю не потоковые файлы OGG? Есть ли способ отключить это использование памяти?
Изменить: В качестве теста, после загрузки OGG, я извлекаю данные PCM и FMOD создает новый звук. Затем я освобождаю звук, созданный в OGG, и заменяю его новым звуком, загруженным из данных PCM. Это работает без нареканий. Это еще одно доказательство того, что выделенная память кодека не нужна.
http://www.fmod.org/forum/viewtopic.php?f=7&т = 15762
FMOD подтвердил мои выводы и сказал, что обходной путь загрузки сжатого звука, извлечения данных PCM, выгрузки звука и последующего создания нового из извлеченных данных PCM вполне подходит.
Других решений пока нет …