示例#1
0
class ShortEventDescriptor(Descriptor):

    """短形式イベント記述子(ARIB-STD-B10-2-6.2.15)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    ISO_639_language_code = char(24)
    event_name_length = uimsbf(8)
    event_name_char = aribstr(event_name_length)
    text_length = uimsbf(8)
    text_char = aribstr(text_length)
示例#2
0
class ServiceDescriptor(Descriptor):

    """サービス記述子(ARIB-STD-B10-2-6.2.13)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    service_type = uimsbf(8)
    service_provider_name_length = uimsbf(8)
    service_provider_name = aribstr(service_provider_name_length)
    service_name_length = uimsbf(8)
    service_name = aribstr(service_name_length)
示例#3
0
class AudioComponentDescriptor(Descriptor):

    """音声コンポーネント記述子(ARIB-STD-B10-2-6.2.26)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    reserved_future_use = bslbf(4)
    stream_content = uimsbf(4)
    component_type = uimsbf(8)
    component_tag = uimsbf(8)
    stream_type = uimsbf(8)
    simulcast_group_tag = bslbf(8)
    ES_multi_lingual_flag = bslbf(1)
    main_component_flag = bslbf(1)
    quality_indicator = bslbf(2)
    sampling_rate = uimsbf(3)
    reserved_future_use_2 = bslbf(1)
    ISO_639_language_code = char(24)

    @case(ES_multi_lingual_flag)
    class with_ES_multi_lingual(Syntax):
        ISO_639_language_code_2 = char(24)

    audio_text = aribstr(lambda self: (
        self.descriptor_length - 12
        if self.ES_multi_lingual_flag == 1
        else self.descriptor_length - 9
    ))
示例#4
0
class NetworkNameDescriptor(Descriptor):

    """ネットワーク名記述子(ARIB-STD-B10-2.6.2.11)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    char = aribstr(descriptor_length)
示例#5
0
class BroadcasterNameDescriptor(Descriptor):

    """ブロードキャスタ名記述子(ARIB-STD-B10-2-6.2.36)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    char = aribstr(descriptor_length)
示例#6
0
class BouquetNameDescriptor(Descriptor):

    """ブーケ名記述子(ARIB-STD-B10-2.6.2.1)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    char = aribstr(descriptor_length)
示例#7
0
 class items(Syntax):
     item_description_length = uimsbf(8)
     item_description_char = aribstr(item_description_length)
     item_length = uimsbf(8)
     # マルチバイトの途中でitemが別れていることがあるので、
     # ここでaribstrとしてパースすると文字化けすることがある
     item_char = raw(item_length)
示例#8
0
class ComponentDescriptor(Descriptor):

    """コンポーネント記述子(ARIB-STD-B10-2-6.2.3)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    reserved_future_use = bslbf(4)
    stream_content = uimsbf(4)
    component_type = uimsbf(8)
    component_tag = uimsbf(8)
    ISO_639_language_code = char(24)
    component_text = aribstr(lambda self: self.descriptor_length - 6)
示例#9
0
class SeriesDescriptor(Descriptor):

    """シリーズ記述子 (ARIB-STD-B10-2-6.2.33)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    series_id = uimsbf(16)
    repeat_label = uimsbf(4)
    program_pattern = uimsbf(3)
    expire_date_valid_flag = uimsbf(1)
    expire_date = mjd(16)
    episode_number = uimsbf(12)
    last_episode_number = uimsbf(12)
    series_name_char = aribstr(lambda self: self.descriptor_length - 8)
示例#10
0
class TSInformationDescriptor(Descriptor):

    """TS情報記述子(ARIB-STD-B10-2.6.2.42)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    remote_control_key_id = uimsbf(8)
    length_of_ts_name = uimsbf(6)
    transmission_type_count = uimsbf(2)
    ts_name_char = aribstr(length_of_ts_name)

    @times(transmission_type_count)
    class transmissions(Syntax):
        transmission_type_info = bslbf(8)
        num_of_service = uimsbf(8)

        @times(num_of_service)
        class services(Syntax):
            service_id = uimsbf(16)
示例#11
0
class DataContentDescriptor(Descriptor):

    """データコンテンツ記述子(ARIB-STD-B10-2-6.2.28)

    data_component_idが0x0008のものは、selector_byteに
    字幕・文字スーパーの識別情報が入っている(ARIB-STD-B24-1-3-9.6.2)

    """

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    data_component_id = uimsbf(16)
    entry_component = uimsbf(8)
    selector_length = uimsbf(8)

    # ARIB-STD-B24-1-3-9.6.2
    # これ以外のselector_byteの実装は、ifの入れ子が正しく処理できないと実装できない
    @case(lambda self: self.data_component_id == 0x08)
    class arib_caption_info(Syntax):
        num_languages = uimsbf(8)

        @times(num_languages)
        class languages(Syntax):
            language_tag = bslbf(3)
            reserved = bslbf(1)
            DMF = bslbf(4)
            ISO_639_language_code = char(24)

    @case(lambda self: self.data_component_id != 0x08)
    class other(Syntax):
        selector_byte = uimsbf(lambda self: self.selector_length)

    num_of_component_ref = uimsbf(8)

    @times(num_of_component_ref)
    class component_refs(Syntax):
        component_ref = uimsbf(8)

    ISO_639_language_code = char(24)
    text_length = uimsbf(8)
    data_text = aribstr(text_length)
示例#12
0
class ExtendedEventDescriptor(Descriptor):

    """拡張形式イベント記述子(ARIB-STD-B10-2-6.2.7)"""

    descriptor_tag = uimsbf(8)
    descriptor_length = uimsbf(8)
    descriptor_number = uimsbf(4)
    last_descriptor_number = uimsbf(4)
    ISO_639_language_code = char(24)
    length_of_items = uimsbf(8)

    @loop(lambda self: self.length_of_items)
    class items(Syntax):
        item_description_length = uimsbf(8)
        item_description_char = aribstr(item_description_length)
        item_length = uimsbf(8)
        # マルチバイトの途中でitemが別れていることがあるので、
        # ここでaribstrとしてパースすると文字化けすることがある
        item_char = raw(item_length)

    text_length = uimsbf(8)
    text_char = aribstr(text_length)
示例#13
0
 class without_network(Syntax):
     private_data_byte = aribstr(lambda self: (
         self.descriptor_length - 1 - self.event_count * 4
     ))
示例#14
0
 class type_03(Syntax):
     logo_char = aribstr(lambda self: self.descriptor_length - 1)
示例#15
0
 class TextInfo(Syntax):
     ISO_639_language_code = char(24)
     text_length = uimsbf(8)
     text_char = aribstr(text_length)
示例#16
0
 class names(Syntax):
     ISO_639_language_code = char(24)
     platform_name_length = uimsbf(8)
     text_char = aribstr(platform_name_length)
示例#17
0
 class linkage_type_0x03(Syntax):
     message_id = uimsbf(8)
     message = aribstr(lambda self: self.descriptor_length - 8)