November 2019

S M T W T F S
      12
34 5 678 9
10111213141516
17181920212223
24252627282930

Style Credit

Expand Cut Tags

No cut tags
Wednesday, May 21st, 2008 11:47 pm
Остальные части

В Program Map Table (PMT) содержатся номера PID'ов, с которыми передаются аудио- и видеопотоки программ, типы этих потоков, а также PID'ы потоков условного доступа. Эти данные необходимы для показа программы.

Для каждой программы в текущем мультиплексированном потоке есть отдельная PMT, и передаётся она с отдельным PIDом. PIDы для PMT каждой программы указаны в PAT. PMT программ передаются только в том же мультиплексированном потоке, что и сами программы, в отличие от, скажем NIT или SDT, которые могут передаваться и в других потоках той же сети.



Как видно из ранее приведённого примера PAT, PMT для программы номер 2226 передаётся с PID'ом 2826. Из NIT видно, что это радиопрограмма, а из SDT - что она называется"Newstalk 106-108".
Считав таблицу с PID'ом 2826, мы видим:

Program Map Table (PMT):
------------------------------------------------------------
SECT-Packet: 00000001   PID: 2826 (0x0b0a), Length: 33 (0x0021)
------------------------------------------------------------

PID:  2826 (0x0b0a)
Guess table from table id...
PMT-decoding....
Table_ID: 2 (0x02)  [= Program Map Table (PMT)]
section_syntax_indicator: 1 (0x01)
Section_length: 30 (0x001e)
Program_number: 2226 (0x08b2)
Version_number: 3 (0x03)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
PCR PID: 2226 (0x08b2)
Program_info_length: 0 (0x0000)

Stream_type loop: 

    Stream_type: 4 (0x04)  [= ISO/IEC 13818-3 Audio]
    Elementary_PID: 2226 (0x08b2)
    ES_info_length: 12 (0x000c)

            DVB-DescriptorTag: 82 (0x52)  [= stream_identifier_descriptor]
            Descriptor_length: 1 (0x01)
            component_tag: 1 (0x01)

            MPEG-DescriptorTag: 10 (0x0a)  [= ISO_639_language_descriptor]
            Descriptor_length: 4 (0x04)
               ISO639_language_code:  eng
               Audio_type: 0 (0x00)  [= undefined]


            MPEG-DescriptorTag: 3 (0x03)  [= audio_stream_descriptor]
            Descriptor_length: 1 (0x01)
            free_format_flag: 0 (0x00)
            ID: 1 (0x01)
            layer: 2 (0x02)
            variable_rate_audio_indicator: 0 (0x00)

CRC: 3806431638 (0xe2e18996)
==========================================================


Table_ID для PMT всегда равен 2.
Из таблицы видно, что программа состоит из единственного элементарного потока типа 4 (MPEG2 audio в соответствии со стандартом ISO 13818 часть 3), который передаётся с PIDом 2226, язык у этого потока английский.

В начале таблицы встречается ещё поле PCR PID. В нём один из элементарных потоков программы назначается в качестве Program Clock Reference - главного потока для синхронизации остальных потоков в MPEG-декодере.
Для телепрограмм в качестве PCR обычно назначается видеопоток, для радиопрограмм - один из аудио. Если программа состоит из одного элементарного потока, то синхронизировать нечего, но поле всё равно есть, и в нём указывается PID единственного имеющегося потока.

Пример посложнее - для программы номер 2101, телевизионной, под названием "Channel 6", PMT PID 2901:
------------------------------------------------------------
SECT-Packet: 00000001   PID: 2901 (0x0b55), Length: 55 (0x0037)
------------------------------------------------------------

PID:  2901 (0x0b55)
Guess table from table id...
PMT-decoding....
Table_ID: 2 (0x02)  [= Program Map Table (PMT)]
section_syntax_indicator: 1 (0x01)
Section_length: 52 (0x0034)
Program_number: 2101 (0x0835)
Version_number: 2 (0x02)
current_next_indicator: 1 (0x01)  [= valid now]
Section_number: 0 (0x00)
Last_Section_number: 0 (0x00)
PCR PID: 2101 (0x0835)
Program_info_length: 6 (0x0006)

        MPEG-DescriptorTag: 9 (0x09)  [= CA_descriptor]
        Descriptor_length: 4 (0x04)
        CA_system_ID: 2816 (0x0b00)  [= Norwegian Telekom (Conax)]
        CA_PID: 2701 (0x0a8d)

Stream_type loop: 

    Stream_type: 2 (0x02)  [= ITU-T Rec. H.262 | ISO/IEC 13818-2 Video | ISO/IEC 11172-2 constr. parameter video stream]
    Elementary_PID: 2101 (0x0835)
    ES_info_length: 11 (0x000b)

            DVB-DescriptorTag: 82 (0x52)  [= stream_identifier_descriptor]
            Descriptor_length: 1 (0x01)
            component_tag: 1 (0x01)

            MPEG-DescriptorTag: 2 (0x02)  [= video_stream_descriptor]
            Descriptor_length: 3 (0x03)
            multiple_frame_rate_flag: 0 (0x00)
            frame_rate_code: 3 (0x0003)
            MPEG_1_only_flag: 0 (0x00)
            constrained_parameter_flag: 1 (0x01)
            still_picture_flag: 0 (0x00)

            MPEG-DescriptorTag: 6 (0x06)  [= data_stream_alignment_descriptor]
            Descriptor_length: 1 (0x01)
            alignment_type: 2 (0x02)


    Stream_type: 4 (0x04)  [= ISO/IEC 13818-3 Audio]
    Elementary_PID: 2201 (0x0899)
    ES_info_length: 12 (0x000c)

            DVB-DescriptorTag: 82 (0x52)  [= stream_identifier_descriptor]
            Descriptor_length: 1 (0x01)
            component_tag: 11 (0x0b)

            MPEG-DescriptorTag: 10 (0x0a)  [= ISO_639_language_descriptor]
            Descriptor_length: 4 (0x04)
               ISO639_language_code:  eng
               Audio_type: 0 (0x00)  [= undefined]


            MPEG-DescriptorTag: 3 (0x03)  [= audio_stream_descriptor]
            Descriptor_length: 1 (0x01)
            free_format_flag: 0 (0x00)
            ID: 1 (0x01)
            layer: 2 (0x02)
            variable_rate_audio_indicator: 0 (0x00)

CRC: 3664701725 (0xda6ee91d)
==========================================================


Эта программа состоит из двух элементарных потоков:
видеопотока типа 2 (MPEG2 video в соответствии с ISO 13818 часть 2, который обратно совместим с MPEG1 - ISO 11172 часть 2), PID 2101
и аудиопотока типа 4 (MPEG2 audio), PID 2201, язык английский.

В качестве PCR назначен видеопоток (PID 2101).

А ещё у этой программы есть поток с данными условного доступа, и в данном случае это с большой вероятностью означает, что аудио и/или видеопоток шифрованный (на самом деле, они оба зашифрованы). Поток передаётся с PID'ом 2701, идентификатор системы условного доступа - 0x0b00, выделенный компании Norwegian Telekom и обозначающий систему условного доступа Conax.

Поток с данными условного доступа может указываться в составе PMT самостоятельно, как в вышеприведённом примере, а может по отдельности внутри описаний аудио- и видеопотоков. В последнем случае поток с данными условного доступа указывается обычно один и тот же. Это не является ограничением стандарта, а связано с реализацией системы шифрования в DVB.

Как я уже говорил, наличие или отсутствие потоков условного доступа в составе PMT не является достоверным признаком шифрования аудио- и видеопотоков программы. В зависимости от используемой схемы шифрования элементарные потоки могут быть зашифрованы и расшифровываться в приёмнике без использования дополнительного потока условного доступа, и наоборот, при наличии такого потока аудио- и видео- могут быть незашифрованными. Наличие шифрования вообще не является постоянным атрибутом программы. Например, программы могут шифроваться только на время трансляции определённых передач.
Tags: