Опрос

Какой архиватор наиболее эффективный?:

Новички

Виктор Васильев
Юрий Антонов
Сергей Андреевич
Генадий
Avanasy

Формат сжатых данных

Каждый кадр содержит 36 сигналов от каждой подполосы, а всего - 1152 сигнала. Сигналы кадра квантуются (этим достигается эффект компрессии) и записываются в сжатый файл вместе с другой информацией.

Каждый кадр, записанный в выходной файл, начинается заголовком из 32 бит, формат которого идентичен для всех трех слоев кодера. Заголовок имеет код синхронизации (12 битов единиц) и 20 битов параметров кодирования, которые перечислены ниже. Если применяется защита от ошибок, то за заголовком непосредственно следует 16-битное контрольное слово CRC. Затем располагаются квантованные сигналы, за которыми идет необязательный вспомогательный блок данных. Формат последних двух блоков зависит от номера слоя.

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

Остальные 20 бит заголовка разделены на 12 полей следующим образом.

Поле 1. Идентификационный бит ID, значение которого равно 1 (указывает на использование MPEG). Значение 0 зарезервировано и пока не используется.

Поле 2. Два бита, обозначающие номер слоя. Значимые величины: 11 - слой I, 10 - слой II и 01 - слой III. Значение 00 зарезервировано.

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

Поле 4. Четыре бита для обозначения битовой скорости. Нулевой индекс указывает на «фиксированную» скорость, когда кадр может содержать дополнительные вставки, зависящие от бита заполнения (поле 6).

Поле 5. Два бита для обозначения одну из трех возможных скоростей сэмплирования. Вот это три значения: 00 — 44.1 кГц, 01 — 48 кГц и 10 — 32 кГц. Значение 11 зарезервировано.

Поле 6. Один бит, указывающий на использование заполнения. Заполнение может добавить вставку (вставки здесь не обсуждаются) в сжатый файл после некоторого числа кадров для того, чтобы общий размер кадров был или равен, или чуть меньше этой суммы

Следующий алгоритм может быть использован для выяснения необходимости вставки. Для первого кадра: rest:=0; padding:=No;

Для каждого следующего кадра: Если слой=1

То dif : = (12хскорость) mod (частота сэмплир.) Иначе dif: = (144хскорость) mod (частота сэмпл.); rest:=rest-dif; Если rest < 0 То padding:=Yes;

rest:=rest+(частота сэмплирования); Иначе padding:=No;

Этот алгоритм имеет простую интерпретацию. Кадр делится на N или N + 1 частей, где N зависит от слоя. Для слоя I число N

задается выражением

N = 12 х ( битовая скорость/ частота сэмплирования)

А для слоев II и III используется следующая формула

N = 144 х ( битовая скорость/ частота сэмплирования)

Если это число не целое, то происходит его округление, и делаются вставки.

Поле 7. Один бит для частного использования кодером. Этот бит не будет использоваться ISO/IEC.

Поле 8. Двухбитное поле для указания стереозвука. Значение 00 -стереозвук, 01 - объединенное стерео (интенсивность-стерео или ms-стерео), 10 - двойной канал, 11 - одиночный канал.

Стереоинформация кодируется одним из 4 возможных мод: стерео, двойной канал, объединенное стерео и ms-стерео. В первых двух модах сэмплы от двух стереоканалов сжимаются независимо и записываются в выходной файл. Кодер не проверяет корреляцию этих двух каналов. Стерео мода используется для сжатия левого и правого стереоканалов. Мода двойной канал применяется для сжатия разные потоки звуковых сэмплов, например, параллельное вещание на двух языках. Объединенное стерео использует избыточность между левым и правым каналами, поскольку они часто идентичны, похожи или мало отличаются. Мода ms-стерео (сокращение «ms» означает «midle-side» - середина-край) является специальным случаем объединенного стерео, в котором кодируются два сигнала: среднее значение М{ и краевое значение Si вместо левого и правого каналов Li и Д,-. Значения середина-край вычисляются по формулам

_ M.L + SiMj-Sj

Поле 9. Двухбитовое поле расширения. Оно используется модой объединенное стерео. В слоях I и II эти биты указывают на то, какие подполосы используются для интенсивность-стерео. Все остальные подполосы кодируются в моде стерео. Имеются следующие четыре значения:

00 — подполосы 4-31 в моде интенсивность-стерео, нижний предел равен 4.

01 — подполосы 8-31 в моде интенсивность-стерео, нижний предел равен 8.

6.5. Сжатие звука в стандарте MPEG-1 331

10 — подполосы 12-31 в моде интенсивность-стерео, нижний предел равен 12.

11 — подполосы 16-31 в моде интенсивность-стерео, нижний предел равен 16.

В слое III эти биты указывают на то, какой тип объединенного стерео использован при кодировании. Значения следующие:

00 — интенсивность-стерео выключено, ms-стерео выключено.

01 — интенсивность-стерео включено, ms-стерео выключено.

10 — интенсивность-стерео выключено, ms-стерео включено.

11 — интенсивность-стерео включено, ms-стерео включено. Поле 10. Бит копирайта. Если сжатый файл защищен копирайтом, то этот бит равен 1.

Поле 11. Один бит для обозначения оригинала или копии. Значение 1 обозначает исходный сжатый файл.

Поле 12. Двухбитовое поле усиления. Указывает на тип использованного уменьшения значения. Значение 00 - никакое, 01 - 50/15 мксек, 10 - зарезервировано, 11 - уменьшение значения CCITT J.17.