Статус документа
Статус документа

ГОСТ Р 53556.4-2013 Звуковое вещание цифровое. Кодирование сигналов звукового вещания с сокращением избыточности для передачи по цифровым каналам связи. Часть III (MPEG-4 AUDIO). Основные методы кодирования звуковых сигналов (GA): усовершенствованное звуковое кодирование (AAC), взвешивающее векторное квантование (TwinVQ), побитовое арифметическое кодирование (BSAC)

     6.4 Бесшумное кодирование для мелкоструктурной масштабируемости

     

6.4.1 Описание инструмента


BSAC подерживает разрядно-модульное арифметическое кодирование и является именем бесшумного кодера и средством форматирования полезной нагрузки потока битов, которое обеспечивает мелкоструктурную масштабируемость и устойчивость к ошибкам в кодере MPEG-4 General Audio (GA) coder. Модуль бесшумного кодирования BSAC является альтернативой модуля кодирования ААС, в отношении всех других модулей кодер на базе ААС остается неизменным. Бесшумное кодирование BSAC используется, чтобы сделать полезную нагрузку потока битов масштабируемой и устойчивой к ошибкам, а также уменьшить избыточность масштабных коэффициентов и квантованного спектра. Процесс бесшумного декодирования BSAC разделяется на 4 подпункта. В 6.4.2-6.4.6 описывают подробный процесс декодирования спектральных данных, относящихся к стерео или pns данным, масштабные коэффициенты и дополнительную информацию о полосе кодирования.

    6.4.2 Декодирование разрядно-модульных спектральных данных (bsac_spectral_data)

6.4.2.1 Описание

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

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

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

Флаги sign_is_coded[] обновляются с кодированием векторов из МСВ в LSB. Они инициализируются в 0, когда знак квантованного спектра кодируется, они устанавливаются в 1.

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

6.4.2.2 Определения

6.4.2.2.1 Элементы данных

acod_sliced_bit [ch] [g] [i]

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

acod_sign [ch] [g] [i]

Арифметическая кодовая комбинация из двоичного арифметического кодирования sign_bit. Вероятность символа "0" определяется в 0,5, что использует 8192 в качестве 14-битового числа с фиксированной точкой, sign_bit указывает бит знака для ненулевого коэффициента. "1" указывает отрицательный коэффициент, а "0" - положительный. Когда значению бита квантованного сигнала впервые присваивается 1, бит знака арифметически кодируется и отправляется.

     

     6.4.2.2.2 Элементы справки
     

layer

Индекс уровня масштабируемости.

snf

Значение вектора, который будет декодироваться.

ch

Индекс канала.

nch

Номер канала.

cur_snf [i]

Текущего значение i-го вектора. cur_snf[] инициализируется в Abit[cband].

maxsnf

Максимум текущего значения векторов, которые будут декодироваться.

snf

Индекс значения.

layer_data_available ()

Функция, которая возвращает "1" пока доступна полезная нагрузка потока битов каждого уровня, иначе - "0". Она указывает, доступна ли остающаяся полезная нагрузка потока битов каждого уровня.

layer_group [layer]

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

layer_start_index [layer]

Указывает индекс самого низкого спектрального компонента, который будет вновь добавлен в уровне масштабируемости.

layer_end_index [layer]

Указывает индекс самого высокого спектрального компонента, который будет вновь добавлен в уровне масштабируемости.

start_index [g]

Указывает индекс самого низкого спектрального компонента, который будет кодирован в группе g.

end_index [g]

Указывает индекс самого высокого спектрального компонента, который будет кодирован в группе g.

sliced_bit

Декодируемое значение разрядно-модульных битов квантованного спектра.

sample [ch] [g] [i]

Квантованные спектральные коэффициенты, восстановленные из декодированных разрядно-модульных данных линии спектра i в канале ch и индекс группы g.

sign_is_coded [ch] [g] [i]

Флаг, который указывает, кодирован ли в канале ch и группе с индексом g знак i-го квантованного спектра (1), или нет (0).

sign_bit [ch] [g] [i]

Знаковый бит для ненулевого коэффициента. "1" указывает отрицательный коэффициент, а "0" - положительный. Когда значению бита квантованного сигнала впервые присваивается 1, знаковый бит арифметически кодируется и отправляется.

     

6.4.2.3 Процесс декодирования


В кодере BSAC абсолютные значения квантованных спектральных коэффициентов отображаются в разрядно-модульную последовательность. Эти разрядно-модульные биты являются символами арифметического кодирования. Все разрядно-модульные биты являются двоично-арифметически кодированными от коэффициента самой низкой частоты до коэффициента самой высокой частоты уровня масштабируемости, начиная с плоскости Most Significant Bit (старший значащий бит) (МСВ) и продвигаясь до плоскости Least Significant Bit (младший значащий бит) (LSB). Арифметическое кодирование битов знака, связанных с ненулевым коэффициентом, следует за кодированием разрядно-модульного бита, когда разрядно-модульный бит спектрального коэффициента впервые равен 1.

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

После того, как все данные МСВ кодируются от самой низкой линии частоты до самой высокой, тот же самый процесс кодирования повторяется, пока не кодируются данные LSB, или данные уровня недоступны.

Длина доступной полезной нагрузки потока битов (available_len []) инициализируется в начале каждого уровня. Предполагаемая длина кодовой комбинации (est_cw_len), которая будет декодироваться, вычисляется исходя из процесса арифметического декодирования. После арифметического декодирования символа длина доступной полезной нагрузки потока битов должна быть обновлена, вычитая из этого предполагаемую длину кодовой комбинации. Мы можем определить, доступна ли оставшаяся полезная нагрузка потока битов каждого уровня или нет, проверяя available_len.

Разрядно-модульные данные декодируются с вероятностью, которая выбирается среди значений, перечисленных в таблицах А.56-А.77.

Чтобы арифметически кодировать символы (разрядно-модульные биты) значение вероятности должно быть определено. Двоичная таблица вероятности составляется из значений вероятности (р0) символа '0'. Прежде всего, таблица вероятности выбирается используя cband_si как показано в таблице А.31. Затем в таблице вероятности выбирается подтаблица согласно контексту, такому как текущее значение спектрального коэффициента, и более высокие разрядно-модульности, которые декодировались. Все векторы более высоких разрядно-модульностей higher_bit_vector инициализируются в 0 перед запуском кодирования разрядно-модульных данных. Всякий раз, когда кодируется разрядно-модульность, вектор higher_bit_vector обновляется следующим образом: