做EPG都是4年前的事情了,現在忘得也差不多了,趁在還沒有完全忘記之前,寫下點東西,備份一下。
EIT:
TableID:0x4E (EIT actual, present/following) 當前/後續
TableID:0x4F (EIT other, present/following) 當前/後續
TableID:0X50-0X5F(EIT actual, schedule) 時間表
TableID:0X60-0X6F(EIT other, schedule) 時間表
EIT section結構說明:
event_infotmation_section()
{
table_id 8 uimsbf
section_syntax_indicator 1 bslbf
reserved_future_use 1 bslbf
reserved 2 bslbf
section_length 12 uimsbf
service_id 16 uimsbf
reserved 2 bslbf
version_number 5 uimsbf
current_next_indicator 1 bslbf
section_number 8 uimsbf
last_section_number 8 uimsbf
transport_stream_id 16 uimsbf
original_network_id 16 uimsbf
segment_last_section_number 8 uimsbf
last_table_id 8 uimsbf
for(i=0;i<N;i++)
{
event_id 16 uimsbf
start_time 40 bslbf
duration 24 uimsbf
running_status 3 uimsbf
free_CA_mode 1 bslbf
descriptors_loop_length 12 uimsbf
for(j=0;j<N;j++)
descriptor()
}
CRC_32 32 rpchof
}
EIT P/F
非VOD節目,每個節目將有兩個分段(section)用於描述當前/後續事件信息
Section_number=0x00的分段用於描述當前時間信息,
section_number=0x01的分段用於描述後續信息。
即使沒有當前或者後續事件存在時,我們也要傳送Section_number=0x00 section_number=0x01的EIT P/F空分段。
EIT SCH
(1)EIT時間表分佈於16個table_id,0x50-0x5f用於實際流,0x60-0x6f用於其他流。
(2)由於用8BIT表示section_number,所以一個子表最多可以用256個section,而這些section又被劃分爲32個segment,於是每個segment包含8個section.
(3)每個segment包含有關3小時內任何時間點開始的時間信息。
(4)每個子表最多可傳輸32 * 3 = 96h = 4 day,最多有16張子表,於是16 * 4 = 64 day.所以EPG最多可包含64天的時間表,具體看網絡中的實際情況。
在EIT的循環描述符中可以爲:
1 short event descriptor
短事件描述符以文本方式提供了事件的名稱和該事件的簡短描述,見表75。
表75 短事件描述符
語 法 | 位數 | 助記符 |
short_event_descriptor(){ |
|
|
descriptor_tag | 8 | uimsbf |
descriptor_length | 8 | uimsbf |
ISO 639_2_language_code | 24 | bslbf |
event_name_length | 8 | uimsbf |
for(i=0;i<event_name_length;i++){ |
|
|
event_name_char | 8 | uimsbf |
} |
|
|
text_length | 8 | uimsbf |
for(i=0;i<text_length;i++){ |
|
|
text_char | 8 | uimsbf |
} |
|
|
} |
|
|
短事件描述符的語義:
ISO 639-2語言代碼 ISO 639-2_language_code
24位字段,指明後續的文本字段的語言。該字段包含一個由ISO 639-2定義的3字符代碼。ISO 639-2/B和 ISO 639-2/T都可以使用。每個字符都按照GB/T 15273.1-1994編碼爲8位,並依次插入24位字段。
例如:法語的3字符代碼“fre”,可編碼爲:’0110 0110 0111 0010 0110 0101’。
事件名稱長度 event_name_length
8位字段,以字節爲單位給出事件名稱的長度。
事件名稱字符 event_name_char
8位字段,一個字符串給出事件的名稱。文本信息編碼所使用的字符集和方法見附錄A。
文本長度 text_length
8位字段,以字節爲單位給出後續描述事件的文本的長度。
文本字符 text_char
8位字段,一個字符串給出事件的文本描述。文本信息編碼所使用的字符集和方法見附錄A。
2 Extend event descriptor
擴展事件描述符給出了一個事件的詳細文本描述。除了短事件描述符外,還可使用擴展事件描述符。如果一個事件的信息長度超過256字節,可以使用多於一個的相關聯的擴展事件描述符來描述。文本信息可以分爲兩個欄目,一欄爲條目的描述,另一欄爲條目的內容。這種結構的典型應用是給出演職員列表,例如條目描述域可能是“製片人”,那麼條目內容域可以給出製片人的名字。
表44 擴展事件描述符
語法 | 位數 | 助記符 |
extended_event_descriptor( ){ |
|
|
descriptor_tag | 8 | uimsbf |
descriptor_length | 8 | uimsbf |
descriptor_number | 4 | uimsbf |
last_descriptor_number | 4 | uimsbf |
ISO 639-2_language_code | 24 | bslbf |
length_of_items | 8 | uimsbf |
for(i = 0;i < N; i++){ |
|
|
item_description_length | 8 | uimsbf |
for(j = 0; j < N; j++){ |
|
|
Item_description_char | 8 | uimsbf |
} |
|
|
item_length | 8 | uimsbf |
for(j = 0; j < N; j++){ |
|
|
item_char | 8 | uimsbf |
} |
|
|
} |
|
|
text_length | 8 | uimsbf |
for( i= 0; i< N; i++){ |
|
|
text_char | 8 | uimsbf |
} |
|
|
} |
|
|
擴展事件描述符的語義:
描述符序號 descriptor_number
4位字段,給出了描述符的序號,用於描述使用多個擴展事件描述符時的關聯信息。相關聯的extend_event_descriptor集合的第一個extend_event_descriptor的descriptor_number應爲“0x00”。隨着本段內extended_event_descriptor個數的增加,descriptor_number以步長1遞增。
尾描述符序號 last_descriptor_number
4位字段,給出了相關聯的extend_event_descriptor集合中的最後一個描述符(即descriptor_number最大的描述符)的序號。
ISO 639-2語言代碼 ISO 639-2_language_code
24位字段,包含了符合ISO 639-2標準的3字符語言代碼,說明後面文本字段所用的語言。ISO 639.2/B和ISO 639.2/T都可以使用。每個字符都按照GB/T 15273.1-1994標準編碼爲8位,依次插入24位字段。
例如:法語的3字符代碼“fre”,可編碼爲:’0110 0110 0111 0010 0110 0101’。
條目長度 length_of_item
8位字段,以字節爲單位給出後續條目的長度。
條目描述長度 item_description_length
8位字段,以字節爲單位給出條目描述的長度。
條目描述字符 item_description_char
8位字段,“item_description_char”串給出條目的描述。文本信息所使用的字符集和編碼方法見附錄A。
條目長度 item_length
8位字段,以字節爲單位給出後續條目文本的長度。
條目字符 item_char
8位字段,“item_char”串給出條目的描述。文本信息所使用的字符集和編碼方法見附錄A。
文本長度 text_length
8位字段,以字節爲單位給出未列進條目的文本長度。
文本字符 text_char
8位字段,“text_char”串給出未列進條目的文本的內容。文本信息所使用的字符集和編碼方法見附錄A。