Example #1
0
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)
Example #2
0
    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)
Example #3
0
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)
Example #4
0
 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)
Example #5
0
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)
Example #6
0
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)
Example #7
0
 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)
Example #8
0
    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)
Example #9
0
        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)
Example #10
0
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)
Example #11
0
 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)
Example #12
0
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)
Example #13
0
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)
Example #14
0
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)
Example #15
0
    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)
Example #16
0
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)
Example #17
0
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)
Example #18
0
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)
Example #19
0
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)
Example #20
0
            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)
Example #21
0
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)
Example #22
0
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)
Example #23
0
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)
Example #24
0
 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)
Example #25
0
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)
Example #26
0
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)
Example #27
0
    class transmissions(Syntax):
        transmission_type_info = bslbf(8)
        num_of_service = uimsbf(8)

        @times(num_of_service)
        class services(Syntax):
            service_id = uimsbf(16)
Example #28
0
 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)
Example #29
0
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)
Example #30
0
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)