Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по ЦО АВС2.doc
Скачиваний:
55
Добавлен:
07.09.2019
Размер:
8.2 Mб
Скачать

8.4 Структура транспортных пакетов

Транспортный пакет стандарта MPEG-2 имеет постоянную длину, равную 188 байтам, заголовок пакета имеет переменную длину. Как показано на рисунке 8.8, в состав заголовка транспортного пакета входит канальный заголовок, имеющий фиксированную длину 4 байта и поле данных адаптации (выполняет функцию транспортного заголовка).

Рисунок 8.8 – формат транспортного пакета

В общем случае транспортные пакеты могут формироваться различными путями: объединением потоков ES, PES-пакетов и других TS-пакетов. Для многопрограммного вещания транспортные потоки от­дельных программ асинхронно объединяются в мультиплекс, подлежащий передаче по каналу.

Транспортный пакет имеет сложную многоуровневую структуру, показанную на рисунке 8.9.

Канальный заголовок имеет следующие поля.

Первый байт заголовка – байт синхронизации (sync_byte) – фиксированное поле длиной 8 бит, имею­щее значение 0100 0111 (0x47), легко опознаваемое демультиплексором. Так как заголовки транспортных пакетов следуют с интервалом в 188 байт, то это упрощает определение начала пакета.

Рисунок 8.9 – структура заголовка и поля адаптации транспортного пакета

Индикатор ошибки транспортировки (transport_error_indicator) флаг длиной 1 бит. Будучи установленным в 1, он указывает на то, что в соответствующем пакете транспортного потока имеется, по крайней мере, одна неисправимая ошибка в битах. Этот бит может быть уста­новлен в 1 объектами, внешними по отношению к транспортному уров­ню. Будучи установленным в 1, этот бит не должен быть сброшен в 0, пока не будут исправлены значения битов, имеющих ошибки;

Индикатор ошибки транспортировки (payload_unit_start_indicator) флаг длиной 1 бит, который имеет нормативное значение для пакетов транспортного потока, переносящих PES-пакеты или данные сервисной информации SI.

Когда полезная нагрузка пакета транспортного потока содержит дан­ные PES-пакета, то payload_unit_start_indicator имеет следующий смысл: 1 указывает на то, что полезная нагрузка этого пакета транс­портного потока начнется с первым байтом PES-пакета, а 0 — на то, что в этом пакете транспортного потока не может быть начала PES-пакета.

Когда полезная нагрузка пакета транспортного потока содержит дан­ные сервисной информации SI, payload_unit_start_indicator имеет сле­дующий смысл: если пакет транспортного потока содержит первый байт секции SI, то значение payload_unit_start_indicator должно быть 1, указывая на то, что первый байт полезной нагрузки этого пакета транс­портного потока содержит поле указателя pointer_field. Если пакет транспортного потока не содержит первого байта секции SI, то значе­ние payload_unit_start_indicator должно быть 0, указывая на то, что в полезной нагрузке нет поля указателя pointer_field.

Для пустых пакетов payload_unit_start_indicator должен быть уста­новлен в 0.

Значение этого бита для пакетов транспортного потока, перенося­щих только частные данные в стандарте MPEG-2, не определено.

Приоритет транспортировки (transport_priority) индикатор длиной 1 бит. Будучи установленным в 1 он указывает на то, что связанный с ним пакет имеет больший приоритет, чем другие пакеты, имеющие тот же самый индикатор PID, но в которых этот бит не установлен в 1. Транспортный механизм может использовать этот индикатор для распо­ложения по приоритетам всех данных в пределах элементарного потока. В зависимости от применения поле transport_priority может быть коди­ровано независимо от PID или только для одного PID. Это поле может быть изменено кодерами или декодерами для специфических каналов.

PID: идентификатор пакета — поле длиной 13 бит, указывающее тип данных, содержащихся в полезной нагрузке пакета. PID служит основным признаком, по которому демультиплексор сортирует приходящие PES-пакеты на приемной стороне. Из общего числа 8192 возможных значений PID 16 выделены на общесистемные цели, номер 8191 закреплен за стаффингом байтами, остальные могут назначаться пользователем произвольно для отдельных компанент своихпрограмм. Значение PID 0x0000 зарезервировано для таблицы взаимосвязи программ PAT. Зна­чение PID 0x0001 зарезервировано для таблицы ограниченного досту­па CAT. Значения идентификатора PID от 0x0002 до 0x000F являются зарезервированными. Значение PID 0xlFFF сохранено для пустых па­кетов. Значения идентификатора PID приведены в таблице 8.1.

Таблица 8.1 – значения PID

Значение

Описание

0х0000

Таблица взаимосвязи программ PAT

0х0001

Таблица условного доступа CAT

0х0002 …0х000F

Зарезервированы

0х0010…0x1FFE

Может быть присвоено сетевому идентификатору networkPID, идентификатору структуры программы Program_map_PID. идентификатору элементарного потока elementary_PID или для других целей

0х1FFF

Нулевой пакет

Примечание: транспортные пакеты с PID 0х0000, 0х0001 и 0х0010…0х1FFE предназначены для переноса PCR

transport_scrairibling_control — поле длиной 2 бита указывает ре­жим скремблирования полезной нагрузки пакета транспортного пото­ка. Заголовок пакета транспортного потока и поле адаптации, когда таковое присутствует, не должны скремблироваться. В случае пустого пакета значение поля transportscrambling control должно быть уста­новлено в 00 (таблица 8.2).

Таблица 8.2 – Значения поля управления скремблироваеия

Значение

Описание

00

Без скремблирования

01

Определяется пользователем

10

Определяется пользователем

11

Определяется пользователем

adaptation_field_control: управление полем адаптации — поле дли­ной 2 бита указывает, следует ли поле адаптации и/или полезная на­грузка за этим заголовком пакета транспортного потока (таблица 8.3).

Таблица 8.3 – Значения поля адаптации

Значение

Описание

00

Зарезервирован для будущего использования ISO/IEC

01

Поле адаптации отсутствует, только полезная нагрузка

10

Только поле адаптации, полезная нагрузка отсутствует

11

Поле адаптации расположено за полезной нагрузкой

Декодеры, определенные в Стандарте ISO/IEC 13818-1, должны отказаться от декодирования пакетов транспортного потока с полем adaptation_field_control, установленным в 00. В случае пустого пакета значение поля adaptation_field_control должно быть установлено в 01.

continuity_counter: счетчик непрерывности — поле длиной 4 бита. Четырехбитовый счетчик непрерывности PES-пакетов увеличивает свое значение на единицу при поступлении каждого следующего PES-пакета с данными PID и обнуляется после каждого 15-20 пакета. Он позволяет декодеру обнаруживать потерю PES-пакета и принимать меры по его замене или маскированию ошибок, которые могут возникнуть из-за его потери.

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

Поле адаптации, содержит следующие основные поля:

adaptation_field_lenght – длина поля адаптации, поле с 8 битами, определяющее количество байтов в области поля адаптации, следующей сразу за adaptation_field_lenght . Для пакетов Транспортного потока, несущих PES-пакеты, наполнение необходимо, когда PES-пакеты имеют длину, недостаточную для заполнения полезной нагрузки пакета Транспортного потока. Заполнение поля адаптации выполняется таким образом, чтобы суммарная длина его данных и байтов полезной нагрузки, следующих за ним, точно уместились в доступную длину PES-пакета. Дополнительное место в поле адаптации заполняется байтами наполнения. Для пакетов Транспортного потока, несущих PSI, метод заполнения будет рассмотрен в разделе 8.6.

Неоднородность синхронизации системы обозначена при помощи индикатора discontinuity_indicator в пакетах Транспортного потока с PID, определенным как PCR_PID . Когда состояние неоднородности истинно для пакета Транспортного потока с PID, обозначенным как PCR_PID, следующая PCR в пакете Транспортного потока с тем же самым PID представляет отсчет новой синхронизации системы для данной программы. Когда discontinuity_indicator установлен в «0, состояние неоднородности ложно.

elementary_stream_priority_indicator - индикатор приоритета элементарного потока является полем с 1 битом. Оно указывает приоритет данных элементарных потоков среди пакетов с одинаковым PID, которые расположены в пределах полезной нагрузки данного пакета Транспортного потока. «1» указывает, что полезная нагрузка имеет более высокий приоритет, чем полезные нагрузки других пакетов. В случае видео, это поле может быть установлено только в «1», если полезная нагрузка содержит один или более байтов I-кодированного слоя.

Затем идут пять флагов укзывающие на присутствие или отсутствие тех или иных необязательных полей в поле адаптации.

PCR_flag - флаг с 1 битом. Значение «1» указывает, что область адаптации содержит поле PCR из двух частей. Значение «0» указывает, что поле адаптации не содержит поля PCR. program_clock_reference (PCR) - поле с 42 битами. PCR - отсчеты программного времени, являются средством синхронизации программы (PCR будет рассмотрено в 3.4);

OPCR_flag – 1-битный флаг. Значение «1» указывает, что область адаптации содержит поле OPCR, которое кодируется в двух частях. Значение «0» указывает, что поле адаптации не содержит поля OPCR. original_program_clock_reference_base – необязательная ссылка оригинала программы (OPCR) - поле с 42 битами. Поля OPCR разрешены в однопрограммных и многопрограммных Транспортных потоках. OPCR помогает отличить однопрограммный Транспортный поток от других Транспортных потоков. При восстановлении первоначального однопрограммного Транспортного потока, OPCR может быть скопирован в поле PCR. Окончательное значение PCR имеет силу, если первоначальный однопрограммный Транспортный поток восстановлен точно во всей полноте. Он должен включать по крайней мере любую PSI и пакеты частных данных, которые присутствовали в первоначальном Транспортном потоке; возможно, потребуются и другие меры. Это также означает, что OPCR должен быть копией связанного с ним PCR в первоначальном однопрограммном Транспортном потоке;

transport_private_data_flag – 1-битный флаг. Значение «1» указывает, что поле адаптации содержит один или большее количество байтов private_data. Значение «0» указывает, что поле адаптации не содержит байтов с частным данными. transport_private_data_length - поле с 8 битами, определяющее количество байтов private_data, следующих непосредственно за полем private_data_length. Количество байтов не должно быть таким, чтобы частные данные простирались за пределы поля адаптации;

adaptation_field_extension_flag – 1-битное поле, которое указывает присутствие расширения поля адаптации при значении «1». Значение «0» указывает, что расширения поля адаптации нет в данном поле адаптации. adaptation_field_extension_length - поле с 8 битами. Указывает количество байтов расширенных данных поля адаптации, следующих непосредственно за этим полем, включая зарезервированные байты, если они есть. В расширенные данные поля адаптации вводится доплнительная информация, используемая декодером при декодировании.