В настоящее время я использую FMODEx 4.40.10. Мы загружаем OGG образцы, как это:Использование FMOD с использованием избыточной памяти кодеков с потоковыми образцами
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);
usage.codec отчетов больше 0. Это не имеет смысла для меня, как документация FMOD утверждает, что FMOD_MEMORY_USAGE_DETAILS :: кодек:
codec
[out] Codecs allocated for streaming
как вы можете видеть, как звуки загружаются, не должно быть никакого потокового видео.
При загрузке нескольких файлов OGG, когда я запрашиваю использование памяти системы, он показывает, что кодек является большим числом - все индивидуальные коды файлов, добавленные вместе. Номера памяти, сообщенные FMOD, соответствуют памяти, которую я вижу из собственного профилирования памяти.
Когда я загружаю необработанные данные PCM, usage.codec отчетов как 0.
Почему «кодек» больше, чем 0, когда я загружаю непотоковое OGG файлы? Есть ли способ отключить использование этой памяти?
Редактировать: В качестве теста после загрузки OGG я извлекаю данные PCM и создаю новый звук FMOD. Затем я освобождаю звук от OGG и заменяю его новым звуком, загруженным из данных PCM. Это работает безупречно. Это еще одно доказательство того, что выделенная память кодека не нужна.