class EventInformationSection(Section): """イベント情報セクション EIT (ARIB-STD-B10-2-5.2.7)""" _pids = [0x12, 0x26, 0x27] _table_ids = range(0x4E, 0x70) table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use = bslbf(1) reserved_1 = bslbf(2) section_length = uimsbf(12) service_id = uimsbf(16) reserved_2 = bslbf(2) version_number = uimsbf(5) current_next_indicator = bslbf(1) section_number = uimsbf(8) last_section_number = uimsbf(8) transport_stream_id = uimsbf(16) original_network_id = uimsbf(16) segment_last_section_number = uimsbf(8) last_table_id = uimsbf(8) @loop(lambda self: self.section_length - 15) class events(Syntax): event_id = uimsbf(16) start_time = mjd(40) duration = bcdtime(24) running_status = uimsbf(3) free_CA_mode = bslbf(1) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length) CRC_32 = rpchof(32)
class with_languages(Syntax): """ARIB-STD-B24-1-3-9.3.1 表9-3 字幕管理データ""" TMD = bslbf(2) reserved10 = bslbf(6) @case(lambda self: self.TMD == 0b10) class with_OTM(Syntax): OTM = otm(40) num_languages = uimsbf(8) @times(num_languages) class languages(Syntax): language_tag = bslbf(3) reserved11 = bslbf(1) DMF1 = bslbf(2) DMF2 = bslbf(2) @case(lambda self: self.DMF1 == 0b11) class with_DC(Syntax): DC = bslbf(8) ISO_639_language_code = char(24) format = bslbf(4) TCS = bslbf(2) rollup_mode = bslbf(2)
class LinkedDescriptionSection(Section): """リンク記述セクション LDT (ARIB-STD-B10-2-5.2.15)""" _pids = [0x25] _table_ids = [0xC7] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use_1 = bslbf(1) reserved_1 = bslbf(2) section_length = uimsbf(12) original_network_id = uimsbf(16) reserved_2 = bslbf(2) version_number = uimsbf(5) current_next_indicator = bslbf(1) section_number = uimsbf(8) last_section_number = uimsbf(8) transport_stream_id = uimsbf(16) original_network_id = uimsbf(16) @loop(lambda self: self.section_length - 13) class links(Syntax): description_id = uimsbf(16) reserved_future_use = bslbf(12) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length) CRC_32 = rpchof(32)
class maps(Syntax): stream_type = uimsbf(8) reserved_1 = bslbf(3) elementary_PID = uimsbf(13) reserved_2 = bslbf(4) ES_info_length = uimsbf(12) descriptors = descriptors(ES_info_length)
class PartialContentAnnouncementSection(Section): """差分配信告知セクション PCAT (ARIB-STD-B10-2-5.2.12)""" _pids = [0x22] _table_ids = [0xC2] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use_1 = bslbf(1) reserved_1 = bslbf(2) section_length = uimsbf(12) event_relation_id = uimsbf(16) reserved_2 = bslbf(2) version_number = uimsbf(5) current_next_indicator = bslbf(1) section_number = uimsbf(8) last_section_number = uimsbf(8) information_provider_id = uimsbf(16) relation_type = uimsbf(4) reserved_future_use_2 = uimsbf(4) @loop(lambda self: self.section_length - 10) class relations(Syntax): node_id = uimsbf(16) collection_mode = uimsbf(4) reserved_future_use_1 = bslbf(4) parent_node_id = uimsbf(16) reference_number = uimsbf(8) reserved_future_use_2 = bslbf(4) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length) CRC_32 = rpchof(32)
class LocalEventInformationSection(Section): """ローカルイベント情報セクション LIT (ARIB-STD-B10-2-5.1.1)""" _pids = [0x20] _table_ids = [0xD0] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use = bslbf(1) reserved_1 = bslbf(2) section_length = uimsbf(12) event_id = uimsbf(16) reserved_2 = bslbf(2) version_number = uimsbf(5) current_next_indicator = bslbf(1) section_number = uimsbf(8) last_section_number = uimsbf(8) service_id = uimsbf(16) transport_stream_id = uimsbf(16) original_network_id = uimsbf(16) @loop(lambda self: self.section_length - 15) class events(Syntax): local_event_id = uimsbf(16) reserved_fugure_use = bslbf(4) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length) CRC_32 = rpchof(32)
class relations(Syntax): node_id = uimsbf(16) collection_mode = uimsbf(4) reserved_future_use_1 = bslbf(4) parent_node_id = uimsbf(16) reference_number = uimsbf(8) reserved_future_use_2 = bslbf(4) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length)
class without_languages(Syntax): """ARIB-STD-B24-1-3-9.3.2 表9-10 字幕文データ""" TMD = bslbf(2) reserved10 = bslbf(6) @case(lambda self: self.TMD in (0b01, 0b10)) class with_STM(Syntax): STM = bcdtime(40)
class components(Syntax): component_tag = uimsbf(8) digirtal_recording_contorl_data = bslbf(2) maximum_bitrate_flag = bslbf(1) reserved_future_use = bslbf(1) user_defined = bslbf(4) @case(maximum_bitrate_flag) class with_maximum_bitrate(Syntax): maximum_bitrate = uimsbf(8)
class AccessControlDescriptor(Descriptor): """アクセス制御記述子 (ARIB-TR-B14 第四篇改定案 30.2.2.2""" descriptor_tag = uimsbf(8) descriptor_length = uimsbf(8) CA_system_ID = uimsbf(16) transmission_type = bslbf(3) PID = uimsbf(13) private_data_byte = bslbf(lambda self: self.descriptor_length - 4)
class services(Syntax): service_id = uimsbf(16) reserved_future_use = bslbf(3) EIT_user_defined_flags = bslbf(3) EIT_schedule_flag = bslbf(1) EIT_present_following_flag = bslbf(1) running_status = uimsbf(3) free_CA_mode = bslbf(1) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length)
class HierarchicalTransmissionDescriptor(Descriptor): """階層伝送記述子 (ARIB-STD-B10-2-6.2.22)""" descriptor_tag = uimsbf(8) descriptor_length = uimsbf(8) reserved_future_use_1 = bslbf(7) quality_level = bslbf(1) reserved_future_use_2 = bslbf(3) reference_PID = uimsbf(13)
class VideoDecodeControlDescriptor(Descriptor): """ビデオデコードコントロール記述子 (ARIB-STD-B10-2-6.2.30)""" descriptor_tag = uimsbf(8) descriptor_length = uimsbf(8) still_picture_flag = bslbf(1) sequence_end_code_flag = bslbf(1) video_encode_format = bslbf(4) reserved_future_use = bslbf(2)
class ConditionalAccessDescriptor(Descriptor): """限定受信方式記述子 (ARIB-TR-B14-4-3.2.2.1, ARIB-TR-B15-4-3.2.2.1)""" descriptor_tag = uimsbf(8) descriptor_length = uimsbf(8) CA_system_ID = uimsbf(16) reserved = bslbf(3) CA_PID = uimsbf(13) private_data_byte = bslbf(lambda self: self.descriptor_length - 4)
class services(Syntax): service_id = uimsbf(16) start_end_flag = bslbf(1) signal_level = bslbf(1) reserved_future_use = bslbf(6) area_code_length = uimsbf(8) @loop(lambda self: self.area_code_length) class area_codes(Syntax): area_code = uimsbf(12) reserved_future_use = bslbf(4)
class CountryAvailabilityDescriptor(Descriptor): """国別受信可否記述子(ARIB-STD-B10-2.6.2.5)""" descriptor_tag = uimsbf(8) descriptor_length = uimsbf(8) country_availability_flag = bslbf(1) reserved_future_use = bslbf(7) @loop(lambda self: self.descriptor_length - 1) class countries(Syntax): country_code = char(24)
class TimeAndDateSection(Section): """時刻日付セクション TDT (ARIB-STD-B10-2-5.2.8)""" _pids = [0x14] _table_ids = [0x70] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use = bslbf(1) reserved = bslbf(2) section_length = uimsbf(12) JST_time = mjd(40)
class SatelliteDeliverySystemDescriptor(Descriptor): """衛星分配システム記述子(ARIB-STD-B10-2-6.2.6)""" descriptor_tag = uimsbf(8) descriptor_length = uimsbf(8) frequency = bcd(32, 6) orbital_position = bcd(16, 1) west_east_flag = bslbf(1) polarisation = bslbf(2) modulation = bslbf(5) symbol_rate = bcd(28, 5) FEC_inner = bslbf(4)
class TerrestrialDeliverySystemDescriptor(Descriptor): """地上分配システム記述子(ARIB-STD-B10-2-6.2.31)""" descriptor_tag = uimsbf(8) descriptor_length = uimsbf(8) area_code = bslbf(12) guard_interval = bslbf(2) transmission_mode = bslbf(2) @loop(lambda self: self.descriptor_length - 2) class freqs(Syntax): frequency = uimsbf(16)
class cycles(Syntax): media_type = uimsbf(2) pattern = uimsbf(2) reserved_1 = bslbf(4) schdule_range = bcd(8) base_cycle = bcd(12) reserved_2 = bslbf(2) cycle_group_count = uimsbf(2) @times(cycle_group_count) class groups(Syntax): num_of_segment = bcd(8) cycle = bcd(8)
class StuffingSection(Section): """スタッフセクション ST (ARIB-STD-B10-2.5.2.11)""" _table_ids = [0x72] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use = bslbf(1) reserved = bslbf(2) section_length = uimsbf(12) @loop(section_length) class data(Syntax): data_byte = uimsbf(8)
class CommonDataSection(Section): """全受信機共通データセクション CDT (ARIB-STD-B21-12.2.2.2)""" _pids = [0x29] _table_ids = [0xC8] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use_1 = bslbf(1) reserved_1 = bslbf(2) section_length = uimsbf(12) download_data_id = uimsbf(16) reserved_2 = bslbf(2) version_number = uimsbf(5) current_next_indicator = bslbf(1) section_number = uimsbf(8) last_section_number = uimsbf(8) original_network_id = uimsbf(16) data_type = uimsbf(8) reserved_future_use_2 = bslbf(4) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length) # 地上デジタル放送ではdata_module_byteはCDT伝送方式サービスロゴである (ARIB-TR-B14-1-5.4.1.2) logo_type = uimsbf(8) reserved_future_use_3 = bslbf(7) logo_id = uimsbf(9) reserved_future_use_4 = bslbf(4) logo_version = uimsbf(12) data_size = uimsbf(16) data_byte = raw(data_size) CRC_32 = rpchof(32)
class AdaptationField(Syntax): """ISO/IEC 13818-1 2.4.3.5""" adaptation_field_length = uimsbf(8) discontinuity_indicator = bslbf(1) random_access_indicator = bslbf(1) elementary_stream_priority_indicator = bslbf(1) PCR_flag = bslbf(1) OPCR_flag = bslbf(1) splicing_point_flag = bslbf(1) transport_private_data_flag = bslbf(1) adaptation_field_extension_flag = bslbf(1) @case(PCR_flag) class with_PCR(Syntax): program_clock_reference_base = uimsbf(33) reserved_1 = bslbf(6) program_clock_reference_extension = uimsbf(9) @case(OPCR_flag) class with_OPCR(Syntax): original_program_clock_reference_base = uimsbf(33) reserved_2 = bslbf(6) original_program_clock_reference_extension = uimsbf(9) @case(splicing_point_flag) class with_splicing(Syntax): splice_countdown = uimsbf(8) # tcimsbf @case(transport_private_data_flag) class with_transport_private_data(Syntax): transport_private_data_length = uimsbf(8) private_data_byte = bslbf(transport_private_data_length)
class statuses(Syntax): transport_stream_id = uimsbf(16) original_network_id = uimsbf(16) service_id = uimsbf(16) event_id = uimsbf(16) reserved_future_use = bslbf(5) running_status = uimsbf(3)
class TimeOffsetSection(Section): """時刻日付オフセットセクション TOT (ARIB-STD-B10-2-5.2.9)""" _pids = [0x14] _table_ids = [0x73] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use = bslbf(1) reserved1 = bslbf(2) section_length = uimsbf(12) JST_time = mjd(40) reserved_2 = bslbf(4) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length) CRC_32 = rpchof(32)
class CopyrightDescriptor(Descriptor): """著作権記述子 (ISO 13818-1 2.6.24)""" descriptor_length = uimsbf(8) copyright_identifier = uimsbf(32) additional_copyright_info = bslbf(lambda self: self.descriptor_length - 4)
class transmissions(Syntax): transmission_type_info = bslbf(8) num_of_service = uimsbf(8) @times(num_of_service) class services(Syntax): service_id = uimsbf(16)
class events(Syntax): event_id = uimsbf(16) start_time = mjd(40) duration = bcdtime(24) running_status = uimsbf(3) free_CA_mode = bslbf(1) descriptors_loop_length = uimsbf(12) descriptors = descriptors(descriptors_loop_length)
class BroadcasterInformationSection(Section): """ブロードキャスタ情報セクション BIT (ARIB-STD-B10-2-5.2.13)""" _pids = [0x24] _table_ids = [0xC4] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use_1 = bslbf(1) reserved_1 = bslbf(2) section_length = uimsbf(12) original_network_id = uimsbf(16) reserved_2 = bslbf(2) version_number = uimsbf(5) current_next_indicator = bslbf(1) section_number = uimsbf(8) last_section_number = uimsbf(8) reserved_future_use_2 = bslbf(3) broadcast_view_propriety = bslbf(1) first_descriptors_length = uimsbf(12) descriptors = descriptors(first_descriptors_length) @loop(lambda self: (self.section_length - (self.first_descriptors_length + 11))) class broadcasters(Syntax): broadcaster_id = uimsbf(8) reserved_future_use = bslbf(4) broadcaster_descriptor_length = uimsbf(12) descriptors = descriptors(broadcaster_descriptor_length) CRC_32 = rpchof(32)
class SoftwareDownloadTriggerSection(Section): """ソフトウェアダウンロードトリガーセクション SDTT (ARIB-STD-B21-12.2.1.1)""" _pids = [0x23, 0x28] _table_ids = [0xC3] table_id = uimsbf(8) section_syntax_indicator = bslbf(1) reserved_future_use = bslbf(1) reserved_1 = bslbf(2) section_length = uimsbf(12) maker_id = uimsbf(8) model_id = uimsbf(8) reserved_2 = bslbf(2) version_number = uimsbf(5) current_next_indicator = uimsbf(1) section_number = uimsbf(8) last_section_number = uimsbf(8) transport_stream_id = uimsbf(16) original_networl_id = uimsbf(16) service_id = uimsbf(16) num_of_contents = uimsbf(8) @times(num_of_contents) class groups(Syntax): group = bslbf(4) target_version = uimsbf(12) new_version = uimsbf(12) download_level = bslbf(2) version_indicator = bslbf(2) content_description_length = uimsbf(12) reserved = bslbf(4) schedule_description_length = uimsbf(12) schedule_timeshift_information = uimsbf(4) @loop(schedule_description_length) class schedules(Syntax): start_time = mjd(40) duration = bcdtime(24) descriptors = descriptors(lambda self: (self.content_description_length - self. schedule_description_length)) CRC_32 = rpchof(32)