2.0 Подробные данные

2.1 Обзор

Метаданные переносят в транспортных потоках MPEG 2, как описано в разделе 2.12 из ссылки [1]. HTTP Живые метаданные Потоковой передачи переносят в элементарном потоке (PES) вместо, например, в карусели. Поток метаданных должен быть в той же программе как основной материал программы (т.е. аудио/видеоконтент).

Метаданные ID3 самоописывают и не нуждаются ни в какой конфигурационной информации, таким образом, не используются условия для данных конфигурации декодера метаданных.

Остаток от раздела 2 из этой спецификации описывает подробные данные синтаксиса и значений полей от раздела 2 из ссылки [1] для метаданных формата ID3, используемых с HTTP Живая Потоковая передача.

В синтаксических таблицах в разделе 2.3.2 из этой спецификации структура синтаксиса (левый столбец) показана с только именами полей и частью схемы, имеющей силу для метаданных ID3, как описано в этой спецификации. Опущены условные блоки, для которых условие является ложью. Правый столбец в синтаксических таблицах указывает значение, необходимое для каждого поля в этом контексте, или содержит объяснение того поля.

Со спецификацией [1] MPEG 2 нужно консультироваться для полного синтаксиса, размеров поля и приемлемых значений.

2.2 Сводка используемых кодовых точек

ID3 определяет и формат и семантическое, и таким образом, зарегистрированное то же format_identifier используется для обоих metadata_format_identifier и metadata_application_format_identifier.

Зарегистрированное значение для них, в регистрационных полномочиях (ссылка [4]), является четырьмя символьными строками ‘ID3 ’ (символы I D 3 space, или 0x49 0x44 0x33 0x20).

Указать, что зарегистрированное значение используется, metadata_format и metadata_application_format поля принимают значения 0xff и 0xffff соответственно.

Метаданные ID3 переносят в частном потоке, не потоке, отформатированном как Устройства доступа метаданных (MAUs), как определено в 12.4 из [1]. stream_id значение, используемое для потока, поэтому private_stream_id_1, 0xbd, как указано в 2.12.3 из [1]. stream_type установлен в 0x15, указание каретки метаданных в потоке PES, как указано в 2.12.9.1 из [1].

Так как только один поток метаданных обычно переносят, metadata_service_id обычно устанавливается в 0; однако, любое подходящее значение может использоваться для различения этого потока метаданных от других потоков метаданных, если существующий.

2.3 Используемые дескрипторы

2.3.1 Введение

Формат и содержание дескрипторов метаданных документируются в разделы 2.6.58 к 2.6.61 из [1].

2.3.2 Цикл дескриптора PMT для программы

Объявить присутствие потока метаданных, a metadata_pointer_descriptor (2.6.58 из [1]), помещается в PMT, в program_info цикл для программы. Метаданные должны быть в той же программе как основная программа (аудио/видео) содержание; использование этого дескриптора для обращения к другой программе не поддерживается.

Синтаксис

Значение

Metadata_pointer_descriptor () {

    descriptor_tag

37 (decimal) – Metadata_pointer_descriptor tag

    descriptor_length

– the length of the descriptor

    metadata_application_format

0xFFFF

    if (metadata_application_format==0xFFFF)

    {

        metadata_format_identifier

‘ID3 ’ (0x49 0x44 0x33 0x20)

    }

    metadata_format

0xFF

    if (metadata_format==0xFF) {

        metadata_format_identifier

‘ID3 ’ (0x49 0x44 0x33 0x20)

    }

    metadata_service_id

– any ID, typically 0

    metadata_locator_record_flag

0

    MPEG_carriage_flags

0

    reserved

0x1f

    if (MPEG_carriage_flags == 0|1|2)    {

        program_number

– program number of the program whose es descriptor loop contains the metadata_descriptor

    }

}

Элементарный поток, переносящий метаданные, должен быть объявлен в цикле элементарных потоков, в карте программы (разделите 2.4.4.8 из [1]):

Поле

Значение

stream_type

0x15

reserved

0x7

elementary_PID

– pid of the elementary stream carrying the metadata

reserved

0xf

ES_info_length

– length of the elementary stream info descriptor loop, including the metadata_descriptor

2.3.3 Цикл дескриптора PMT для элементарного потока

Объявить формат потока метаданных, a metadata_descriptor (2.6.60 из [1]), помещается в PMT, в es_info цикл для элементарного потока.

Синтаксис

Значение

Metadata_descriptor () {

    descriptor_tag

38 (decimal) – Metadata_descriptor tag

    descriptor_length

– the length of the descriptor

    metadata_application_format

0xFFFF

    if (metadata_application_format==0xFFFF)

    {

        metadata_application_format_identifier

‘ID3 ’ (0x49 0x44 0x33 0x20)

    }

    metadata_format

0xFF

    if (metadata_format==0xFF) {

        metadata_format_identifier

'ID3 ' (0x49 0x44 0x33 0x20)

    }

    metadata_service_id

– any ID, typically 0

    decoder_config_flags

0

    DSM-CC_flag

0

    reserved

0xf

2.4 Потоковый формат PES

Метаданные ID3 сохранены, поскольку полный ID3v4 структурирует в пакете PES, включая полный заголовок ID3.

Тег ID3 должен сразу запуститься после заголовка PES; этот заголовок PES должен содержать PTS (PTS_DTS_flags набор к '10'). PTS должен быть на той же временной шкале как аудио и видеокадры. data_alignment бит должен быть установлен в 1. Заголовок PES должен содержать a PES_packet_length это является ненулевым.

Если тег ID3 более длинен, чем 65 535 байтов, он должен иметь больше чем один заголовок PES. Второе и после заголовков PES должно иметь data_alignment набор к 0, и должен иметь PTS_DTS_flags набор к ‘00’ (и следовательно никакой PTS).

Заголовок PES отформатирован, как задокументировано в 2.4.3.7 из [1].

Синтаксис PES

Значение

PES_Packet () {

    packet_start_code_prefix

0x00 0x00 0x01

    stream_id

0xbd – private_stream_id_1

    PES_packet_length

– length of the packet, which must not be 0

    if (…) {

– a large test which is true in this case

        '10'

'10'

        PES_scrambling_control

0

        PES_priority

0

        data_alignment_indicator

1 for the packet containing start of the ID3 header, else 0

        copyright

0

        original_or_copy

0

        PTS_DTS_flags

if (data_alignment==1) ‘10’

else ‘00’

        ESCR_flag

0

        ES_rate_flag

0

        DSM_trick_mode_flag

0

        additional_copy_info_flag

0

        PES_CRC_flag

0

        PES_extension_flag

0

        PES_header_data_length

– the length of the data; padding may be used

    }

}

Поток метаданных включен в транспортный поток таким же образом как аудио, или видео. Например, в a transport_packet() (см. 2.4.3.2 из [1]), payload_unit_start_indicator установлен в 1 только, когда следует заголовок PES. (Заголовок PES, в свою очередь, указывает, следует ли запуск данных ID3, или было ли это разделено на многократные пакеты PES).