ГОСТ Р 54711—2011
Параметр counl\ используется здесь для указания на число кодов Хаффмана в counts области.
Однако, в отличие от раздела btgvalues. число значений в разделе соипП не кодируется явным образом.
Конец раздела countl известен только тогда, когда все биты гранулы (определяемые pari2_3_longth)
были исчерпаны и значение counf\ становится точно известным после декодирования области count!.
Порядок следования данных кода Хаффмана зависит от blockjype гранулы. Если block_type ра
вен 0. 1 или 3. данные кода Хаффмана упорядочиваются по нарастанию частоты.
Если block Jype-2 (короткие блоки), данные Хаффмана организуются в том же самом порядке,
что и значения масштабных коэффициентов для гранулы. Данные Хаффмана даются для последова
тельных полос масштабных коэффициентов начиная с полосы 0. В пределах каждой полосы данные со
ответствуют последовательным временным окнам начиная с окна 0 и заканчивая окном 2. В пределах
каждого окна квантованные значения располагаются в порядке увеличения частоты.
5.2.8 Дополнительные данные
Ancillary_bit — Бит. определяемый пользователем.
Количество дополнительных битов (no_of_ancillary_bits) равно доступному числу битов в ау
диофрейме минус число битов заголовка, проверочных битов и аудиоданных. На Уровнях I и II по_
of_ancillary_bits соответствует расстоянию между концом аудиоданных и началом следующего заго
ловка. На Уровне III no_of_ancillary_bits соответствует расстоянию между концом Huffman_code_bits и
позицией в потоке, на которую ссылается указатель следующего фрейма main_data_begin.
5.3 Процесс декодирования данных звука
5.3.1 Общие сведения
Первым действием является синхронизация декодера с входным потоком битов. Для этого вы
полняется обнаружение в потоке 12-битного синхрослова. В некоторых приложениях поля Ю. уровень и
protection status заранее известны, и. таким образом, первые 16 битов заголовка должны быть рас
ценены как 16-битная синхропоследовательность, делая тем самым синхронизацию более надежной.
Позиция соседних синхрослов может быть вычислена из информации, предоставленной семью битами
после protection_bit. поток битов подразделяется на слоты. Расстояние между началами двух соседних
синхрослов составляет N или N + 1слотов. Значение N зависит от уровня.
Для Уровня I верно следующее равенство:
—
n
, 12
samplingJrequency
для Уровней II и III:
bitrate
N = 144--------------------------.
samplingJrequency
Если результат не является целым числом, то он округляется и требуется дополнение. В этом слу
чае число слотов во фрейме будет меняться в пределах N и N + 1. Бит пэддинга устанавливается в ’0’,
если число слотов равно N, и в Т в противном случае. Знание точной позиции синхрослов значительно
облегчает синхронизацию.
Если индекс скорости передачи равен 0000’. точная скорость передачи не обозначается. N может
быть определено из расстояния между соседними синхрословами и значением бита пэддинга.
Биты режима должны быть считаны из потока, и если их значение равно 01’. то также должны
быть считаны биты mode_extension. Биты mode_extension. установленные в bound, указывают тем са
мым на субполосы, кодированные в режимеjoint_stereo.
Если бит защиты в заголовке равен ’0’. проверочное слово CRC находится в потоке битов сразу
после заголовка. В качестве метода обнаружения ошибок используется CRC 16 с порождающим по
линомом
G(X) = Х ,в + Х ,5 + Х2 +1.
Начальное состояние сдвигового регистра ’1111 1111 1111 1111’. Затем все биты, включенные
в проверку CRC. поступают в блок, показанный на рисунке А.9. После введения каждого бита сдвиговый
регистр смещается на один бит. После последней операции сдвига выходы Ь,5 ...составляют слово,
которое сравнивается со словом проверки CRC. Если эти слова неидентичны, ошибка передачи прои
зошла в защищенном поле потока битов. Во избежание раздражающих искажений рекомендуется ис-
25