2013-04-16 3 views
0

В настоящее время я использую 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. Это работает безупречно. Это еще одно доказательство того, что выделенная память кодека не нужна.

ответ

0

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

FMOD подтвердил мои выводы и сказал, что обходной путь загрузки сжатого звука, извлечения данных PCM, разгружая звук, а затем создать новую один из извлеченных данных PCM в порядке.