November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Wednesday, May 14th, 2008 10:33 pm
Остальные части

В телевещании программой (program) или сервисом (service) называется набор логически связанных элементарных потоков данных: аудио-, видео-, телетекст, субтитры, а также дополнительная информация типа расписания передач, названия программы, названия вещателя (провайдера), языков аудиосопровождения, данные для условного доступа к программам и т.п.


Видеопоток в телепрограмме обычно один, реже несколько (например, при трансляции спортивных состязаний с нескольких камер). Если в программе нет ни одного видеопотока, то получается радиопрограмма.

Хотя бы один аудиопоток в программе обычно есть, иногда их бывает несколько, например, на разных языках или, скажем, стерео и многоканальный звук в фильмах. Ни одного аудиопотока в программе бывает редко, хотя теоретически и такой вариант возможен.

Аудио- и видеопотоки (для MPEG2) состоят из PES-пакетов, порезанных на кусочки по 184 байта и разложенных по TS-пакетам.

Дополнительные данные обычно передаются в виде так называемых таблиц (tables) - структур данных определённого формата. Для части таблиц формат определён в ISO 13818 и других стандартах, для некоторых других (например, данных условного доступа) структура оставляется на усмотрение вещателя.

Таблица состоит из одной или более секций (section). Каждая секция содержит 8-битовый идентификатор таблицы, определяющий её тип, порядковый номер секции и общее количество секций в таблице. Поскольку таблицы могут быть довольно большими, а TS-пакеты могут во время передачи искажаться, такая схема позволяет приёмнику быстрее собрать полную таблицу, дождавшись повторной передачи только нужной секции, а не всей таблицы целиком. [Здесь и далее под словом "приёмник" подразумевается не столько железо, сколько программа, которая управляет его работой]. Для обнаружения искажений при передаче секции снабжаются контрольными суммами (CRC32).

Идентификаторы некоторых таблиц определены в стандартах ISO 13818 и EN 400 468:

0x00 - PAT (program association table),
0x01 - CAT (conditional access table)
0x02 - PMT (program map table)
0x03 - TSDT (Transport Stream Description Table)
0x04-0x3F - зарезервированы для возможного использования в будущем
0x3F-0xFE - в соответствии с ISO 13818 могут использоваться произвольно, но часть из них определена в EN 300 468
0x40 и 0x41 - NIT (Network Information Table)
0x42 и 0x46 - SDT (Service Description Table)
0x4A - BAT (Bouquet Association Table)
0x4E, 0x4F, 0x50-0x6F - EIT (event infromation table)
0x70 - TDT (Time/Date Table)
0x71 - RST (Running Status Table)
0x72 - ST (Stuffing Table, заполнитель потока, не несущий информационной нагрузки)
0x73 - TOT (Time Offset Table)
0x80-0xFE - в соответствии с EN 300 468 могут использоваться произвольно, но часть из них определена в других стандартах
0x80 и 0x81 - ECM (entitlement control message)
0x82-0x8F - EMM (entitlement management message)
0xFF - запрещённое значение

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

Содержимое таблиц может время от времени меняться. Чтобы приёмник мог распознать изменения, предусмотрено две возможности. Во-первых, в таблицах может присутствовать флаг "current/next indicator", указывающий, относится ли таблица к настоящему или к следующему периоду, и позволяющий одновременно передавать две разные версии одной таблицы. Имея данные о следующем периоде, приёмник может заранее произвести некоторые подготовительные действия.

Кроме того, в таблицах есть 5-битовый номер версии, который последовательно увеличивается всякий раз, когда данные в таблице изменяются. По достижении максимального значения номер версии сбрасывается в 0 и далее опять увеличивается. Обнаружив изменение номера версии, приёмник может предпринять какие-нибудь действия, например, автоматически показать пользователю название очередной передачи, или перечитать список каналов транспондера.

Кроме аудио, видео и служебных данных, элементарные потоки могут использоваться для передачи IP-пакетов, данных от интерактивных сервисов и прочего.


Чтобы данные от разных элементарных потоков при мультиплексировании не перепутались, каждому элементарному потоку присваивается уникальный (в пределах мультиплексированного потока) номер, который называется PID (packet identifier). Этот номер указывается в заголовках всех пакетов, относящихся к данному элементарному потоку. По значению этого поля демультиплексор в приёмнике и выделяет нужные элементарные потоки.

PID имеет длину 13 бит и может принимать значения от 0x0000 до 0x1FFF.
Значение 0x1FFF никогда не присваивается никакому реальному потоку и используется, когда в служебных таблицах требуется указать PID потока, а реально поток не существует (что-то типа NULL).

Некоторые значения PID'ов зарезервированы для передачи вполне определённых служебных данных (от 0x0000 до 0x000F), остальные могут в процессе мультиплексирования выбираться вещателем произвольно (в соответствии с ISO 13818 - от 0x0010 до 0x1FFE), но часть из них задействована в EN 300 468. В частности:
0x0000 - PAT
0x0001 - CAT
0x0002 - TSDT
0x0003-0x000F - заререзриврованы
0x0010 - NIT и ST
0x0011 - SDT, BAT, ST
0x0012 - EIT, ST
0x0013 - RST, ST
0x0014 - TDT, TOT, ST


Набор таблиц, необходимый и достаточный для демультиплексирования и показа программ, называется PSI (program specific information). К нему относятся следующие таблицы:

- PAT (program association table) - одна на мультиплексированный поток, PID=0x0000, table_id=0x00.

- PMT (program map table) - по одной на каждую программу в составе мультиплексированного потока. PIDы произвольные, указываются в PAT. table_id=0x02.

- CAT (conditional access table) - одна на мультиплексированный поток, PID=0x0001. table_id=0x01.

- NIT (network information table) - одна на мультиплексированный поток. PID этой таблицы указывается в PAT, обычно он равен 0x0010, а table_id=0x40.


При первоначальной установке приёмник последовательно настраивается на все транспондеры, считывает списки программ вместе с номерами PID'ов и запоминает их, чтобы пользователь мог сразу увидеть полный список возможных программ, а приёмник - быстро на них переключиться. Поскольку программы могут добавляться и удаляться, у них могут меняться аудио- и видеопотоки, впоследствии приёмник, настроившись на транспондер, может перечитывать и запоминать новые данные о программах.

В PAT (program association table), которая всегда передаётся с PID'ом 0x0000, находится список программ в виде номеров программ и номеров их PMT (program map tables). Считав PMT от каждой программы, приёмник получает номера PID'ов, с которыми передаются собственно аудио-, видео- и потоки данных условного доступа к этой программе.

Обычно для выбора и показа программы этих данных достаточно.


CAT (conditional access table) содержит список систем условного доступа (в устоявшейся русскоязычной терминологии - "кодировок") и номера PID'ов, с которыми передаются некоторые данные (точнее говоря, EMM - entilement management messages) от каждой из этих систем. Подробнее об условном доступе - в отдельном выпуске. В некоторых случаях CAT может не передаваться, например, если условный доступ в данном мультиплексированном потоке не используется.

Кроме ссылок на PMT, в PAT присутствует также ссылка на NIT (network information table). В NIT описываются параметры транспондеров (частота, модуляция, ширина полосы, и т.п.) и передающихся с них мультиплексированных потоков (номер, идентификатор сети, номера и типы программ и пр.) Это позволяет приёмнику, настроившись хотя бы на один транспондер, автоматически узнать параметры других. Очевидно, для выборки данных о программах и их показа NIT не нужна. Тем не менее, по стандарту она включена в состав PSI.

Кроме вышеперечисленных, существуют и другие таблицы, формально не включены в состав PSI, но позволяют получить дополнительные данные о программах для автоматической группировки и более удобного выбора пользователем. В частности, интерес представляет SDT (service description table, PID=0x0011, table_id=0x42 для текущего потока и 0x46 для других потоков), в которой содержатся названия программ. Без содержащихся в этой таблице данных программы пришлось бы обозначать исключительно числовыми идентификаторами или редактировать названия вручную, что не слишком удобно для пользователя.

Дальнейшие примеры с комментариями помогут несколько прояснить эту запутанную картину.
Tags:

Reply

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting