ГОСТ Р 56953-2016
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
ТЕЛЕВИДЕНИЕ ВЕЩАТЕЛЬНОЕ ЦИФРОВОЕ
СИСТЕМЫ СУБТИТРОВ
Основные параметры
Digital Video Broadcasting. Subtitling systems. Basic parameters
ОКС 33.170
Дата введения 2017-06-01
Предисловие
1 РАЗРАБОТАН Автономной некоммерческой организацией "Научно-технический центр информатики" (АНО "НТЦИ")
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 480 "Связь"
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 7 июня 2016 г. N 546-ст
4 Настоящий стандарт разработан с учетом основных нормативных положений стандарта Европейского института по стандартизации в области телекоммуникаций ETSI EN 300 743 V1.5.1 (2014-01)* "Телевидение вещательное цифровое. Системы субтитров" [ETSI EN 300 743 VI .5.1 (2014-01) "Digital Video Broadcasting (DVB); Subtitling systems", NEQ]
________________
* Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. - .
5 ВВЕДЕН ВПЕРВЫЕ
6 ПЕРЕИЗДАНИЕ. Февраль 2020 г.
Правила применения настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. N 162-ФЗ "О стандартизации в Российской Федерации". Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
1 Область применения
Настоящий стандарт определяет систему кодирования субтитров, логотипов и иных графических элементов для их передачи в транспортных потоках DVB. Данная система использует таблицы преобразования цветовой палитры (ТПЦП) для определения цветов графических элементов. Транспортировка кодированных графических элементов основана на системе MPEG-2.
Требования настоящего стандарта следует учитывать при разработке, изготовлении и эксплуатации оборудования DVB.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие стандарты:
ГОСТ Р 52210 Телевидение вещательное цифровое. Термины и определения
ГОСТ Р 52591 Система передачи данных пользователя в цифровом телевизионном формате. Основные параметры
ГОСТ Р 54994 Телевидение вещательное цифровое. Передача служб DVB по сетям с IP протоколами. Общие технические требования
Примечание - При пользовании настоящим стандартом целесообразно проверить действие ссылочных стандартов в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю "Национальные стандарты", который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя "Национальные стандарты" за текущий год. Если заменен ссылочный стандарт, на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого стандарта с учетом всех внесенных в данную версию изменений. Если заменен ссылочный стандарт, на который дана датированная ссылка, то рекомендуется использовать версию этого стандарта с указанным выше годом утверждения (принятия). Если после утверждения настоящего стандарта в ссылочный стандарт, на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный стандарт отменен без замены, то положение, в котором дана ссылка на него, рекомендуется применять в части, не затрагивающей эту ссылку.
3 Термины, определения и сокращения
3.1 Термины и определения
В настоящем стандарте применены термины по ГОСТ Р 52210, ГОСТ Р 52591, ГОСТ Р 54994, а также следующие термины с соответствующими определениями:
3.1.1 объект (object): Графическая единица, которая может быть размещена в регионе (изображение символа, логотип, таблица и т.п.).
3.1.2 регион (region): Прямоугольная область внутри страницы, на которой располагаются объекты.
3.1.3 страница (page): Набор субтитров из службы субтитров в течение определенного периода времени.
3.1.4 таблица преобразования цветовой палитры; ТПЦП (Colour Look-Up Table; CLUT): Справочная таблица, применяема в каждом регионе для преобразования псевдоцвета объектов в правильные цвета для отображения.
3.1.5 служба субтитров (subtitle service): Служба, предоставляющая в программу субтитры определенного назначения (на определенном языке, для слабослышащих).
3.2 Сокращения
В настоящем стандарте применены следующие сокращения:
bslbf - строка битов, левый бит первый (bit string, left bit first);
DVB - цифровое телерадиовещание (Digital Video Broadcasting);
EIT - таблица информации о событиях (Event Information Table);
ETSI - Европейский институт по стандартизации в области телекоммуникаций (European Telecommunications Standards Institute);
HDTV - телевидение высокой четкости (High Definition Television);
IPTV - телевещание по протоколу Интернет (Internet Protocol Television);
MPEG - экспертная группа по движущемуся изображению; стандарт сжатия видео- и аудиоданных (Moving Picture Experts Group);
PCR - опорное время программы (Program Clock Reference);
PES - пакетизированный элементарный поток (Packetized Elementary Stream);
PID - идентификатор пакета (Packet Identifier);
PMT - таблица структуры программы (Program Map Table);
SI - информация об услугах (Service Information);
PTS - временная отметка предоставления пакета (Presentation Time Stamp);
SD - стандартное разрешение (Standard Definition);
SDT - таблица описания услуги (Service Description Table);
tcimsbf - целое в дополнительном коде, старший значащий бит первый (two's complement integer, msb (sign) bit first);
TS - транспортный поток (Transport Stream);
uimsbf - целое без знака, старший значащий бит первый (unsigned integer, most significant bit first).
4 Введение в систему субтитров DVB
4.1 Общие положения
Система субтитров DVB, определенная в настоящем стандарте, предоставляет синтаксис декодирования потоков субтитров. Поток субтитров переносит одну или несколько служб субтитров; каждая служба содержит текстовую и/или графическую информацию, необходимую для передачи субтитров или символов для определенных целей. Отдельные услуги субтитров могут быть использованы, например, для передачи субтитров на нескольких языках.
Каждая служба субтитров отображает информацию в последовательности так называемых страниц, которые накладываются на связанные видеоизображения. Страница субтитров содержит один или несколько регионов, каждый регион представляет собой прямоугольную область с определенным набором атрибутов. Эти атрибуты включают в себя идентификатор региона, горизонтальный и вертикальный размер, глубину пикселя и фоновый цвет. Регион используется в качестве фоновой структуры, в которой размещены графические объекты. Объект может представлять собой символ, слово, строку текста или целое предложение; он также может быть логотипом или значком.
Использование и расположение объектов в пределах региона определяется сегментом композиции региона.
Использование и расположение регионов внутри страницы определяется сегментом композиции страницы, в котором находится список отображаемых регионов, каждый со своим собственным пространственным положением. Нет необходимости менять композицию страницы, когда объекты региона добавляются или удаляются. Более того, регионы могут быть объявлены, но не использованы. Например, один регион может быть использован для отображения нескольких фрагментов субтитров, как показано на рисунке 1. Сначала текст "Пойдем?" отображается в регионе, затем этот текст будет удален, и новый текст "Сказала муха на зеркале" будет отображен. Можно использовать более одного региона в одно и то же время. Например, один регион может быть использован для отображения субтитров внизу экрана, в то время как другой регион может быть использован для отображения логотипа в другом месте на экране.
Рисунок 1 - Пример размещения регионов на странице
Поток субтитров DVB переносится в пакетах PES, и время их представления определяется PTS из заголовка PES. После приема и декодирования данных субтитров для страницы (таких как композиция страницы, композиция региона, объекты, которые будут использоваться и другие соответствующие данные) содержимое страницы отображается в момент времени согласно соответствующему PTS. Когда объекты должны быть добавлены, декодер получает обновления для композиции региона, данные для новых объектов и показывает обновленную страницу в срок, указанный в новом PTS. Для обновления страницы нужна только информация о различиях. Для улучшения произвольного доступа к субтитрам DVB также возможно полное обновление страницы. Для полного обновления страницы нужны все данные субтитров. Каждое частичное или полное обновление страницы создает новый экземпляр страницы. Страница перестает существовать после тайм-аута страницы или после определения новой страницы.
Для обеспечения эффективного использования памяти дисплея в декодере система субтитров DVB использует графику, основанную на регионах, с индексированием цветов пикселей. Поддерживаемые глубины пикселя 2, 4 и 8 битов позволяют определить до 4, 16 или 256 соответственно различных кодов пикселей для использования в каждом регионе. Каждый регион связан с одной таблицей семейства ТПЦП, определяющей цвет и прозрачность для каждого кода пикселя. В большинстве случаев одной ТПЦП достаточно для правильной передачи цветов всех объектов в регионе, но если этого недостаточно, объекты могут быть разделены по горизонтали на более мелкие по смежным разделенным вертикально регионам со своей ТПЦП для каждого.
Использование ТПЦП позволяет создавать динамичные цветовые схемы. Цвета, соответствующие объектам в регионе, могут быть переопределены в любое удобное время, например, в случае с ТПЦП из четырех записей из черно-серо-белой схемы в сине-серо-желтую схему. Кроме того, графический блок может быть разделен на несколько регионов, каждый с использованием различных ТПЦП, т.е. своя цветовая схема может быть применена в каждом отдельном регионе. По усмотрению кодера объекты, предназначенные для дисплеев, поддерживающих 16 или 256 цветов, могут быть декодированы для дисплеев, поддерживающих меньшее число цветов. Алгоритм квантования определен для того, чтобы результат этого процесса мог быть предсказан отправителем. Использование такой опции позволяет использовать один поток данных, подлежащих декодированию семейством декодеров с различными и, возможно, развивающимися возможностями.
Поток субтитров может передавать несколько компонентов служб субтитров. В этом случае страницы отдельной службы субтитров должны идентифицироваться одним значением идентификатора страницы. Это значение используется при транспортировке данных субтитров таким образом, чтобы обеспечить механизм для извлечения данных, специфичных для службы, из потока субтитров. Система субтитров позволяет совместно использовать данные субтитров между службами в том же потоке субтитров. Частым и предпочтительным методом является передача различных услуг в различных потоках с отдельными PID. Во всех случаях соответствующий PID, язык и идентификаторы страниц должны быть указаны в таблице карты программ (РМТ) для интересующей телевизионной услуги (язык и идентификатор страницы в дескрипторе субтитров, определенного в DVB-SI [1]).
Система субтитров DVB предоставляет ряд методов, которые обеспечивают эффективную передачу данных субтитров:
- объекты, которые наблюдаются несколько раз в регионе, должны быть переданы только однажды, а затем многократно размещены в регионе;
- объекты, используемые больше чем в одной службе субтитров, должны быть переданы только однажды;
- пиксельные данные в объектах сжимают, используя кодирование по длинам серий;
- если гамма цветов, требуемых для части графического объекта, ограничена, эта часть может быть закодирована с использованием меньшего числа битов на пиксель и меньшей таблицы перекодировки. Например, графический объект с 8 битами на пиксель может содержать области, закодированные как 4 или 2 бита на пиксель каждая, которым предшествует таблица перекодировки для отображения 16 или 4 цветов на 256-цветное пространство региона. Аналогично объект с 4 битами на пиксель может содержать области, закодированные как 2 бита на пиксель;
- цветовые определения могут быть закодированы с использованием 16 или 32-битных элементов ТПЦП. Это обеспечивает компромисс между полосой пропускания канала передачи и точностью цветопередачи;
- только те значения ТПЦП, которые используются, подлежат передаче.
Вышеупомянутые опции полностью поддерживаются системой субтитров DVB.
Потоки субтитров, предназначенные для HDTV, могут содержать дополнительную структуру данных, называемую display_definition_segment, которая явно определяет размер дисплея, для которого был создан данный поток.
Потоки субтитров, связанные с телевизионными услугами стандартного разрешения, не должны включать display_definition_segment и могут быть закодированы в соответствии с [2].
Потоки субтитров, связанные с телевизионными услугами стандартного разрешения и предназначенные для декодирования декодерами, разработанными согласно [2], не должны включать display_definition_segment.
4.2 Иерархия данных и терминология
Основным элементом потока субтитров DVB является сегмент субтитров. Эти сегменты передаются в пакетах PES, которые, в свою очередь, передаются в транспортных пакетах. Число сегментов, передаваемых в пакете PES, ограничено максимальной длиной пакета PES.
Поток субтитров должен передаваться в транспортных пакетах с одним и тем же PID. Одиночный поток субтитров может содержать несколько различных служб субтитров. Все данные субтитров, требуемые для службы субтитров, должны передаваться в одном потоке субтитров. Различные службы субтитров могут быть субтитрами на различных языках для одной программы. И наоборот, они могут быть предназначены для различных программ (при условии, что программы разделяют общий PCR).
Одиночный поток субтитров не должен содержать одновременно службу субтитров, которая включает display_definition_segment, и службу субтитров, которая не включает display_definition_segment; в этом случае службы субтитров нужно передавать в отдельных потоках и с отдельными PID.
Потоки субтитров, предназначенные для услуг HDTV и включающие display_definition_segment, должны быть отличны от потоков, которые предназначены для услуг стандартного разрешения и закодированы в соответствии с [2] при помощи определенных для HDTV значений stream_content & component_type из дескриптора компонента DVB, содержащегося в таблицах SDT и EIT данной услуги. Это условие обеспечивает средство, посредством чего устаревшие декодеры, поддерживающие только SD-разрешение, должны игнорировать потоки, содержащие display_definition_segments.
Различные службы субтитров могут быть предназначены для различных типов дисплеев или требоваться для иных целей. Например:
- различные службы субтитров могут быть предназначены для дисплеев с соотношением сторон 4:3 и 16:9;
- службы субтитров могут быть предназначены для зрителей с ослабленным слухом. Они могут содержать графические представления звуков.
Для каждой службы субтитров subtitling_descriptor согласно [1] сигнализирует о значениях идентификаторов страниц сегментов, необходимых для декодирования данной службы субтитров. Дескриптор субтитров должен быть включен в состав РМТ программы и должен быть связан с PID программы, которая передает поток субтитров. В дескрипторе субтитров идентификатор страниц сегментов с данными, предназначенными только для определенной услуги, называется идентификатором страницы композиции, в то время как идентификатор страниц сегментов с данными, предназначенными для одновременного использования различными услугами, называется идентификатором вспомогательной страницы. Например, идентификатор вспомогательной страницы может сигнализировать о сегментах, содержащих логотип, который характерен для субтитров на нескольких языках.
PTS в заголовке пакета PES содержит информацию о времени представления данных субтитров и связан с данными субтитров во всех сегментах, передаваемых в данном пакете PES. PTS определяет время, в которое должны быть представлены соответствующие декодированные сегменты.
Полный комплект сегментов службы субтитров, которые связаны с одним PTS, называется набор показа. Последним сегментом набора показа должен быть "end_of-display-set сегмент, который сигнализирует, что для начала декодирования больше не требуется данных субтитров, связанных с этим PTS. Наборы показа должны передаваться в правильном порядке представления, и PTS последующих наборов показа должны отличаться больше чем на один период видеокадра.
Для передачи множественных типов субтитров данных субтитров определены несколько типов сегментов, в частности:
- сегмент определения дисплея; служба субтитров может быть предназначена или быть подготовлена к размерам дисплея, отличного от телевидения стандартного разрешения (т.е. кроме 720 пикселей на 576 линий, например, для HDTV). Дополнительный сегмент определения дисплея явно определяет размер дисплея, для которого было создана данная служба;
- сегмент композиции страницы; декодирование службы субтитров приводит к показу на дисплее последовательности страниц, каждая из которых состоит из одного или более регионов; сегмент композиции страницы несет информацию о составе страницы, такую как список включенных регионов, пространственное положение каждого региона, информацию о тайм-ауте для страницы и состоянии страницы;
- сегмент композиции региона; в каждом регионе, как правило, размещены один или несколько объектов, которые используют определенные ТПЦП, идентифицируемые идентификаторами ТПЦП; сегмент композиции региона несет информацию о составе региона и о атрибутах региона, таких как горизонтальный и вертикальный размер, цвет фона, пиксельная глубина региона, какая ТПЦП используется, список включенных объектов с их положением в регионе;
- сегмент определения ТПЦП; сегмент определения ТПЦП содержит информацию об определенной ТПЦП, идентифицируемой идентификатором ТПЦП, какие цвета используются для элементов ТПЦП;
- сегмент данных объекта; сегмент данных объекта несет информацию о конкретном объекте; существует два типа объектов: графические объекты и текстовые объекты. Сегмент данных объекта с графическим объектом содержит кодирование по длинам серий цвета битового массива, в то время как текстовый объект содержит строку кодов символов;
- сегмент конца набора показа; сегмент конца набора показа не содержит внутренней информации, но используется, чтобы явно сигнализировать, что, прежде чем может начаться декодирование текущего набора показа, больше сегментов не должно быть получено.
Значение идентификатора страницы сегмента, содержащего данные для службы субтитров, должно быть равно значению composition_page_id или ancillary_page_id, содержащимся в дескрипторе субтитров. Композиции страниц не используются несколькими службами субтитров одновременно; следовательно, идентификатор страницы каждой композиции страницы сегмента должен быть равен значению composition_page_id.
Иерархия данных должна быть следующей:
- транспортный поток (TS);
- пакеты транспортного потока с одним PID;
- пакеты PES, с PTS, содержащими временную информацию;
- служба субтитров;
- сегменты, определенные идентификатором страницы композиции и опционально идентификатором вспомогательной страницы;
- в соответствующих случаях - сегмент определения дисплея;
- данные субтитров, содержащие информацию о композиции страницы, композиции региона, таблицах ТПЦП, объектах и конце набора показа.
4.3 Временная иерархия и терминология
На уровне сегмента в иерархии данных есть также временная иерархия. Высший уровень - эпоха; в эпоху композиция страницы и композиция региона могут измениться: например, объекты и регионы могут быть добавлены или удалены. Понятие эпохи аналогично понятию видеопоследовательности MPEG. Никакое состояние декодера не сохраняется при переходе с одной эпохи к следующей.
Эпоха - последовательность одного или более экземпляров страницы. Каждый экземпляр страницы - это законченный экран с графическим материалом.
Последовательные экземпляры страницы могут отличаться в меньшей степени (например, отдельным словом, когда используется стенографическое введение субтитров) или могут отличаться полностью. Набор сегментов, необходимый для декодирования нового экземпляра страницы, называют набором показа.
В пределах набора показа последовательность сегментов (если представлена) должна быть следующей:
- сегмент определения дисплея;
- композиция страницы;
- композиция региона;
- определение ТПЦП;
- данные объекта;
- сегмент конца набора показа.
Все сегменты, сообщенные значением идентификатора страницы композиции, должны быть доставлены перед любым сегментом, сообщенным значением идентификатора вспомогательной страницы. Значение идентификатора вспомогательной страницы не должно сигнализировать о сегментах композиции страницы и сегментах композиции региона.
5 Модель декодера субтитров
Модель декодера субтитров приведена на рисунке 2.
Рисунок 2 - Модель декодера субтитров
На вход модели декодера субтитров поступает транспортный поток MPEG-2.
После фильтрации PID пакеты TS, содержащие поток субтитров, поступают на буфер передачи размеров В1 байт. Из буфера передачи данные выходят со скоростью R1 кбит/с. Если данные отсутствуют, их скорость равна 0. Для устаревших декодеров размер буфера передачи равен 512 байтам, скорость выходного потока данных равна 192 кбит/с. Для декодеров, которые способны работать с потоками, содержащими сегменты определения дисплея, размер буфера передачи равен 1024 байтам, скорость выходного потока данных равна 400 кбит/с.
Транспортные пакеты из буфера передачи обрабатываются путем отброса заголовков транспортных пакетов и пакетов PES. Значения PTS передаются на следующие этапы обработки субтитров. В препроцессоре сегменты, необходимые для выбранной службы субтитров, выделяются из потока субтитров. Выходным сигналом препроцессора является поток сегментов субтитров, которые фильтруются на основе значения идентификатора страницы, полученного из дескриптора субтитров.
Отобранные сегменты поступают в буфер кодированных данных размером В2 кбайт. Для устаревших декодеров размер буфера кодированных данных равен 24 кбайтам. Для декодеров, которые способны работать с потоками, содержащими сегменты определения дисплея, размер буфера кодированных данных равен 100 кбайтам. Только полные сегменты выходят из данного буфера. Вывод и декодирование сегментов происходит мгновенно (занимает нулевое время). Если сегмент содержит данные пикселей, декодер субтитров останавливает вывод сегментов из буфера кодированных данных, пока все пиксели не будут переданы в буфер пикселей. Пиксельные данные объектов, которые используются более чем один раз, передаются отдельно для каждого использования.
Скорость передачи пиксельных данных в буфер пикселей равна R3 кбит/с, размер буфера пикселей равен В3 кбайтам. Для устаревших декодеров размер буфера пикселей равен 80 кбайтам, скорость входного потока данных равна 512 кбит/с. Для декодеров, которые способны работать с потоками, содержащими сегменты определения дисплея, размер буфера пикселей равен 320 кбайтам, скорость входного потока данных равна 2 Мбит/с.
Данные, необходимые для составления субтитров, такие как композиция страницы, композиции региона, таблицы ТПЦП, хранятся в буфере композиции, который имеет размер 4 кбайта.
5.1 Временная модель декодера
Требования к использованию памяти в модели декодера субтитров зависит от размера и глубины цветности используемых на странице регионов. Полное описание использования памяти декодера должно быть доставлено к началу каждой эпохи. Границы эпох обеспечивают гарантированные точки получения услуги. Границы эпохи сигнализируются сегментами композиции страницы с состоянием страницы типа "смена режима" ("mode change").
Буфер пикселей и буфер композиции хранят состояние декодера субтитров. Когда декодер принимает сегмент композиции страницы (СКС) с состоянием страницы типа "смена режима", вся выделенная для предыдущих сегментов память очищается, т.е. состояние декодера сбрасывается.
Все регионы, которые будут использоваться в эпохе, должны представляться в наборе показа сегментами композиции региона (СКР) в сопровождении СКС с состоянием страницы типа "смена режима" (первый набор показа в эпохе). Все записи ТПЦП, которые будут использоваться в эпохе, должны быть введены в первом наборе показа. Последующие сегменты могут изменить значения буфера пикселей и буфера композиции, но не могут изменять количество требуемой памяти.
Требования к временной модели декодера:
- в начале эпохи набор показа должен содержать полный набор сегментов СКР для всех регионов, которые будут использоваться в данной эпохе. СКС должен содержать список регионов, представленных в начале эпохи. В отдельных случаях СКС может содержать нулевой список видимых регионов;
- СКР должен присутствовать в наборе показа, если регион должен быть изменен. СКР необязательно должен быть в списке регионов СКС. Это позволяет изменять регионы, пока они не видны;
- СКР могут присутствовать в наборе показа, даже если они не будут изменены;
- декодер должен проверять каждый СКР в наборе показа, чтобы определить, должен ли регион быть модифицирован. Три возможные причины изменения:
- флаг заполнения региона установлен;
- модификация содержания ТПЦП;
- список объектов ненулевой длины.
5.2 Модель буферной памяти
СКС с состоянием страницы типа "смена режима" разрушает все предыдущие содержания буфера пикселей и буфера композиции путем стирания их содержимого.
В течение одной эпохи размер выделенной памяти в буфере пикселей остается постоянным.
Размер памяти, выделяемый для региона в буфере пикселей region_bits, определяют по формуле:
region_bits=region_width
где region_width - ширина региона в пикселях;
region_height - высота региона в пикселях;
region_depth - глубина пикселя региона, определенная в СКР.
В течение эпохи память, выделенная под регионы в буфере пикселей, равна сумме значений region_bits для всех регионов, используемых в данной эпохе.
Размер памяти, выделяемый декодером субтитров в буфере композиции, следующий:
- композиция страницы за исключением списка регионов: 4 байта плюс 6 байтов на каждый включенный регион;
- композиция региона за исключением списка объектов: 12 байтов плюс 8 байтов на каждый включенный объект;
- определение ТПЦП за исключением записей: 4 байта плюс 4 байта на каждую неполную запись и 6 байт на каждую полную запись.
5.3 Кумулятивная конструкция дисплея
В течение одной эпохи модификации региона, определенные в наборах показа, накапливаются в буфере пикселей, но воздействия на выделенную для каждого региона память не происходит.
5.4 Модель ширины полосы рендеринга декодера
Ширина полосы рендеринга для буфера пикселей должна быть равна 512 кбит/с (2 Мбит/с для декодеров, которые способны работать с потоками, содержащими сегменты определения дисплея).
После тайм-аута страницы страница должна очищаться. При этом стирание страницы не подразумевает изменений в буфере пикселей.
Регионы могут быть репозиционированы путем обновления спецификаций их позиций в списке регионов СКС. Видимость регионов может быть изменена путем ее включения или выключения в списке регионов СКС.
Установка флага заполнения региона указывает, что регион должен быть перерисован с определенным цветом заполнения перед размещением на нем любых объектов.
Графические объекты должны быть выведены в буфер пикселей сразу после декодирования. На один объект можно ссылаться несколько раз, например, когда символ несколько раз используется в тексте. Внутри региона рендеринг, предназначенный для каждого объекта, может быть получен из:
- количества пикселей, заключенных в пределах наименьшего прямоугольника, который может окружать объект;
- глубины пикселя в области, где объект позиционируется;
- количества появлений объекта в регионе.
6 Формат пакета PES
Синтаксис и семантика пакета PES, содержащего субтитры, определена в [3] и применима для передачи субтитров с учетом ограничений, приведенных в таблице 1.
Таблица 1 - Синтаксис и семантика пакета PES, содержащего субтитры
Поле пакета | Описание |
stream_id | Значение '1011 1101' указывает на "private_stream_1 |
PES_packet_length | Содержит длину пакета PES согласно [3] |
data_alignment_indicator | Значение '1' указывает, что сегменты субтитров выравнены по пакетам PES |
Presentation_Time_Stamp субтитров | PTS, указывающее на время, в какое начинается презентация набора показа, передаваемого пакетами PES с данным PTS. PTS последовательности показов должны отличаться более чем на один видеокадр |
PES_packet_data_byte | Описание дано в разделе 7 настоящего стандарта |
7 Данные субтитров в пакете PES
7.1 Синтаксис и семантика поля данных субтитров пакета PES
При передаче потока субтитров DVB поле PES_packet_data_bytes должно кодироваться как поле PES_data_field согласно таблице 2.
Таблица 2 - Кодирование поля PES_data_field
Синтаксис | Количество битов | Формат |
PES_data_field() { | ||
data_identifier | 8 | bslbf |
subtitle_stream_id | 8 | bslbf |
while nextbits() == '0000 1111' { | ||
Subtitling_segment() | ||
} | ||
end_of_PES_data_field_marker | 8 | bslbf |
} |
Семантика:
data_identifier: поле должно содержать значение 0x20.
subtitle_stream_id: поле должно содержать значение 0x00.
end_of_PES_data_field_marker: 8-битовое поле фиксированного значения '1111 1111'.
7.2 Синтаксис и семантика сегмента субтитров
Синтаксис сегмента субтитров приведен в таблице 3.
Таблица 3 - Синтаксис сегмента субтитров
Синтаксис | Количество битов | Формат |
Subtitling_segment() { | ||
sync_byte | 8 | bslbf |
segment_type | 8 | bslbf |
page_id | 16 | bslbf |
segment_length | 16 | uimsbf |
segment_data_field() | ||
} |
sync_byte: 8-битовое поле, должно содержать значение '0000 1111'.
segment_type: значения данного поля определяет тип данных, содержащихся в поле данных сегмента. Возможные значения приведены в таблице 4.
Таблица 4 - Значения поля segment_type
Значение | Тип сегмента |
0x10 | Сегмент композиции страницы. Рассмотрен в 7.2.2 настоящего стандарта |
0x11 | Сегмент композиции региона. Рассмотрен в 7.2.3 настоящего стандарта |
0x12 | Сегмент определения ТПЦП. Рассмотрен в 7.2.4 настоящего стандарта |
0x13 | Сегмент данных объекта. Рассмотрен в 7.2.5 настоящего стандарта |
0x14 | Сегмент определения дисплея. Рассмотрен в 7.2.1 настоящего стандарта |
0x15 | Сегмент сигнализации расхождения. Рассмотрен в 7.2.7 настоящего стандарта |
0x16 - 0x7F | Зарезервировано |
0x80 | Сегмент конца набора показа. Рассмотрен в 7.2.6 настоящего стандарта |
0x81 - 0xEF | Данные пользователя |
0xFF | Заполнение |
Все остальные значения | Зарезервировано |
page_id: поле идентификатора страницы.
segmen_length: поле длины сегмента, определяет длину последующего поля segment_data_field в байтах.
segment_data_field: полезная нагрузка сегмента. Синтаксис зависит от типа сегмента и описан в 7.2.1, 7.2.5 настоящего стандарта.
7.2.1 Сегмент определения дисплея
Синтаксис сегмента определения дисплея приведен в таблице 5.
Таблица 5 - Синтаксис сегмента определения дисплея
Синтаксис | Количество битов | Формат |
display_definition_segment(){ | ||
sync_byte | 8 | bslbf |
segment_type | 8 | bslbf |
page_id | 16 | uimsbf |
segment_length | 16 | uimsbf |
dds_version_number | 4 | uimsbf |
display_window_flag | 1 | uimsbf |
reserved | 3 | uimsbf |
display_width | 16 | uimsbf |
display_height | 16 | uimsbf |
if (display_window_flag == 1) { | ||
16 | uimsbf | |
display_window_horizontal_position_minimum | 16 | uimsbf |
16 | uimsbf | |
display_window_horizontal_position_maximum | 16 | uimsbf |
display_window_vertical_position_minimum | ||
display_window_vertical_position_maximum | ||
} | ||
} |
Семантика:
dds_version_number: версия данного сегмента определения дисплея. При изменении контента сегмента определения дисплея данное поле должно быть инкрементировано (по модулю 16).
display_window_flag: если данное поле равно 1, набор показа субтитров, связанный с данным сегментом определения дисплея, должен быть перерисован в окне внутри дисплея с размерами, определенными полями display_width и display_height.
Размер и положение данного окна внутри дисплея определяются параметрами данного сегмента display_window_horizontal_position_minimum, display_window_horizontal_position_maximum, display_window_vertical_position_minimum и display_window_vertical_position_maximum.
Если данное поле равно 0, набор показа субтитров, связанный с данным сегментом определения дисплея, должен быть перерисован непосредственно внутри границ дисплея, определенных полями display_width и display_height.
display_width: определяет максимальную ширину дисплея в пикселях минус 1. Значение должно лежать в пределах 0..4095.
display_height: определяет максимальную высоту дисплея в строках минус 1. Значение должно лежать в пределах 0..4095.
display_window_horizontal_position_minimum: определяет номер крайнего левого пикселя данного набора показа относительно крайнего левого пикселя дисплея.
display_window_horizontal_position_maximum: определяет номер крайнего правого пикселя данного набора показа относительно крайнего левого пикселя дисплея.
display_window_vertical_position_minimum: определяет номер крайней верхней строки данного набора показа относительно крайней верхней строки дисплея.
display_window_vertical_position_maximum: определяет номер крайней нижней строки данного набора показа относительно крайней верхней строки дисплея.
7.2.2 Сегмент композиции страницы
Синтаксис сегмента композиции страницы приведен в таблице 6.
Таблица 6 - Синтаксис сегмента композиции страницы
Синтаксис | Количество битов | Формат |
page_composition_segment() { | ||
sync_byte | 8 | bslbf |
segment_type | 8 | bslbf |
page_id | 16 | bslbf |
segment_length | 16 | uimsbf |
page_time_out | 8 | uimsbf |
page_version_number | 4 | uimsbf |
page_state | 2 | bslbf |
reserved | 2 | bslbf |
while (processed_length<segment_length) { | ||
region_id | 8 | bslbf |
reserved | 8 | bslbf |
region_horizontal_address | 16 | uimsbf |
region_vertical_address | 16 | uimsbf |
} | ||
} |
Семантика:
page_time_out: период тайм-аута в секундах, после истечения которого экземпляр страницы должен быть уделен с экрана. Точность отсчета тайм-аута приемником-декодером должна быть не хуже -0/+5 с.
page_version_number: версия данного сегмента композиции страницы. При изменении контента сегмента композиции страницы данное поле должно быть инкрементировано (по модулю 16).
page_state: поле содержит статус данного экземпляра страницы субтитров.
Возможные значения поля приведены в таблице 7.
Таблица 7 - Возможные значения поля page_state
Значение | Статус страницы | Действие | Примечание |
00 | normal case (нормальный случай) | Частичное обновление страницы | Набор показа содержит только те элементы субтитров, которые изменились по отношению к предыдущему экземпляру страницы |
01 | acquisition point (точка сбора) | Полное обновление страницы | Набор показа содержит все элементы субтитров, которые должны быть показаны на следующем экземпляре страницы |
10 | mode change (смена режима) | Новая страница | Набор показа содержит все элементы субтитров, которые должны быть показаны на новой странице |
11 | reserved (зарезервирован) | Зарезервирован |
Если статус страницы "mode change" или "acquisition point", то набор показа должен содержать сегменты композиции региона для каждого региона, используемого в данной эпохе.
processed_length: общее число байтов, следующих за полем segment_length, которые уже обработаны.
region_ID: уникальный идентификатор региона в пределах страницы.
region_horizontal_address: поле определяет горизонтальный адрес верхнего левого пикселя данного региона. Крайний левый пиксель из числа активных пикселей имеет горизонтальный адрес равный 0, пиксельные адреса увеличиваются слева направо.
region_vertical_address: определяет вертикальный адрес верхней строки данного региона. Верхняя строка кадра имеет адрес равный 0, адрес строк увеличивается на единицу в пределах кадра сверху вниз.
7.2.3 Сегмент композиции региона
Синтаксис сегмента композиции региона приведен в таблице 8.
Таблица 8 - Синтаксис сегмента композиции региона
Синтаксис | Количество битов | Формат |
region_composition_segment() { | ||
sync_byte | 8 | bslbf |
segment_type | 8 | bslbf |
page_id | 16 | bslbf |
segment_length | 16 | uimsbf |
region_id | 8 | uimsbf |
region_version_number | 4 | uimsbf |
region_fill_flag | 1 | bslbf |
reservid | 3 | bslbf |
region_width | 16 | uimsbf |
region_height | 16 | uimsbf |
region_level_of_compatibility | 3 | bslbf |
region_depth | 3 | bslbf |
reserved | 2 | bslbf |
CLUT_id | 8 | bslbf |
region_8-bit_pixel_code | 8 | bslbf |
region_4-bit_pixel-code | 4 | bslbf |
region_2-bit_pixel-code | 2 | bslbf |
reserved | 2 | bslbf |
while (processed_length<segment_length) { | ||
object_id | 16 | bslbf |
object_type | 2 | bslbf |
object_provider_flag | 2 | bslbf |
object_horizontal_position | 12 | uimsbf |
reserved | 4 | bslbf |
object_vertical_position | 12 | uimsbf |
if (object_type == 0x01 or object_type == 0x02) { | ||
foreground_pixel_code | 8 | bslbf |
background_pixel_code | 8 | bslbf |
} | ||
} | ||
} |
Семантика:
region_ID: 8-битовое поле, однозначно идентифицирует регион, информация о котором содержится в данном сегменте композиции региона.
region_version_number: указывает на версию данного региона. Номер версии должен быть инкрементирован (по модулю 16) при следующих условиях:
- установлен флаг region_fill_flag;
- семейство таблиц ТПЦП изменено;
- регион содержит список объектов ненулевой длины.
region_fill_flag: если данное поле установлено в '1', указывает, что регион должен быть заполнен цветом фона, определенным в поле region_n-bit_pixel_code данного сегмента.
region_width: определяет ширину данного региона в пикселях.
region_height: определяет высоту данного региона в пикселях.
region_level_of_compatibility: указывает минимальный тип ТПЦП, необходимый декодеру для декодирования данного региона согласно таблице 9.
Таблица 9 - Минимальный тип ТПЦП, необходимый декодеру для декодирования региона
Значение | Минимальный тип ТПЦП |
0x00 | Зарезервировано |
0x01 | ТПЦП с 2-битными записями |
0x02 | ТПЦП с 4-битными записями |
0x03 | ТПЦП с 8-битными записями |
0x04... 0x07 | Зарезервировано |
region_depth: определяет назначенную глубину пикселей для данного региона согласно таблице 10.
Таблица 10 - Глубина пикселей региона
Значение | Глубина пикселей региона |
0x00 | Зарезервировано |
0x01 | 2 бита |
0x02 | 4 бита |
0x03 | 8 битов |
0x04... 0x07 | Зарезервировано |
CLUT_id: определяет семейство таблиц ТПЦП, относящихся к данному региону.
region_8-bit_pixel-code: определяет запись примененной 8-битной ТПЦП как цвет фона для региона, если флаг region_fill_flag установлен, при условии что глубина региона составляет 8 битов. Значение этого поля не определено, если глубина региона 2 или 4 бита.
region_4-bit_pixel-code: определяет запись примененной 4-битной ТПЦП как цвет фона для региона, если флаг region_fill_flag установлен, при условии что глубина региона составляет 4 бита, или если глубина региона 8 битов, при условии что поле region_level_of_compatibility определяет, что 4-битная ТПЦП соответствует минимальным требованиям. В любом другом случае значение этого поля не определено.
region_2-bit_pixel-code: определяет запись примененной 2-битной ТПЦП как цвет фона для региона, если флаг region_fill_flag установлен, при условии что глубина региона составляет 2 бита, или если глубина региона 4 или 8 битов, при условии, что поле region_level_of_compatibility определяет, что 2-битная ТПЦП соответствует минимальным требованиям. В любом другом случае значение этого поля не определено.
processed_length: общее количество байтов после поля segment_length, которые уже обработаны.
object_id: идентификатор объекта, показываемого в регионе.
object_type: тип объекта согласно таблице 11.
Таблица 11 - Тип объекта
Значение | Тип объекта |
0x00 | basic_object, рисунок |
0x01 | basic_object, символ |
0x02 | composite_object, строка символов |
0x03 | Зарезервировано |
object_provider_flag: 2-битовый флаг, показывающий, как предоставлен данный объект, согласно таблице 12.
Таблица 12 - Способ предоставления объекта
Значение | Способ предоставления объекта |
0x00 | Предоставлен в потоке субтитров |
0x01 | Предоставлен из ПЗУ приемника |
0x02 | Зарезервировано |
0x03 | Зарезервировано |
object_horizontal_position: определяет горизонтальное положение верхнего левого пикселя объекта, выраженного в числе горизонтальных пикселей относительно левого края связанного региона. Указанное горизонтальное положение должно находиться внутри региона, и его значение должно быть в диапазоне между 0 и region_width-1.
object_vertical_position: определяет вертикальное положение верхнего левого пикселя объекта, выраженного в числе строк, относительно верхней части связанного региона. Указанное вертикальное положение должно находиться внутри региона, и его значение должно быть в диапазоне между 0 и region_height-1.
foreground_pixel_code: определяет запись в примененной 8-битной ТПЦП, которая была выбрана в качестве цвета переднего плана символа(-ов).
background_pixel_code: определяет запись в примененной 8-битной ТПЦП, которая была выбрана в качестве цвета фона символа(-ов).
Примечание - приемники-декодеры с 4- и 16-битными ТПЦП получают цвета переднего плана и фона через схемы сокращения, описанные в разделе 9 настоящего стандарта.
7.2.4 Сегмент определения ТПЦП
Цвета, которые должны применяться в семействе таблиц ТПЦП, передаются в сегменте определения ТПЦП согласно таблице 13.
Таблица 13 - Сегмент определения ТПЦП
Синтаксис | Количество битов | Формат |
CLUT_definition_segment() { | ||
sync_byte | 8 | bslbf |
segment_type | 8 | bslbf |
page_id | 16 | bslbf |
segment_length | 16 | uimsbf |
CLUT-id | 8 | bslbf |
CLUT_version_number | 4 | uimsbf |
reserved | 4 | bslbf |
while (processed_length<segment_length) { | ||
CLUT_entry_id | 8 | bslbf |
2-bit/entry_CLUT_flag 1 bslbf | 1 | bslbf |
4-bit/entry_CLUT_flag 1 bslbf | 1 | bslbf |
8-bit/entry_CLUT_flag 1 bslbf | 1 | bslbf |
reserved | 4 | bslbf |
full_range_flag | 1 | bslbf |
if full_range_flag=='1' { | ||
Y-value | 8 | bslbf |
Cr-value | 8 | bslbf |
Cb-value | 8 | bslbf |
T-value | 8 | bslbf |
} else { | ||
Y-value | 6 | bslbf |
Cr-value | 4 | bslbf |
Cb-value | 4 | bslbf |
T-value | 2 | bslbf |
} | ||
} | ||
} |
Семантика:
CLUT-id: Уникальный в пределах страницы идентификатор семейства ТПЦП, данные которого содержатся в этом сегменте.
CLUT_version_number: указывает на версию этого сегмента данных. Когда любое содержание этого сегмента меняется, номер версии подлежит инкременту (по модулю 16).
processed_length: общее количество байтов после поля segment_length, которые были обработаны.
CLUT_entry_id: определяет номер записи ТПЦП. Первая запись ТПЦП идет под номером 0.
2-bit/entry_CLUT_flag: если это поле установлено в '1', это указывает, что данное значение ТПЦП должно быть загружено в определенную запись 2-битовой ТПЦП.
4-bit/entry_CLUT_flag: если это поле установлено в '1', это указывает, что данное значение ТПЦП должно быть загружено в определенную запись 4-битовой ТПЦП.
8-bit/entry_CLUT_flag: если это поле установлено в '1', это указывает, что данное значение ТПЦП должно быть загружено в определенную запись 8-битовой ТПЦП.
Только один флаг N-bit/entry_CLUT_flag (где N - 2, 4 или 8) должен быть установлен в '1' в пределах одного поля CLUT_entry_id и связан c Y-, Cr-, Cb- и Т-значениями.
full_range_flag: если это поле установлено в '1', это указывает, что поля Y_value, Cr_value, Cb_value и T_value имеют полное 8-битное разрешение. Если оно установлено в '0', то эти поля содержат только старшие значащие биты.
Y_value: выходное значение Y ТПЦП для данной записи. Значение 0 поля Y_value сигнализирует о полной прозрачности. В этом случае значения полей Cr_value, Cb_value и T_value не важны и должны быть установлены в ноль.
Cr_value: выходное значение Cr ТПЦП для данной записи.
Cb_value: выходное значение Cb ТПЦП для данной записи.
T_value: выходное значение прозрачности ТПЦП для данной записи. Значение 0 данного поля означает полную непрозрачность. Максимальное значение плюс соответствует полной прозрачности. Для всех других значений уровень прозрачности должен быть определен линейной интерполяцией.
Полная прозрачность достигается установкой в '0' поля Y_value.
7.2.5 Сегмент данных объекта
Синтаксис сегмента данных объекта приведен в таблице 14.
Таблица 14 - Синтаксис сегмента данных объекта
Синтаксис | Кол-во битов | Формат |
object_data_segment() { | ||
sync_byte | 8 | bslbf |
segment_type | 8 | bslbf |
page_id | 16 | bslbf |
segment_length | 16 | uimsbf |
object_id | 16 | bslbf |
object_version_number | 4 | uimsbf |
object_coding_method | 2 | bslbf |
non_modifying_colour_flag | 1 | bslbf |
reserved 1 | 1 | |
if (object_coding_method == '00') { | ||
top_field_data_block_length | 16 | uimsbf |
bottom_field_data_block_length | 16 | uimsbf |
while (processed_length<top_field_data block_length) | ||
pixel-data_sub-block() | ||
while (processed_length<bottom_field_data_block_length) | ||
pixel-data_sub-block() | ||
if (!wordaligned()) | ||
8_stuff_bits | 8 | bslbf |
} | ||
if (object_coding_method == '01') { | ||
number of codes | 8 | uimsbf |
for (i == 1, i <= number of codes, i ++) | ||
character_code | 16 | bslbf |
} | ||
} |
Семантика:
object_id: уникальный в пределах страницы идентификатор объекта, данные которого содержатся в этом сегменте.
object_version_number: указывает на версию данных этого сегмента. Когда любое содержание этого сегмента меняется, номер версии подлежит инкременту (по модулю 16).
object_coding_method: определяет метод кодирования объекта согласно таблице 15.
Таблица 15 - Методы кодирования объекта
Значение | Метод кодирования объекта |
0x00 | Кодирование пикселей |
0x01 | Кодирование как строка символов |
0x02 | Зарезервировано |
0x03 | Зарезервировано |
non_modifying_colour_flag: если это поле установлено в '1', это указывает, что запись ТПЦП со значением '1' является немодифицирующим цветом. Когда немодифицирующий цвет будет назначен пикселю объекта, пиксель основного фона региона или объекта не должен быть изменен. Это может использоваться для создания "прозрачных отверстий в объектах".
top_field_data_block_length: определяет число байтов, содержащихся в субблоке пиксельных данных верхнего поля.
bottom_field_data_block_length: определяет число байтов, содержащихся в субблоке пиксельных данных нижнего поля.
Для каждого объекта субблок пиксельных данных верхнего поля и субблок пиксельных данных нижнего поля должны передаваться в одном сегменте object_data_segment. Если этот сегмент не содержит данных для нижнего поля, т.е. bottom_field_data_block_length содержит значение '0x0000', то данные для верхнего поля должны быть также действительны для нижнего поля.
processed_length: число байтов поля(-ей) в цикле, которые были обработаны декодером.
8_stuff_bits: восемь битов заполнения, которые должны быть равны '0000 0000'.
number_of_codes: определяет число кодов символов в строке.
character_code: определяет символ через его индексный номер в таблице символов, определенной в дескрипторе subtitle_descriptor. Каждая ссылка на таблицу символов учитывается как отдельный код символа, даже если получающийся символ не занимает интервалов. Например, знаки ударения учитываются как отдельные коды символов.
7.2.5.1 Субблок пиксельных данных pixel-data_sub-block
Синтаксис субблока пиксельных данных приведен в таблице 16.
Таблица 16 - Синтаксис субблока пиксельных данных
Синтаксис | Кол-во битов | Формат |
pixel-data_sub-block() { | ||
data_type | 8 | bslbf |
if data_type == '0x10' { | ||
repeat { | ||
2-bit/pixel_code_string() | ||
} until (end of 2-bit/pixel_code_string) | ||
while (!bytealigned()) | ||
2_stuff_bits | 2 | bslbf |
if data_type == '0x11' { | ||
repeat { | ||
4-bit/pixel_code_string() | ||
} until (end of 4-bit/pixel_code_string) | ||
if (!bytealigned()) | ||
4_stuff_bits | 4 | bslbf |
} | ||
} | ||
if data_type == '0x12' { | ||
repeat { | ||
8-bit/pixel_code_string() | ||
} until (end of 8-bit/pixel_code_string) | ||
} | ||
if data_type == '0x20' | ||
2_to_4-bit_map-table | 16 | bslbf |
if data_type == '0x21' | ||
2_to_8-bit map-table | 32 | bslbf |
if data_type == '0x22' | ||
4_to_8-bit_map-table | 128 | bslbf |
} |
Семантика:
data_type: указывает на тип информации, содержащейся в субблоке пиксельных данных согласно таблице 17.
Таблица 17 - Тип информации субблока пиксельных данных
Значение | Тип информации |
0x10 | строка кодов 2 бита/пиксель |
0x11 | строка кодов 4 бита/пиксель |
0x12 | строка кодов 8 битов/пиксель |
0x20 | Данные таблицы 2_to_4-bit_map |
0x21 | Данные таблицы 2_to_8-bit_map |
0x22 | Данные таблицы 4_to_8-bit_map |
0xF0 | Конец кода строки объекта |
Примечание - Все остальные значения зарезервированы. |
Значение 0xF0 (конец кода строки объекта) должно быть включено после каждой серии кодовых строк, которые вместе составляют строку объекта.
2_to_4-bit_map-table: определяет, как отобразить коды 2-бита/пиксель на ТПЦП с 4-битовыми записями путем перечисления 4 номеров записей по 4 бита каждая; запись номер 0 первая, запись номер 3 последняя.
2_to_8-bit_map-table: определяет, как отобразить коды 2-бита/пиксель на ТПЦП с 8-битовыми записями путем перечисления 4 номеров записей по 8 битов каждая; запись номер 0 первая, запись номер 3 последняя.
4_to_8-bit_map-table: определяет, как отобразить коды 4-бита/пиксель на ТПЦП с 8-битовыми записями путем перечисления 16 номеров записей по 8 битов каждая; запись номер 0 первая, запись номер 15 последняя.
2_stuff_bits: два бита заполнения, которые должны быть равны '00'.
4_stuff_bits: четыре бита заполнения, которые должны быть равны '0000'.
7.2.5.2 Синтаксис и семантика строк пиксельных кодов pixel_code_string
Синтаксис строк пиксельных кодов 2 бита/пиксель приведен в таблице 18.
Таблица 18 - Синтаксис строк пиксельных кодов 2 бита/пиксель
Синтаксис | Кол-во битов | Формат |
2-bit/pixel_code_string() { | ||
if (nextbits() !='00') { | ||
2-bit_pixel-code | 2 | bslbf |
} else { | ||
2-bit_zero | 2 | bslbf |
switch_1 | 1 | bslbf |
if (switch_1 == '1') { | ||
run_length_3-10 | 3 | uimsbf |
2-bit_pixel-code | 2 | bslbf |
} else { | ||
switch_2 | 1 | bslbf |
if (switch_2 == '0') { | ||
switch_3 | 2 | bslbf |
if (switch_3 == '10') { | ||
run_length_12-27 | 4 | uimsbf |
2-bit_pixel-code | 2 | bslbf |
} | ||
if (switch_3 == '11') { | ||
run_length_29-284 | 8 | uimsbf |
2-bit_pixel-code | 2 | bslbf |
} | ||
} | ||
} | ||
} | ||
} |
Семантика:
2-bit_pixel-code: 2-битный код, определяет псевдоцвет пикселя или как номер записи ТПЦП с четырьмя записями, или как номер записи таблицы перекодировки.
2-bit_zero: 2-битовое поле, равное '00'.
switch_1: 1-разрядный флаг-переключатель, который определяет значение последующих полей.
run_length_3-10: число пикселей минус 3, которое должно быть установлено в псевдоцвет, как определено далее.
switch_2: 1-разрядный флаг-переключатель. Если установлен в '1', сигнализирует, что один пиксель должен быть установлен в псевдоцвет (запись) '00', также указывает на присутствие последующих полей.
switch_3: 2-разрядный флаг-переключатель со значениями согласно таблице 19.
Таблица 19 - значения 2-разрядного флага-переключателя switch_3
Значение | Описание |
00 | Конец строки 2-bit/pixel_code_string |
01 | Два пикселя должны быть установлены в псевдоцвет (запись) '00' |
10 | Следующие 6 битов содержат закодированные пиксельные данные длины пробега |
11 | Следующие 10 битов содержат закодированные пиксельные данные длины пробега |
run_length_12-27: число пикселей минус 12, которое должно быть установлено в псевдоцвет, как определено далее.
run_length_29-284: число пикселей минус 29, которое должно быть установлено в псевдоцвет, как определено далее.
Синтаксис строк пиксельных кодов 4 бита/пиксель приведен в таблице 20.
Таблица 20 - Синтаксис строк пиксельных кодов 4 бита/пиксель
Синтаксис | Кол-во битов | Формат |
4-bit/pixel_code_string() { | ||
if (nextbits() != '0000') { | ||
4-bit_pixel-code 4 bslbf | 4 | bslbf |
} else { | ||
4-bit_zero | 4 | bslbf |
switch_1 | 1 | bslbf |
if (switch_1 == '0') { | ||
if (nextbits() != '000') | ||
run_length_3-9 | 3 | uimsbf |
else | ||
end_of_string_signal | 3 | bslbf |
} else { | ||
switch_2 | 1 | bslbf |
if (switch_2 == '0') { | ||
run_length_4-7 | 2 | bslbf |
4-bit_pixel-code | 4 | bslbf |
} else { | ||
switch_3 | 2 | bslbf |
if (switch_3 == '10') { | ||
run_length_9-24 | 4 | uimsbf |
4-bit_pixel-code | 4 | bslbf |
} | ||
if (switch_3 == '11') { | ||
run_length_25-280 | 8 | uimsbf |
4-bit_pixel-code | 4 | bslb |
} | ||
} | ||
} | ||
} | ||
} |
Семантика:
4-bit_pixel-code: 4-битный код, определяет псевдоцвет пикселя или как номер записи ТПЦП с шестнадцатью записями, или как номер записи таблицы перекодировки.
4-bit_zero: 4-битовое поле равное '0000'.
switch_1: 1-разрядный флаг-переключатель, который определяет значение последующих полей.
run_length_3-9: число пикселей минус 2, которое должно быть установлено в псевдоцвет (запись) '0000'.
end_of_string_signal: 3-битовое поле со значением '000'. Наличие этого поля указывает на конец кодовой строки 4-bit/pixel_code_string.
switch_2: 1-разрядный флаг-переключатель. Если установлен в '0', сигнализирует, что следующие 6 битов содержат закодированные пиксельные данные длины пробега, иначе указывает на присутствие последующих полей.
switch_3: 2-разрядный флаг-переключатель со значениями согласно таблице 21.
Таблица 21 - значения 2-разрядного флага-переключателя switch_3
Значение | Описание |
00 | Один пиксель должен быть установлен в псевдоцвет (запись) '0000' |
01 | Два пикселя должны быть установлены в псевдоцвет (запись) '0000' |
10 | Следующие 8 битов содержат закодированные пиксельные данные длины пробега |
11 | Следующие 12 битов содержат закодированные пиксельные данные длины пробега |
run_length 4-7: число пикселей минус 4, которое должно быть установлено в псевдоцвет, как определено далее.
run_length_9-24: число пикселей минус 9, которое должно быть установлено в псевдоцвет, как определено далее.
run_length_25-280: число пикселей минус 25, которое должно быть установлено в псевдоцвет, как определено далее.
Синтаксис строк пиксельных кодов 8 битов/пиксель приведен в таблице 22.
Таблица 22 - Синтаксис строк пиксельных кодов 8 битов/пиксель
Синтаксис | Кол-во битов | Формат |
8-bit/pixel_code_string() { | ||
if (nextbits() != '0000 0000') { | ||
8-bit_pixel-code | 8 | bslbf |
} else { | ||
8-bit_zero | 8 | bslbf |
switch_1 | 1 | bslbf |
if switch_1 == '0' { | ||
if nextbits() != '000 0000' | ||
run_length_1-127 | 7 | uimsbf |
else | ||
end_of_string_signal | 7 | bslbf |
} else { | ||
run_length_3-127 | 7 | bslbf |
8-bit_pixel-code | 8 | uimsbf |
} | ||
} | ||
} |
Семантика:
8-bit_pixel-code: 8-битный код, определяет псевдоцвет пикселя как номер записи ТПЦП с 256 записями.
8-bit_zero: 8-битовое поле равное '0000 0000'.
switch_1: 1-разрядный флаг-переключатель, который определяет значение последующих полей.
run_length_1-127: число пикселей, которое должно быть установлено в псевдоцвет (запись) '00'.
end_of_string_signal: 7-битовое поле со значением '000 0000'. Наличие этого поля указывает на конец кодовой строки 8-bit/pixel_code_string.
run_length_3-127: число пикселей, которое должно быть установлено в псевдоцвет, как определено далее. Данное поле не должно содержать значение менее 3.
7.2.6 Сегмент конца набора показа
Синтаксис сегмента конца набора показа приведен в таблице 23.
Таблица 23 - Синтаксис сегмента конца набора показа
Синтаксис | Кол-во битов | Формат |
end_of_display_set_segment() { | ||
sync_byte 8 bslbf | 8 | bslbf |
segment_type 8 bslbf | 8 | bslbf |
page_id 16 bslbf | 16 | bslbf |
segment_length 16 uimsbf | 16 | uimsbf |
} |
Семантика:
page_id: если служба субтитров использует совместные данные, то поле page_id должно быть закодировано значением идентификатора вспомогательной страницы, содержащимся в дескрипторе субтитров. Иначе поле page_id должно иметь значение идентификатора страницы композиции.
7.2.7 Сегмент сигнализации расхождения
Сегмент сигнализации расхождения используется для поддержки субтитров в стереоскопическом (3D) телевизионном контенте.
Синтаксис сегмента сигнализации расхождения приведен в таблице 24.
Таблица 24 - Синтаксис сегмента сигнализации расхождения
Синтаксис | Кол-во битов | Формат |
disparity_signalling_segment() { | ||
sync_byte | 8 | bslbf |
segment_type | 8 | bslbf |
page_id | 16 | bslbf |
segment_length | 16 | uimsbf |
dss_version_number | 4 | uimsbf |
disparity_shift_update_sequence_page_flag | 1 | bslbf |
reserved | 3 | bslbf |
page_default_disparity_shift | 8 | tcimsbf |
if (disparity_shift_update_sequence_page_flag ==1) { | ||
disparity_shift_update_sequence() | ||
} | ||
while (processed_length<segment_length) { | ||
region_id | 8 | uimsbf |
disparity_shift_update_sequence_region_flag | 1 | bslbf |
reserved | 5 | uimsbf |
number_of_subregions_minus_1 | 2 | uimsbf |
for (n=0; n<=number_of_subregions_minus_1; n++) { | ||
if (number_of_subregions_minus_1>0) { | ||
subregion_horizontal_position | 16 | uimsbf |
subregion_width | 16 | uimsbf |
} | ||
subregion_disparity_shift_integer_part | 8 | tcimsbf |
subregion_disparity_shift_fractional_part | 4 | uimsbf |
reserved | 4 | uimsbf |
if (disparity_shift_update_sequence_region_flag ==1) { | ||
disparity_shift_update_sequence() | ||
} | ||
} | ||
} | ||
} |
Синтаксис последовательности disparity_shift_update_sequence приведен в таблице 25.
Таблица 25 - Синтаксис последовательности disparity_shift_update_sequence
Синтаксис | Кол-во битов | Формат |
disparity_shift_update_sequence() { | ||
disparity_shift_update_sequence_length | 8 | bslbf |
interval_duration[23..0] | 24 | uimsbf |
division_period_count | 8 | uimsbf |
for (i=0; i<division_period_count; i++) { | ||
interval_count | 8 | uimsbf |
disparity_shift_update_integer_part | 8 | tcimsbf |
} | ||
} |
Семантика:
dss_version_number: указывает версию данного сегмента сигнализации расхождения. Номер версии подлежит инкременту (по модулю 16), если любой из параметров этого сегмента был изменен.
disparity_shift_update_sequence_page_flag: если данное поле равно '1', то сразу после поля page_default_disparity_shift должно следовать поле disparity_shift_update_sequence. Иначе, если данное поле равно '0', поле disparity_shift_update_sequence после поля page_default_disparity_shift не добавляется.
page_default_disparity_shift: определяет значение расхождения по умолчанию, применяемое во всех регионах страницы (и ко всем объектам в пределах этих регионов) в том случае, если декодер не может применить частные значения расхождений для каждого региона. Значение расхождения является целым числом со знаком и позволяет установить расхождение по умолчанию в диапазоне от +127 до -128 пикселей.
processed_length: общее число байтов после поля segment_length, которые были обработаны.
region_ID: идентифицирует регион, к которому относятся последующие данные субрегионов.
disparity_shift_update_sequence_region_flag: если равен '1', то поле disparity_shift_update_sequence входит во все субрегионы данного региона. Если равен '0', то поле disparity_shift_update_sequence не входит в данный регион.
number_of_subregions_minus_1: число субрегионов минус один, которые используются в данном регионе. Если number_of_subregjons_minus_1=0, то регион имеет только один субрегион размером с основной регион и полученное расхождение применяется ко всему региону.
subregion_horizontal_position: определяет крайнюю левую позицию пикселя этого субрегиона. Это значение должно быть в пределах объявленного размера региона, в котором находится данный субрегион, и должно лежать в диапазоне 0...4095. Как и для региона, эта горизонтальная позиция устанавливается относительно страницы.
subregion_width: задает ширину субрегиона в пикселях. Сочетание subregion_horizontal_position и subregion_width всегда должны находиться в пределах объявленного размера региона, в котором находится данный субрегион. Значение этого поля должно находиться в диапазоне 0...4095.
subregion_disparity_shift_integer_part: определяет целую часть значения сдвига расхождения, которое должно быть применено для всех пиксельных данных субтитров, находящихся в этом субрегионе. Это обеспечивает диапазон расхождения от +127 до -128 пикселей.
subregion_disparity_shift_fractional_part: определяет дробную часть значения сдвига расхождения, которое должно быть применено для всех пиксельных данных субтитров, находящихся в этом субрегионе. Если используется как расширения целой части значения сдвига расхождения, точность сдвига расхождения составляет 1/16 пикселя. Дробная часть является беззнаковой величиной (0b0001 соответствует 1/16 пикселя и 0b1111 соответствует 15/16 пикселя) и должна всегда прибавляться к целой части. Например, значение расхождения -0,75 указывают как [-1, 0,25], значение -4,5 указывают как [-5, 0,5].
disparity_shift_update_sequence_length: определяет количество байтов, содержащихся в disparity_shift_update_sequence, следующих заданным полем.
interval_duration: 24-битовое поле, указывает единицу измерения интервала, используемого при расчете PTS для обновления расхождения (соответствует шагу увеличения частоты STC в 90 кГц). Значение interval_duration должно быть кратно (
division_period_count: определяет количество уникальных значений расхождений (
interval_count: определяет множитель, используемый для расчета PTS для данного обновления расхождения от начального значения PTS. Расчет для PTS этого обновления выполняют по формуле:
PTS
где interval_count - множитель
PTS
PTS
disparity_shift_update_integer_part: определяет целую часть значения обновления расхождения, которое должно быть применено ко всем пиксельным данным субтитров, находящихся на данной странице или в субрегионе. Это обеспечивает диапазон расхождения от +127 до -128 пикселей.
8 Требования к данным субтитров
8.1 Обзор идентификаторов
Все идентификаторы (region_id, CLUT_id, object_id) должны быть уникальны в пределах страницы.
8.2 Обзор зависимостей
8.2.1 Страница композиции
Сегмент на странице композиции может ссылаться на сегменты на данной странице композиции, а также на сегменты на вспомогательной странице.
8.2.2 Вспомогательная страница
Вспомогательная страница может содержать только сегменты определения ТПЦП и сегменты данных объекта. Ни сегменты композиции страницы, ни сегменты композиции региона не должны содержаться на вспомогательной странице. На сегменты на вспомогательной странице можно ссылаться с сегментов с любой страницы композиции.
Примечание - Из положений 8.2.1 и 8.2.2 следует, что на сегменты на странице композиции можно ссылаться только с сегментов с той же страницы композиции.
8.3 Порядок доставки
Поле PTS в последовательных пакетах PES должен либо оставаться неизменным, либо меняться монотонно. Таким образом, PES пакеты доставляются в их временном порядке представления.
Если происходят разрывы во временной базе PCR, то могут произойти разрывы в последовательности PTS.
8.4 Позиционирование регионов и объектов
8.4.1 Регионы
Регион монополизирует строки развертки, на которых он показывается; два региона не могут быть показаны один за другим в горизонтальном направлении.
8.4.2 Объекты, совместно использующие PTS
Объекты, синхронизируемые одним и тем же PTS (являющиеся частью одного и того же набора показа), не должны перекрываться на экране.
8.4.3 Объекты, добавленные к региону
Если объект добавляется к региону, новые пиксельные данные должны перезаписать текущую информацию в регионе. Таким образом, новый объект может (частично) перекрыть старые объекты. Провайдер программы должен позаботиться о том, чтобы новые пиксельные данные переписывали только ту информацию, которая должна быть заменена, а также, чтобы они переписывали всю информацию на экране, которая не должна быть сохранена.
Примечание - Пиксель либо определяется "старым объектом или цветом фона, либо "новым объектом. Если пиксель переписывается, то ни одно из его предыдущих определений не сохраняется.
9 Преобразование цветовых компонентов
Система субтитров поддерживает приемники-декодеры, которые могут отображать 4, 16 и 256 цветов, пиксельные коды при этом используют 2-, 4- и 8-битные ТПЦП соответственно. Для отображения субтитров с большим количеством цветов на приемниках, поддерживающих меньшее количество цветов, должна применяться редукция (при условии разрешения у региона декодировать ТПЦП соответствующей разрядности).
9.1 Редукция 4 битов до 2 битов
Зависимость выходных битов от входных должна быть следующая:
где b
b
9.2 Редукция 8 битов до 2 битов
Зависимость выходных битов от входных должна быть следующая:
где b
b
9.3 Редукция 8 битов до 4 битов
Зависимость выходных битов от входных должна быть следующая:
где b
b
10 Содержание таблиц преобразования цветовой палитры (ТПЦП) и таблиц перекодировки по умолчанию
10.1 Содержание 256-цветной ТПЦП по умолчанию
Содержание 256-цветной ТПЦП по умолчанию формируется в соответствии с алгоритмом, приведенным на рисунке 3.
Рисунок 3 - Алгоритм формирования содержания 256-цветной ТПЦП по умолчанию
Семантика:
b1, b2, b3, b4, b5, b6, b7, b8 - биты 8-битового поля номера записи, бит b1 приходит первым.
R - уровень красного.
G - уровень зеленого.
В - уровень синего.
Т - уровень прозрачности.
10.2 Содержание 16-цветной ТПЦП по умолчанию
Содержание 16-цветной ТПЦП по умолчанию формируется в соответствии с алгоритмом, приведенным на рисунке 4.
Рисунок 4 - Алгоритм формирования содержания 16-цветной ТПЦП по умолчанию
Семантика:
b1, b2, b3, b4 - биты 4-битового поля номера записи, бит b1 приходит первым.
R - уровень красного.
G - уровень зеленого.
В - уровень синего.
Т - уровень прозрачности.
10.3 Содержание 4-цветной ТПЦП по умолчанию
Содержание 4-цветной ТПЦП по умолчанию формируется в соответствии с алгоритмом, приведенным на рисунке 5.
Рисунок 5 - Алгоритм формирования содержания 4-цветной ТПЦП по умолчанию
Семантика:
b1, b2 - биты 2-битового поля номера записи, бит b1 приходит первым.
R - уровень красного.
G - уровень зеленого.
В - уровень синего.
Т - уровень прозрачности.
10.4 Содержание таблицы перекодировки 2 в 4 бита по умолчанию
Содержание таблицы перекодировки 2 в 4 бита по умолчанию в таблице 26.
Таблица 26 - Содержание таблицы перекодировки 2 в 4 бита по умолчанию
Входное значение | Выходное значение |
00 | 0000 |
01 | 0111 |
10 | 1000 |
11 | 1111 |
Во входном и выходном значениях первый бит находится слева.
10.5 Содержание таблицы перекодировки 2 в 8 битов по умолчанию
Содержание таблицы перекодировки 2 в 8 битов по умолчанию в таблице 27.
Таблица 27 - Содержание таблицы перекодировки 2 в 8 битов по умолчанию
Входное значение | Выходное значение |
00 | 0000 0000 |
01 | 0111 0111 |
10 | 1000 1000 |
11 | 1111 1111 |
Во входном и выходном значениях первый бит находится слева.
10.6 Содержание таблицы перекодировки 4 в 8 битов по умолчанию
Содержание таблицы перекодировки 4 в 8 битов по умолчанию в таблице 28.
Таблица 28 - Содержание таблицы перекодировки 4 в 8 битов по умолчанию
Входное значение | Выходное значение |
0000 | 0000 0000 |
0001 | 0001 0001 |
0010 | 0010 0010 |
0011 | 0011 0011 |
0100 | 0100 0100 |
0101 | 0101 0101 |
0110 | 0110 0110 |
0111 | 0111 0111 |
1000 | 1000 1000 |
1001 | 1001 1001 |
1010 | 1010 1010 |
1011 | 1011 1011 |
1100 | 1100 1100 |
1101 | 1101 1101 |
1110 | 1110 1110 |
1111 | 1111 1111 |
Во входном и выходном значениях первый бит находится слева.
Библиография
[1] | ETSI EN 300 468 | Телевидение вещательное цифровое (DVB); Спецификация для служебной информации (СИ) в DVB системах (Digital Video Broadcasting (DVB); Specification for Service Information (SI) in DVB systems) |
[2] | ETSI EN 300 743 (V1.2.1) | Телевидение вещательное цифровое (DVB); Системы субтитров (Digital Video Broadcasting (DVB); Subtitling systems) |
[3] | ISO/IEC 13818-1 | Информационные технологии - Общее кодирование движущихся изображений и связанной с ними звуковой информации. Часть 1. Системы (Information technology - Generic coding of moving pictures and associated audio information: Systems) |
УДК 621.397.132.129:006.354 | ОКС 33.170 | |
Ключевые слова: субтитры, таблица перекодировки, ТПЦП, декодер |
Электронный текст документа
и сверен по:
, 2020