Добавить в избранное | Сделать стартовой страницей

Большая Linux библиотека для пользователей OS Linux и ПО для нее
Есть что сказать? Нужен совет? Посети наш форум.


-


Формат FLAC.

 

Формат

Опции по умолчанию для flac настроены на получение оптимального соотношения скорость/уровень сжатия для большинства типов входных файлов. Здесь описывается как можно попытаться увеличить уровень или скорость сжатия или с наибольшим эффектом использовать систему метаданных.

Основными частями потока являются:

  • Строка из четырех байтов "fLaC".
  • Блок метаданных
  • Другие необязательные блоки метаданных.
  • Один или более аудио фреймов.

Первые четыре байта идетифицируют поток FLAC. Следующие за ними метаданные содержат информацию о потоке, затем идут сжатые аудиоданные.

Метаданные

FLAC определяет несколько типов блоков метаданных (все они перечислены на странице

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

Если Вам нужен собственный блок метаданных, Вы можете определить его и запросить идентификатор

здесь. Вы можете зарезервировать блок PADDING необходимого размера и записать на его место свои данные после кодирования. Полученнный поток будет отвечать формату FLAC, декодеры распознающие эти блоки смогут их использовать, остальные будут их пропускать.

Аудиоданные

За метаданным следуют сжатые аудиоданные. Метаданные и аудиоданные не чередуются. Как и большинство кодеков FLAC делит входной поток на блоки и кодирует их независимо друг от друга. Блок упаковыватся во фрейм и добавляется к потоку. Базовый кодер использует блоки постоянного размера для всего потока, однако формат предусматривает наличие блоков разной длины в потоке.

Разбиение на блоки

Размер блока - очень важный параметр для кодирования. Если он очень мал, то в потоке будет слишком заголовков фреймов, что уменьшит уровень сжатия. Если размер большой, то кодер не сможет подобрать эффективную модель сжатия. Понимание процесса моделирования поможет Вам увеличить уровень сжатия для некоторых типов входных данных. Обычно при использовании линейного прогнозирования на аудиоданных с частотой дискретизации 44.1 кГц оптимальный размер блока лежит в диапазоне 2-6 тысяч сэмплов. В этом случае значение по умолчанию - 4608. Если использовать быстрые постоянные предикторы, предпочтительнее меньшие размеры блоков, так как в этом случае размеры заголовков фреймов меньше.

Межканальная декорреляция

Если на вход поступают стерео аудиоданные, они могут пройти через стадию межканальной декорреляции. Правый и левый канал преобразуются к среднему и разностному по формулам: средний = (левый + правый)/2, разностный = левый - правый. В отличие от joint stereo этот процесс не приводит к потерям. Для данных с аудио компакт-дисков это обычно приводит к значительному увеличению уровня сжатия. Для включения использования этого метода кодирования flac имеет две опции: -m всегда делает разностную и независимую версию блока и выбирает наименьший фрейм и -M, которая адаптивно выбирает схему сжатия.

Моделирование

На следующем этапе кодер пытается аппроксимировать сигнал такой функцией, чтобы полученный после ее вычитания из оригинала результат (называемый разностью, остатком, ошибкой) можно было закодировать минимальным количеством битов. Параметры функций тоже должны записываться, поэтому они не должны занимать много места. FLAC использует два метода формирования аппроксимаций: 1) подгонка простого полинома к сигналу и 2) общее кодирование с линейными предикторами (LPC).

Во-первых, постоянное полиномиальное предсказание (-l 0) работает значительно быстрее, но менее точно, чем LPC. Чем выше порядок LPC, тем медленнее, но лучше будет модель. Однако с увеличением порядка выигрыш будет все менее значительным. В некоторой точке (обычно около 9) процедура кодера, определяющая наилучший порядок, начинает ошибаться и размер получаемых фреймов возрастает. Чтобы преодолеть это, можно использовать полный перебор (опция -e), что приведет к значительному увеличению времени кодирования.

Во-вторых, параметры для постоянных предикторов могут быть описаны тремя битами, а параметры для модели LPC зависят от количества бит на сэмпл и порядка LPC. Это значит, что размер заголовка фрейма зависит от выбранного метода и порядка и может повлиять на оптимальный размер блока.

Остаточное кодирование

Когда модель подобрана, кодер вычитает приближение из оригинала, чтобы получить остаточный (ошибочный) сигнал, который затем кодируется без потерь. Для этого используется то обстоятельство, что разностный сигнал обычно имеет распределение Лапласа и есть набор специальный кодов Хаффмана, называемые кодами Райса, позволяющие эффективно и быстро кодировать эти сигналы без использования словаря.

Кодирование Райса состоит из нахождения одного параметра, отвечающего распределению сигнала, а затем использования его для составления кодов. При изменении распределения меняется и оптимальный параметр, поэтому имеется метод позволяющий пересчитывать его по необходимости. Остаток может быть разбит на контексты или разделы, у каждого из которых будет свой параметр Райса. flac позволяет указать, как нужно производить разбиение, с помощью опции -r. Остаток может быть разбит на 2^n раздела, если использовать -r n,n. Параметр n называется порядком раздела. Также кодер может искать в пределах от m до n порядка, выбирая лучший вариант, если указать -r m,n. Обычно выбор n не влияет на скорость кодирования. От разницы между m и n сильно зависит время работы, чем она больше, тем больше времени будет затрачиваться на поиск лучшего порядка. Выбор размера блока также влияет на оптимальный порядок раздела.

Составление фреймов

Аудиофрейму предшествует заголовок, который начинается с кода синхронизации и содержит минимум информации, необходимой декодеру для воспроизведения потока. Сюда также записывается номер блока или сэмпла и восьмибитная контрольная сумма самого заголовка. Код синхронизации, CRC заголовка фрейма и номер блока/сэмпла позволяют осуществлять пересинхронизацию и поиск даже в отсутствие точек поиска. В конце фрейма записывается его шестнадцатибитная контрольная сумма. Если базовый декодер обнаружит ошибку, будет сгенерирован блок тишины.

Разное

Чтобы поддерживать основные типы метаданных, базовый декодер умеет пропускать теги ID3V1 и ID3V2, поэтому их можно свободно добавлять. Теги ID3V2 должны располагаться перед маркером "fLaC", а теги ID3V1 - в конце файла.

У flac есть опция (-V) для проверки выходных данных при кодировании. В этом случае декодер работает одновременно с кодером и его выход сравнивается с оригинальным вводом. Если будет найдено отличие, flac закончит работу с сообщением об ошибке.

flac

flac - это кодек, работающий из командной строки. Входом для кодера и выходом для декодера должны быть данные в формате RIFF WAVE, AIFF или в виде потока сэмплов без заголовка. flac использует только линейные PCM сэмплы (другими словами, A-LAW, uLAW, и т.п. не поддерживаются). Следующим ограничением является то, что во кодируемом файле сэмплы должны быть 8, 16 или 24-битными. Это не ограничение формата, просто так работают базовый кодер и декодер.

flac предполагает, что файлы RIFF WAVE имеют суффикс ".wav", а файлы формата AIFF имеют суффиксы ".aif", ".aiff" или встречен заголовок AIFF; это умолчание может быть переопределено специальным ключом. Также предполагается, что файлы с суффиком ".ogg" имеют формат Ogg-FLAC. В остальных случаях flac не делает предположений о суффиксах, хотя по соглашению файлы FLAC имеют суффикс ".flac" (или ".fla" на старых файловых системах таких как FAT-16).

Перед полным описанием ключей, используемых flac, обратим внимание на то что: 1) по умолчанию flac сжимает файлы (для декодирования используйте ключ -d); 2) ключи -0..-8, а также --fast и --best, управляющие уровнем сжатия, являются синонимами для различных групп настроек кодирования. Того же эффекта можно добиться, используя наборы соответствующих ключей; 3) модель обработки входных и выходных файлов у flac аналогична gzip.

flac вызывается одним из четырех способов:

  • Кодирование:
    flac [] [
  • <настройки_формата>] [<опции_кодирования>] [входной_файл [...]]
  • Декодирование:
    flac -d [
  • <основные_ключи>] [<настройки_формата>] [<опции_кодирования>] [файл_FLAC [...]]
  • Тестирование:
    flac -t [
  • <основные_ключи>] [файл_FLAC [...]]
  • Анализ:
    flac -a [
  • <основные_ключи>] [<опции_анализа>] [файл_FLAC [...]]

В любом случае, если входной файл не указан, подразумевается стандартный ввод. Если указан только один входной файл, то это может быть "-" для стандартного ввода (stdin). Когда используется стандартный ввод, flac пишет в стандартный вывод (stdout). В остальных случаях flac выполнит указанные действия для каждого входного файла и запишет результаты в файлы с аналогичными именами (при кодировании суффикс будет заменен на ".flac" или, если его не было, будет добавлен; при декодировании суффиксы также изменяются в соответствии с типом выходных данных.) Оригинал удаляется, только если указан ключ --delete-input-file.

Существуют особые формы вызова процедур кодирования/декодирования из стандандартного ввода в файл.

  • flac [опции] - выходной_файл
  • flac -d [опции] - выходной_файл

которые лучше чем

  • flac [опции] > выходной_файл
  • flac -d [опции] > выходной_файл

так как в первом случае сохраняется возможность произвести при необходимости последующую обработку файла, например для записи заголовков RIFF WAVE или STREAMINFO.

Данные в стандартный вывод можно перенаправить с помощью ключа -c.

Опции кодирования влияют на скорость работы и уровень сжатия. Настройки формата определяют расположение сэмплов, если на вход поступает файл без заголовка. Если у файла есть заголовок RIFF WAVE или AIFF, то настойки формата не нужны, так как они берутся из файла.

В режиме тестирования flac работает как и при декодировании, только выходной файл не записывается. Режимы декодирования и тестирования проверяют поток на наличие ошибок, а также сравнивают подпись MD5 декодированного потока с сохраненной подписью, даже если формат потока правильный.

Основные ключи
-v, --version Номер версии flac.
-h, --help Вывести основные методы использования и список всех опций. При запуске flac без аргументов отображается краткая справка.
-H, --explain Вывести справку полностью. При запуске flac без аргументов отображается краткая справка.
-d, --decode Декодирование (по умолчанию flac кодирует). flac завершит работу с кодом выхода 1, если будет встречена ошибка или контрольная сумма MD5 декодированного потока не совпадет с сохраненной. Если ошибок не будет, код возврата будет равен 0.
-t, --test Тестирование (то же самое, что и декодирование, только выход не записывается в файл). Коды возврата те же.
-a, --analyze Анализ (то же самое, что и декодирование, только выходом является файл статистики). Коды возврата те же. Режим предназначен в основном для разработчиков. В выходной текстовый файл записывается информация о каждом фрейме и подфрейме.
-c, --stdout Направить результат в стандартный вывод (stdout).
-s, --silent Не показывать статистику при кодировании/декодировании.
-o файл
--output-name=файл
Явно указать имя выходного файла, по умолчанию flac просто заменяет суффикс.
--output-prefix=строка Добавляет префикс к каждому имени выходному файлу. Может имспользоваться для кодирования/декодирования файлов в другой каталог. Если указанная строка является частью пути, убедитесь, что она заканчивается слэшем '/'.
--delete-input-file После успешного окончания кодирования/декодирования входной файл будет удален. Если произойдет ошибка, исходный файл останется.
--skip={#|mm:ss.ss} Пропустить первые # сэмплов входного файла. Работает для кодирования и декодирования, но не для тестирования. Альтернативную форму mm:ss.ss можно использовать, чтобы указать минуты, секунды и сотые секунды.
Например:
--skip=123 : пропустить первые 123 сэмпла входного файла
--skip=1:23.45 : пропустить 1 минуту 23.45 секунд
--until={#|[+|-]mm:ss.ss} Остановиться на данном сэмпле входного файла. Работает для кодирования и декодирования, но не для тестирования. Сэмпл с указанным номером не включается в вывод. Альтернативную форму mm:ss.ss можно использовать, чтобы указать минуты, секунды и сотые секунды. Если впереди стоит знак +, то последний сэмпл берется от начальной точки воспроизведения, если - -, то последний сэмпл вычисляется от конца потока аудио.
Например:
--until=123 : декодировать первые 123 сэмпла входного файла (сэмплы 0-122)
--until=1:23.45 : декодировать 1 минуту 23.45 секунд
--skip=1:00 --until=+1:23.45 : декодировать от 1:00.00 до 2:23.45
--until=-1:23.45 : декодировать все, кроме последней 1 минуты и 23.45 секунд
--until=-0:00 : декодировать весь ввод
--ogg

При кодировании генерируется вывод в формате Ogg-FLAC вместо "родного" FLAC. Потоки Ogg-FLAC представляют собой потоки FLAC обернутые в транспортный уровень Ogg. Полученный файл будет иметь суффикс '.ogg' и будет декодироваться утилитой flac.

При декодировании формат ввода однозначно определяется как Ogg-FLAC. Это полезно при получении данных со стандартного ввода или если у файла суффикс не '.ogg'.

--serial-number=# При использовании с ключом --ogg определяет серийный номер для потока FLAC. При кодировании без явно указанного серийного номера flac использует '0'. При декодировании по умолчанию используется серийный номер определенный на первой странице.

Опции анализаОпции декодированияОпции кодирования

--residual-text Добавляет в файл остаточный сигнал. Результирующий файл получается очень большим.
--residual-gnuplot Создает файлы-диаграммы для каждого подфрейма. В каждом файле будет остаточное распределение для подфрейма. Будет создано очень много файлов.

-F,
--decode-through-errors
По умолчанию flac прекращает декодирование в случае ошибки в потоке и удаляет частично декодированный файл. Использование ключа -F ведет к тому, что сообщения об ошибках выводятся, но flac продолжает работу до конца. Обратите внимание, что в результате такого декодирования в выходном файле могут быть пропущены сэмплы или появится блоки тишины.

-V Проверять процесс сжатия. В данном случае flac создает параллельный декодер, раскодирующий выход кодера и сравнивает результат с оригиналом. Если будет найдено несоответствие, кодирование прекратится. Время работы с этой опцией увеличивается, однако, при этом гарантируется, что файл будет правильно декодирован.
--lax Позволяет кодеру создавать файлы, отвечающие подмножеству формата FLAC. В результате работы будет получаться непотоковый файл, поэтому этот ключ следует использовать только для архивирования. Декодер будет поддерживать воспроизведение и поиск в таких файлах.
--replay-gain Вычислить значения ReplayGain и сохранить из в комментариях Vorbis, аналогично тому, как это делает VorbisGain. Уровень записи и максимальные значения амплитуды будут вычислены для каждого входного файла. Кроме того будет рассчитаны значения для всего альбома (всех входных файлов). Для этого все файлы должны иметь одинакоыую частоту дискретизации, разрешение и число каналов. Допустимы только моно и стерео файлы, а частота дискретизации должна быть 8, 11.025, 12, 16, 22.05, 24, 32, 44.1 или 48 кГц. Обратите внимание на то, что для этой опции может понадобиться несколько дополнительных байтов в блоке PADDING, так как точный размер блока нельзя вычислить, пока не будут обработаны все файлы.
Обратите внимание на то, что эту возможность нельзя использовать при кодировании в стандартный вывод.
--cuesheet=ИМЯ_ФАЙЛА Импортировать указанный список разбиения аудиодиска и сохранить его в блоке метаданных CUESHEET. Эту опцию можно использовать только при кодировании одного файла. Точки поиска будут добавлены для каждого трека из списка в блок SEEKTABLE, если не будет указана опция --no-cued-seekpoints.
Файл списка разбиения аудиодиска должен иметь такой же вид, в каком его создают программы CDRwin, CDRcue, EAC и т.д
--sector-align

При кодировании нескольких WAVE файлов, полученных с аудиодиска, выравнивать их на границу сектора. Эта опция применима только для кодирования нескольких WAVE файлов, каждый из которых должен иметь частоту дискретизации 44.1 кГц и два канала. Если будет указана эта опция кодер выровняет потоки .flac так, что их длины будут кратны размеру сектора CD-Audio (равны 1/75 секундам или 588 сэмплам). Это осуществляется переносом части сектора в конце каждого WAVE файла в начало следующего. Последний поток будет дополнен до границы выравнивания нулями.

Использование этой опции не приведет ни к чему, если файлы уже выровнены (например, если правильно скопированы с аудиодиска). flac может выровнять только несколько файлов за один вызов.

ВНИМАНИЕ: Порядок файлов имеет значение! Если вы сделаете следующий вызов 'flac --sector-align *.wav', командный процессор может обработать шаблон не в том порядке, в каком вы рассчитываете. Поэтому лучше всего вызывать программу, явно указав список файлов, например, 'flac --sector-align 8.wav 9.wav 10.wav'.

-S {#|X|#x|#s},
--seekpoint={#|X|#x|#s}
Добавляет точки для поиска в таблицу SEEKTABLE.
  • : создается точка поиска для сэмпла с определенным номером.
  • : резервируемые точки (всегда помещаются в конце SEEKTABLE).
  • #x : # равномерно распределенных точек поиска, первая соответствует 0 сэмплу.
  • #s : точки поиски расставляются для каждых # секунд; номер не обязательно должен быть целым числом, например, -S 9.5s ознчает, что точки будут проставлены с промежутком 9.5 секунд

Опцию -S можно использовать несколько раз. В результате получится объединенная таблица, в которой будут присутствовать только уникальные значения.
По умолчанию flac использует -S 10s. Если таблица поиска не нужна, укажите -S-.
ПРИМЕЧАНИЕ: -S #x и -S #s не будут работать, если кодер не сможет определить размер входного файла в начале работы.
ПРИМЕЧАНИЕ: если # больше или равен количеству сэмплов во входном файле, то точки добавлены не будут, если размер можно определить до кодирования, в противном случае будут записаны резервируемые точки.

-P #, --padding Кодер запишет блок метаданных PADDING, указанного размера (в байтах), после блока STREAMINFO. Ключ --no-padding указывает, что блок PADDING не нужен (значение по умолчанию). Этот блок полезен, если вы собираетесь добавить тэг в файл позже. Вместо того, чтобы переписывать файл полностью, можно будет записать информацию вместо блока PADDING. Обратите внимание на то, что общий размер блока PADDING будет на 4 байта больше, так как 4 байта занимает заголовок.
-T ПОЛЕ=ЗНАЧЕНИЕ, --tag=ПОЛЕ=ЗНАЧЕНИЕ Добавляет комментарии Vorbis, который должен соответствовать спецификации, т.е. ПОЛЕ должно содержать только определенные символы, завершающиеся знаком равенства. При необходимости не забывайте заключать комментарий в кавычки. Эту опцию можно использовать неоднократно для заполнения разных полей комментария. Все указанные значения будут применены ко всем кодируемым файлам.
-b #, --blocksize Устанавливает размер блока в сэмплах. По умолчанию 1152 для -l 0, иначе 4608. Стандартные потоки должны использовать одно из указаных значений: 192/576/1152/2304/4608/256/512/1024/2048/4096/8192/16384/32768. Сейчас кодер использует постоянный размер блока для всего файла.
-m, --mid-side Включает разностное кодирование (только для стерео потоков). Обычно увеличивает уровень сжатия на несколько процентов. Для каждого блока создается усредненная и стерео версия блока, сохраняется блок меньшего размера. Сейчас разностное кодирование доступно для файлов, где сэмпл имеет размер не больше 16 бит.
-M, --adaptive-mid-side Включает адаптивное разностное кодирование (только для стерео потоков). Работает аналогично -m, однако кодер переключается между независимым и усредняющим кодированием адаптивно. Метод работает быстрее, но уровень сжатия меньше, так как -m производит полный перебор вариантов.
-0..-8 Быстрейшее сжатие ... максимальное сжатие. По умолчанию -5.
-0, --compression-level-0 Аналогично -l 0 -b 1152 -r 2,2.
-1, --compression-level-1 Аналогично -l 0 -b 1152 -r 2,2 -M.
-2, --compression-level-2 Аналогично -l 0 -b 1152 -r 3 -m.
-3, --compression-level-3 Аналогично -l 6 -b 4608 -r 3,3
-4, --compression-level-4 Аналогично -l 8 -b 4608 -r 3,3 -M.
-5, --compression-level-5 Аналогично -l 8 -b 4608 -r 3,3 -m.
-6, --compression-level-6 Аналогично -l 8 -b 4608 -r 4 -m.
-7, --compression-level-7 Аналогично -l 8 -b 4608 -r 6 -m -e.
-8, --compression-level-8 Аналогично -l 12 -b 4608 -r 6 -m -e.
--fast Быстрейшее сжатие. Аналогично -0.
--best Максимальное сжатие. Аналогично -8.
-e,
--exhaustive-model-search
Полный поиск модели (работает медленно!). Обычно кодер определяет лучшую модель и кодирует далее опираясь на нее. В данном режиме кодер будет создавать подфреймы всех порядков и использовать наименьший. Если максимальное значение порядка LPC велико, время кодирования существенно возрастет. Выигрыш обычно составляет около 0.5%.
-E,
--escape-coding
Использовать управляющие коды в кодере энтропии. Эта опция позволяет записывать незакодированное представление остатка в разделе, если его размер меньше. При этом время работы увеличивается, а уровень сжатия обычно улучшается примерно на 1%.
-l #,
--max-lpc-order=#
Определяет максимальный порядок LPC (коэффициентов линейного прогнозирования). Число должно быть меньше или равно 32. Если значение равно 0, кодер будет использовать вместо общего линейного прогнозирования постоянные коэффициенты. Этот метод увеличивает скорость работы, но файлы получаются на 5-10% больше.
-q #,
--qlp-coeff-precision=#
Определяет точность дискретных коэффициентов линейного прогнозирования в битах. По умолчанию -q 0, что позволяет кодеру принимать решение в зависимости от сигнала. Лучше оставлять значение по умолчанию.
-p,
--qlp-coeff-precision-search
Производить оптимизацию LPC. Переопределяет любую опцию -q. Сильно замедляет работу, и уменьшает размер файла на долю процента. -q не работает, когда используется -l 0.
-r [#,]#,
--rice-partition-order=[#,]#
Установить [min,]max порядок раздела. Если минимальное значение не указано, то оно устанавливается равным 0. По умолчанию кодер один параметр Райса для всего остатка подфрейма. Если использовать эту опцию, остаток будет разделяться на 2^min# ... 2^max частей, для каждой из которых будет определен собственный параметр Райса. С увеличением параметра max выигрыш будет все меньше. Наиболее оптимальный вариант достигается при использовании -r 2,2 (и больших значений для больших размеров блоков). При этом сжатие обычно увеличивается на 1.5%. Выбор оптимального значения можно произвести по формуле размер_блока/(2^n)=128. Максимальный уровень сжатия достигается при использовании -r 0,16.

Настройки формата

--endian={big|little} Определяет порядок байтов в файле без заголовка big-endian | little-endian.
--channels=# Определяет количество каналов в файле без заголовка.
--bps=# Определяет количество бит на сэмпл в файле без заголовка.
--sample-rate=# Определяет количество сэмплов в секунду в файле без заголовка.
--sign={signed|unsigned} Определяет, должны ли быть сэмплы в файле без заголовка беззнаковые или знаковые (по умолчанию знаковые).
--force-aiff-format Декодер будет записывать в формат AIFF. Эта опция не нужна, если имя выходного файла (указанное с помощью ключа -o) заканчиватся на .aiff.
--force-raw-format Воспринимать входной (или выходной при декодировании) файл как поток сэмплов без заголовка вне зависимости от суффикса.

Отмена действия опций

metaflac

metaflac - это редактор метаданных, работающий из командной строки. Его можно использовать для удаления, вставки и вывода содержимого блоков во .flac файле, а также управления блокомPADDING, резервирующим место.

Документация для metaflac в формате HTML сейчас переписывается, поэтому сейчас о возможностях можно узнать, дав команду metaflac --help или ознакомиться со man-страницей.

Плагин для XMMS

Для его установки необходимо скопировать libxmms-flac.so в каталог, где находятся плагины ввода XMMS (обычно /usr/lib/xmms/Input). Больше ничего настраивать не надо. Для воспроизведения .flac файлов перезапустите XMMS.

Плагин для Winamp

Есть два плагина для Winamp: один для версий 2.x, а второй для 3.x. Если вы используете Winamp 2.x, то для установки плагина необходимо скопировать in_flac.dll в каталог, где находятся плагины ввода Winamp (обычно /Plugins). Больше ничего настраивать не надо. Для воспроизведения .flac файлов перезапустите Winamp.

Плагин для Winamp

Есть два плагина для Winamp: один для версий 2.x, а второй для 3.x. Если вы используете Winamp 3.x, то для установки плагина необходимо скопировать cnv_flacpcm.wac в каталог, где находятся плагины ввода Winamp (обычно /Wacs). Больше ничего настраивать не надо. Для воспроизведения .flac файлов перезапустите Winamp.

Известные ошибки

Отслеживание ошибок ведется на

Ниже перечислены известные ошибки в текущей версии (1.1.0):

  • Нет известных ошибок.

В версии 1.0.4 были следующие значимые ошибки:

  • Во всех декодерах до этой версии включительно была ошибка не позволяющая правильно пропускать неизвестные блоки метаданных. Файл FLAC, созданный кодером flac 1.1.0 и содержащий блок метаданных CUESHEET, не будет воспроизводиться более ранними версиями декодеров.
  • В metaflac была ошибка, возникающая при импортировании комметария в формате Vorbis, которая могла привести к повреждению файла FLAC.

monkey

Monkey's Audio поставляется с удобным пользовательским интерфейсом. Он поддерживает несколько внешних кодеров, в число которых не входит FLAC. Однако дистрибутив FLAC для Windows поставляется с утилитой, позволяющей заменить один из поддерживаемых внешних кодеков на FLAC. Это можно сделать так:

  • Скопируйте flac.exe и flac_ren.exe в каталог External/ установки Monkey's Audio.
  • Выберите, какой поддерживаемый кодер заменить:
    • Shorten - скопируйте flac_mac.exe поверх External/shortn32.exe
    • WavPack - скопируйте flac_mac.exe поверх External/wavpack.exe и External/wvunpack.exe
    • RKAU - скопируйте flac_mac.exe поверх External/rkau.exe
    Если выбрать WavPack, то для изменения опций FLAC будет доступно меню настройки WavPack Configuration.
  • Теперь можно кодировать в формат FLAC. Переименованный файл flac_mac.exe вызывает flac.exe, а затем flac_ren.exe для присвоения получаемому файлу расширения .flac.

Другие оболочки можно использовать примерно таким же способом.

Формат

Здесь приведено полное описание формата FLAC.

От автора

Во-первых, как основной разработчик, я должен отметить, что не являюсь экспертом в области сжатия, поэтому чувствую себя обязанным поблагодарить многих людей, работавших над улучшением алгоритмов компрессии аудиоданных. Отдельную благодарность я выражаю:

  • Н. Левинсону и Дж. Дарбину. Базовый кодер использует разработанный и улучшенный ими алгоритм для определения LPC коэффициентов из коэффициентов автокорреляции.
  • И, конечно же,

--Джош Колсон

Э. Робинсону за работу над Shorten. Его статья послужила отправной точкой для нескольких основных методов, заложенных во FLAC. FLAC развил идею постоянных предикторов, используемую в Shorten. С. Голомбу и Роберту Райсу. Их универсальные коды используются кодером энтропии. К. Шеннону. 

Область применения

Общеизвестно, что нет алгоритма, способного сжать без потерь входные данные любого типа. Большинство архиваторов позиционируются для работы с данными определенного вида и оптимизируются для этой области. FLAC предназначен для сжатия аудиоданных. Несмотря на то, что он может сжать без потерь данные любого типа, только определенный ввод архивируется хорошо. FLAC использует тот факт, что обычно аудиоданные имеют высокий порядок корреляции между сэмплами.

В области аудио существует множество возможных подразделов. Например, речь с низким битрейтом, многоканальная музыка с высокой частотой дискретизации и т.д. FLAC не нацелен на какой-либо подраздел, однако большинство параметров по умолчанию базового кодера рассчитаны на CD-аудио (т.е. 44.1кГц, 2 канала, 16 бит на сэмпл). Влияние параметров кодирования на разные типы аудио будет рассмотрено позже.

Архитектура

Подобно большинству программ такого рода, кодер FLAC выполняет следующие действия:

В дополнение ко всему определена система метаданных, позволяющая добавлять в начало потока произвольную информацию.

Разбиение на блоки. Ввод разбивается на множество последовательных блоков, которые могут иметь различный размер. Оптимальный размер блока обычно зависит от многих факторов, таких как частота дискетизации, спектральная характеристика во времени и т.д. Несмотря на то, что формат FLAC позволяет использовать в потоке блоки различного размера, базовый кодер использует постоянный размер. Межканальная декорреляция. В случае стереопотоков кодер создает средний и разностный сигналы, основанные на среднем значении между левым и правым каналами и их разности соответственно. На следующий этап кодирования передается лучший из вариантов сжатого сигнала. Прогнозирование. Далее кодер пытается найти математическое описание сигнала (обычно приблизительное). Зачастую оно значительно меньше самого сигнала. Так как методы предсказания известны и кодеру, и декодеру в потоке нужно указать только параметры предиктора. Сейчас FLAC использует четыре различных класса предикторов (описанных в разделе Прогнозирование), но в формате предусмотрено место для дополнительных методов. FLAC допускает изменение класса предиктора от блока к блоку и даже в пределах канала в блоке. Кодирование остатков. Если предиктор не описывает сигнал точно, разница между оригинальным сигналом и спрогнозированным (называемым еще ошибочным или остаточным) должна быть закодирована без потерь. Если предсказание эффективно, остаточный сигнал будет занимать меньше бит на сэмпл, чем оригинальный сигнал. Сейчас FLAC использует только один метод для кодирования остатков (см. раздел Кодирование остатков), однако в формате предусмотрено место для дополнительных методов. FLAC допускает изменение метода кодирования остатков от блока к блоку и даже в пределах канала в блоке.

Определения

Многие термины, такие как "блок" и "фрейм", имеют различное значение в схемах кодирования. Например, фрейм в mp3 сооветствует многим сэмплам во всех каналах, в то время как фрейм S/PDIF представляет только один сэмпл для каждого канала. Обратите внимание на то, что, говоря о "блоках" и "подблоках", мы ссылаемся на незакодированные аудиоданные, а термины "фрейм" и "подфрейм" используем для данных сжатых FLAC.

  • Блок - это один или более сэмплов, находящихся в нескольких каналах.
  • Подблок - это один или более сэмплов из одного канала. Таким образом, блок содержит подблок для каждого канала и все подблоки в нем содержат одинаковое количество сэмплов.
  • Размер блока - это количество сэмплов в любом из своих подблоков. Например, блок длиной в одну секунду с частотой дескретизации 44.1кГц имеет размер блока 44100 вне зависимости от количества каналов.
  • Фрейм - это заголовок и один или несколько подфреймов.
  • Подфрейм - это заголовок и один или несколько закодированных сэмплов из данного канала. Все подфреймы в данном фрейме содержат одинаковое количество сэмплов.

Разбиение на блоки

Размер блоков сильно влияет на уровень сжатия. Если размер блока будет слишком мал, то в итоге получится очень много фреймов, а это значит, что на заголовки будет потрачено много битов. Если же размер блока большой, а характеристики сигнала сильно варьируются, кодер не сможет найти хороший предиктор. Чтобы упростить кодек, FLAC определяет минимальный размер блока в 16 сэмплов, а максимальный в 65535 сэмплов. Этот интервал покрывает оптимальные размеры блоков для всех аудиоданных, поддерживаемых FLAC.

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

Разбитые на блоки данные передаются на стадию прогнозирования по одному подблоку. Каждый подблок кодируется в подфрейм независимо, а позже они объендиняются во фрейм. Так как каждый канал кодируется отдельно, это означает, что один канал стерео фрейма может сжиматься как постоянный подфрейм, а второй как LPC подфрейм.

Межканальная декорреляция

В большинстве случаев в стерео потоках существует достаточный уровень корреляции между левым и правым каналами. FLAC позволяет фреймам в стерео потоках иметь различное распределение каналов, а кодер может использовать лучшее представление.

  • Независимое. Левый и правый каналы кодируются независимо.
  • Разностное. Левый и правый канал преобразовываются в средний и остаточный каналы. Средний канал - это среднее значение левого и правого сигналов, а остаточный - разница между ними (левый минус правый).
  • Левостороннее. Кодируется левый и остаточный каналы.
  • Правоостороннее. Кодируется правый и остаточный каналы.

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

Прогнозирование

FLAC использует четыре метода для моделирования входного сигнала:

  • Дословный. По существу это прогнозирование сигнала нулевого уровня. Предиктором сигнала является сам сигнал, потому сжатие не происходит. Это образец, с которым сверяются все остальные предикторы. Если передать кодеру случайные данные, для всех подблоков скоре всего будет использован дословный предиктор. Так как необработанный сигнал не проходит стадию кодирования остатков, результаты не будут совпадать с линейным предиктором нулевого порядка.
  • Постоянный. Этот предиктор используется, когда подблок содержит цифровую тишину, т.е. на вход поступает одна константа. Сигнал кодируется по всей длине и добавляется к потоку.
  • Постоянный линейный предиктор. FLAC использует класс эффективно вычисляемых постоянных линейных предикторов (хорошее описание приведено у
  • Линейное прогнозирование FIR. Для более точного моделирования (за счет медленной работы) FLAC поддерживает линейное прогнозирование FIR до 32 порядка (см.

Shorten и AudioPak). FLAC добавляет предиктор четвертого уровня к использованным в Shorten предикторам от нулевого до третьего уровня. Так как предикторы постоянны, в сжатом потоке необходимо сохранить только порядок предиктора. Остаточный сигнал передается кодеру остатков. Shorten и AudioPak). Базовый кодер использует метод Левинсона-Дарбина для расчета LPC коэффициентов из коэффициентов автокорреляции и коэффициенты разбиваются перед вычислением остатков. В то время как такие кодеры как Shorten используют постоянное разбиение для всего ввода, FLAC позволяет для каждого фрейма менять точность коэффициента разбиения. Базовый кодер FLAC оценивает оптимальную точность, основываясь на размере блока и диапазоне оригинального сигнала.

Кодирование остатков

Для кодирования остаточного сигнала от стадии прогнозирования FLAC использует два похожих метода. Остаточный сигнал сжимается с использованием кодов Райса следующими способами:

  1. Кодер оценивает одиночный параметр Райса, основанный на разнице остатка и кодов Райса. Весь остаток кодируется с использованием этого параметра.
  2. Остаток делится на несколько интервалов одинаковой длины и каждый из них кодируется со своим параметром Райса, основанным на среднем значении для данного интервала.

Обратите внимание на то, что первый метод является частным случаем второго с одним интервалом. Отличие состоит в том, что в первом методе параметр Райса вычисляется для разницы остатка, а не для среднего значения.

В формате FLAC зарезервировано место для других методов кодирования. Кто-нибудь может попытаться найти лучшее контекстное моделирование параметра Райса или кодирования Хаффмана. Описания нескольких универсальных кодов можно найти на страницах

LOCO-I и pucrunch.

Формат

В этом разделе описывается формат файла. Формат FLAC не предусматривает поля для номера версии, однако содержит несколько зарезервированных позиций. Последующие версии смогут использовать это место без нарушения совместимости с предыдущими версиями. Более старые версии декодеров могут либо прекращать работу, либо пропускать данные, закодированные новыми методами. Кроме того зарезервированы некоторые специальные значения, которые не могут появиться ни в одной из версий формата. Это обычно делается для улучшения механизма синхронизации.

Все числа в формате FLAC являются целыми, младший байт которых записывается вначале (big-endian). Числа являются беззнаковыми, кроме тех случаев, где явно указано обратное.

К потоку FLAC могут быть добавлены тэги ID3v1 (в конце) и ID3v2 (в начале). Эти данные не относятся к формату, однако декодер умеет пропускать их.

Перед полным описанием формата приведем его краткий обзор.

  • Формат FLAC состоит из маркера "fLaC" в начале потока, за которым следует обязательный блок STREAMINFO, любое количество других блоков метаданных, а затем аудиофреймы.
  • FLAC поддерживает до 128 блоков метаданных. Сейчас определены:
    • Аудиопоток состоит из одного или нескольких фреймов. У каждого фрейма есть заголовок, состоящий из кода синхронизации, информации о фрейме (размер блока, частота дискретизации, количество каналов и т.п.) и восьмибитной контрольной суммы. Также в заголовке содержится либо номер первого сэмпла во фрейме относительно всего потока (для потоков с изменяющимся размером блока) или номер фрейма (для потоков с постоянным размером блока). Это позволяет производить быстрый и точный поиск. Далее следуют закодированные подфреймы (по одному на каждый канал) и, наконец, фрейм, дополненный нулями до границы байта. Каждый подфрейм имеет свой заголовок, определяющий способ его декодирования.
    • Так как декодер может начать работу в середине потока, должен быть метод определения начала фрейма. Каждый фрейм начинается с 14-битного синхронизирующего кода. Этот код не может появляться ни в одном другом месте заголовка фрейма. Однако так как это код может появиться в подфреймах, у декодера есть два способа определить, что данная последовательность является началом фрейма. Сначала проверяется корректность данных во всем фрейме. Однако этот шаг не может гарантировать отсутствия ошибок, поэтому дополнительно производится расчет восьмибитной контрольной суммы заголовка фрейма и полученный результат сравнивается со значением, полученным при кодировании и записанным после заголовка фрейма.
    • Каждый фрейм должен содержать основную информацию о потоке, так как декодер может не иметь доступа к блоку метаданных STREAMINFO в начале потока. Сюда входит частота дискретизации, количество бит на сэмпл, количество каналов и т.д. Так как заголовоки фреймов вносят дополнительные накладные расходы, то они влияют уровень сжатия. Чтобы сделать заголовки фреймов минимальными, FLAC использует таблицы поиска для наиболее часто используемых значений параметров фремов. Например, часть, отвечающая за частоту дискретизации, занимает 4 бита. Восемь предопределенных значений соответствуют наиболее самым распространенным частотам (8/16/22.05/24/32/44.1/48/96 кГц). Однако дополнительные частоты могут быть использованы с помощью специального набора битов, указывающего декодеру, что необходимое значение находится в конце заголовка. Такой же метод используется для указания размера блока и количества битов на сэмпл. В этом случае заголовок остается достаточно малым для наиболее распространенных типов аудиоданных.
    • Подфреймы (по одному для каждого канала) кодируются во фрейме отдельно и хранятся в потоке последовательно. Это ведет к упрощению декодера, однако ценой этому является увеличение размеров буффера. У каждого подфрейма есть свой заголовок, определяющий его аттрибуты (метод и порядок прогнозирования, параметры кодирования остатков и т.д.). За заголовком следуют аудиоданные для этого канала.
    • Во FLAC определено специальное подмножество формата (Subset format). Все потоки сжатые этим методом на самом деле являются потоковыми, то есть декодер, который не может искать в потоке, имеет возможность перейти к любой его точке и начать воспроизведение. Для файлов, отвечающих этому подмножеству формата, значительно проще сделать аппаратный декодер. flac по умолчанию создает потоки, отвечающие этому подмножеству формата. Ключ --lax запрещает создание таких потоков. Чтобы файл отвечал данному подмножеству, для него должны выполняться следующие ограничения:
      • Значение битов, отвечающих за размер блока, должно быть в пределах 0001-0101 или 1000-1110. Поток должен состоять из блоков одинакового небольшого размера (за исключением последнего), а в блоке метаданных STREAMINFO должны быть указаны равные значения для минимального и максимального размера блока.
      • Частота дискретизации в заголовке фрейма должна описываться следующим диапазоном битов 0001-1011.
      • Количество бит на сэмпл в заголовке фрейма должно описываться следующим диапазоном битов 001-111.

    В таблице приведено формальное описание формата FLAC. Числа в угловых скобках показывают количество битов, используемых данным полем.

    ПОТОКБЛОК_МЕТАДАННЫХБЛОК_МЕТАДАННЫХ*ФРЕЙМ+

    <32> "fLaC", маркер потока FLAC в кодировке ASCII, означающий, что первыми четырьмя байтами потока являются 0x66, 0x4C, 0x61, 0x43
    Обязательный блок метаданных STREAMINFO, содержащий основные свойства потока
    Ноль или больше блоков метаданных
    Один или больше аудиофреймов

    БЛОК_МЕТАДАННЫХЗАГОЛОВОК_БЛОКА_МЕТАДАННЫХСОДЕРЖИМОЕ_БЛОКА_МЕТАДАННЫХ
    Заголовок, определяющий тип и размер блока метаданных
     

    ЗАГОЛОВОК_БЛОКА_МЕТАДАННЫХ
    <1> Флаг равный 1, если данный блок метаданных является последним перед аудиоблоками, 0 в противном случае
    <7> Тип блока:
    • 0 : STREAMINFO
    • 1 : PADDING
    • 2 : APPLICATION
    • 3 : SEEKTABLE
    • 4 : VORBIS_COMMENT
    • 5 : CUESHEET
    • 6-127 : зарезервированы
    <24> Длина в байтах соответствующего блока метаданных (не включает размер ЗАГОЛОВКА_БЛОКА_МЕТАДАННЫХ)

    СОДЕРЖИМОЕ_БЛОКА_МЕТАДАННЫХБЛОК_МЕТАДАННЫХ_STREAMINFO|| БЛОК_МЕТАДАННЫХ_PADDING|| БЛОК_МЕТАДАННЫХ_APPLICATION|| БЛОК_МЕТАДАННЫХ_SEEKTABLE|| БЛОК_МЕТАДАННЫХ_VORBIS_COMMENT|| METADATA_BLOCK_CUESHEET
    Содержимое блока должно соответствовать типу блока, указанному в заголовке

    БЛОК_МЕТАДАННЫХ_STREAMINFO
    <16> Минимальный размер блока в сэмплах в данном потоке.
    <16> Максимальный размер блока в сэмплах в данном потоке.
    <24> Минимальный размер фрейма в байтах в данном потоке. Если значение не известно, то 0
    <24> Максимальный размер фрейма в байтах в данном потоке. Если значение не известно, то 0
    <20> Частота дискретизации в Гц.
    <3> (Количество каналов) - 1. FLAC поддерживает от 1 до 8 каналов.
    <5> (Количество битов на сэмпл) - 1. FLAC поддерживает от 1 до 32 битов на сэмпл. Сейчас базовые декодер и кодер поддерживают до 24 бит на сэмпл.
    <36> Количество сэмплов в потоке. Если здесь указан 0, то количество сэмплов не известно.
    <128> Подпись MD5 несжатых аудиоданных, которая позволяет декодеру обнаружить ошибку, даже если ее наличие не нарушает структуру потока.
      Примечания:
    • Во FLAC определен минимальный размер блока в 16 сэмплов и максимальный размер - 65535. Это значит, что значения от 0 до 15 в соответствующих полях являются ошибочными.

    БЛОК_МЕТАДАННЫХ_PADDING
    n бит со значением 0. n должно быть кратно 8.

    БЛОК_МЕТАДАННЫХ_APPLICATIONрегистрации)
    <32> Зарегистрированный id приложения (см. страницу
    Данные приложения. n должно быть кратно 8.

    БЛОК_МЕТАДАННЫХ_SEEKTABLESEEKPOINT+
    Одна или больше точек поиска.
      Примечания:
    • Количество точек поиска определяется в поле заголовка блока метаданных "длина" и равно длина / 18.

    БЛОК_МЕТАДАННЫХ_SEEKPOINT
    <64> Номер сэмпла в потоке первого сэмпла целевого фрейма или 0xFFFFFFFFFFFFFFFF для зарезервированной точки.
    <64> Смещение в байтах от первого байта первого заголовка фрейма до первого байта заголовка целевого фрейма.
    <16> Количество сэмплов в целевом фрейме.
      Примечания:
    • Для зарезервированных точек значения второго и третьего поля не определены.
    • Точки поиска должны быть отсортированы в таблице по возрастанию номера сэмпла.
    • Поля, содержащие номера первых сэмплов в целевом фрейме, должны быть уникальны для всех точек, за исключением зарезервированных.
    • Из двух предыдущих замечаний следует, что зарезервированных точек может быть любое количество, но они должны располагаться в конце таблицы.

    БЛОК_МЕТАДАННЫХ_VORBIS_COMMENTздесь. Обратите внимание на то, что спецификация Vorbis ограничивает размер этого блока 2 ^ 64 байтами, в то время как блок метаданных FLAC может иметь размер не больше 2 ^ 24 байтов. В соответствии со спецификацией Vorbis 32-битные данные, записанные в прямом порядке, в отличие от целых, записанных в обратном порядке, используемых в остальных частях FLAC.
    Содержимое комметария в формате Vorbis, как оно описано

    БЛОК_МЕТАДАННЫХ_CUESHEETCUESHEET_TRACK+
    <128*8> Номер в мультимедийном каталоге, в котором используются только символы ASCII из диапазона 0x20-0x7e. В общем случае этот номер может иметь размер от 0 до 128 байтов, а символы справа, оставшиеся неиспользованными, должны быть заполнены байтом 0x00. На аудиодисках номер состоит из 13 цифр, за которыми следуют 115 пустых символов.
    <64> Количество начальных сэмплов. Это поле имеет значение только для оглавлений аудиодисков, для остальных целей должно быть установлено значение 0. Для аудиодисков начальной является зона помеченная как TRACK 00, где хранится оглавление. Более точно определение для данного поля выглядело бы так: это число сэмплов от первого сэмпла на диске до первого сэмпла превой индексной точки первого трека. В соответствии со стандартом Red Book начальная зона должна содержать тишину, поэтому программы для копирования с аудиодиска обычно не сохраняют ее. Кроме того начальная зона должна занимать не меньше двух секунд. Поэтому здесь хранится длина начальной зоны, чтобы потом моджно было вычислить абсолютную позицию первого трека. Обратите внимание на то, что число сэмплов указывается до первой индексной точки первого трека, а не обязательно до точки INDEX 01 первого трека, так как на первом треке могут быть данные с индексом INDEX 00.
    <1> 1, если CUESHEET соответствует компакт диску, иначе 0.
    <7+258*8> Зарезервировано. Все биты должны быть равны 0.
    <8> Количество треков. Для аудиодисков это число должно быть не больше, чем 100 (99 обычных треков и завершающий трек).
    Один или больше треков. В блоке CUESHEET обязательно должен быть завершающий трек@@@@. По спецификации Red Book на аудиодисках номер завершающего трека должен равняться 170.

    CUESHEET_TRACKздесьи здесь. Значение из 12 пустых символов ASCII можно использовать, чтобы указать на отсутствие ISRC.здесь.ИНДЕКС_ТРЕКА_В_СПИСКЕ+
    <64> Смещение трека в сэмплах относительно начала аудиопотока FLAC. Это смещение для первой индексной точки трека. (Обратите внимание на отличие от аудиодиска, где смещение трека в содержании хранится в INDEX 01, даже если есть INDEX 00.) В аудиодиске смещение всегда кратно 588 (588 сэмплов = 44100 сэмплов/сек. * 1/75 сек.).
    <8> Номер трека. Номер трека 0 недопустим, чтобы избежать конфликта со спецификацией аудиодиска, которая резервирует этот номер для начального трека. Для аудиодиска номер должен быть от 1 до 99 или 170 для завершающего трека. Не является необходимым, но рекомендуется начинать нумерацию с 1 и увеличивать номера последовательно. Номера треков в списке должны быть уникальными.
    <12*8> Международный стандартный код записи (ISRC) для трека. Это 12-символьный код, состоящий только из цифр; см.
    <1> Тип трека: 0 - для аудио, 1 - для остальных типов данных. Это поле соответствует третьему контольному биту Q-канала аудиодиска.
    <1> Флаг предварительной корелляции: 0 -- если ее нет, иначе 1. Соответствует 5 контрольному биту Q-канала аудиодиска; см.
    <6+13*8> Зарезервировано. Все биты должны быть равны 0.
    <8> Число индексных точек трека. Для каждого трека должен быть хотя бы один индекс, кроме завершающего, у которого нет индекса. У аудиодиска это число не должно быть больше 100.
    Одна или больше индексных точек для трека.

    ИНДЕКС_ТРЕКА_В_СПИСКЕ
    <64> Смещение в сэмплах индексной точки относительно смещения трека. Для аудиодиска смещение должно быть кратно 588 (588 сэмплов = 44100 сэмплов/сек. * 1/75 сек.). Обратите внимание на то, что смещение берется от начала трека, а не от начала аудиоданных.
    <8> Номер индексной точки. Первый индекс трека должен иметь номер 0 или 1, а далее номера индексов должны последовательно увеличиваться на 1. Номера индексов для трека должны быть уникальны.
    <3*8> Зарезервировано. Все биты должны быть равны 0.

    ФРЕЙМЗАГОЛОВОК_ФРЕЙМАПОДФРЕЙМ+ЗАВЕРШЕНИЕ_ФРЕЙМА<>1
     
    Один подфрейм на канал
    Выравнивание нулями на границу байта
     

    ЗАГОЛОВОК_ФРЕЙМА
    <14> код синхронизации 11111111111110
    <2> Зарезервировано:
    • 00 : обязательное значение
    • 01-11 : зарезервировано для последующего использования
    <4> Размер блока в сэмплах:
    • 0000 : получить из блока метаданных STREAMINFO
    • 0001 : 192 сэмпла
    • 0010-0101 : 576 * (2^(2-n)) сэмплов, т.е. 576/1152/2304/4608
    • 0110 : получить 8 битов (размер блока-1) из конца заголовка
    • 0111 : получить 16 битов (размер блока-1) из конца заголовка
    • 1000-1111 : 256 * (2^(n-8)) сэмплов, т.е. 256/512/1024/2048/4096/8192/16384/32768
    <4> Частота дискретизации:
    • 0000 : получить из блока метаданных STREAMINFO
    • 0001-0011 : зарезервированы
    • 0100 : 8кГц
    • 0101 : 16кГц
    • 0110 : 22.05кГц
    • 0111 : 24кГц
    • 1000 : 32кГц
    • 1001 : 44.1кГц
    • 1010 : 48кГц
    • 1011 : 96кГц
    • 1100 : получить 8-битное значение частоты дискретизации (в кГц) из конца заголовка
    • 1101 : получить 16-битное значение частоты дискретизации (в Гц) из конца заголовка
    • 1110 : получить 16-битное значение частоты дискретизации (в дГц) из конца заголовка
    • 1111 : ошибочное значение, чтобы не допустить совпадение с кодом синхронизации
    <4> Расположение каналов:
    • 0000-0111 : (количество независимых каналов)-1. Когда == 0001, канал 0 является левым, 1 - правым
    • 1000 : левостороннее стерео: канал 0 является левым, 1 - разностным
    • 1001 : правостороннее стерео: канал 0 является разностным, 1 - правым
    • 1010 : усредненное стерео: канал 0 является усредненным, 1 - разностным
    • 1011-1111 : зарезервированы
    <3> Количество битов на сэмпл:
    • 000 : получить из блока метаданных STREAMINFO
    • 001 : 8 бит на сэмпл
    • 010 : 12 бит на сэмпл
    • 011 : зарезервировано
    • 100 : 16 бит на сэмпл
    • 101 : 20 бит на сэмпл
    • 110 : 24 бит на сэмпл
    • 111 : зарезервировано
    <1> Дополнение нулем до границы бита, чтобы не допустить ошибку синхронизации
    Если (переменный размер блока)
       <8-56> : номер сэмпла в формате UTF-8 (размер декодируемого числа 36 бит)
    иначе
       <8-48> : номер фрейма в формате UTF-8 (размер декодируемого числа 31 бит)
    Если (битовая маска размера блока == 11x)
       8/16 бит (размер блока - 1)
    Если (битовая маска частоты дискретизации == 11xx)
       частота дискретизации 8/16 бит
    <8> 8-битная полиномальная контрольная сумма (x^8 + x^2 + x^1 + x^0) данных заголовка, включая код синхронизации (x инициализируется нулем).
      Примечания:
    • Биты размера блока 0000-0101 могут быть использованы только при постоянном их значении во всем блоке. Биты 0110-0111 могут использоваться в любом случае, декодер будет считать, что поток имеет переменную длину блока. Существует одно исключение: кодер может использовать биты 0110-0111 в последнем фрейме потока с постоянным размером блока в том случае, если его длина не больше, чем используемая в всем потоке.

    ЗАВЕРШЕНИЕ_ФРЕЙМА
    <16> 16-битная полиномальная контрольная сумма (x^16 + x^15 + x^2 + x^0) всего фрейма (x инициализируется нулем).

    ПОДФРЕЙМЗАГОЛОВОК_ПОДФРЕЙМАПОДФРЕЙМ_CONSTANT|| ПОДФРЕЙМ_FIXED||
    ПОДФРЕЙМ_LPC|| ПОДФРЕЙМ_VERBATIM
     
    Тип подфрейма, определяемый в заголовке

    ЗАГОЛОВОК_ПОДФРЕЙМА
    <1> Бит равный 0, чтобы предотвратить ошибку синхронизации.
    <6> Тип подфрейма:
    • 000000 :
    • ПОДФРЕЙМ_CONSTANT
    • 000001 :
    • ПОДФРЕЙМ_VERBATIM
    • 00001x : зарезервировано
    • 0001xx : зарезервировано
    • 001xxx : Если (xxx <= 4)
    • ПОДФРЕЙМ_FIXED, xxx= порядок; иначе зарезервировано
    • 01xxxx : зарезервировано
    • 1xxxxx :
    • ПОДФРЕЙМ_LPC, xxxxx = порядок-1
    <1+k> Флаг 'неиспользуемые биты на сэмпл':
    • 0 : в исходном подблоке нет 'неиспользуемых битов', k=0
    • 1 : k 'неиспользуемых битов' в исходном подблоке, число записывается в унарном формате; т.е. для k=3 последовательность битов будет выглядеть так 001, для k=7 - 0000001.
      Примечания:
    • 'Неиспользуемые биты' встречаются в блоке данных, если при заявленных n битах значимыми являются только m. Число k = n - m и будет определять количество 'неиспользуемых битов'. Например, если все 16-битные сэмплы в исходном подблоке выглядят как 'xxxxxxxxxxxxx000', то кодер кодирует только 13 бит, и запоминает, что 3 бита являются 'неиспользуемыми'.

    ПОДФРЕЙМ_CONSTANT
    Несжатое постоянное значение подблока, n равно количеству битов на сэмпл во фрейме

    ПОДФРЕЙМ_FIXEDОСТАТОК
    Некодируемые начальные сэмплы (n равно количеству битов на сэмпл во фрейме, умноженному на порядок предиктора).
    Закодированный остаток

    ПОДФРЕЙМ_LPCОСТАТОК
    Некодируемые начальные сэмплы (n равно количеству битов на сэмпл во фрейме, умноженному на порядок предиктора).
    <4> (точность дискретного коэффициета линейного прогнозирования (QLP)) - 1. Значение 1111 недопустимо.
    <5> Необходимый сдвиг дискретного коэффициета линейного прогнозирования в битах. (Примечание: это число - знаковое дополнение до двух).
    Несжатые коэффициенты прогнозирования (n = точность QLP * порядок LPC) (Примечание: эти числа являются знаковыми дополнениями до двух).
    Закодированный остаток

    ПОДФРЕЙМ_VERBATIM
    Несжатый подблок, n равно количеству битов на сэмпл во фрейме, i - размеру блока

    ОСТАТОКОСТАТКИ_СЖАТЫЕ_МЕТОДОМ_РАЙСА
    <2> Метод кодирования остатков:
    • 00 : кодирование Райса
    • 01-11 : зарезервировано
     
      Примечания:
    • Сейчас FLAC использует только один метод кодирования остатков

    ОСТАТКИ_СЖАТЫЕ_МЕТОДОМ_РАЙСАРАЗДЕЛ_РАЙСА+
    <4> Порядок раздела
    Далее следуют 2^порядок разделов

    РАЗДЕЛ_РАЙСА
    <4(+5)> Параметр кодирования:
    • 0000-1110 : Параметр Райса.
    • 1111 : Код, означающий, что раздел является несжатым и в нем используются n битов на сэмпл. n представлено 5-битным числом.
    Закодированный остаток. Количество сэмплов n в разделе определяется следующим образом:
    • Если порядок раздела равен 0, n равно размеру блока для фрейма.
    • иначе если это не первый раздел подфрейма, n = (размер блока для фрейма / (2^порядок раздела))
    • иначе n = (размер блока для фрейма / (2^порядок раздела)) - порядок предиктора

    FLAC - это аббревиатура от Free Lossless Audio Codec (свободный аудиокодек, сжимающий без потерь). Проект FLAC включает:

    • потоковый формат;
    • базовые кодеры и декодеры в виде библиотек;
    • flac, утилиту командной строки, выполняющую сжатие и распаковку файлов .flac;
    • metaflac, утилиту командной строки для редактирования метаданных в файлах .flac;
    • плагины для разных плейеров.

    "Свобода" означает, что спецификация потокового формата открыта для всех и может быть использована для любых целей (проект FLAC оставляет за собой право устанавливать спецификации и сертифицировать относящиеся к нему продукты на совместимость), а также то, что ни формат, ни один из реализованных методов кодирования/декодирования не запатентованы. Это также значит, что все исходные тексты доступны по лицензиям, обязывающим предоставлять исходные коды.

    FLAC компилируется на множестве платформ: Unixes (Linux, *BSD, Solaris, OS X), Windows, BeOS и OS/2. Имеются системы сборки для autoconf/automake, MSVC, Watcom C и Project Builder.

    Характеристики FLAC:

    Формат FLAC и методы кодирования/декодирования не защищены патентами.

    • Сжатие без потерь: Кодирование PCM данных не приводит к потере информации, следовательно декодируемый аудиофайл абсолютно идентичен тому, который был подан на вход кодеру. Чтобы определить возможные ошибки при передаче файла, для каждого фрейма вычисляется 16-битная контрольная сумма. Целостность на дальнейшем этапе подтверждается подписью
    • MD5распакованных данных, которая находится в заголовке и может быть проверена при воспроизведении, декодировании или с помощью тестирования.
    • Скорость: Скорость работы при кодировании и декодировании несимметричны. Для декодирования используется только целочисленная арифметика, которая требует значительно меньше вычислений, чем в перцепционных кодеках. Декодирование в реальном времени легко достижимо даже на старых компьютерах.
    • Аппаратная поддержка: Благодаря свободной базовой реализации и простому декодированию FLAC является единственным аудиокодеком, сжимающим без потерь, который имеет аппаратную поддержку.
    • Поточность: Каждый фрейм FLAC содержит достаточно информации для собственного декодирования. Текущий фрейм FLAC не зависит от предыдущих и последующих. FLAC использует коды синхронизации и контрольные суммы, что позволяет декодеру быстро выбирать позицию в текущем потоке.
    • Поиск: FLAC поддерживает быстрый и точный поиск, что полезно не только при воспроизведении, но и дает возможность использовать FLAC в звуковых редакторах.
    • Метаданные: FLAC имеет расширяемую систему метаданных. Новые блоки метаданных могут быть определены и реализованы в будущих версиях без потери обратной совместимости. Сейчас определены типы метаданных для таблиц поиска, тегов и списков разметки аудиодисков. Приложение может использовать блок метаданных
    • APPLICATIONпосле регистрации для него ID.
    • Архивирование: FLAC удобно использовать для архивации, так как сжатие с его помощью не приводит к потере информации. Если в будущем Вы решите использовать другой формат, данные будут восстановлены из .flac файла в первоначальном виде. Кроме контрольной суммы фрейма и подписи
    • MD5, утилита flacимеет возможность проверки, использование которой приводит к тому, что кодируемый поток сразу же декодируется и сравнивается с исходным. Если происходит ошибка, кодер прекращает работу.
    • Архивирование аудиодисков: У FLAC если блок метаданных CUESHEET, в котором сохраняется таблица разметки аудиодиска. Например, можно записать аудиодиск в один файл, а затем импортировать его таблицу разметки при кодировании, чтобы полученный файл имел такое же представление как и диск. Если оригинал аудиодиска будет испорчен, то вы сможете восстановить таблицу разметки, чтобы записать точную копию диска.
    • Устойчивость от ошибок: Благодаря разбиению на фреймы, ошибки в потоке локализуются до уровня фрейма, в котором произошла ошибка (обычно несколько сотых секунды). В некоторых кодеках одна ошибка может привести к потере всего остатка потока.

    Чего нет во FLAC?

    • FLAC не осуществляет сжатие с потерями. Для этого существует много хороших форматов, таких как
    • Vorbis, MPCи mp3(отличная реализация с открытими исходными текстами LAME).
    • FLAC не будет SDMI совместимым и т.п. Перед проектом не стоит цели поддерживать методы защиты, которые на практике лишь увеличивают объем файла. Конечно, мы не сможем препятствовать кому-либо создавать несвободные блоки метаданных, однако, стандартные декодеры все равно будут их пропускать.

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

    • Насколько я знаю, только два кодека (FLAC и WavPack) полностью свободны и активно поддерживаются (исходные тексты Shorten и Monket's Audio доступны, но лицензия более ограничена). Большинство предоставляют бесплатные скомпилированные программы без доступа к исходным кодам, следовательно, выбирая их, вы попадаете в зависимость от производителя. У вас уже не будет шанса портировать программу на другую операционную систему или исправить ошибку, если она появится и этого не захочет сделать автор. Это может оказаться серьезным недостатком, если формат не является всемирно признаным.
    • Уровень и время сжатия для flac характеризуют только конкретную версию кодера. Они не выявляют предела для всех кодеров и формата FLAC, так как формат открытый и расширяемый и каждый может написать улучшенную версию. Можно с большой долей уверенности сказать, что кодек будет улучшаться.
    • Поддержка потокового формата у FLAC дает ему дополнительное преимущество над теми кодеками, которые такой возможности не имеют.

    Я постараюсь обновлять информацию на этой странице как можно чаще, однако, если вы заметите какую-либо неточность,

    сообщите мне и я исправлю ее.

    Рассматриваемые кодеры (кроме flac):

    • Bonk - открытый кодек. Нет отдельной библиотеки и поддержки плейера.
    • Kexis - открытый кодек. Похоже, что проект прекратился на начальной стадии разработки. Нет поддержки плейера.
    • La - закрытый симметрический, адаптивный кодек. Предоставляются скомпилированные версии для Windows и Linux. Дает максимальный уровень сжатия, но работает очень медленно.
    • LPAC - поставляется только скомпилированным. Доступны версии не только для Windows, хотя плагин есть только для Winamp.
    • Monkey's Audio - симметрический, адаптивный кодек с хорошим уровнем сжатия. Исходные тексты доступны по ограниченной лицезии. Доступны две версии: от создателя проекта Мэтта Ошленда и от Франка Клемма. В тестах использовалась оригинальная версия.
    • Ogg Squish - открытый кодек, но более неподдерживаемый. Тестируемая версия 0.98 была последней, которую можно найти. Версии для Windows не было, но судя по результатам, полученным под Unix, это "быстрый" кодек.
    • optimFROG - закрытый кодек для Windows и Linux с плагинами для Winamp и XMMS. Медленный, но имеет высокий уровень сжатия.
    • Pegasus-SPS - закрытый кодек только для Windows.
    • RKAU - закрытый кодек только для Windows. Не обновлялся в течение 2 лет.
    • Shorten - наиболее распространенный кодек с доступными исходными текстами.
    • WaveZIP - закрытый архиватор только для Windows. Использует движок MUSICompress[tm], который, предположительно, запатентован. Я хотел сделать ссылку на компанию, написавшую WaveZIP (GadgetLabs), но они завершили свою деятельность (может, потому что пытались продать то, не должно ничего стоить).
    • WavPack - открытый кодек только для Windows, выпущенный под лицензией BSD. Имеет хорошее соотношение между уровнем и временем сжатия.

    Я не смог достать копии кодеков AudioPack и WavARC.

    Если не принимать во внимание уровень и скорость сжатия (как вы увидите позже, большинство кодеков имеют сходную производительность), то субъективная картина, основанная на базовых возможностях будет выглядеть следующим образом. Основное преимущество имеют свободные кодеки, так как это предоставляет Вам возможность добавлять все, что необходимо. Кроме того, проекты с открытыми исходниками обычно развиваются и улучшаются быстрее. Второй важный для пользователя фактор - это поддержка разных операционных систем и/или возможность использования плагинов для плейеров.

    Таблица 1. Сравнение возможностей кодеков.

    Кодек Доступны тексты? Доступны плагины? Аппаратная поддержка? Поточность? Поиск? Цена Поддержка ОС
    flac v1.1.0 да (OSI) да (XMMS, AlsaPlayer, Winamp, MacAmp Lite, dBpowerAMP, Foobar2000, Apollo) да (PhatBox, Kenwood MusicKeg, Rio Receiver, Dell Digital Audio Receiver, Turtle Beach AudioTron) да да своб. Linux, Windows, Mac OS X, *BSD, Solaris, OS/2, BeOS и другие
    Shorten v3.2 да (огранич.) да (Winamp, XMMS) нет нет да (только v3) своб. Linux, Windows, Mac OS 9, Mac OS X, *BSD, Solaris и другие
    WavPack v3.97a да да (Winamp) нет нет да своб. Windows
    Monkey's Audio v3.96 да (огранич.) да (Winamp, MediaJukebox, dBpowerAMP) нет нет да беспл. Windows, Linux
    Ogg Squish 0.98 да нет? нет да да своб. Linux, Windows, другие UNIX
    Bonk 0.5 да да (XMMS) нет нет нет своб. Linux, Windows, другие UNIX
    La 0.3c нет да (Winamp, XMMS) нет нет да беспл. Windows, Linux
    optimFrog 4.21 нет да (Winamp, XMMS) нет нет да беспл. Windows, Linux
    LPAC v1.31 (codec 3.0) нет да (Winamp) нет нет? да беспл. Windows, Linux, Solaris
    RKAU v1.07 нет да (Winamp) нет нет да беспл. Windows
    Kexis 0.2.2 да нет нет нет нет своб. Linux, Windows, другие UNIX
    WaveZIP v2 нет нет нет нет нет беспл. (24-бит за $) Windows
    Pegasus-SPS нет нет нет нет нет $39 (trial) Windows

    Для тестирования использовался PII-333 с 256Mб и ОС Windows NT SP5. К сожалению, именно Windows явлется единственной операционной системой, под которой могут работать все кодеки и где можно добиться равных условий работы.

    Входными данными являются только файлы, записанные с аудио-CD. В будущем могут появиться тесты для других видов информации (например, речь, другие частоты дискретизации и т.д.). Представлены 14 треков различных стилей.

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

    В общей таблице результаты отсортированы по уровню сжатия, которое вычисляется как среднее из уровней для всех треков, чтобы длинные треки не имели большего веса при тестировании. В таблицах для отдельных треков приведен уровень сжатия ( = размер сжатого файла / размер несжатого файла).

    Необходимо сделать несколько замечаний:

    • flac -5 является "золотой серединой", обеспечивая за малое время достаточный уровень сжатия. Декодирование таких файлов также проходит быстро. Это объясняется тем, что FLAC производит основную обработку на стадии кодирования, которая используется однократно, в то время как при адаптивной схеме кодеру и декодеру нужно одинаковое количество ресурсов. Поэтому FLAC лучше приспособлен для воспроизведения на менее мощных устройствах и это одна из причин, по которой только FLAC поддерживается на аппаратном уровне.
    • Настроки качества LPAC становятся нестабильными при использовании ключа -r (добавляет возможность поиска при воспроизведении).
    • У RKAU размер файла также может возрастать в режиме 'high' (высокая степень сжатия).
    • Следующий факт обративший на себя внимание состоит в том, что патентованные и платные кодеки оказываются худшими по большинству показателей. SPS выглядит настолько устаревшим и корявым, что я забросил его тестирование после кодирования одного файла.

      В таблице с общими результатами приведены только самые "экономичные" режимы (которые дают высокий уровень сжатия за приемлемый отрезок времени).

      Таблица 2. Общие результаты.

      Кодек Время
      сжатия
      Время
      распаковки
      Сжатый
      размер
      Общий
      уровень
      сжатия
      Средний
      уровень
      сжатия
      La 0.3c 151:13.16 145:49.78 375.76 MB 0.4814 0.4986
      Monkey's Audio 3.96 (extra high) 26:52.07 28:44.55 386.96 MB 0.4958 0.5119
      optimFROG 4.21 (mode 1 @ 4x) 24:19.58 25:37.44 389.04 MB 0.4984 0.5151
      Monkey's Audio 3.96 (high) 13:59.07 15:30.69 391.76 MB 0.5019 0.5179
      optimFROG 4.21 (mode 0 @ 4x) 16:34.96 17:57.28 394.69 MB 0.5056 0.5223
      Monkey's Audio 3.96 (normal) 11:42.34 13:11.29 395.04 MB 0.5061 0.5223
      RKAU 1.07 (normal) 53:46.74 23:31.10 395.71 MB 0.5070 0.5229
      RKAU 1.07 (fast) 26:35.34 20:13.22 399.25 MB 0.5115 0.5262
      WavPack 3.97a (high) 13:32.02 14:39.12 399.60 MB 0.5119 0.5278
      LPAC 1.40 (-r, medium) 18:52.79 10:43.32 403.52 MB 0.5170 0.5319
      Monkey's Audio 3.96 (fast) 9:05.59 10:51.09 401.63 MB 0.5145 0.5327
      WavPack 3.97a (normal) 6:50.12 8:13.41 409.33 MB 0.5244 0.5424
      flac 1.1.0 (-5, default) 12:54.19 7:08.80 413.46 MB 0.5297 0.5459
      Bonk 0.5 36:56.36 27:09.35 418.65 MB 0.5364 0.5543
      flac 1.1.0 (-3) 9:51.58 7:00.92 419.29 MB 0.5372 0.5544
      Ogg Squish 0.98 ? ? 431.08 MB 0.5522 0.5714
      Shorten 3.2a (-p0 -b256, default) 9:44.48 6:31.74 433.56 MB 0.5555 0.5729
      Kexis 0.2.2 17:49.06 14:53.90 434.33 MB 0.5564 0.5750
      WavPack 3.97a (fast) 5:20.17 5:12.38 441.88 MB 0.5661 0.5857
      WaveZIP 8:41.72 ? 452.95 MB 0.5802 0.5986
      RIFF WAVE 70:11.90 70:11.90 780.56 MB 1.0000 1.0000

      Результаты тестирования для всех кодеков во всех режимах.

      Таблица 3. Общие результаты.

      Кодек Время
      сжатия
      Время
      распаковки
      Сжатый
      размер
      Общий
      уровень
      сжатия
      Средний
      уровень
      сжатия
      La 0.3c 151:13.16 145:49.78 375.76 MB 0.4814 0.4986
      optimFROG 4.21 (mode 4 @ 2x) 183:05.29 184:13.42 386.13 MB 0.4947 0.5105
      optimFROG 4.21 (mode 4 @ 1x) 338:34.96 339:23.24 386.22 MB 0.4948 0.5105
      optimFROG 4.21 (mode 4 @ 4x) 105:15.85 106:36.23 386.21 MB 0.4948 0.5107
      optimFROG 4.21 (mode 3 @ 2x) 92:48.79 93:49.75 386.52 MB 0.4952 0.5110
      optimFROG 4.21 (mode 3 @ 1x) 161:51.00 162:10.62 386.55 MB 0.4952 0.5110
      optimFROG 4.21 (mode 3 @ 4x) 58:18.40 59:30.51 386.71 MB 0.4954 0.5114
      Monkey's Audio 3.96 (extra high) 26:52.07 28:44.55 386.96 MB 0.4958 0.5119
      optimFROG 4.21 (mode 2 @ 1x) 68:22.58 69:29.50 387.71 MB 0.4967 0.5128
      optimFROG 4.21 (mode 2 @ 2x) 44:17.55 45:31.33 387.72 MB 0.4967 0.5129
      optimFROG 4.21 (mode 2 @ 4x) 32:16.85 33:30.92 387.93 MB 0.4970 0.5133
      optimFROG 4.21 (mode 1 @ 1x) 43:00.91 44:13.07 388.71 MB 0.4980 0.5146
      optimFROG 4.21 (mode 1 @ 2x) 30:35.00 31:50.50 388.81 MB 0.4981 0.5147
      optimFROG 4.21 (mode 1 @ 4x) 24:19.58 25:37.44 389.04 MB 0.4984 0.5151
      Monkey's Audio 3.96 (high) 13:59.07 15:30.69 391.76 MB 0.5019 0.5179
      optimFROG 4.21 (mode 0 @ 1x) 20:51.21 22:08.44 394.35 MB 0.5052 0.5218
      optimFROG 4.21 (mode 0 @ 2x) 17:59.86 19:20.53 394.48 MB 0.5054 0.5220
      optimFROG 4.21 (mode 0 @ 4x) 16:34.96 17:57.28 394.69 MB 0.5056 0.5223
      Monkey's Audio 3.96 (normal) 11:42.34 13:11.29 395.04 MB 0.5061 0.5223
      RKAU 1.07 (normal) 53:46.74 23:31.10 395.71 MB 0.5070 0.5229
      RKAU 1.07 (high) 136:56.62 27:55.98 395.89 MB 0.5072 0.5235
      RKAU 1.07 (fast) 26:35.34 20:13.22 399.25 MB 0.5115 0.5262
      WavPack 3.97a (high) 13:32.02 14:39.12 399.60 MB 0.5119 0.5278
      LPAC 1.40 (-r, medium) 18:52.79 10:43.32 403.52 MB 0.5170 0.5319
      LPAC 1.40 (-r, extra high) 30:30.93 12:20.26 404.08 MB 0.5177 0.5322
      LPAC 1.40 (-r, high) 24:56.56 11:51.64 404.03 MB 0.5176 0.5323
      Monkey's Audio 3.96 (fast) 9:05.59 10:51.09 401.63 MB 0.5145 0.5327
      WavPack 3.97a (normal) 6:50.12 8:13.41 409.33 MB 0.5244 0.5424
      flac 1.1.0 (-8) 55:02.38 7:07.59 411.88 MB 0.5277 0.5437
      flac 1.1.0 (-5, default) 12:54.19 7:08.80 413.46 MB 0.5297 0.5459
      Bonk 0.5 36:56.36 27:09.35 418.65 MB 0.5364 0.5543
      flac 1.1.0 (-3) 9:51.58 7:00.92 419.29 MB 0.5372 0.5544
      flac 1.1.0 (-1) 8:37.94 7:15.87 432.32 MB 0.5539 0.5706
      Ogg Squish 0.98 ? ? 431.08 MB 0.5522 0.5714
      Shorten 3.2a (-p0 -b256, default) 9:44.48 6:31.74 433.56 MB 0.5555 0.5729
      Kexis 0.2.2 17:49.06 14:53.90 434.33 MB 0.5564 0.5750
      Shorten 3.2a (-p8 -b2048) 12:00.04 7:25.12 438.86 MB 0.5622 0.5810
      WavPack 3.97a (fast) 5:20.17 5:12.38 441.88 MB 0.5661 0.5857
      WaveZIP 8:41.72 ? 452.95 MB 0.5802 0.5986
      RIFF WAVE 70:11.90 70:11.90 780.56 MB 1.0000 1.0000

      Таблица 4. Результаты для отдельных треков.

      Трек Кодек Время
      сжатия
      Время
      распаковки
      Сжатый
      размер
      Уровень
      сжатия
      Dream Theater
      6:00
      La 0.3c 11:37.69 11:15.37 42.72 MB 0.7306
      Monkey's Audio 3.96 (extra high) 2:05.36 2:13.44 43.24 MB 0.7395
      optimFROG 4.21 (mode 1 @ 4x) 1:53.28 2:00.45 43.26 MB 0.7398
      optimFROG 4.21 (mode 4 @ 1x) 25:32.41 25:38.15 43.26 MB 0.7398
      Monkey's Audio 3.96 (high) 1:07.92 1:13.20 43.39 MB 0.7421
      optimFROG 4.21 (mode 0 @ 4x) 1:17.95 1:25.67 43.42 MB 0.7426
      Monkey's Audio 3.96 (normal) 0:57.04 1:03.37 43.48 MB 0.7436
      WavPack 3.97a (high) 1:10.34 1:08.61 43.49 MB 0.7438
      RKAU 1.07 (normal) 1:57.68 1:33.38 43.81 MB 0.7493
      Monkey's Audio 3.96 (fast) 0:44.33 0:51.22 43.97 MB 0.7520
      LPAC 1.40 (-r, normal) 1:27.61 0:56.18 44.12 MB 0.7545
      flac 1.1.0 (-8) 4:18.72 0:37.28 44.33 MB 0.7582
      WavPack 3.97a (normal) 0:40.24 0:40.70 44.34 MB 0.7583
      Bonk 0.5 2:56.03 2:11.58 44.35 MB 0.7585
      flac 1.1.0 (-5, default) 1:01.31 0:37.01 44.41 MB 0.7595
      Shorten 3.2a (-p8 -b2048) 0:58.81 0:37.63 44.75 MB 0.7654
      flac 1.1.0 (-3) 0:49.05 0:36.44 44.78 MB 0.7659
      Ogg Squish 0.98 ? ? 45.17 MB 0.7725
      Pegasus-SPS 4:45.00 ? 45.40 MB 0.7765
      WavPack 3.97a (fast) 0:18.66 0:18.59 46.31 MB 0.7920
      Kexis 0.2.2 1:24.83 1:10.93 46.52 MB 0.7956
      flac 1.1.0 (-1) 0:44.00 0:36.91 46.65 MB 0.7978
      Shorten 3.2a (-p0 -b256, default) 0:47.75 0:32.56 46.68 MB 0.7984
      WaveZIP 0:38.99 ? 47.22 MB 0.8077
      RIFF WAVE 5:47.56 5:47.56 58.47 MB 1.0000
       
      Eddie Warner
      Titus
      La 0.3c 5:24.56 5:13.29 14.76 MB 0.5298
      LPAC 1.40 (-r, normal) 0:40.76 0:21.21 14.77 MB 0.5298
      flac 1.1.0 (-8) 1:57.87 0:15.05 15.01 MB 0.5385
      optimFROG 4.21 (mode 1 @ 4x) 0:53.39 0:55.52 15.01 MB 0.5385
      optimFROG 4.21 (mode 4 @ 1x) 12:02.54 12:03.76 15.02 MB 0.5390
      flac 1.1.0 (-5, default) 0:28.17 0:15.05 15.12 MB 0.5424
      optimFROG 4.21 (mode 0 @ 4x) 0:36.81 0:39.19 15.13 MB 0.5429
      RKAU 1.07 (normal) 0:54.82 0:42.71 15.15 MB 0.5435
      Monkey's Audio 3.96 (extra high) 0:58.52 1:01.81 15.25 MB 0.5471
      Monkey's Audio 3.96 (high) 0:30.88 0:33.55 15.34 MB 0.5505
      Monkey's Audio 3.96 (normal) 0:25.45 0:28.37 15.35 MB 0.5509
      flac 1.1.0 (-3) 0:22.21 0:14.72 15.43 MB 0.5538
      WavPack 3.97a (high) 0:32.15 0:31.18 15.57 MB 0.5585
      Monkey's Audio 3.96 (fast) 0:19.85 0:22.90 15.58 MB 0.5592
      Shorten 3.2a (-p0 -b256, default) 0:21.16 0:13.55 15.78 MB 0.5662
      WavPack 3.97a (normal) 0:18.25 0:17.67 15.86 MB 0.5692
      Shorten 3.2a (-p8 -b2048) 0:26.82 0:16.75 16.21 MB 0.5818
      flac 1.1.0 (-1) 0:19.75 0:15.76 16.39 MB 0.5880
      Bonk 0.5 1:22.01 1:00.12 16.73 MB 0.6003
      Ogg Squish 0.98 ? ? 17.03 MB 0.6112
      Kexis 0.2.2 0:38.72 0:32.25 17.40 MB 0.6242
      WavPack 3.97a (fast) 0:08.19 0:08.79 17.49 MB 0.6275
      WaveZIP 0:17.55 ? 17.89 MB 0.6420
      RIFF WAVE 2:35.67 2:35.67 27.87 MB 1.0000
       
      Tool
      Forty-six & 2
      La 0.3c 12:34.97 12:09.08 37.42 MB 0.5824
      optimFROG 4.21 (mode 4 @ 1x) 27:58.28 28:01.87 37.96 MB 0.5907
      optimFROG 4.21 (mode 1 @ 4x) 2:03.43 2:09.27 38.15 MB 0.5937
      Monkey's Audio 3.96 (extra high) 2:14.70 2:24.30 38.23 MB 0.5950
      Monkey's Audio 3.96 (high) 1:09.82 1:18.09 38.42 MB 0.5979
      Monkey's Audio 3.96 (normal) 0:58.69 1:07.02 38.59 MB 0.6005
      optimFROG 4.21 (mode 0 @ 4x) 1:24.44 1:30.97 38.68 MB 0.6020
      WavPack 3.97a (high) 1:02.47 1:14.54 38.86 MB 0.6048
      Monkey's Audio 3.96 (fast) 0:46.50 0:55.41 39.18 MB 0.6098
      RKAU 1.07 (normal) 2:16.00 1:41.84 39.42 MB 0.6135
      WavPack 3.97a (normal) 0:29.07 0:42.87 39.92 MB 0.6213
      LPAC 1.40 (-r, normal) 1:38.01 0:57.56 40.25 MB 0.6263
      flac 1.1.0 (-8) 4:35.08 0:39.40 40.89 MB 0.6363
      Bonk 0.5 3:07.20 2:21.28 40.98 MB 0.6378
      flac 1.1.0 (-5, default) 1:05.54 0:39.65 41.04 MB 0.6388
      flac 1.1.0 (-3) 0:50.18 0:38.92 41.74 MB 0.6496
      Ogg Squish 0.98 ? ? 42.27 MB 0.6578
      flac 1.1.0 (-1) 0:45.83 0:40.89 42.70 MB 0.6646
      Kexis 0.2.2 1:30.09 1:16.29 42.75 MB 0.6652
      Shorten 3.2a (-p8 -b2048) 1:02.42 0:37.84 43.06 MB 0.6701
      Shorten 3.2a (-p0 -b256, default) 0:51.29 0:34.59 43.18 MB 0.6721
      WavPack 3.97a (fast) 0:31.26 0:28.79 43.65 MB 0.6794
      WaveZIP 0:42.84 ? 44.52 MB 0.6930
      RIFF WAVE 6:21.92 6:21.92 64.25 MB 1.0000
       
      Cannibal Corpse
      Mummified In Barbed Wire
      La 0.3c 6:35.94 6:23.57 22.69 MB 0.6798
      Monkey's Audio 3.96 (extra high) 1:10.94 1:15.92 22.95 MB 0.6876
      optimFROG 4.21 (mode 4 @ 1x) 14:34.28 14:37.69 22.95 MB 0.6877
      Monkey's Audio 3.96 (high) 0:37.63 0:41.34 23.19 MB 0.6948
      Monkey's Audio 3.96 (normal) 0:31.71 0:34.87 23.26 MB 0.6968
      optimFROG 4.21 (mode 1 @ 4x) 1:03.96 1:08.85 23.31 MB 0.6984
      RKAU 1.07 (normal) 1:09.71 0:56.66 23.34 MB 0.6993
      LPAC 1.40 (-r, normal) 1:05.38 0:36.20 23.53 MB 0.7050
      WavPack 3.97a (high) 0:32.99 0:40.05 23.57 MB 0.7062
      optimFROG 4.21 (mode 0 @ 4x) 0:44.14 0:48.71 23.95 MB 0.7176
      flac 1.1.0 (-8) 2:25.59 0:20.85 24.18 MB 0.7245
      Monkey's Audio 3.96 (fast) 0:25.05 0:28.99 24.20 MB 0.7250
      flac 1.1.0 (-5, default) 0:34.66 0:21.42 24.30 MB 0.7282
      Bonk 0.5 1:40.38 1:14.58 24.36 MB 0.7297
      WavPack 3.97a (normal) 0:15.99 0:23.50 24.76 MB 0.7418
      Shorten 3.2a (-p8 -b2048) 0:33.74 0:22.47 25.12 MB 0.7526
      flac 1.1.0 (-3) 0:27.40 0:20.11 25.16 MB 0.7539
      Ogg Squish 0.98 ? ? 25.23 MB 0.7558
      Kexis 0.2.2 0:47.13 0:40.67 26.03 MB 0.7799
      flac 1.1.0 (-1) 0:24.04 0:21.68 26.10 MB 0.7819
      WavPack 3.97a (fast) 0:16.79 0:21.64 26.17 MB 0.7841
      Shorten 3.2a (-p0 -b256, default) 0:28.20 0:20.46 26.61 MB 0.7972
      WaveZIP 0:22.25 ? 26.89 MB 0.8058
      RIFF WAVE 3:18.36 3:18.36 33.37 MB 1.0000
       
      Alanis Morisette
      Hand In My Pocket
      La 0.3c 7:35.21 7:20.19 20.77 MB 0.5312
      optimFROG 4.21 (mode 4 @ 1x) 16:51.82 16:54.34 21.24 MB 0.5433
      optimFROG 4.21 (mode 1 @ 4x) 1:14.29 1:18.06 21.36 MB 0.5464
      Monkey's Audio 3.96 (extra high) 1:21.38 1:27.28 21.54 MB 0.5509
      Monkey's Audio 3.96 (high) 0:42.54 0:47.41 21.75 MB 0.5563
      Monkey's Audio 3.96 (normal) 0:35.45 0:39.65 21.84 MB 0.5586
      optimFROG 4.21 (mode 0 @ 4x) 0:51.39 0:54.97 21.89 MB 0.5598
      Monkey's Audio 3.96 (fast) 0:28.23 0:33.21 22.16 MB 0.5668
      WavPack 3.97a (high) 0:45.07 0:43.88 22.28 MB 0.5699
      WavPack 3.97a (normal) 0:25.40 0:24.80 22.80 MB 0.5832
      RKAU 1.07 (normal) 1:21.18 1:01.60 22.80 MB 0.5833
      LPAC 1.40 (-r, normal) 1:01.11 0:33.79 23.25 MB 0.5948
      Bonk 0.5 1:53.41 1:23.52 23.35 MB 0.5972
      flac 1.1.0 (-8) 2:46.09 0:23.14 23.45 MB 0.5998
      flac 1.1.0 (-5, default) 0:39.82 0:21.81 23.56 MB 0.6026
      Ogg Squish 0.98 ? ? 24.11 MB 0.6167
      flac 1.1.0 (-3) 0:30.58 0:22.05 24.32 MB 0.6221
      Shorten 3.2a (-p8 -b2048) 0:37.49 0:22.93 24.72 MB 0.6323
      Kexis 0.2.2 0:54.26 0:45.64 24.80 MB 0.6345
      flac 1.1.0 (-1) 0:26.46 0:22.14 24.82 MB 0.6348
      WavPack 3.97a (fast) 0:16.67 0:17.02 24.94 MB 0.6381
      Shorten 3.2a (-p0 -b256, default) 0:29.71 0:18.92 25.34 MB 0.6481
      WaveZIP 0:28.05 ? 25.95 MB 0.6638
      RIFF WAVE 3:52.36 3:52.36 39.09 MB 1.0000
       
      Gloria Estefan
      Conga
      La 0.3c 8:52.93 8:34.81 28.98 MB 0.6419
      optimFROG 4.21 (mode 4 @ 1x) 19:40.53 19:44.47 29.43 MB 0.6517
      optimFROG 4.21 (mode 1 @ 4x) 1:26.64 1:32.23 29.58 MB 0.6550
      Monkey's Audio 3.96 (extra high) 1:35.65 1:42.11 29.65 MB 0.6567
      optimFROG 4.21 (mode 0 @ 4x) 0:59.59 1:05.29 29.78 MB 0.6595
      Monkey's Audio 3.96 (high) 0:50.17 0:56.40 29.85 MB 0.6610
      WavPack 3.97a (high) 0:53.50 0:51.90 29.92 MB 0.6625
      Monkey's Audio 3.96 (normal) 0:42.27 0:47.74 29.97 MB 0.6637
      WavPack 3.97a (normal) 0:29.84 0:29.92 30.28 MB 0.6706
      Monkey's Audio 3.96 (fast) 0:33.46 0:39.22 30.30 MB 0.6710
      RKAU 1.07 (normal) 1:37.85 1:12.15 30.34 MB 0.6719
      Bonk 0.5 2:13.34 1:39.44 30.64 MB 0.6785
      flac 1.1.0 (-8) 3:16.07 0:27.53 30.76 MB 0.6811
      LPAC 1.40 (-r, normal) 1:14.08 0:44.64 30.81 MB 0.6823
      flac 1.1.0 (-5, default) 0:46.30 0:26.74 30.86 MB 0.6834
      Ogg Squish 0.98 ? ? 31.06 MB 0.6879
      WavPack 3.97a (fast) 0:13.31 0:14.15 31.61 MB 0.7000
      flac 1.1.0 (-3) 0:35.88 0:27.65 31.63 MB 0.7006
      Shorten 3.2a (-p8 -b2048) 0:44.76 0:27.48 31.76 MB 0.7034
      Kexis 0.2.2 1:03.91 0:53.54 31.86 MB 0.7056
      flac 1.1.0 (-1) 0:32.51 0:27.30 31.99 MB 0.7085
      Shorten 3.2a (-p0 -b256, default) 0:35.74 0:23.64 32.47 MB 0.7191
      WaveZIP 0:29.42 ? 33.02 MB 0.7313
      RIFF WAVE 4:28.39 4:28.39 45.15 MB 1.0000
       
      Cream
      White Room
      La 0.3c 10:24.08 10:03.16 33.44 MB 0.6309
      optimFROG 4.21 (mode 4 @ 1x) 22:59.05 23:02.98 33.93 MB 0.6399
      optimFROG 4.21 (mode 1 @ 4x) 1:42.28 1:47.55 33.96 MB 0.6405
      Monkey's Audio 3.96 (extra high) 1:51.77 2:00.37 34.14 MB 0.6441
      Monkey's Audio 3.96 (high) 0:58.45 1:04.59 34.29 MB 0.6468
      optimFROG 4.21 (mode 0 @ 4x) 1:10.30 1:15.99 34.29 MB 0.6468
      Monkey's Audio 3.96 (normal) 0:49.32 0:56.89 34.42 MB 0.6493
      WavPack 3.97a (high) 0:51.50 1:02.71 34.55 MB 0.6516
      RKAU 1.07 (normal) 1:50.80 1:24.98 34.60 MB 0.6527
      LPAC 1.40 (-r, normal) 1:25.16 0:48.67 34.84 MB 0.6572
      Bonk 0.5 2:35.36 1:56.20 34.96 MB 0.6595
      Monkey's Audio 3.96 (fast) 0:38.75 0:46.80 34.99 MB 0.6601
      flac 1.1.0 (-8) 3:48.73 0:31.91 34.99 MB 0.6601
      WavPack 3.97a (normal) 0:24.43 0:36.09 35.08 MB 0.6617
      flac 1.1.0 (-5, default) 0:54.89 0:33.82 35.16 MB 0.6633
      flac 1.1.0 (-3) 0:41.38 0:32.00 35.36 MB 0.6671
      Shorten 3.2a (-p8 -b2048) 0:51.44 0:33.02 35.40 MB 0.6677
      Ogg Squish 0.98 ? ? 35.74 MB 0.6742
      WavPack 3.97a (fast) 0:26.00 0:24.83 36.32 MB 0.6852
      Shorten 3.2a (-p0 -b256, default) 0:41.14 0:28.91 36.42 MB 0.6870
      flac 1.1.0 (-1) 0:36.87 0:33.39 36.56 MB 0.6897
      Kexis 0.2.2 1:13.87 1:02.90 36.64 MB 0.6911
      WaveZIP 0:35.77 ? 37.13 MB 0.7004
      RIFF WAVE 5:15.11 5:15.11 53.01 MB 1.0000
       
      Maurice Ravel
      Fanfare from "L'eventail de Jeanne"
      La 0.3c 3:55.40 3:47.60 6.46 MB 0.3104
      optimFROG 4.21 (mode 4 @ 1x) 8:22.42 8:23.32 6.82 MB 0.3274
      Monkey's Audio 3.96 (extra high) 0:39.93 0:41.69 6.85 MB 0.3289
      optimFROG 4.21 (mode 1 @ 4x) 0:36.57 0:38.26 7.09 MB 0.3406
      Monkey's Audio 3.96 (high) 0:21.22 0:23.04 7.16 MB 0.3437
      RKAU 1.07 (normal) 0:40.67 0:28.52 7.18 MB 0.3451
      optimFROG 4.21 (mode 0 @ 4x) 0:24.98 0:26.37 7.21 MB 0.3462
      LPAC 1.40 (-r, normal) 0:29.01 0:15.11 7.33 MB 0.3520
      Monkey's Audio 3.96 (normal) 0:18.19 0:19.54 7.44 MB 0.3575
      WavPack 3.97a (high) 0:22.63 0:21.86 7.45 MB 0.3577
      Monkey's Audio 3.96 (fast) 0:13.70 0:15.72 7.64 MB 0.3671
      flac 1.1.0 (-8) 1:20.73 0:09.51 7.69 MB 0.3692
      flac 1.1.0 (-5, default) 0:18.95 0:09.45 7.71 MB 0.3703
      flac 1.1.0 (-3) 0:14.98 0:09.19 7.77 MB 0.3734
      WavPack 3.97a (normal) 0:12.56 0:11.95 7.83 MB 0.3760
      Bonk 0.5 0:55.92 0:40.23 7.83 MB 0.3762
      flac 1.1.0 (-1) 0:12.97 0:10.39 8.12 MB 0.3902
      Ogg Squish 0.98 ? ? 8.15 MB 0.3914
      Shorten 3.2a (-p0 -b256, default) 0:13.81 0:08.88 8.19 MB 0.3932
      Shorten 3.2a (-p8 -b2048) 0:17.45 0:10.30 8.29 MB 0.3983
      Kexis 0.2.2 0:26.78 0:21.90 8.52 MB 0.4091
      WaveZIP 0:13.11 ? 8.72 MB 0.4193
      WavPack 3.97a (fast) 0:05.35 0:06.33 8.87 MB 0.4259
      RIFF WAVE 2:03.76 2:03.76 20.82 MB 1.0000
       
      Maurice Ravel
      String Quartet (4th movement)
      La 0.3c 10:45.80 10:21.44 19.94 MB 0.3550
      Monkey's Audio 3.96 (extra high) 1:54.09 2:01.72 20.47 MB 0.3642
      optimFROG 4.21 (mode 4 @ 1x) 24:26.99 24:29.36 20.62 MB 0.3671
      Monkey's Audio 3.96 (high) 0:58.14 1:06.45 20.80 MB 0.3702
      optimFROG 4.21 (mode 1 @ 4x) 1:42.57 1:47.48 20.93 MB 0.3725
      Monkey's Audio 3.96 (normal) 0:48.61 0:54.73 21.14 MB 0.3763
      optimFROG 4.21 (mode 0 @ 4x) 1:09.17 1:13.14 21.23 MB 0.3779
      RKAU 1.07 (normal) 1:52.65 1:25.39 21.30 MB 0.3791
      Monkey's Audio 3.96 (fast) 0:37.30 0:44.79 21.54 MB 0.3835
      WavPack 3.97a (high) 0:52.48 1:02.26 21.55 MB 0.3835
      LPAC 1.40 (-r, normal) 1:20.84 0:42.73 21.96 MB 0.3909
      WavPack 3.97a (normal) 0:23.29 0:34.28 22.11 MB 0.3935
      flac 1.1.0 (-8) 3:53.93 0:28.02 22.61 MB 0.4025
      flac 1.1.0 (-5, default) 0:54.34 0:27.92 22.68 MB 0.4036
      Bonk 0.5 2:33.53 1:51.94 23.18 MB 0.4125
      flac 1.1.0 (-3) 0:40.00 0:28.15 23.21 MB 0.4132
      flac 1.1.0 (-1) 0:34.99 0:27.73 23.36 MB 0.4158
      Kexis 0.2.2 1:15.05 1:03.86 23.42 MB 0.4168
      Shorten 3.2a (-p0 -b256, default) 0:39.96 0:27.36 23.71 MB 0.4221
      Ogg Squish 0.98 ? ? 24.12 MB 0.4293
      WavPack 3.97a (fast) 0:24.34 0:22.17 25.08 MB 0.4463
      Shorten 3.2a (-p8 -b2048) 0:49.06 0:29.94 25.59 MB 0.4554
      WaveZIP 0:36.60 ? 25.84 MB 0.4600
      RIFF WAVE 5:33.95 5:33.95 56.18 MB 1.0000
       
      Sergei Prokofiev
      Piano Concerto No.3 (3rd movement)
      La 0.3c 19:11.61 18:28.80 32.65 MB 0.3243
      optimFROG 4.21 (mode 4 @ 1x) 43:21.88 43:26.18 33.58 MB 0.3335
      Monkey's Audio 3.96 (extra high) 3:21.33 3:35.91 33.72 MB 0.3349
      optimFROG 4.21 (mode 1 @ 4x) 3:00.57 3:08.19 33.83 MB 0.3360
      optimFROG 4.21 (mode 0 @ 4x) 2:00.85 2:09.52 34.14 MB 0.3390
      Monkey's Audio 3.96 (high) 1:43.17 1:55.31 34.23 MB 0.3400
      Monkey's Audio 3.96 (normal) 1:26.19 1:35.90 34.66 MB 0.3442
      RKAU 1.07 (normal) 3:08.70 2:26.17 35.21 MB 0.3496
      LPAC 1.40 (-r, normal) 2:06.21 1:11.92 35.27 MB 0.3502
      WavPack 3.97a (high) 1:32.78 1:50.74 35.35 MB 0.3510
      Monkey's Audio 3.96 (fast) 1:06.28 1:18.56 35.43 MB 0.3518
      WavPack 3.97a (normal) 0:40.68 1:00.29 36.99 MB 0.3673
      flac 1.1.0 (-8) 6:51.48 0:49.47 38.07 MB 0.3781
      flac 1.1.0 (-5, default) 1:35.22 0:47.57 38.17 MB 0.3791
      flac 1.1.0 (-3) 1:10.67 0:46.40 38.51 MB 0.3824
      flac 1.1.0 (-1) 1:01.44 0:53.40 39.30 MB 0.3903
      Shorten 3.2a (-p0 -b256, default) 1:10.57 0:50.00 39.49 MB 0.3921
      Kexis 0.2.2 2:12.39 1:49.00 39.89 MB 0.3962
      Bonk 0.5 4:33.71 3:19.38 40.31 MB 0.4003
      Ogg Squish 0.98 ? ? 41.86 MB 0.4157
      WavPack 3.97a (fast) 0:43.24 0:40.17 43.03 MB 0.4273
      WaveZIP 1:05.60 ? 43.67 MB 0.4337
      Shorten 3.2a (-p8 -b2048) 1:26.84 0:53.19 45.34 MB 0.4502
      RIFF WAVE 9:58.47 9:58.47 100.68 MB 1.0000
       
      Frederic Chopin
      Prelude No.24 in d minor
      La 0.3c 5:14.83 5:03.08 9.84 MB 0.3582
      Monkey's Audio 3.96 (extra high) 0:55.83 0:59.52 10.25 MB 0.3734
      optimFROG 4.21 (mode 4 @ 1x) 11:56.24 11:58.77 10.34 MB 0.3764
      optimFROG 4.21 (mode 1 @ 4x) 0:50.07 0:53.49 10.41 MB 0.3790
      Monkey's Audio 3.96 (high) 0:28.52 0:31.32 10.47 MB 0.3812
      optimFROG 4.21 (mode 0 @ 4x) 0:34.06 0:38.70 10.53 MB 0.3833
      Monkey's Audio 3.96 (normal) 0:23.70 0:27.61 10.59 MB 0.3854
      LPAC 1.40 (-r, normal) 0:34.91 0:20.01 10.74 MB 0.3911
      WavPack 3.97a (high) 0:31.43 0:28.95 10.76 MB 0.3919
      RKAU 1.07 (normal) 0:54.46 0:41.54 10.88 MB 0.3963
      Monkey's Audio 3.96 (fast) 0:18.53 0:21.80 10.94 MB 0.3982
      WavPack 3.97a (normal) 0:16.90 0:15.17 11.34 MB 0.4128
      flac 1.1.0 (-8) 1:53.31 0:13.06 11.69 MB 0.4256
      flac 1.1.0 (-5, default) 0:26.05 0:13.50 11.71 MB 0.4265
      flac 1.1.0 (-3) 0:19.82 0:13.25 11.74 MB 0.4274
      flac 1.1.0 (-1) 0:17.61 0:13.80 11.86 MB 0.4319
      Shorten 3.2a (-p0 -b256, default) 0:19.20 0:11.89 12.05 MB 0.4386
      Kexis 0.2.2 0:36.70 0:30.26 12.14 MB 0.4419
      Bonk 0.5 1:15.45 0:55.07 12.86 MB 0.4684
      WaveZIP 0:18.75 ? 13.08 MB 0.4765
      Ogg Squish 0.98 ? ? 13.31 MB 0.4845
      WavPack 3.97a (fast) 0:06.74 0:08.51 13.67 MB 0.4978
      Shorten 3.2a (-p8 -b2048) 0:24.43 0:14.32 14.40 MB 0.5242
      RIFF WAVE 2:43.23 2:43.23 27.46 MB 1.0000
       
      Domenico Scarlatti
      Sonata K.42 (arr.Yepes for guitar)
      La 0.3c 3:09.33 3:01.82 6.62 MB 0.4036
      Monkey's Audio 3.96 (extra high) 0:33.99 0:35.53 6.80 MB 0.4145
      optimFROG 4.21 (mode 4 @ 1x) 7:08.77 7:09.52 6.87 MB 0.4190
      Monkey's Audio 3.96 (high) 0:17.47 0:19.11 6.94 MB 0.4230
      optimFROG 4.21 (mode 1 @ 4x) 0:30.47 0:31.95 6.98 MB 0.4255
      Monkey's Audio 3.96 (normal) 0:14.84 0:16.17 7.02 MB 0.4284
      RKAU 1.07 (normal) 0:37.09 0:26.56 7.05 MB 0.4297
      optimFROG 4.21 (mode 0 @ 4x) 0:20.68 0:22.06 7.07 MB 0.4310
      WavPack 3.97a (high) 0:15.50 0:18.31 7.12 MB 0.4340
      Monkey's Audio 3.96 (fast) 0:11.39 0:12.95 7.19 MB 0.4384
      LPAC 1.40 (-r, normal) 0:29.99 0:14.33 7.21 MB 0.4397
      WavPack 3.97a (normal) 0:07.01 0:10.27 7.31 MB 0.4460
      flac 1.1.0 (-8) 1:08.58 0:07.99 7.37 MB 0.4498
      flac 1.1.0 (-5, default) 0:15.90 0:08.71 7.40 MB 0.4513
      flac 1.1.0 (-3) 0:11.84 0:08.26 7.43 MB 0.4530
      Bonk 0.5 0:45.59 0:32.63 7.46 MB 0.4548
      Shorten 3.2a (-p0 -b256, default) 0:11.67 0:07.17 7.48 MB 0.4564
      Kexis 0.2.2 0:22.06 0:18.62 7.50 MB 0.4572
      flac 1.1.0 (-1) 0:10.17 0:07.85 7.53 MB 0.4591
      WavPack 3.97a (fast) 0:04.11 0:06.57 7.58 MB 0.4624
      Ogg Squish 0.98 ? ? 7.74 MB 0.4723
      WaveZIP 0:10.56 ? 7.83 MB 0.4781
      Shorten 3.2a (-p8 -b2048) 0:14.29 0:09.07 8.20 MB 0.5004
      RIFF WAVE 1:37.43 1:37.43 16.39 MB 1.0000
       
      The Benedictine Monks of
      Santo Domingo de Silos
      Laetatus sum
      La 0.3c 4:40.71 4:32.29 11.94 MB 0.4922
      Monkey's Audio 3.96 (extra high) 0:50.72 0:54.20 12.15 MB 0.5006
      optimFROG 4.21 (mode 4 @ 1x) 10:34.75 10:36.83 12.17 MB 0.5015
      Monkey's Audio 3.96 (high) 0:26.36 0:28.52 12.25 MB 0.5048
      RKAU 1.07 (normal) 0:57.64 0:41.39 12.25 MB 0.5049
      optimFROG 4.21 (mode 1 @ 4x) 0:45.20 0:48.45 12.43 MB 0.5121
      Monkey's Audio 3.96 (normal) 0:21.81 0:24.33 12.47 MB 0.5139
      LPAC 1.40 (-r, normal) 0:45.66 0:23.29 12.62 MB 0.5200
      optimFROG 4.21 (mode 0 @ 4x) 0:31.03 0:33.69 12.63 MB 0.5207
      WavPack 3.97a (high) 0:28.01 0:27.43 12.65 MB 0.5213
      Bonk 0.5 1:08.18 0:49.70 12.71 MB 0.5237
      Monkey's Audio 3.96 (fast) 0:16.91 0:20.60 12.80 MB 0.5277
      flac 1.1.0 (-8) 1:43.74 0:13.23 12.82 MB 0.5286
      flac 1.1.0 (-5, default) 0:24.12 0:13.08 12.92 MB 0.5325
      WavPack 3.97a (normal) 0:15.61 0:15.35 12.98 MB 0.5348
      flac 1.1.0 (-3) 0:18.80 0:13.85 12.98 MB 0.5349
      WavPack 3.97a (fast) 0:11.07 0:10.38 13.30 MB 0.5481
      Kexis 0.2.2 0:33.43 0:28.11 13.30 MB 0.5481
      Shorten 3.2a (-p0 -b256, default) 0:17.80 0:11.46 13.32 MB 0.5489
      flac 1.1.0 (-1) 0:15.60 0:12.82 13.34 MB 0.5500
      Ogg Squish 0.98 ? ? 13.41 MB 0.5528
      Shorten 3.2a (-p8 -b2048) 0:22.30 0:13.87 13.42 MB 0.5531
      WaveZIP 0:16.37 ? 13.72 MB 0.5655
      RIFF WAVE 2:24.21 2:24.21 24.26 MB 1.0000
       
      L. Subramaniam
      Raga Sivapriya
      La 0.3c 41:10.10 39:35.28 87.51 MB 0.4097
      Monkey's Audio 3.96 (extra high) 7:17.86 7:50.75 91.73 MB 0.4295
      optimFROG 4.21 (mode 4 @ 1x) 93:05.00 93:16.00 92.05 MB 0.4310
      optimFROG 4.21 (mode 1 @ 4x) 6:36.86 6:57.69 92.76 MB 0.4343
      Monkey's Audio 3.96 (high) 3:46.78 4:12.36 93.69 MB 0.4387
      optimFROG 4.21 (mode 0 @ 4x) 4:29.57 4:53.01 94.74 MB 0.4436
      Monkey's Audio 3.96 (normal) 3:09.07 3:35.10 94.81 MB 0.4439
      Monkey's Audio 3.96 (fast) 2:25.31 2:58.92 95.70 MB 0.4481
      RKAU 1.07 (normal) 7:16.09 5:30.33 95.91 MB 0.4490
      WavPack 3.97a (high) 3:41.17 3:56.70 96.51 MB 0.4518
      LPAC 1.40 (-r, normal) 4:34.06 2:37.68 96.84 MB 0.4534
      WavPack 3.97a (normal) 1:50.85 2:10.55 97.75 MB 0.4577
      flac 1.1.0 (-8) 15:02.46 1:51.15 98.02 MB 0.4589
      flac 1.1.0 (-5, default) 3:28.92 1:53.07 98.42 MB 0.4608
      Bonk 0.5 9:56.25 7:13.68 98.94 MB 0.4633
      flac 1.1.0 (-3) 2:38.79 1:49.93 99.22 MB 0.4645
      Ogg Squish 0.98 ? ? 101.88 MB 0.4770
      Shorten 3.2a (-p8 -b2048) 3:10.19 1:56.31 102.60 MB 0.4804
      Shorten 3.2a (-p0 -b256, default) 2:36.48 1:42.35 102.84 MB 0.4815
      Kexis 0.2.2 4:49.84 3:59.93 103.57 MB 0.4849
      flac 1.1.0 (-1) 2:15.70 1:51.81 103.60 MB 0.4851
      WavPack 3.97a (fast) 1:34.44 1:24.44 103.86 MB 0.4863
      WaveZIP 2:25.86 ? 107.47 MB 0.5032
      RIFF WAVE 21:09.47 21:09.47 213.56 MB 1.0000

       

    этой странице проекта, находящейся на SourceForge. Если Вы будете сообщать об ошибке, пожалуйста, оставьте e-mail для контакта.
    --no-adaptive-mid-side
    --no-decode-through-errors
    --no-delete-input-file
    --no-escape-coding
    --no-exhaustive-model-search
    --no-lax
    --no-mid-side
    --no-ogg
    --no-padding
    --no-qlp-coeff-precision-search
    --no-residual-gnuplot
    --no-residual-text
    --no-sector-align
    --no-seektable
    --no-silent
    --no-verify
    Можно использовать для отключения действия конкретной опции.
    <основные_ключи>формат). Блоки метаданных могут быть любого размера, новые блоки могут быть легко добавлены. Декодер имеет возможность пропускать неизветные ему блоки метаданных. Обязателен только блок STREAMINFO. В нем содержится частота дискретизация, количество каналов и т.п., а также данные позволяющие декодеру настроить буфферы. Сюда также записывается подпись MD5 несжатых аудиоданных. Это полезно для проверки всего потока после его передачи.STREAMINFO.
    цены на Египет 1001Тур