This commit is contained in:
Andrey Astafiev 2002-09-20 07:22:59 +00:00
parent d3cc27cea0
commit b581ace89a
4 changed files with 31 additions and 29 deletions

View File

@ -243,6 +243,13 @@
<TR><TD><TT>--skip=#</TT></TD>
<TD>Пропустить первые <TT>#</TT> сэмплов входного файла. Работает для кодирования и декодирования, но не для тестирования.</TD></TR>
<TR><TD><TT>--ogg</TT></TD>
<TD><P>При кодировании генерируется вывод в формате Ogg-FLAC вместо "родного" FLAC. Потоки Ogg-FLAC представляют собой потоки FLAC обернутые в транспортный уровень Ogg. Полученный файл будет иметь суффикс '.ogg' и будет декодироваться утилитой <TT><B>flac</B></TT>.</P>
<P>При декодировании формат ввода однозначно определяется как Ogg-FLAC. Это полезно при получении данных со стандартного ввода или если у файла суффикс не '.ogg'.</P></TD></TR>
<TR><TD><TT>--serial-number=#</TT></TD>
<TD>При использовании с ключом <TT>--ogg</TT> определяет серийный номер для потока FLAC. При кодировании без явно указанного серийного номера <B><TT>flac</TT></B> использует '0'. При декодировании по умолчанию используется серийный номер определенный на первой странице.</TD></TR>
</TABLE>
@ -267,13 +274,6 @@
<TR><TD width=30%><TT>-V</TT></TD>
<TD width=70%>Проверять процесс сжатия. В данном случае <B><TT>flac</TT></B> создает параллельный декодер, раскодирующий выход кодера и сравнивает результат с оригиналом. Если будет найдено несоответствие, кодирование прекратится. Время работы с этой опцией увеличивается, однако, при этом гарантируется, что файл будет правильно декодирован.</TD></TR>
<TR><TD><TT>--ogg</TT></TD>
<TD><P>При кодировании генерируется вывод в формате Ogg-FLAC вместо "родного" FLAC. Потоки Ogg-FLAC представляют собой потоки FLAC обернутые в транспортный уровень Ogg. Полученный файл будет иметь суффикс '.ogg' и будет декодироваться утилитой <TT><B>flac</B></TT>.</P>
<P>При декодировании формат ввода однозначно определяется как Ogg-FLAC. Это полезно при получении данных со стандартного ввода или если у файла суффикс не '.ogg'.</P></TD></TR>
<TR><TD><TT>--serial-number=#</TT></TD>
<TD>При использовании с ключом --ogg определяет серийный номер для потока FLAC. При кодировании без явно указанного серийного номера, <B><TT>flac</TT></B> использует '0'. При декодировании по умолчанию используется серийный номер определенный на первой странице.</TD></TR>
<TR><TD><TT>--lax</TT></TD>
<TD>Позволяет кодеру создавать файлы, отвечающие подмножеству формата FLAC. В результате работы будет получаться непотоковый файл, поэтому этот ключ следует использовать только для архивирования. Декодер будет поддерживать воспроизведение и поиск в таких файлах.</TD></TR>
@ -306,6 +306,9 @@
<TR><TD><TT>-P #</TT>, <TT>--padding</TT></TD>
<TD>Кодер запишет блок метаданных <TT>PADDING</TT>, указанного размера (в байтах), после блока <TT>STREAMINFO</TT>. Ключи <TT>-P 0</TT> или <TT>-P-</TT> указывают, что блок <TT>PADDING</TT> не нужен (значение по умолчанию). Этот блок полезен, если вы собираетесь добавить тэг в файл позже. Вместо того, чтобы переписывать файл полностью, можно будет записать информацию вместо блока <TT>PADDING</TT>. Обратите внимание на то, что общий размер блока <TT>PADDING</TT> будет на 4 байта больше, так как 4 байта занимает заголовок.</TD></TR>
<TR><TD><TT>-T ПОЛЕ=ЗНАЧЕНИЕ</TT>, <TT>--tag=ПОЛЕ=ЗНАЧЕНИЕ</TT></TD>
<TD>Добавляет комментарии Vorbis, который должен соответствовать спецификации, т.е. ПОЛЕ должно содержать только определенные символы, завершающиеся знаком равенства. При необходимости не забывайте заключать комментарий в кавычки. Эту опцию можно использовать неоднократно для заполнения разных полей комментария. Все указанные значения будут применены ко всем кодируемым файлам.</TD></TR>
<TR><TD><TT>-b #</TT>, <TT>--blocksize</TT></TD>
<TD>Устанавливает размер блока в сэмплах. По умолчанию <TT>1152</TT> для <TT>-l 0</TT>, иначе <TT>4608</TT>. Стандартные потоки должны использовать одно из указаных значений: <TT>192/576/1152/2304/4608/256/512/1024/2048/4096/8192/16384/32768</TT>. Сейчас кодер использует постоянный размер блока для всего файла.</TD></TR>

View File

@ -84,7 +84,7 @@
<LI><A HREF="http://commsci.usc.edu/faculty/golomb.html">С. Голомбу</A> и Роберту Райсу. Их универсальные коды используются кодером энтропии.</LI>
<LI>Н. Левинсону и Дж. Дарбину. Базовый енкодер использует разработанный и улучшенный ими алгоритм для определения LPC коэффициентов из коэффициентов автокорреляции.</LI>
<LI>Н. Левинсону и Дж. Дарбину. Базовый кодер использует разработанный и улучшенный ими алгоритм для определения LPC коэффициентов из коэффициентов автокорреляции.</LI>
<LI>И, конечно же, <A HREF="http://www.digitalcentury.com/encyclo/update/shannon.html">К. Шеннону.</A></LI>
</BLOCKQUOTE></P>
@ -97,19 +97,19 @@
<P>Общеизвестно, что нет алгоритма, способного сжать без потерь входные данные любого типа. Большинство архиваторов позиционируются для работы с данными определенного вида и оптимизируются для этой области. FLAC предназначен для сжатия аудиоданных. Несмотря на то, что он может сжать без потерь данные любого типа, только определенный ввод архивируется хорошо. FLAC использует тот факт, что обычно аудиоданные имеют высокий порядок корреляции между сэмплами.</P>
<P>В области аудио существует множество возможных подразделов. Например, речь с низким битрейтом, многоканальная музыка с высокой частотой дискретизации и т.д. FLAC не нацелен на какой-либо подраздел, однако большинство параметров по умолчанию базового енкодера рассчитаны на CD-аудио (т.е. 44.1кГц, 2 канала, 16 бит на сэмпл). Влияние параметров кодирования на разные типы аудио будет рассмотрено позже.</P>
<P>В области аудио существует множество возможных подразделов. Например, речь с низким битрейтом, многоканальная музыка с высокой частотой дискретизации и т.д. FLAC не нацелен на какой-либо подраздел, однако большинство параметров по умолчанию базового кодера рассчитаны на CD-аудио (т.е. 44.1кГц, 2 канала, 16 бит на сэмпл). Влияние параметров кодирования на разные типы аудио будет рассмотрено позже.</P>
<a name="architecture">
<H4><u>Архитектура</u></H4>
<P>Подобно большинству программ такого рода, енкодер FLAC выполняет следующие действия:</P>
<P>Подобно большинству программ такого рода, кодер FLAC выполняет следующие действия:</P>
<P><BLOCKQUOTE>
<LI><A HREF="format.html#blocking">Разбиение на блоки</A>. Ввод разбивается на множество последовательных блоков, которые могут иметь различный размер. Оптимальный размер блока обычно зависит от многих факторов, таких как частота дискетизации, спектральная характеристика во времени и т.д. Несмотря на то, что формат FLAC позволяет использовать в потоке блоки различного размера, базовый енкодер использует постоянный размер.</LI>
<LI><A HREF="format.html#blocking">Разбиение на блоки</A>. Ввод разбивается на множество последовательных блоков, которые могут иметь различный размер. Оптимальный размер блока обычно зависит от многих факторов, таких как частота дискетизации, спектральная характеристика во времени и т.д. Несмотря на то, что формат FLAC позволяет использовать в потоке блоки различного размера, базовый кодер использует постоянный размер.</LI>
<LI><A HREF="format.html#interchannel">Межканальная декорреляция</A>. В случае стереопотоков енкодер создает средний и разностный сигналы, основанные на среднем значении между левым и правым каналами и их разности соответственно. На следующий этап кодирования передается лучший из вариантов сжатого сигнала.</LI>
<LI><A HREF="format.html#interchannel">Межканальная декорреляция</A>. В случае стереопотоков кодер создает средний и разностный сигналы, основанные на среднем значении между левым и правым каналами и их разности соответственно. На следующий этап кодирования передается лучший из вариантов сжатого сигнала.</LI>
<LI><A HREF="format.html#prediction">Прогнозирование</A>. Далее енкодер пытается найти математическое описание сигнала (обычно приблизительное). Зачастую оно значительно меньше самого сигнала. Так как методы предсказания известны и кодеру, и декодеру в потоке нужно указать только параметры предиктора. Сейчас FLAC использует четыре различных класса предикторов (описанных в разделе <A HREF="format.html#prediction">Прогнозирование</A>), но в формате предусмотрено место для дополнительных методов. FLAC допускает изменение класса предиктора от блока к блоку и даже в пределах канала в блоке.</LI>
<LI><A HREF="format.html#prediction">Прогнозирование</A>. Далее кодер пытается найти математическое описание сигнала (обычно приблизительное). Зачастую оно значительно меньше самого сигнала. Так как методы предсказания известны и кодеру, и декодеру в потоке нужно указать только параметры предиктора. Сейчас FLAC использует четыре различных класса предикторов (описанных в разделе <A HREF="format.html#prediction">Прогнозирование</A>), но в формате предусмотрено место для дополнительных методов. FLAC допускает изменение класса предиктора от блока к блоку и даже в пределах канала в блоке.</LI>
<LI><A HREF="format.html#residualcoding">Кодирование остатков</A>. Если предиктор не описывает сигнал точно, разница между оригинальным сигналом и спрогнозированным (называемым еще ошибочным или остаточным) должна быть закодирована без потерь. Если предсказание эффективно, остаточный сигнал будет занимать меньше бит на сэмпл, чем оригинальный сигнал. Сейчас FLAC использует только один метод для кодирования остатков (см. раздел <A HREF="format.html#residualcoding">Кодирование остатков</A>), однако в формате предусмотрено место для дополнительных методов. FLAC допускает изменение метода кодирования остатков от блока к блоку и даже в пределах канала в блоке.</LI>
</BLOCKQUOTE></P>
@ -138,9 +138,9 @@
<a name="blocking">
<H4><u>Разбиение на блоки</u></H4>
<P>Размер блоков сильно влияет на уровень сжатия. Если размер блока будет слишком мал, то в итоге получится очень много фреймов, а это значит, что на заголовки будет потрачено много битов. Если же размер блока большой, а характеристики сигнала сильно варьируются, енкодер не сможет найти хороший предиктор. Чтобы упростить кодек, FLAC определяет минимальный размер блока в 16 сэмплов, а максимальный в 65535 сэмплов. Этот интервал покрывает оптимальные размеры блоков для всех аудиоданных, поддерживаемых FLAC.</P>
<P>Размер блоков сильно влияет на уровень сжатия. Если размер блока будет слишком мал, то в итоге получится очень много фреймов, а это значит, что на заголовки будет потрачено много битов. Если же размер блока большой, а характеристики сигнала сильно варьируются, кодер не сможет найти хороший предиктор. Чтобы упростить кодек, FLAC определяет минимальный размер блока в 16 сэмплов, а максимальный в 65535 сэмплов. Этот интервал покрывает оптимальные размеры блоков для всех аудиоданных, поддерживаемых FLAC.</P>
<P>Сейчас базовый енкодер использует постоянный размер блока, оптимизированный по частоте дискретизации ввода. Последующие версии смогут изменять размер блока в зависимости от характеристик сигнала.</P>
<P>Сейчас базовый кодер использует постоянный размер блока, оптимизированный по частоте дискретизации ввода. Последующие версии смогут изменять размер блока в зависимости от характеристик сигнала.</P>
<P>Разбитые на блоки данные передаются на стадию прогнозирования по одному подблоку. Каждый подблок кодируется в подфрейм независимо, а позже они объендиняются во фрейм. Так как каждый канал кодируется отдельно, это означает, что один канал стерео фрейма может сжиматься как постоянный подфрейм, а второй как LPC подфрейм.</P>
@ -148,7 +148,7 @@
<a name="interchannel">
<H4><u>Межканальная декорреляция</u></H4>
<P>В большинстве случаев в стерео потоках существует достаточный уровень корреляции между левым и правым каналами. FLAC позволяет фреймам в стерео потоках иметь различное распределение каналов, а енкодер может использовать лучшее представление.</P>
<P>В большинстве случаев в стерео потоках существует достаточный уровень корреляции между левым и правым каналами. FLAC позволяет фреймам в стерео потоках иметь различное распределение каналов, а кодер может использовать лучшее представление.</P>
<P><BLOCKQUOTE>
<LI><B>Независимое</B>. Левый и правый каналы кодируются независимо.</LI>
@ -169,13 +169,13 @@
<P>FLAC использует четыре метода для моделирования входного сигнала:</P>
<P><BLOCKQUOTE>
<LI><B>Дословный</B>. По существу это прогнозирование сигнала нулевого уровня. Предиктором сигнала является сам сигнал, потому сжатие не происходит. Это образец, с которым сверяются все остальные предикторы. Если передать енкодеру случайные данные, для всех подблоков скоре всего будет использован дословный предиктор. Так как необработанный сигнал не проходит стадию кодирования остатков, результаты не будут совпадать с линейным предиктором нулевого порядка.</LI>
<LI><B>Дословный</B>. По существу это прогнозирование сигнала нулевого уровня. Предиктором сигнала является сам сигнал, потому сжатие не происходит. Это образец, с которым сверяются все остальные предикторы. Если передать кодеру случайные данные, для всех подблоков скоре всего будет использован дословный предиктор. Так как необработанный сигнал не проходит стадию кодирования остатков, результаты не будут совпадать с линейным предиктором нулевого порядка.</LI>
<LI><B>Постоянный</B>. Этот предиктор используется, когда подблок содержит цифровую тишину, т.е. на вход поступает одна константа. Сигнал кодируется по всей длине и добавляется к потоку.</LI>
<LI><B>Постоянный линейный предиктор</B>. FLAC использует класс эффективно вычисляемых постоянных линейных предикторов (хорошее описание приведено у <A HREF="http://svr-www.eng.cam.ac.uk/~ajr/GroupPubs/Robinson94-tr156/index.html">Shorten</A> и <A HREF="http://www.hpl.hp.com/techreports/1999/HPL-1999-144.pdf">AudioPak</A>). FLAC добавляет предиктор четвертого уровня к использованным в Shorten предикторам от нулевого до третьего уровня. Так как предикторы постоянны, в сжатом потоке необходимо сохранить только порядок предиктора. Остаточный сигнал передается кодеру остатков.</LI>
<LI><B>Линейное прогнозирование FIR</B>. Для более точного моделирования (за счет медленной работы) FLAC поддерживает линейное прогнозирование FIR до 32 порядка (см. <A HREF="http://svr-www.eng.cam.ac.uk/~ajr/GroupPubs/Robinson94-tr156/index.html">Shorten</A> и <A HREF="http://www.hpl.hp.com/techreports/1999/HPL-1999-144.pdf">AudioPak</A>). Базовый енкодер использует метод Левинсона-Дарбина для расчета LPC коэффициентов из коэффициентов автокорреляции и коэффициенты разбиваются перед вычислением остатков. В то время как такие енкодеры как Shorten используют постоянное разбиение для всего ввода, FLAC позволяет для каждого фрейма менять точность коэффициента разбиения. Базовый енкодер FLAC оценивает оптимальную точность, основываясь на размере блока и диапазоне оригинального сигнала.</LI>
<LI><B>Линейное прогнозирование FIR</B>. Для более точного моделирования (за счет медленной работы) FLAC поддерживает линейное прогнозирование FIR до 32 порядка (см. <A HREF="http://svr-www.eng.cam.ac.uk/~ajr/GroupPubs/Robinson94-tr156/index.html">Shorten</A> и <A HREF="http://www.hpl.hp.com/techreports/1999/HPL-1999-144.pdf">AudioPak</A>). Базовый кодер использует метод Левинсона-Дарбина для расчета LPC коэффициентов из коэффициентов автокорреляции и коэффициенты разбиваются перед вычислением остатков. В то время как такие кодеры как Shorten используют постоянное разбиение для всего ввода, FLAC позволяет для каждого фрейма менять точность коэффициента разбиения. Базовый кодер FLAC оценивает оптимальную точность, основываясь на размере блока и диапазоне оригинального сигнала.</LI>
</BLOCKQUOTE></P>
<a name="residualcoding">
@ -184,7 +184,7 @@
<P>Для кодирования остаточного сигнала от стадии прогнозирования FLAC использует два похожих метода. Остаточный сигнал сжимается с использованием кодов Райса следующими способами:</P>
<BLOCKQUOTE><ol>
<LI>Енкодер оценивает одиночный параметр Райса, основанный на разнице остатка и кодов Райса. Весь остаток кодируется с использованием этого параметра.</LI>
<LI>Кодер оценивает одиночный параметр Райса, основанный на разнице остатка и кодов Райса. Весь остаток кодируется с использованием этого параметра.</LI>
<LI>Остаток делится на несколько интервалов одинаковой длины и каждый из них кодируется со своим параметром Райса, основанным на среднем значении для данного интервала.</LI>
</ol></BLOCKQUOTE>
@ -377,7 +377,7 @@
<TR>
<TD VALIGN="TOP">&lt;5&gt;</TD>
<TD><TT>(Количество битов на сэмпл) - 1</TT>. FLAC поддерживает от 1 до 32 битов на сэмпл. Сейчас базовые декодер и енкодер поддерживают до 24 бит на сэмпл.</TD>
<TD><TT>(Количество битов на сэмпл) - 1</TT>. FLAC поддерживает от 1 до 32 битов на сэмпл. Сейчас базовые декодер и кодер поддерживают до 24 бит на сэмпл.</TD>
</TR>
<TR>
@ -653,7 +653,7 @@
<TD VALIGN="TOP">&nbsp;</TD>
<TD><B>Примечания</B>:
<UL>
<LI>Биты размера блока <TT>0000-0101</TT> могут быть использованы только при постоянном их значении во всем блоке. Биты <TT>0110-0111</TT> могут использоваться в любом случае, декодер будет считать, что поток имеет переменную длину блока. Существует одно исключение: енкодер может использовать биты <TT>0110-0111</TT> в последнем фрейме потока с постоянным размером блока в том случае, если его длина не больше, чем используемая в всем потоке.</LI>
<LI>Биты размера блока <TT>0000-0101</TT> могут быть использованы только при постоянном их значении во всем блоке. Биты <TT>0110-0111</TT> могут использоваться в любом случае, декодер будет считать, что поток имеет переменную длину блока. Существует одно исключение: кодер может использовать биты <TT>0110-0111</TT> в последнем фрейме потока с постоянным размером блока в том случае, если его длина не больше, чем используемая в всем потоке.</LI>
</UL>
</TD>
</TR>
@ -734,7 +734,7 @@
<TD VALIGN="TOP">&nbsp;</TD>
<TD><B>Примечания</B>:
<UL>
<LI>'Неиспользуемые биты' встречаются в блоке данных, если при заявленных <TT>n</TT> битах значимыми являются только <TT>m</TT>. Число <TT>k = n - m</TT> и будет определять количество 'неиспользуемых битов'. Например, если все 16-битные сэмплы в исходном подблоке выглядят как 'xxxxxxxxxxxxx000', то енкодер кодирует только 13 бит, и запоминает, что 3 бита являются 'неиспользуемыми'.</LI>
<LI>'Неиспользуемые биты' встречаются в блоке данных, если при заявленных <TT>n</TT> битах значимыми являются только <TT>m</TT>. Число <TT>k = n - m</TT> и будет определять количество 'неиспользуемых битов'. Например, если все 16-битные сэмплы в исходном подблоке выглядят как 'xxxxxxxxxxxxx000', то кодер кодирует только 13 бит, и запоминает, что 3 бита являются 'неиспользуемыми'.</LI>
</UL>
</TD>
</TR>

View File

@ -71,11 +71,9 @@
<H3>Статус</H3>
<P>11 сентября 2002: <B>FLAC 1.0.4 бета</B></P>
<P>24 сентября 2002: <B>FLAC 1.0.4</B></P>
<P>Поддержка FLAC была добавлена в Rio Receiver и Dell Digital Audio Receiver; <A HREF="http://rioreceiver.comms.net/php/showflat.php?Cat=&Board=Technical&Number=2262&page=0&view=collapsed&sb=5&o=0&fpart=">здесь</A> все описано подробнее.</P>
<P>Осталось совсем немного до выхода FLAC 1.0.4.</P>
<P>В ышла новая версия FLAC 1.0.4. Основные изменения: поддержка комментариев Vorbis и тегов id3v1/v2 в плагинах, исправления в обработке 24-битных файлов, увеличение скорости работы кодера и декодера для архитектуры x86, уменьшены требования к памяти. Подробнее на странице <A HREF="news.html">новостей</A>.</P>
<P>Если вы используете FLAC и у вас есть предоложения или патчи, пожалуйста, присодиняйтесь к <A HREF="http://sourceforge.net/mail/?group_id=13478">списку рассылки</A> или <A HREF="http://sourceforge.net/project/memberlist.php?group_id=13478">группе разработчиков</A>. Сообщить об ошибке можно <A HREF="http://sourceforge.net/bugs/?func=addbug&group_id=13478">здесь</A>.</P>
@ -108,7 +106,7 @@
<H3>Документация</H3>
<P>Документация доступна в режиме онлайн и в дистрибутивах. Информация по установке и использованию <B><TT>flac</TT></B> и плагинов находится <A HREF="documentation.html">здесь</A>. Более детальная информация о формате FLAC и базовом енкодере приведена на <A HREF="format.html">этой странице</A>.</P>
<P>Документация доступна в режиме онлайн и в дистрибутивах. Информация по установке и использованию <B><TT>flac</TT></B> и плагинов находится <A HREF="documentation.html">здесь</A>. Более детальная информация о формате FLAC и базовом кодере приведена на <A HREF="format.html">этой странице</A>.</P>
<H3>Регистрация id</H3>

View File

@ -68,7 +68,7 @@
<CENTER><H2>FLAC: новости</H2></CENTER>
<P><LI><B>10.09.2002</B><BR>
<P><LI><B>24.09.2002</B><BR>
Вышла версия <B>FLAC 1.0.4</B>, в которой сделано большое количество улучшений:</P>
<P><BLOCKQUOTE><UL>
@ -88,6 +88,7 @@
<LI>Поддержка формата AIFF (спасибо Брэди Паттерсону).</LI>
<LI>Небольшое увеличение скорости работы декодера.</LI>
<LI><TT>--sector-align</TT> теперь поддерживает в качестве ввода файлы без заголовка.</LI>
<LI>Новая опция <TT>-T</TT>, <TT>--tag</TT> для добавления комментариев Vorbis при кодировании.</LI>
<LI>Новая опция <TT>--serial-number</TT>, которая может использоваться вместе с ключом <TT>--ogg</TT>.</LI>
<LI>Автоматически записывается информация о кодере в комментарии Vorbis.</LI>
<LI>Значительно уменьшены требования к памяти.</LI>
@ -114,7 +115,7 @@
<LI>Новый режим проверки во всех кодерах.</LI>
<LI>Значительно уменьшено количество памяти, требуемой для кодеров и декодеров.</LI>
<LI>Кодер автоматически записывает информацию в блок <TT>VORBIS_COMMENT</TT>.</LI>
<LI>Увеличена скорость вычисления MD5 для 16-битных моно- и стереосигналов на архитектуре x86 (спасибо Мирославу Личвару).</LI>
<LI>Увеличена скорость кодирования с постоянными предикторами, а также скорость вычисления MD5 для 16-битных моно- и стереосигналов на архитектуре x86 (спасибо Мирославу Личвару).</LI>
<LI>Исправлена ошибка в интерфейсе метаданных, из-за которой информация о количестве битов на сэмпл в блоке STREAMINFO считывалась неверно.</LI>
<LI>Исправлена ошибка, из-за которой декодер мог войти в бесконечный цикл при обрыве потока.</LI>
</UL>