7.1 Процессы декодирования DST
Параметры, обработанные и извлеченные из потока, используются, чтобы декодировать кодированный фрейм DST. Этот подпункт объясняет процессы декодирования, необходимые для кодированных фреймов DST.
7.1.1 Введение
Существуют три функции: арифметический декодер, мультиплексор/демультиплексор и ряд моделей источника. Арифметический декодер получает последовательность битов (D=A_Data) и последовательность вероятностей (Р) и генерирует последовательность битов (E). Последовательности Е и Р присваиваются моделям источника в циклическом порядке, которым управляет мультиплексор/демультиплексор. Каждая модель источника получает необходимые параметры, как коэффициенты фильтра прогноза и записи таблицы вероятности из потока, как определено в синтаксисе и семантике.
Модель источника S соответствует каналу S. Вывод X из модели источника S является сигналом DSD для канала S.
7.1.2 Арифметический декодер
Арифметическое кодирование является методом кодирования переменной длины для сжатия данных близко к их энтропии. Кодированные данные представляются как число. Число использует столько цифр, сколько требуется, чтобы однозначно определять исходные данные.
Таблица 23 определяет переменные, используемые на рисунке 2, рисунке 3, рисунке 4 и рисунке 5.
Таблица 23 - Переменные, используемые в рисунке 2, рисунке 3, рисунке 4 и рисунке 5
Имя | Характеристики | Описание |
А | 12-битовый регистр | Это целое число без знака представляет текущую величину интервала арифметического декодера |
С | 12-битовый регистр | Это целое число без знака содержит часть битов арифметического кода |
K | 4-битовая переменная | Это целое число без знака является 4-битовым приближением А |
Р | 8-битовая переменная | Это целое число без знака является величиной вероятности, применяемой к арифметическому декодеру |
Q | 12-битовая переменная | Это целое число без знака является произведением K и Р |
Рисунок 2 показывает полную блок-схему алгоритма декодирования DST.
Процесс инициализации показан на рисунке 3 и требуется в начале декодирования каждого фрейма. Он состоит из загрузки первых 13 битов арифметического кода в регистр С и переустановки регистра А в 4095. Первый бит, считываемый в С, будет перезаписан, это предусмотрено, потому что первый бит всегда 0.
Функция "Input next bit D" (ввод следующего бита D) на рисунке 2, рисунке 3 и рисунке 5 означает, что бит D берется из A_Data [ ], начиная с первого бита. После того как все биты из A_Data [ ] были считаны, функция "Input next bit D" устанавливает бит D в 0.
Чтение информации о вероятности Р получает из модели источника, за исключением первого бита, где вместо этого читается вероятность DST_X_Bit.
Рисунок 4 иллюстрирует декодирование одного бита Е и обновление регистра А и С. Сначала вычисляется текущий аппроксимированный размер интервала K. Затем произведение аппроксимированного размера интервала K и применяемой величины вероятности Р сохраняется в Q. Если С больше или равно A-Q, то арифметический код находится в верхней части интервала, что означает, что исходный закодированный бит Е был битом '1'; иначе был передан бит '0'. А и С должны быть скорректированы таким же образом как в кодере.
Процесс ренормализации показан на рисунке 5. Ренормализация требуется когда значение А слишком маленькое. Если А является слишком маленьким, то А и С смещаются на один бит влево, и новый бит арифметического кода D читается в младший значащий бит С.
Возможно, что последние биты A_Data не используются функцией "Input next bit D" для того, чтобы декодировать аудиофрейм. Эти неиспользованные биты являются битами заполнения для выравнивания аудиофрейма на границе байта.
Рисунок 2 - Блок-схема арифметического декодера
Рисунок 3 - Инициализация