Данное исследование попытается пролить свет на то, как изменялся кодек LAME за прошедшие 13 лет. Список версий, которые попали в это тестирование:

  • LAME 3.97 — 24 сентября 2006
  • LAME 3.98.4 — 22 марта 2010
  • LAME 3.99.5 — 28 февраля 2012
  • LAME 3.100 — 13 октября 2017

Подробное описание новой методики тестирования можно найти здесь. Самый лакомый кусок свежей методики — спектральный анализ искажений, вносимых алгоритмом сжатия с потерями.

Запуск тестов производился на MacBook Pro 2018 года с процессором 2.3 GHz Intel Core i5 Coffee Lake (8259U), 6 MB L3. К сожалению, сборки старых версий кодека под MacOS найти не удалось, поэтому я решил воспользоваться сборками под Windows и эмулятором Wine. Может быть, когда-нибудь я смогу раздобыть компьютер с Windows, чтобы проводить тестирования более честно.

Для запуска применялся единственный ключ --preset extreme. Как сообщается в документации кодека, эта преднастройка рекомендуется для людей с очень хорошим слухом и отличным оборудованием, она предоставляет качество слегка выше --preset standard. Ожидаемый результирующий битрейт: 200-240 кбит/с, в зависимости от сложности музыки.

Теперь немного о треке, который был использован при тестировании. Являясь поклонником творчества российской группы Abyssphere, я поддерживал их рублём при их создании нового альбома «На пути к забвению». Одним из бонусов этой поддержки являлась возможность получить этот альбом в цифре в виде высококачественных WAV-файлов. Чем я не удержался воспользоваться. Итак, тестирование проводилось на треке «Вирус» из вышеупомянутого альбома.

Список основных изменений

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

LAME 3.97 → 3.98.4

В версии 3.98 было сделано много исправлений в психоакустической модели (PSY model) и доработок нового VBR режима, всё это так или иначе должно было повлиять на качество и производительность. Это был довольно большой релиз, в котором была проделана большая работа.

LAME 3.99.5

В этой версии упор был в основном сделан на тюнинг всё той же психоакустической модели для нового VBR. Изменений на первый взгляд было не так уж и много.

LAME 3.100

Эта версия включает в себя мелкие улучшения, исправления ошибок и уязвимостей. На момент написания статьи является наиболее новой.

Тестирование

Итак, пришло время взглянуть на результаты.

Спектральный анализ искажений

Попытаемся выяснить, как же проявили себя сделанные изменения в частотном диапазоне на логарифмической шкале.

Искажения

Сделаю небольшое пояснение: версии 3.97 + 3.98.4 и 3.99.5 + 3.100 практически полностью слились в два графика (жёлтый и синий).

Версия 3.98.4 для пресета extreme привнесла только совсем небольшое увеличение искажений на частоте около 19 кГц. Что мне показалось довольно странным, учитывая количество проделанной работы над качеством. Но давайте посмотрим дальше, версия 3.99.5 позволила сильно снизить уровень искажений на частотах выше 16 кГц, а также слегка от 13 до 16 кГц. И, обратившись к списку исправлений в 3.99.5, можно предположить, что в данном случае в версии 3.98.4 просто не включился модернизированный VBR режим:

All encoding modes use the PSY model from new VBR code, addresses Bugtracker item [3187397] Strange compression behavior

И, тем не менее, на частотах от 7 до 13 кГц уровень искажений в 3.99.5 слегка увеличился, что тоже можно списать на изменения в психоакустической модели. Это совсем слабое ухудшение, но немного досадно, что оно произошло на частотах, которые уже достаточно неплохо улавливаются человеческим ухом.

Версию 3.100 в этом разделе рассматривать не имеет смысла, она не внесла никаких изменений в уровень искажений на всём спектре частот.

Производительность

Производительность

Годы разработки явно дали свои плоды, и мы видим, как время кодирования снизилось на 38% с 11.2 до 7 секунд, а декодирования в почти 3 раза с 5.3 до 1.8 секунд! Отличные показатели, тут разработчики явно постарались на славу. Интересно, что в 3.98.4 мы явно столкнулись с какой-то регрессией производительности (а может быть и проблемами запуска в Wine или недостаточной статистической выборкой).

Эффективность сжатия

Эффективность сжатия

Что касается размера итогового файла, то тут произошли совсем небольшие изменения, всего 0.6% при переходе 3.98.4 → 3.99.5. Но, тем не менее, тоже результат, учитывая сниженный уровень искажений на высоких частотах.

Итоги

Конечно, можно сказать, что кодек LAME стагнировал и практически перестал развиваться в последнее время, но и сам формат MP3 уже достаточно стар, согласитесь. Но и всё же, можно совершенно смело рекомендовать последнюю версию, она даёт улучшенное качество наряду с повышенной производительностью. Я всё ещё немного сомневаюсь в выборе Wine для оценки производительности, но считаю, что порядки показателей как минимум должны быть адекватными.

Спасибо за проявленный интерес к теме и до встречи в новых исследованиях!

Ссылки

  1. Полная история изменений кодека LAME
  2. Официальная страница проекта LAME
  3. Методика тестирования