Интерфейс унаследованных систем 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 добавляются биты стаффинга, чтобы получить совместимые фреймы.