Остальные части
Более детальное (чем в ISO 13818) описание служебных таблиц (service information, SI) содержится в другом стандарте - EN 300 468, утверждённом Европейским Вещательным Союзом (European Broadcasting Union). Стандарт этот, очевидно, распространяется только на Европу. По всей видимости, в других регионах должны существовать аналогичные стандарты, но мне о них ничего не известно.
Network Information Table, как следует из её названия, содержит информацию о сети (network), то есть, группе мультиплексированных потоков, относящихся к одной системе доставки сигнала (delivery system). Это может быть, например, конкретная кабельная или эфирная система или группа транспондеров на спутнике.
Узнав из приведённой в прошлом примере PAT, что NIT передаётся с PID'ом 0x0010, приёмник может прочитать эту таблицу.
В приведённом ниже примере NIT содержит описания всех четырёх имеющихся в системе транспондеров. Однако NIT не является обязательной таблицей, и даже если она присутствует, она может не содержать данных о других транспондерах. Поэтому при первоначальной настройке полагаться только на данные из NIT приёмник не может. Тем более, чтобы настроиться на первый транспондер, приёмник должен откуда-то заранее взять его параметры.
Следовательно, списки транспондеров и их параметров должны быть либо заранее зашиты в память приёмника (так обычно делают провайдеры, выдающие своим клиентам ресиверы с управляющей программой, подстроенной под нужды конкретного провайдера), либо введены пользователем вручную (ну или закачаны ресивером откуда-нибудь из интернета).
Тем не менее, данные из NIT могут помочь приёмнику получить информацию о других транспондерах, которые в его списке отсутствовали.
Более того, иногда в NIT присутствует информация о транспондерах других систем, например, с других спутников, или, скажем, в NIT, передаваемой со спутника в DVB-S, могут быть описания кабельных транспондеров того же провайдера.
Кроме информации о транспондерах, в NIT содержатся номера программ и их тип (телевизионные или радио). Многие ресиверы при сортировке найденных программ используют именно этот параметр, а не наличие или отсутствие видеопотоков в PMT каждой программы. Если в NIT тип программы указан неправильно (а такое иногда случается), ресивер может воспроизводить программу неправильно - у телепрограммы, описанной как радио, не будет изображения, а у радиопрограммы, описанной как теле-, вместо заставки будет черный экран.
Номера программ выбираются вещателем произвольно, единственное условие - они не должны быть 0 (это значение зарезервировано для указания NIT в PAT) и должны быть уникальными в пределах мультиплексированного потока, хотя обычно они уникальны и в пределах сети.
Network Information Table:
Итак, мы видим
Table_ID=0x40, который позволяет интерпретировать дальнейшее содержание таблицы именно как NIT. Встречается также 0x42 - это NIT от другой сети, не от той, к которой относится данный транспондер.
Номер сети, которую описывает данная таблица - Network_ID: 12801 (0x3201).
Небольшое отступление про идентификаторы в DVB.
Для некоторых идентификаторов, значения которых должны быть при разработке DVB-оборудования заранее широко известны, эти значения определяются в стандартах (например, значения некоторых PIDов и идентификаторов служебных таблиц). Для других, которые могут время от времени добавляться, и количество которых заранее неизвестно, но которые должны быть [в некоторых пределах] уникальны, эти значения централизовано выделяются DVB-консорциумом. В частности, идентификаторы систем условного доступа (CA ID), идентификаторы сетей (network ID), идентификаторы исходных сетей (original network ID).
[Конец отступления про идентификаторы]
Вообще-то, это делается для обеспечения уникальности, но идентификатор сети 0x3201 оказался в диапазонах для DVB-T, выделенных государственным организациям по надзору за радио- и телевещанием сразу нескольких стран: Австралии, Ирландии, Сингапура, Дании, Эстонии, Швейцарии, Андорры и Словении. С моей точки зрения выглядит странновато, но учитывая, что эти страны напрямую не граничат, пересечение этих сетей эфирного вещания в одной географической точке маловероятно.
Описание сети состоит из одного поля, в котором указано её название: "Irish DTT". Это даёт некоторую определённость относительно страны :)
Далее следуют описания четырёх транспондеров сети вместе со списками номеров программ каждого из них. Из параметров видно, что все они вещают в системе DVB-T с модуляцией 16-QAM и шириной полосы 8MHz.
Идентификатор исходной сети (Original_network_ID) для всех транспондеров равен 8564 (0x2174). В отличие от network ID, который идентифицирует физическую систему доставки сигнала, original network ID определяет источник - откуда происходит сигнал. На сайте DVB-консорциума можно узнать, что 0x2174 - это "Irish Digital Terrestrial Television", управляемый оператором "Irish Telecommunications Regulator".
Первый транспондер (точнее, передаваемый с него мультиплексированный поток) имеет идентификатор потока (Transport_stream_ID) = 1001,
частоту 737833.033 кГц,
номера программ: 1101-1104 (теле), 1226-1233 (радио).
Второй транспондер:
Transport_stream_ID=2001
частота 770000.000 кГц
номера программ: 2101-2106 (теле), 2221, 2225-2229, 2231-2233 (радио).
Третий транспондер:
Transport_stream_ID=3001
частота 794000.000 кГц
номера программ: 3101-3106 (теле)
Четвертый транспондер:
Transport_stream_ID=4001
частота 810000.000 кГц
номера программ: 4101 и 4102. Тип у них 0x25 и 0x22, соответственно. Это тесты программ высокой чёткости изображения (HD).
Забегая вперёд, скажу, что видеопотоки у них идут с типом 27 (0x1B), который обозначает MPEG4 в виде H.264, он же ISO/IEC 14496-10. В отличие от обычных DVB-каналов, у которых тип потока 2 (обычный MPEG2-video).
Более детальное (чем в ISO 13818) описание служебных таблиц (service information, SI) содержится в другом стандарте - EN 300 468, утверждённом Европейским Вещательным Союзом (European Broadcasting Union). Стандарт этот, очевидно, распространяется только на Европу. По всей видимости, в других регионах должны существовать аналогичные стандарты, но мне о них ничего не известно.
Network Information Table, как следует из её названия, содержит информацию о сети (network), то есть, группе мультиплексированных потоков, относящихся к одной системе доставки сигнала (delivery system). Это может быть, например, конкретная кабельная или эфирная система или группа транспондеров на спутнике.
Узнав из приведённой в прошлом примере PAT, что NIT передаётся с PID'ом 0x0010, приёмник может прочитать эту таблицу.
В приведённом ниже примере NIT содержит описания всех четырёх имеющихся в системе транспондеров. Однако NIT не является обязательной таблицей, и даже если она присутствует, она может не содержать данных о других транспондерах. Поэтому при первоначальной настройке полагаться только на данные из NIT приёмник не может. Тем более, чтобы настроиться на первый транспондер, приёмник должен откуда-то заранее взять его параметры.
Следовательно, списки транспондеров и их параметров должны быть либо заранее зашиты в память приёмника (так обычно делают провайдеры, выдающие своим клиентам ресиверы с управляющей программой, подстроенной под нужды конкретного провайдера), либо введены пользователем вручную (ну или закачаны ресивером откуда-нибудь из интернета).
Тем не менее, данные из NIT могут помочь приёмнику получить информацию о других транспондерах, которые в его списке отсутствовали.
Более того, иногда в NIT присутствует информация о транспондерах других систем, например, с других спутников, или, скажем, в NIT, передаваемой со спутника в DVB-S, могут быть описания кабельных транспондеров того же провайдера.
Кроме информации о транспондерах, в NIT содержатся номера программ и их тип (телевизионные или радио). Многие ресиверы при сортировке найденных программ используют именно этот параметр, а не наличие или отсутствие видеопотоков в PMT каждой программы. Если в NIT тип программы указан неправильно (а такое иногда случается), ресивер может воспроизводить программу неправильно - у телепрограммы, описанной как радио, не будет изображения, а у радиопрограммы, описанной как теле-, вместо заставки будет черный экран.
Номера программ выбираются вещателем произвольно, единственное условие - они не должны быть 0 (это значение зарезервировано для указания NIT в PAT) и должны быть уникальными в пределах мультиплексированного потока, хотя обычно они уникальны и в пределах сети.
Network Information Table:
------------------------------------------------------------ SECT-Packet: 00000001 PID: 16 (0x0010), Length: 409 (0x0199) ------------------------------------------------------------ PID: 16 (0x0010) [= assigned for: DVB Network Information Table (NIT), Stuffing Table (ST)] Guess table from table id... NIT-decoding.... Table_ID: 64 (0x40) [= Network Information Table (NIT) - actual network] section_syntax_indicator: 1 (0x01) Section_length: 406 (0x0196) Network_ID: 12801 (0x3201) [= --> please lookup at http://www.dvb.org] Version_number: 0 (0x00) current_next_indicator: 1 (0x01) [= valid now] Section_number: 0 (0x00) Last_Section_number: 0 (0x00) Network_descriptor_length: 11 (0x000b) DVB-DescriptorTag: 64 (0x40) [= network_name_descriptor] Descriptor_length: 9 (0x09) Network_name: "Irish DTT" -- Charset: Latin alphabet Transport_stream_loop_length: 382 (0x017e) Transport_stream_ID: 1001 (0x03e9) Original_network_ID: 8564 (0x2174) [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator] Transport_descriptor_length: 108 (0x006c) DVB-DescriptorTag: 90 (0x5a) [= terrestrial_delivery_system_descriptor] Descriptor_length: 11 (0x0b) Center frequency: 0x0465d825 (= 737833.033 kHz) Bandwidth: 0 (0x00) [= 8 MHz] priority: 1 (0x01) [= HP (high priority)] Time_Slicing_indicator: 1 (0x01) [= Time Slicing is not used.)] MPE-FEC_indicator: 1 (0x01) [= MPE-FEC is not used.)] Constellation: 1 (0x01) [= 16-QAM] Hierarchy information: 0 (0x00) [= non-hierarchical] Code_rate_HP_stream: 2 (0x02) [= 3/4] Code_rate_LP_stream: 0 (0x00) [= 1/2] Guard_interval: 0 (0x00) [= 1/32] Transmission_mode: 1 (0x01) [= 8k mode] Other_frequency_flag: 1 (0x01) DVB-DescriptorTag: 65 (0x41) [= service_list_descriptor] Descriptor_length: 36 (0x24) service_ID: 1101 (0x044d)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 1102 (0x044e)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 1103 (0x044f)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 1104 (0x0450)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 1226 (0x04ca)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 1227 (0x04cb)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 1228 (0x04cc)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 1229 (0x04cd)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 1230 (0x04ce)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 1231 (0x04cf)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 1232 (0x04d0)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 1233 (0x04d1)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] DVB-DescriptorTag: 98 (0x62) [= frequency_list_descriptor] Descriptor_length: 5 (0x05) coding_type: 3 (0x03) [= terrestrial] Centre_frequency: 045a255b (= 730166.067 kHz) Descriptor_length: 48 (0x30) Descriptor-data: 0000: 04 4d fc 01 04 4e fc 02 04 4f fc 03 04 50 fc 04 .M...N...O...P.. 0010: 04 ca fe bd 04 cb fe be 04 cc fe bf 04 cd fe c0 ................ 0020: 04 ce fe c1 04 cf fe c2 04 d0 fe c7 04 d1 fe c8 ................ Transport_stream_ID: 2001 (0x07d1) Original_network_ID: 8564 (0x2174) [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator] Transport_descriptor_length: 122 (0x007a) DVB-DescriptorTag: 90 (0x5a) [= terrestrial_delivery_system_descriptor] Descriptor_length: 11 (0x0b) Center frequency: 0x0496ed40 (= 770000.000 kHz) Bandwidth: 0 (0x00) [= 8 MHz] priority: 1 (0x01) [= HP (high priority)] Time_Slicing_indicator: 1 (0x01) [= Time Slicing is not used.)] MPE-FEC_indicator: 1 (0x01) [= MPE-FEC is not used.)] Constellation: 1 (0x01) [= 16-QAM] Hierarchy information: 0 (0x00) [= non-hierarchical] Code_rate_HP_stream: 2 (0x02) [= 3/4] Code_rate_LP_stream: 0 (0x00) [= 1/2] Guard_interval: 0 (0x00) [= 1/32] Transmission_mode: 1 (0x01) [= 8k mode] Other_frequency_flag: 1 (0x01) DVB-DescriptorTag: 65 (0x41) [= service_list_descriptor] Descriptor_length: 42 (0x2a) service_ID: 2101 (0x0835)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 2102 (0x0836)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 2103 (0x0837)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 2104 (0x0838)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 2105 (0x0839)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 2226 (0x08b2)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 2227 (0x08b3)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 2228 (0x08b4)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 2229 (0x08b5)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 2233 (0x08b9)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 2232 (0x08b8)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 2106 (0x083a)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 2225 (0x08b1)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] service_ID: 2221 (0x08ad)[ --> refers to PMT program_number] service_type: 2 (0x02) [= digital radio sound service] Descriptor_length: 56 (0x38) Descriptor-data: 0000: 08 35 fc 06 08 36 fc 07 08 37 fc 08 08 38 fc 09 .5...6...7...8.. 0010: 08 39 fc 0a 08 b2 fe c3 08 b3 fe c4 08 b4 fe c5 .9.............. 0020: 08 b5 fe c6 08 b9 fe ca 08 b8 fe c9 08 3a fc 0b .............:.. 0030: 08 b1 fe cb 08 ad fe cc ........ DVB-DescriptorTag: 98 (0x62) [= frequency_list_descriptor] Descriptor_length: 5 (0x05) coding_type: 3 (0x03) [= terrestrial] Centre_frequency: 048af95b (= 762166.067 kHz) Transport_stream_ID: 3001 (0x0bb9) Original_network_ID: 8564 (0x2174) [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator] Transport_descriptor_length: 90 (0x005a) DVB-DescriptorTag: 90 (0x5a) [= terrestrial_delivery_system_descriptor] Descriptor_length: 11 (0x0b) Center frequency: 0x04bb8c40 (= 794000.000 kHz) Bandwidth: 0 (0x00) [= 8 MHz] priority: 1 (0x01) [= HP (high priority)] Time_Slicing_indicator: 1 (0x01) [= Time Slicing is not used.)] MPE-FEC_indicator: 1 (0x01) [= MPE-FEC is not used.)] Constellation: 1 (0x01) [= 16-QAM] Hierarchy information: 0 (0x00) [= non-hierarchical] Code_rate_HP_stream: 2 (0x02) [= 3/4] Code_rate_LP_stream: 0 (0x00) [= 1/2] Guard_interval: 0 (0x00) [= 1/32] Transmission_mode: 1 (0x01) [= 8k mode] Other_frequency_flag: 1 (0x01) DVB-DescriptorTag: 65 (0x41) [= service_list_descriptor] Descriptor_length: 18 (0x12) service_ID: 3101 (0x0c1d)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 3102 (0x0c1e)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 3103 (0x0c1f)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 3104 (0x0c20)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 3105 (0x0c21)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] service_ID: 3106 (0x0c22)[ --> refers to PMT program_number] service_type: 1 (0x01) [= digital television service] Descriptor_length: 48 (0x30) Descriptor-data: 0000: 0c 1d fc 0c 0c 1e fc 0d 0c 1f fc 0e 0c 20 fc 0f ............. .. 0010: 0c 21 fc 10 0c 22 fc 11 0c 9a fe d0 0c 9b fe d1 .!...".......... 0020: 0c 9c fe d2 0c 9d fe d3 0c 9e fe d4 0c 9f fe d5 ................ DVB-DescriptorTag: 98 (0x62) [= frequency_list_descriptor] Descriptor_length: 5 (0x05) coding_type: 3 (0x03) [= terrestrial] Centre_frequency: 04af5740 (= 786000.000 kHz) Transport_stream_ID: 4001 (0x0fa1) Original_network_ID: 8564 (0x2174) [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator] Transport_descriptor_length: 38 (0x0026) DVB-DescriptorTag: 98 (0x62) [= frequency_list_descriptor] Descriptor_length: 5 (0x05) coding_type: 3 (0x03) [= terrestrial] Centre_frequency: 04d3f640 (= 810000.000 kHz) DVB-DescriptorTag: 65 (0x41) [= service_list_descriptor] Descriptor_length: 6 (0x06) service_ID: 4101 (0x1005)[ --> refers to PMT program_number] service_type: 25 (0x19) [= reserved] service_ID: 4102 (0x1006)[ --> refers to PMT program_number] service_type: 22 (0x16) [= reserved] Descriptor_length: 8 (0x08) Descriptor-data: 0000: 10 05 fc 14 10 06 fc 12 ........ DVB-DescriptorTag: 90 (0x5a) [= terrestrial_delivery_system_descriptor] Descriptor_length: 11 (0x0b) Center frequency: 0x04e02b40 (= 818000.000 kHz) Bandwidth: 0 (0x00) [= 8 MHz] priority: 1 (0x01) [= HP (high priority)] Time_Slicing_indicator: 1 (0x01) [= Time Slicing is not used.)] MPE-FEC_indicator: 1 (0x01) [= MPE-FEC is not used.)] Constellation: 1 (0x01) [= 16-QAM] Hierarchy information: 0 (0x00) [= non-hierarchical] Code_rate_HP_stream: 2 (0x02) [= 3/4] Code_rate_LP_stream: 0 (0x00) [= 1/2] Guard_interval: 0 (0x00) [= 1/32] Transmission_mode: 1 (0x01) [= 8k mode] Other_frequency_flag: 1 (0x01) CRC: 2356176698 (0x8c70673a) ==========================================================
Итак, мы видим
Table_ID=0x40, который позволяет интерпретировать дальнейшее содержание таблицы именно как NIT. Встречается также 0x42 - это NIT от другой сети, не от той, к которой относится данный транспондер.
Номер сети, которую описывает данная таблица - Network_ID: 12801 (0x3201).
Небольшое отступление про идентификаторы в DVB.
Для некоторых идентификаторов, значения которых должны быть при разработке DVB-оборудования заранее широко известны, эти значения определяются в стандартах (например, значения некоторых PIDов и идентификаторов служебных таблиц). Для других, которые могут время от времени добавляться, и количество которых заранее неизвестно, но которые должны быть [в некоторых пределах] уникальны, эти значения централизовано выделяются DVB-консорциумом. В частности, идентификаторы систем условного доступа (CA ID), идентификаторы сетей (network ID), идентификаторы исходных сетей (original network ID).
[Конец отступления про идентификаторы]
Вообще-то, это делается для обеспечения уникальности, но идентификатор сети 0x3201 оказался в диапазонах для DVB-T, выделенных государственным организациям по надзору за радио- и телевещанием сразу нескольких стран: Австралии, Ирландии, Сингапура, Дании, Эстонии, Швейцарии, Андорры и Словении. С моей точки зрения выглядит странновато, но учитывая, что эти страны напрямую не граничат, пересечение этих сетей эфирного вещания в одной географической точке маловероятно.
Описание сети состоит из одного поля, в котором указано её название: "Irish DTT". Это даёт некоторую определённость относительно страны :)
Далее следуют описания четырёх транспондеров сети вместе со списками номеров программ каждого из них. Из параметров видно, что все они вещают в системе DVB-T с модуляцией 16-QAM и шириной полосы 8MHz.
Идентификатор исходной сети (Original_network_ID) для всех транспондеров равен 8564 (0x2174). В отличие от network ID, который идентифицирует физическую систему доставки сигнала, original network ID определяет источник - откуда происходит сигнал. На сайте DVB-консорциума можно узнать, что 0x2174 - это "Irish Digital Terrestrial Television", управляемый оператором "Irish Telecommunications Regulator".
Первый транспондер (точнее, передаваемый с него мультиплексированный поток) имеет идентификатор потока (Transport_stream_ID) = 1001,
частоту 737833.033 кГц,
номера программ: 1101-1104 (теле), 1226-1233 (радио).
Второй транспондер:
Transport_stream_ID=2001
частота 770000.000 кГц
номера программ: 2101-2106 (теле), 2221, 2225-2229, 2231-2233 (радио).
Третий транспондер:
Transport_stream_ID=3001
частота 794000.000 кГц
номера программ: 3101-3106 (теле)
Четвертый транспондер:
Transport_stream_ID=4001
частота 810000.000 кГц
номера программ: 4101 и 4102. Тип у них 0x25 и 0x22, соответственно. Это тесты программ высокой чёткости изображения (HD).
Забегая вперёд, скажу, что видеопотоки у них идут с типом 27 (0x1B), который обозначает MPEG4 в виде H.264, он же ISO/IEC 14496-10. В отличие от обычных DVB-каналов, у которых тип потока 2 (обычный MPEG2-video).
Tags:
Парсинг NIT
Re: Парсинг NIT
насколько я знаю, обычно оттуда извлекаются только данные о транспондерах, а всё остальное - из локальных таблиц текущего транспондера после переключения на него.
Re: Парсинг NIT