dil: (Default)
dil ([personal profile] dil) wrote2008-05-22 08:57 am
Entry tags:

DVB. Часть 15. Примеры таблиц. EIT

Остальные части

EIT (Event Information Table) содержит информацию о передачах (в англоязычной терминологии DVB передача называется "event" - "событие").

Существует две разновидности EIT: краткая, содержащая информацию только о текущей и следующей передаче программы, и более полная - обычно на 1-2 дня вперёд. EIT может относиться к передачам программ из текущего потока или из других потоков той же сети.
Всего получается четыре возможных разновидности, которые передаются с разными идентификаторами таблиц:
0x4E - текущий поток, текущая и следующая передача
0x4F - другой поток, текущая и следующая передача
0x50-0x5F - текущий поток, расписание
0x60-0x6F - другой поток, расписание

В стандарте EN 300 468 для EIT предусмотрен фиксированный PID 0x0012. И это, кстати, единственная стандартизованная таблица, которая может передаваться скрэмблированной (зашифрованной).


Event Information Table (EIT):
------------------------------------------------------------
SECT-Packet: 00000001   PID: 18 (0x0012), Length: 87 (0x0057)
------------------------------------------------------------

PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 78 (0x4e)  [= Event Information Table (EIT) - actual transport stream, present/following]
section_syntax_indicator: 1 (0x01)
Section_length: 84 (0x0054)
Service_ID: 2106 (0x083a)  [=  --> refers to PMT program_number]
Version_number: 27 (0x1b)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 1 (0x01)
Transport_stream_ID: 2001 (0x07d1)
Original_network_ID: 8564 (0x2174)  [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Segment_last_Section_number: 1 (0x01)
Last_table_id: 78 (0x4e)  [= Event Information Table (EIT) - actual transport stream, present/following]

    Event_ID: 58664 (0xe528)
    Start_time: 0xd550073000 [= 2008-05-22 07:30:00 (UTC)]
    Duration: 0x0003000 [=  00:30:00 (UTC)]
    Running_status: 4 (0x04)  [= running]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 57 (0x39)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 55 (0x37)
              ISO639_2_language_code:  eng
            event_name_length: 8 (0x08)
            event_name: "BBC News"  -- Charset: Latin alphabet
            text_length: 42 (0x2a)
            text_char: "All the latest news from around the world."  -- Charset: Latin alphabet

CRC: 3123843648 (0xba321240)
==========================================================

Поскольку расписания довольно большие, таблицы могут содержать не по одной секции, как было в ранее приведённых примерах, а по несколько. Обратите внимание на поля Section_number и Last_Section_number.

Идентификатор программы, к которой относится расписание, указан в поле Service_ID. В данном примере он равен 2106, который, как мы помним из SDT, относится к программе по имени "BBC News24 - Test". С 7:30 утра UTC 22 мая в течение 30 минут по этой программе идёт передача "BBC News". Эта передача и идёт в данный момент (Running_status=4).

А вот вторая секция этой таблицы для той же программы 2106:
------------------------------------------------------------
SECT-Packet: 00000001   PID: 18 (0x0012), Length: 87 (0x0057)
Time received: Thu 2008-05-22  08:47:45.855
------------------------------------------------------------

PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 78 (0x4e)  [= Event Information Table (EIT) - actual transport stream, present/following]
section_syntax_indicator: 1 (0x01)
Section_length: 84 (0x0054)
Service_ID: 2106 (0x083a)  [=  --> refers to PMT program_number]
Version_number: 27 (0x1b)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 1 (0x01)
Last_Section_number: 1 (0x01)
Transport_stream_ID: 2001 (0x07d1)
Original_network_ID: 8564 (0x2174)  [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Segment_last_Section_number: 1 (0x01)
Last_table_id: 78 (0x4e)  [= Event Information Table (EIT) - actual transport stream, present/following]

    Event_ID: 58665 (0xe529)
    Start_time: 0xd550080000 [= 2008-05-22 08:00:00 (UTC)]
    Duration: 0x0010000 [=  01:00:00 (UTC)]
    Running_status: 1 (0x01)  [= not running]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 57 (0x39)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 55 (0x37)
              ISO639_2_language_code:  eng
            event_name_length: 8 (0x08)
            event_name: "BBC News"  -- Charset: Latin alphabet
            text_length: 42 (0x2a)
            text_char: "All the latest news from around the world."  -- Charset: Latin alphabet

CRC: 3438977240 (0xccfaa0d8)
==========================================================

С 8 утра UTC в течение часа будет идти другая передача. Хоть и с тем же названием "BBC News" :) В настоящий момент она не передаётся (Running_status=1).


Пример краткого расписания от программы из другого потока (Transport_stream_ID=3001), Table_ID=0x4F:
------------------------------------------------------------
SECT-Packet: 00000001   PID: 18 (0x0012), Length: 228 (0x00e4)
------------------------------------------------------------

PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 79 (0x4f)  [= Event Information Table (EIT) - other transport stream, present/following]
section_syntax_indicator: 1 (0x01)
Section_length: 225 (0x00e1)
Service_ID: 3102 (0x0c1e)  [=  --> refers to PMT program_number]
Version_number: 13 (0x0d)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 1 (0x01)
Last_Section_number: 1 (0x01)
Transport_stream_ID: 3001 (0x0bb9)
Original_network_ID: 8564 (0x2174)  [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Segment_last_Section_number: 1 (0x01)
Last_table_id: 79 (0x4f)  [= Event Information Table (EIT) - other transport stream, present/following]

    Event_ID: 40651 (0x9ecb)
    Start_time: 0xd550080000 [= 2008-05-22 08:00:00 (UTC)]
    Duration: 0x0003000 [=  00:30:00 (UTC)]
    Running_status: 1 (0x01)  [= not running]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 198 (0xc6)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 196 (0xc4)
              ISO639_2_language_code:  eng
            event_name_length: 19 (0x13)
            event_name: "Big Fight Countdown"  -- Charset: Latin alphabet
            text_length: 172 (0xac)
            text_char: "Preview of the big fight at the City of Manchester Stadium between Ricky Hatton and Juan Lazcano, as 'The Hitman' looks to bounce back from defeat against Floyd Mayweather."  -- Charset: Latin alphabet

CRC: 3542035171 (0xd31f2ae3)
==========================================================


Полное расписание от программы 2101 ("Channel 6") текущего потока, Table_ID=0x50.
Полную таблицу я приводить не буду, тут только одна секция (Section_number=120) из 249 (Last_Section_number=248, а нумеруются они с нуля):
------------------------------------------------------------
SECT-Packet: 00000001   PID: 18 (0x0012), Length: 406 (0x0196)
------------------------------------------------------------

PID:  18 (0x0012)  [= assigned for: DVB Event Information Table (EIT)]
Guess table from table id...
EIT-decoding....
Table_ID: 80 (0x50)  [= Event Information Table (EIT) - actual transport stream, schedule]
section_syntax_indicator: 1 (0x01)
Section_length: 403 (0x0193)
Service_ID: 2101 (0x0835)  [=  --> refers to PMT program_number]
Version_number: 30 (0x1e)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 120 (0x78)
Last_Section_number: 248 (0xf8)
Transport_stream_ID: 2001 (0x07d1)
Original_network_ID: 8564 (0x2174)  [= Irish Digital Terrestrial Television | Irish Telecommunications Regulator]
Segment_last_Section_number: 120 (0x78)
Last_table_id: 82 (0x52)  [= Event Information Table (EIT) - actual transport stream, schedule]

    Event_ID: 8923 (0x22db)
    Start_time: 0xd551210000 [= 2008-05-23 21:00:00 (UTC)]
    Duration: 0x0020500 [=  02:05:00 (UTC)]
    Running_status: 0 (0x00)  [= undefined]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 184 (0xb8)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 182 (0xb6)
              ISO639_2_language_code:  eng
            event_name_length: 12 (0x0c)
            event_name: "The Big Easy"  -- Charset: Latin alphabet
            text_length: 165 (0xa5)
            text_char: "Drama about a corrupt New Orleans cop who finds his department under investigation by an uncompromising female DA at the same time as a gang war erupts on his patch."  -- Charset: Latin alphabet


    Event_ID: 8925 (0x22dd)
    Start_time: 0xd551230500 [= 2008-05-23 23:05:00 (UTC)]
    Duration: 0x0005500 [=  00:55:00 (UTC)]
    Running_status: 0 (0x00)  [= undefined]
    Free_CA_mode: 1 (0x01)  [= streams [partially] CA controlled]
    Descriptors_loop_length: 180 (0xb4)

            DVB-DescriptorTag: 77 (0x4d)  [= short_event_descriptor]
            Descriptor_length: 178 (0xb2)
              ISO639_2_language_code:  eng
            event_name_length: 12 (0x0c)
            event_name: "Dead Like Me"  -- Charset: Latin alphabet
            text_length: 161 (0xa1)
            text_char: "Drama series about a dead teenager who becomes a reaper, helping souls as people die. George finds that shirking her duties has nasty consequences for the souls."  -- Charset: Latin alphabet

CRC: 2899891169 (0xacd8d3e1)
==========================================================

EIT

[identity profile] freeman-fa.livejournal.com 2008-10-31 09:40 am (UTC)(link)
И вот все же не совсем ясно про идентификаторы полного расписания EIT 0x50-0x5f... К примеру, в потоке для определенного Service ID есть 2 таблицы полной EIT- 0x50 и 0x51. У каждой разное количество секций- в 0x50- 248, а в 0x51- 176. Как их трактовать? Тоесть 0x50- таблица расписания на сегодня, а 0x51 на завтра?

Re: EIT

[identity profile] dil.livejournal.com 2008-10-31 09:25 pm (UTC)(link)
Хороший вопрос. В стандарте написано следующее:

The EIT (see table 7) provides information in chronological order regarding the events contained within each service.
Four classifications of EIT have been identified, distinguishable by the use of different table_ids (see table 2):
1) actual TS, present/following event information = table_id = "0x4E";
2) other TS, present/following event information = table_id = "0x4F";
3) actual TS, event schedule information = table_id = "0x50" to "0x5F";
4) other TS, event schedule information = table_id = "0x60" to "0x6F".

Больше никаких уточнений по поводу использования table_id нет.
Надо смотреть, что именно в этих таблицах написано. Это они от какого сервиса они так передаются?

[identity profile] freeman-fa.livejournal.com 2008-11-03 12:45 pm (UTC)(link)
Вобщем разобрался сам. Там в расписании просто кроме времени передается дата, вот по ней и нужно фильтровать на какой хочешь день

[identity profile] levgem.livejournal.com 2011-05-30 02:18 pm (UTC)(link)
Ёпт, а как так получилось, что я вместо того, что бы прочесть твои посты, ковырялся в сырцах всяких библиотек.

Спасибо, у тебя очень много ценной информации про MPEG-TS

[identity profile] dil.livejournal.com 2011-05-30 02:25 pm (UTC)(link)
В ISO/IEC 13818 и EN 300 468 её ещё больше. Читайте доку, она рулез ;)

[identity profile] levgem.livejournal.com 2011-05-30 02:26 pm (UTC)(link)
Про EN 300 468 не слышал

[identity profile] dil.livejournal.com 2011-05-30 02:27 pm (UTC)(link)
http://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.05.01_40/en_300468v010501o.pdf