ГОСТ Р 54711—2011
переключение окон. Имеется возможность выбора частоты, выше которой используются короткие бло ки.
обеспечивающие лучшее разрешение по времени. Части сигнала ниже этой частоты в зависимости от
mixed_block_flag кодируются с лучшей разрешающей способностью по частоте, части сигнала, лежа щие
выше, кодируются с лучшим разрешением по времени.
Частотные составляющие квантуются по нелинейной шкале и кодируются методом Хаффмана.
Кодер Хаффмана использует одну из 18 различных кодовых таблиц (см. таблицу Б.7). Для повышения
эффективности кодера Хаффмана и уменьшения пре-эха используется буфер. Размер входного буфе
ра равен размеру одного фрейма при скорости передачи 160 кбит/с на канал наУровне III. Применяется
метод кратковременного буфера, называемый «резервуар битов», так как последний использует пере
менную скорость передачи с максимальным интегральным смещением от средней скорости передачи.
Каждый фрейм содержит данные 2 гранул. Данные во фрейме организованы следующим образом.
Заголовок и часть аудиоданных составляют служебную информацию:
- указатель main_data_begin:
- служебная информация об обеих гранулах (scfsi):
- служебная информация о грануле 1;
- служебная информация о грануле 2.
Основные данные (указатель main_data_begin определяет отрицательное смещение относитель
но позиции первого байта заголовка):
- масштабные коэффициенты и коды Хаффмана для гранулы 1;
- масштабные коэффициенты и коды Хаффмана для гранулы 2:
- дополнительные данные.
Сначала выполняется синхронизация декодера с входным потоком битов так же. как и на других
уровнях. Данные заголовка (первые 32 бита, включая синхрослово) считываются так же. как и на других
уровнях. Информация о частоте дискретизации используется для выбора соответствующей таблицы
полос масштабных коэффициентов (см. приложение Б.8).
5.3.4.2 Служебная информация
Служебная информация должна быть извлечена из потока битов и сохранена для использования
при декодировании соответствующего фрейма. Информация о выборе таблицы используется для вы
бора таблицы декодера Хаффмана и числа битое ESC (linbits) согласно таблице Б.7.
5.3.4.3 Начало mair>_data
Биты main_data (масштабные коэффициенты, кодированные методом Хаффмана данные и до
полнительная информация) не обязательно должны следовать сразу же за битами служебной инфор
мации. Это показано на рисунках А.7а и А.76. Начало main_data определяется при помощи указателя
main_data_begin в текущем фрейме. Основные данные распределяются так. чтобы они находились во
входном буфере в момент поступления в него заголовка следующего фрейма. Декодер должен про
пустить заголовок и служебную информацию при декодировании main_data. Их позиции определяются из
bitratajndax и padding_bit. Длина заголовка всегда составляет 4 байта, длина служебных данных
составляет 17 байтов в режиме single_channel и 32 байта в других режимах. Основные данные могут
охватывать более чем один блок заголовка и служебной информации (см. рисунок А.76).
5.3.4.4 Буфер
Для расчета максимального количества битов, используемых для одной гранулы, применяется
следующее правило.
Размер буфера составляет 7680 битов. Это значение максимально на каждой скорости передачи.
При максимально возможной для Уровня III скорости передачи (320 кбит/с на канал) и частоте дискретиза
ции 48 кГц средняя длина фрейма составляет (320000/48000) • 1152 = 7680 битов. Следовательно, фрей
мы должны иметь постоянную длину на этой скорости передачи и частоте дискретизации. На скорости
64 кбит/с (128 кбит/с стерео) средняя длина гранулы составляет (64000/48000 )♦ 576 = 768 битое при ча
стоте дискретизации 48 кГц. Это означает, что максимальное отклонение (кратковременный буфер), допу
стимое при скорости 64 кбит/с. равно 7680 - 4 * 768 = 4608 битам. Фактическое отклонение равно числу
байтов, обозначенных указателем смещения main_data_begin. Фактическое максимальное отклонение 2
А9 *8 бит = 4096 битов. Для промежуточных скоростей передачи задержка и размер буфера могут быть
вычислены соответственно. Обмен буфером между левым и правым каналами в стереопотоке битов по
зволяется без ограничений. Из-за ограничения на размер буфера main_data_begin всегда устанавливается в
0 в случае bitratejndex = 14. то есть скорости передачи данных 320 кбит/с на один канал стерео. В этом
случае все данные распределяются между соседними заголовками.
28