Остальные части
SDT (Service Description Table) содержит (сюрприз!) описания сервисов, они же программы. Точнее говоря, названия программ, названия провайдеров, которые их передают, и некоторые флаги.
Названия программ нужны для удобства их выбора пользователем. Названия провайдеров дают приёмнику ещё один признак для сортировки (обычно программы сортируются по алфавиту или просто в порядке обнаружения).
В стандарте EN 300 468 для SDT (а также для BAT - Bouquet Association Table) предусмотрен фиксированный PID 0x0011.
Service Description Table (SDT):
Table_ID=66 (0x42) - для SDT от текущего потока. Для аналогичной таблицы с описаниями программ от других потоков используется Table_ID 70 (0x46).
К какому именно мультиплексированному потоку относится таблица, можно определить по Transport_Stream_ID, в данном случае он равен 2001. См. идентификаторы мультиплексированных потоков в выпуске про NIT.
Далее следуют описания 14 программ, ранее встречавшихся в PAT и NIT (см. соответствующие выпуски).
Флаги EIT_schedule_flag и EIT_present_following_flag показывают, присутствуют ли в мультиплексированном потоке таблицы EIT (Event Information Table) с расписанием для данной программы. Первый флаг - для долговременного расписания (обычно на 1-2 дня вперёд), второй - для текущей и следующей передачи. Эти данные передаются в таблицах с разными идентификаторами, как будет показано в примерах таблиц EIT.
Running_status - 3-битовое поле, обозначающее текущее состояние программы.
1 - программа не передаётся в настоящий момент
2 - начнётся в ближайшее время (используется, чтобы приёмник мог подготовиться к записи передачи)
3 - остановлена (на паузе)
4 - передаётся в настоящий момент
Значение 0 запрещено, 5-7 зарезервированы для использования в будущем.
Флаг условного доступа (Free_CA_mode), равный нулю, означает, что программа не зашифрована. Равный единице - означает, что в одном или нескольких потоках, относящихся к программе, может использоваться шифрование. А может и не использоваться. А может использоваться иногда. В общем, он ничего не означает :) А используется он вот для чего: у некоторых ресиверов при автоматической настройке (сборе информации о доступных программах), можно включить режим FTA-only, тогда ресивер будет пропускать программы, для которых этот флаг установлен в единицу.
В данном примере флаг условного доступа для всех программ установлен в единицу, но, на самом деле, зашифрованы только телепрограммы, а радио идёт открыто.
Достоверно определить, используется ли [в некоторый момент времени] шифрование в конкретном аудио- или видеопотоке, можно, только посмотрев на сам поток: это указывается в нём специальным параметром.
Как мы помним из NIT, программы с идентификаторами 2101-2106 - телевизионные, 2221, 2225-2229, 2231-2233 - радио. Названия телепрограмм, соответственно:
Channel 6, cBBC - Test, cBeebies - Test, BBC 3 - Test, BBC 4 - Test и BBC News24 - Test
а радио:
Newstalk 106-108, Dublin's 98FM, SPIN 1038, East Coast FM, DAP Mocha, DAP All 80s, Phantom FM, FM104.
Провайдером у всех программ указан "BT Ireland". Если кто не понял, BT - это British Telecom :)
Названия программ и провайдеров могут быть написаны латиницей, а могут и буквами национальных алфавитов.
Ну и напоследок еще один небольшой пример - SDT от другого потока (4001), выловленная в текущем потоке (2001):
SDT (Service Description Table) содержит (сюрприз!) описания сервисов, они же программы. Точнее говоря, названия программ, названия провайдеров, которые их передают, и некоторые флаги.
Названия программ нужны для удобства их выбора пользователем. Названия провайдеров дают приёмнику ещё один признак для сортировки (обычно программы сортируются по алфавиту или просто в порядке обнаружения).
В стандарте EN 300 468 для SDT (а также для BAT - Bouquet Association Table) предусмотрен фиксированный PID 0x0011.
Service Description Table (SDT):
------------------------------------------------------------
SECT-Packet: 00000001 PID: 17 (0x0011), Length: 459 (0x01cb)
------------------------------------------------------------
PID: 17 (0x0011) [= assigned for: DVB Service Description Table (SDT), Bouquet Association Table (BAT)]
Guess table from table id...
SDT-decoding....
Table_ID: 66 (0x42) [= Service Description Table (SDT) - actual transport stream]
section_syntax_indicator: 1 (0x01)
Section_length: 456 (0x01c8)
Transport_Stream_ID: 2001 (0x07d1)
Version_number: 7 (0x07)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
Original_network_ID: 8564 (0x2174) [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Service_id: 2101 (0x0835) [= --> refers to PMT program_number]
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 24 (0x0018)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 22 (0x16)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 9 (0x09)
Service_name: "Channel 6" -- Charset: Latin alphabet
Service_id: 2102 (0x0836) [= --> refers to PMT program_number]
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 26 (0x001a)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 24 (0x18)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 11 (0x0b)
Service_name: "cBBC - Test" -- Charset: Latin alphabet
Service_id: 2103 (0x0837) [= --> refers to PMT program_number]
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 31 (0x001f)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 29 (0x1d)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 16 (0x10)
Service_name: "cBeebies - Test" -- Charset: Latin alphabet
Service_id: 2104 (0x0838) [= --> refers to PMT program_number]
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 27 (0x001b)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 25 (0x19)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 12 (0x0c)
Service_name: "BBC 3 - Test" -- Charset: Latin alphabet
Service_id: 2105 (0x0839) [= --> refers to PMT program_number]
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 27 (0x001b)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 25 (0x19)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 12 (0x0c)
Service_name: "BBC 4 - Test" -- Charset: Latin alphabet
Service_id: 2226 (0x08b2) [= --> refers to PMT program_number]
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 0 (0x00)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 31 (0x001f)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 29 (0x1d)
service_type: 2 (0x02) [= digital radio sound service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 16 (0x10)
Service_name: "Newstalk 106-108" -- Charset: Latin alphabet
Service_id: 2227 (0x08b3) [= --> refers to PMT program_number]
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 0 (0x00)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 28 (0x001c)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 26 (0x1a)
service_type: 2 (0x02) [= digital radio sound service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 13 (0x0d)
Service_name: "Dublin's 98FM" -- Charset: Latin alphabet
Service_id: 2228 (0x08b4) [= --> refers to PMT program_number]
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 0 (0x00)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 24 (0x0018)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 22 (0x16)
service_type: 2 (0x02) [= digital radio sound service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 9 (0x09)
Service_name: "SPIN 1038" -- Charset: Latin alphabet
Service_id: 2229 (0x08b5) [= --> refers to PMT program_number]
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 0 (0x00)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 28 (0x001c)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 26 (0x1a)
service_type: 2 (0x02) [= digital radio sound service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 13 (0x0d)
Service_name: "East Coast FM" -- Charset: Latin alphabet
Service_id: 2233 (0x08b9) [= --> refers to PMT program_number]
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 0 (0x00)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 24 (0x0018)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 22 (0x16)
service_type: 2 (0x02) [= digital radio sound service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 9 (0x09)
Service_name: "DAP Mocha" -- Charset: Latin alphabet
Service_id: 2232 (0x08b8) [= --> refers to PMT program_number]
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 0 (0x00)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 27 (0x001b)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 25 (0x19)
service_type: 2 (0x02) [= digital radio sound service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 12 (0x0c)
Service_name: "DAP All 80s " -- Charset: Latin alphabet
Service_id: 2106 (0x083a) [= --> refers to PMT program_number]
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 4 (0x04) [= running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 32 (0x0020)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 30 (0x1e)
service_type: 1 (0x01) [= digital television service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 17 (0x11)
Service_name: "BBC News24 - Test" -- Charset: Latin alphabet
Service_id: 2225 (0x08b1) [= --> refers to PMT program_number]
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 0 (0x00)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 25 (0x0019)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 23 (0x17)
service_type: 2 (0x02) [= digital radio sound service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 10 (0x0a)
Service_name: "Phantom FM" -- Charset: Latin alphabet
Service_id: 2221 (0x08ad) [= --> refers to PMT program_number]
EIT_schedule_flag: 0 (0x00)
EIT_present_following_flag: 0 (0x00)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 20 (0x0014)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 18 (0x12)
service_type: 2 (0x02) [= digital radio sound service]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 5 (0x05)
Service_name: "FM104" -- Charset: Latin alphabet
CRC: 3541560741 (0xd317eda5)
==========================================================Table_ID=66 (0x42) - для SDT от текущего потока. Для аналогичной таблицы с описаниями программ от других потоков используется Table_ID 70 (0x46).
К какому именно мультиплексированному потоку относится таблица, можно определить по Transport_Stream_ID, в данном случае он равен 2001. См. идентификаторы мультиплексированных потоков в выпуске про NIT.
Далее следуют описания 14 программ, ранее встречавшихся в PAT и NIT (см. соответствующие выпуски).
Флаги EIT_schedule_flag и EIT_present_following_flag показывают, присутствуют ли в мультиплексированном потоке таблицы EIT (Event Information Table) с расписанием для данной программы. Первый флаг - для долговременного расписания (обычно на 1-2 дня вперёд), второй - для текущей и следующей передачи. Эти данные передаются в таблицах с разными идентификаторами, как будет показано в примерах таблиц EIT.
Running_status - 3-битовое поле, обозначающее текущее состояние программы.
1 - программа не передаётся в настоящий момент
2 - начнётся в ближайшее время (используется, чтобы приёмник мог подготовиться к записи передачи)
3 - остановлена (на паузе)
4 - передаётся в настоящий момент
Значение 0 запрещено, 5-7 зарезервированы для использования в будущем.
Флаг условного доступа (Free_CA_mode), равный нулю, означает, что программа не зашифрована. Равный единице - означает, что в одном или нескольких потоках, относящихся к программе, может использоваться шифрование. А может и не использоваться. А может использоваться иногда. В общем, он ничего не означает :) А используется он вот для чего: у некоторых ресиверов при автоматической настройке (сборе информации о доступных программах), можно включить режим FTA-only, тогда ресивер будет пропускать программы, для которых этот флаг установлен в единицу.
В данном примере флаг условного доступа для всех программ установлен в единицу, но, на самом деле, зашифрованы только телепрограммы, а радио идёт открыто.
Достоверно определить, используется ли [в некоторый момент времени] шифрование в конкретном аудио- или видеопотоке, можно, только посмотрев на сам поток: это указывается в нём специальным параметром.
Как мы помним из NIT, программы с идентификаторами 2101-2106 - телевизионные, 2221, 2225-2229, 2231-2233 - радио. Названия телепрограмм, соответственно:
Channel 6, cBBC - Test, cBeebies - Test, BBC 3 - Test, BBC 4 - Test и BBC News24 - Test
а радио:
Newstalk 106-108, Dublin's 98FM, SPIN 1038, East Coast FM, DAP Mocha, DAP All 80s, Phantom FM, FM104.
Провайдером у всех программ указан "BT Ireland". Если кто не понял, BT - это British Telecom :)
Названия программ и провайдеров могут быть написаны латиницей, а могут и буквами национальных алфавитов.
Ну и напоследок еще один небольшой пример - SDT от другого потока (4001), выловленная в текущем потоке (2001):
------------------------------------------------------------
SECT-Packet: 00000001 PID: 17 (0x0011), Length: 77 (0x004d)
------------------------------------------------------------
PID: 17 (0x0011) [= assigned for: DVB Service Description Table (SDT), Bouquet Association Table (BAT)]
Guess table from table id...
SDT-decoding....
Table_ID: 70 (0x46) [= Service Description Table (SDT) - other transport stream]
section_syntax_indicator: 1 (0x01)
Section_length: 74 (0x004a)
Transport_Stream_ID: 4001 (0x0fa1)
Version_number: 17 (0x11)
current_next_indicator: 1 (0x01) [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
Original_network_ID: 8564 (0x2174) [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Service_id: 4101 (0x1005) [= --> refers to PMT program_number]
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 24 (0x0018)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 22 (0x16)
service_type: 25 (0x19) [= reserved]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 9 (0x09)
Service_name: "HD Test 1" -- Charset: Latin alphabet
Service_id: 4102 (0x1006) [= --> refers to PMT program_number]
EIT_schedule_flag: 1 (0x01)
EIT_present_following_flag: 1 (0x01)
Running_status: 1 (0x01) [= not running]
Free_CA_mode: 1 (0x01) [= streams [partially] CA controlled]
Descriptors_loop_length: 28 (0x001c)
DVB-DescriptorTag: 72 (0x48) [= service_descriptor]
Descriptor_length: 26 (0x1a)
service_type: 22 (0x16) [= reserved]
service_provider_name_length: 10 (0x0a)
service_provider_name: "BT Ireland" -- Charset: Latin alphabet
service_name_length: 13 (0x0d)
Service_name: "Oireachtas TV" -- Charset: Latin alphabet
CRC: 3927149511 (0xea138bc7)
==========================================================Tags:
DVB
Re: DVB