WavPack - WavPack
Разработчики) | Дэвид Брайант |
---|---|
Стабильный выпуск | 5.3.0 / 14 апреля 2020[1] |
Репозиторий | |
Операционная система | Кроссплатформенность |
Тип | Аудиокодек Контейнер |
Лицензия | Лицензия BSD |
Интернет сайт | wavpack.com |
Расширение имени файла | .wv |
---|---|
Открытый формат ? | да |
WavPack это бесплатно и с открытым исходным кодом сжатие звука без потерь формат.
Функции
Сжатие WavPack может сжимать (и восстанавливать) 8-, 16-, 24- и 32-битные фиксированная точка и 32-битный плавающая точка PCM аудиофайлы в формате.WAV формат файла. Он также поддерживает объемный звук потоки и высокая частота частота дискретизации. Как и в других схемах сжатия без потерь, степень сжатия данных зависит от источника, но обычно она составляет от 30% до 70% для типичной популярной музыки и несколько лучше, чем для классической музыки и других источников с большим динамическим диапазоном.[2]
Гибридный режим
WavPack также включает в себя «гибридный» режим, который по-прежнему обеспечивает возможности сжатия без потерь, но создает два файла: относительно небольшой высококачественный файл с потерями (.wv), который можно использовать отдельно; и файл «исправлений» (.wvc), который в сочетании с файлом с потерями обеспечивает полное восстановление без потерь. Это позволяет использовать кодеки с потерями и без потерь вместе.
Аналогичную «гибридную» функцию предлагает также OptimFROG DualStream, MPEG-4 SLS и DTS-HD Master Audio.
Резюме
- Открытый исходный код, выпущенный под BSD -подобная лицензия
- Мультиплатформенность
- Устойчивость к ошибкам
- Быстрая скорость кодирования
- Более высокий коэффициент сжатия, чем у других широко используемых (FLAC / ALAC) аудиокодеков с открытым исходным кодом без потерь
- Потоковое поддержка
- Поддерживает многоканальный звук и высокое разрешение
- Встроенная поддержка сжатия в WavPack 5.x Цифровой прямой поток без преобразования исходного файла в PCM.
- Гибридный режим / режим с потерями
- Аппаратная поддержка (предоставляется Rockbox прошивка)
- Поддержка метаданных (ID3, Обезьяна теги) (предпочтительным форматом является тег APE.)
- Поддерживает РИФФ куски
- ReplayGain совместимый
- Возможность создавать самораспаковывающиеся файлы для платформы Win32.
- Поддерживает 32-битные потоки с плавающей запятой
- Поддерживает встроенные CUE листы
- Включает в себя MD5 хеши для быстрой проверки целостности
- Может кодировать как в симметричном, так и в асимметричном (более медленное кодирование для ускорения декодирования) режимах
История
Дэвид Брайант начал разработку WavPack в середине 1998 года, выпустив версию 1.0 (1998-08-15). Эта первая версия сжимала и распаковывала аудио без потерь, и она уже показала одно из лучших соотношений эффективности и скорости среди кодеров без потерь.[3]
Вскоре после выпуска версии 1.0 была выпущена версия 2.0 (2 сентября 1998 г.) с кодированием с потерями (с использованием только квантования остатка предсказания для сокращения данных - нет модель психоакустической маскировки был применен к потоку).
В 1999 г. была выпущена версия 3.0 (12 сентября 1999 г.) с новым «быстрым режимом» (хотя и с пониженной степенью сжатия) сжатием необработанных файлов (без заголовков) PCM аудиофайлы и обнаружение ошибок с помощью 32-битного циклическая проверка избыточности.
В последних версиях 3.x добавлена функция «гибридного» режима, в котором кодировщик генерирует файл с потерями и файл коррекции, так что оба могут быть распакованы обратно в поток PCM того же качества, что и оригинал.[нужна цитата ] Автор также публикует «дорожную карту», содержащую возможные намеки на будущее развитие.[4]
Поддерживать
Программного обеспечения
Некоторое программное обеспечение изначально поддерживает формат (например, DeaDBeeF, foobar2000[5], и Джек! Нож ), а для других требуются плагины. Официальный сайт WavPack предлагает плагины для Winamp, Nero Burning ROM, MediaChest 2.1 и нескольких других приложений, а также DirectShow фильтр.[6] dBpoweramp CD-Ripper[7], автором foobar2000, а также foobar2000[8] сам, и На части позволяет копировать аудио компакт-диски непосредственно в файлы Wavpack.
Linux поддержка доступна с собственным портом.
FFmpeg имеет собственный кодировщик WavPack, который можно комбинировать с таким программным обеспечением, как GNU parallel использовать несколько ядер ЦП для быстрого перекодирования других форматов без потерь в WavPack и из WavPack в любой формат, поддерживаемый FFmpeg, без необходимости в дополнительном программном обеспечении.
Аппаратное обеспечение
Родная поддержка:
- Cowon A3 PMP поддерживает WavPack из коробки.[нужна цитата ]
Неродная поддержка:
- яблоко iPod ряд музыкальных плееров не поддерживает WavPack из коробки, но может через открытый исходный код Rockbox прошивка.
- iriver H100 серии, может через прошивку Rockbox с открытым исходным кодом.
- iriver H300 серии, может через прошивку Rockbox с открытым исходным кодом.[9]
- Android смартфоны и планшеты с установкой стороннего программного обеспечения медиаплеера.
- Chrome OS устройства, использующие программное обеспечение медиаплеера, установленное в подсистеме Linux или Android Play Store.
На веб-сайте WavPack также есть плагин, который позволяет поддерживать формат на Roku PhotoBridge HD.[6]
Технологии
Чтобы обеспечить высокую скорость работы, WavPack использует предсказатель, который полностью реализован в целочисленной математике.[10] В «быстром» режиме прогнозирование представляет собой простую арифметическую экстраполяцию двух предыдущих выборок. Например, если предыдущие две выборки были -10 и 20, тогда прогноз был бы 50. Для режима по умолчанию добавляется простой адаптивный коэффициент, чтобы взвесить влияние более ранней выборки на прогноз. В нашем примере итоговый прогноз может варьироваться от 20 при отсутствии влияния до 50 при полном влиянии. Этот весовой коэффициент постоянно обновляется в зависимости от меняющихся спектральных характеристик аудиоданных.
Сгенерированный прогноз затем вычитается из фактической выборки, которая должна быть закодирована, для получения значения ошибки. В монорежиме это значение отправляется прямо в кодировщик. Тем не мение, стерео сигналы имеют тенденцию иметь некоторую корреляцию между двумя каналами, которая может быть использована в дальнейшем. Поэтому вычисляются два значения ошибки, которые представляют собой разницу и среднее значение левого и правого ошибок. В «быстром» режиме работы эти два новых значения просто отправляются кодеру вместо левого и правого значений. В режиме по умолчанию значение разности всегда отправляется кодировщику вместе с одним из трех других значений (среднее, левое или правое). Адаптивный алгоритм непрерывно определяет наиболее эффективный из трех отправляемых на основе меняющегося баланса каналов.
Вместо Кодирование риса, используется специальный кодировщик данных для WavPack. Кодирование риса является оптимальным битовым кодированием для этого типа данных, а кодировщик WavPack менее эффективен, но только примерно на 0,15 бит / выборку (или менее 1% для 16-битных данных). Однако взамен есть некоторые преимущества; во-первых, кодировщик WavPack не требует буферизации данных перед кодированием; вместо этого он преобразует каждый отсчет непосредственно в битовые коды. Это более эффективно с вычислительной точки зрения и лучше в некоторых приложениях, где задержка кодирования критична. Второе преимущество заключается в том, что его легко адаптировать к кодированию с потерями, поскольку все значащие биты (кроме подразумеваемой «единицы») MSB ) передаются напрямую. Таким образом можно передавать, например, только 3 старших бита (со знаком) каждой выборки. Фактически, можно передавать только знак и подразумеваемый MSB для каждой выборки со средним значением только 3,65 бит / выборка.
Эта схема кодирования используется для реализации режима WavPack с потерями. В «быстром» режиме выходной сигнал неадаптивного декоррелятора просто округляется до ближайшего кодируемого значения для указанного количества битов. В режиме по умолчанию используется адаптивный декоррелятор (который снижает средний шум примерно на 1 дБ ) и текущая, и следующая выборка учитываются при выборе лучшего из двух доступных кодов (что снижает шум еще на 1 дБ).
Нет плавающая точка арифметика используется в пути данных WavPack, потому что, по словам автора, целое число операции менее подвержены тонким изменениям от кристалла к кристаллу, которые могут нарушить природу сжатия без потерь ( Ошибка с плавающей запятой Pentium являясь примером). Возможно, компрессор без потерь, использующий математику с плавающей запятой, может генерировать другой вывод при работе на неисправном Pentium. Даже если не принимать во внимание фактические ошибки, математика с плавающей запятой достаточно сложна, поэтому между «правильными» реализациями могут быть тонкие различия, которые могут вызвать проблемы для этого типа приложений.[11] В сгенерированные потоки включен 32-битный код обнаружения ошибок, чтобы пользователи были уверены в целостности сжатия WavPack.
Исходный код WavPack переносим и был скомпилирован на нескольких Unix и Unix-подобный операционные системы (Linux, Mac OS X, Солярис, FreeBSD, OpenBSD, NetBSD, Compaq Tru64, HP-UX...) а также Windows, ДОС, Palm OS, и OpenVMS. Он работает на многих архитектурах, включая x86, РУКА, PowerPC, AMD64, IA-64, SPARC, Альфа, PA-RISC, MIPS и Motorola 68k.
Урезанная версия WavPack была разработана для цифрового сигнального процессора Texas Instruments серии TMS320. Это было направлено в основном на то, чтобы побудить производителей использовать сжатие (и декомпрессию) WavPack в портативных аудиорекордерах с памятью. Эта версия поддерживала функции, которые были применимы только к встроенным приложениям (сжатие потока в реальном времени, выбираемая степень сжатия), и упавшие функции, которые применялись только к полным компьютерным системам (самоизвлечение, режимы высокого сжатия, 32-битные числа с плавающей точкой). DSP серии TMS320 являются собственными целочисленными устройствами и хорошо поддерживают WavPack. Некоторые «особые» функции полного программного обеспечения WavPack были включены (например, возможность создания «файла» (потока) исправлений), а другие были исключены. Порт был основан на версии 4.
Добавлена поддержка WavPack WinZip начиная с версии 11.0 beta, выпущенной в октябре 2006 года.[12] Это расширение к Формат файла ZIP был включен ПО, поддерживающие формат, в официальном APPNOTE.TXT description, начиная с версии 6.3.2, выпущенной 28 сентября 2007 г.[13]
Смотрите также
Рекомендации
- ^ Журнал изменений
- ^ Хейден, Ханс (11 июля 2006 г.). «Сжатие и скорость аудиоформатов без потерь». Получено 17 июля 2009.
- ^ Speek (7 февраля 2005 г.). «Сравнение производительности аудиокомпрессоров без потерь». Получено 17 июля 2009.
- ^ http://www.hydrogenaud.io/forums/index.php?s=&showtopic=50911&view=findpost&p=456571
- ^ "foobar2000". foobar2000.org. Получено 2019-11-19.
- ^ а б "Загрузки WavPack".
- ^ "Центральный кодек dBpoweramp". www.dbpoweramp.com. Получено 2019-11-19.
- ^ "foobar2000: Бесплатный пакет кодировщика". www.foobar2000.org. Получено 2019-11-19.
- ^ "Звуковые кодеки, Rockbox Wiki".
- ^ Брайант, Дэвид (21 марта 2007 г.). "Комментарий на форуме разработчика". Получено 17 июля 2009.
- ^ Гольдберг, Дэвид (Март 1991 г.). «Что должен знать каждый компьютерный ученый об арифметике с плавающей точкой» (PDF). Опросы ACM Computing. 23 (1): 5–48. Дои:10.1145/103162.103163. Получено 2016-01-20. ([1], [2] )
- ^ «WinZip - Спецификация дополнительных методов сжатия». WinZip International LLC. 15 ноября 2006 г.. Получено 6 января 2008.
- ^ "APPNOTE.TXT - Спецификация формата файла .ZIP ". PKWARE Inc. 28 сентября 2007 г.. Получено 6 января 2008.