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

ГОСТ Р 53556.9-2013 Звуковое вещание цифровое. Кодирование сигналов звукового вещания с сокращением избыточности для передачи по цифровым каналам связи. Часть III (MPEG-4 Audio). Методы кодирования звука MPEG-1/2 Audio в MPEG-4. Основные технические требования (Переиздание)

Приложение Г
(справочное)

     
Интерфейс унаследованных систем MPEG-4 в MPEG-1/2 Audio

Г.1 Обзор

Это приложение обеспечивает помощь в использовании decSpecificlnfo и accessUnit, чтобы применять MPEG-1/2, уровень 1, 2, 3, и MPEG 2 ААС в MPEG-4, используя следующие значения objectTypelndication:

- 0х6b (ГОСТ Р 54711);

- 0x69 (ГОСТ Р 54712);

- 0x66 (ГОСТ Р 54712, основной профиль);

- 0x67 (ГОСТ Р 54712, профиль малой сложности);

- 0x68 (ГОСТ Р 54712, профиль масштабируемой частоты дискретизации).

Г.2 Специальная информация о декодере

В ГОСТ Р 53556.1 decSpecificlnfo определяется для некоторой информации о декодере носителей информации. Эта специальная информация о декодере составляет непрозрачный контейнер с информацией для специального медиадекодера (декодера носителей). При ее наличии, она может использоваться для инициализации декодера и априорной реализации наборщика. Нет необходимости определять эту специальную информацию декодера. Ее существование и семантика зависят от значений DecoderConfigDeschptor.streamType и DecoderConfigDescriptor.objectTypelndication.

Нехватка доступности любого decSpecificlnfo приводит к ситуации, когда формат памяти композиции нельзя априорно различить, чтобы реализовать наборщиком. Следовательно, декодер определяет формат памяти композиции.

Г.2.1 MPEG-2 ААС

Для MPEG-2 ААС определяется decSpecificlnfo, то есть в случае значений DecoderConfigDescriptor.objectTypelndication, которые обращаются к потокам, удовлетворяющим ГОСТ Р 54712.

В этом случае аудиодекодеры получают всю релевантную информацию от этого decSpecificlnfo, которая состоит из adif_header (), и могут переслать формат памяти композиции в память композиции.

Г.2.2 MPEG-1 Audio и MPEG-2 Audio

Для MPEG-1 Audio и MPEG-2 Audio никакой decSpecificlnfo не определяется, то есть в случае значений DecoderConfigDescriptor.objectTypelndication, которые относятся к потокам, соответствующим ГОСТ Р 54711 и ГОСТ Р 54712. В этих случаях аудиодекодеры получают всю значимую информацию в элементе 'header()' их собственного потока битов и могут передать формат памяти композиции в память композиции. Таким образом, динамически внося изменения в выходном формате, необходимые для того, чтобы иметь дело с ним, то есть без элементарного обновления дескриптора потока.

Г.3 Единицы доступа

Фрейм MPEG-1/2 уровней 1, 2 или 3 (данные между синхронизирующими словами) или фрейм MPEG-2 ААС (raw_data_block) могут быть обработаны как единицы доступа аудио не только в контексте ГОСТ Р 54711 и ГОСТ Р 54712, но также и в контексте настоящего стандарта.

При обработке фреймов MPEG-1/2 уровней 1, 2, 3 или MPEG-2 ААС как единиц MPEG-4, единицам доступа присваивается информация синхронизации.

Так как определения единицы аудиодоступа точно не соответствуют между MPEG-1/2 и MPEG-4, то нужно принимать во внимание некоторые специальные соображения.

В частности, для уровня 3 единица аудиодоступа определяется в MPEG-1/2 как часть потока битов, которая может быть декодирована только с использованием ранее полученной основной информации, которая не отражает определение единицы аудиодоступа в MPEG-4.

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

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

- однозначно;

- полностью совместимый с MPEG-1 или MPEG-2;

- декодируемый любым существующим декодером уровня 1, 2 или 3.

Это можно сделать следующим образом:

- main_data () для единственного фрейма помещается непосредственно рядом с его дополнительной информацией. Указатель main_data_begin обнуляется. Фрейм за фреймом индексы скорости передачи (bitrate_index) увеличиваются до минимального значения, нужного, чтобы получить длину фрейма, которая может разместить исходный заголовок, error_check, дополнительную информацию и основные данные. Из-за гранулярности в доступных скоростях передачи обычно эта длина фрейма больше, чем длина заголовка, error_check, дополнительная информация и основные данные. В этом случае в конце main_data добавляются биты стаффинга, чтобы получить совместимые фреймы.