Остальные части
В 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):
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:
Эта программа состоит из двух элементарных потоков:
видеопотока типа 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 не является достоверным признаком шифрования аудио- и видеопотоков программы. В зависимости от используемой схемы шифрования элементарные потоки могут быть зашифрованы и расшифровываться в приёмнике без использования дополнительного потока условного доступа, и наоборот, при наличии такого потока аудио- и видео- могут быть незашифрованными. Наличие шифрования вообще не является постоянным атрибутом программы. Например, программы могут шифроваться только на время трансляции определённых передач.
В 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: