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

ГОСТ Р 54712-2011 Звуковое вещание цифровое. Кодирование сигналов звукового вещания с сокращением избыточности для передачи по цифровым каналам связи MPEG-2 часть III (MPEG-2 audio) (Переиздание)

     3.3 Метод описания синтаксиса потока битов


Поток битов, полученный декодером, описывается в 4.1.1 и 4.2.3. Каждый элемент данных описывается именем, длиной в битах, мнемоникой типа и порядком передачи.

Действие, вызванное декодируемым элементом данных в потоке битов, зависит от значений этого элемента данных и элементов данных, декодированных ранее. Декодирование элементов данных и определение параметров состояния, используемых в их декодировании, описываются в 4.1.2, 4.1.3, 4.2.4 и 4.2.5.

Для выражения условий присутствия элементов данных используются следующие конструкции:

В этом синтаксисе используется принятое в языке С соглашение о том, что переменная или выражение, возвращающие ненулевое значение, эквивалентны результату "истина".

Следует обратить внимание на наиболее распространенные варианты использования этой конструкции:

Группа элементов данных может содержать вложенные условные конструкции. Для компактности скобки { } могут быть опущены, когда следует только один элемент данных.

data_element [ ]

Является массивом данных.

Число элементов массива зависит от контекста.

data_element [n]

Является ()-м элементом массива данных.

data_element [m] [n]

Является элементом ()-й строки ()-го столбца двухмерного массива данных.

data_element [l] [m] [n]

Является (), (), ()-м элементом трехмерного массива данных.

data_element [m...n]

Содержит битовы массива data_element с по включительно.


Знание самого синтаксиса потока битов в разделах 4.1.3 и 4.2.5 не следует считать достаточным для декодирования. В частности, это лишь определяет корректный и свободный от ошибок входной поток битов. Для правильного начала декодирования реальные декодеры должны иметь средства обнаружения стартовых последовательностей.

bytealigned()

Возвращает 1, если текущая позиция находится на границе байта, так что следующий бит потока будет первым битом нового байта. В противном случае функция возвращает 0.

nextbits()

Реализует сравнение строки битов со строкой битов на входе декодера.

next_start_code()

Удаляет все нулевые битовы и биты стаффинга и определяет положение следующего синхрослова.

     

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