Главная // Актуальные документы // ГОСТ Р (Государственный стандарт)
СПРАВКА
Источник публикации
М.: Стандартинформ, 2016
Примечание к документу
Документ введен в действие с 1 июня 2017 года.
Название документа
"ГОСТ Р 56953-2016. Национальный стандарт Российской Федерации. Телевидение вещательное цифровое. Системы субтитров. Основные параметры"
(утв. и введен в действие Приказом Росстандарта от 07.06.2016 N 546-ст)

"ГОСТ Р 56953-2016. Национальный стандарт Российской Федерации. Телевидение вещательное цифровое. Системы субтитров. Основные параметры"
(утв. и введен в действие Приказом Росстандарта от 07.06.2016 N 546-ст)


Содержание


Утвержден и введен в действие
Приказом Федерального агентства
по техническому регулированию
и метрологии
от 7 июня 2016 г. N 546-ст
НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ
ТЕЛЕВИДЕНИЕ ВЕЩАТЕЛЬНОЕ ЦИФРОВОЕ
СИСТЕМЫ СУБТИТРОВ
ОСНОВНЫЕ ПАРАМЕТРЫ
Digital Video Broadcasting. Subtitling systems. Basic
parameters
ETSI EN 300 743 V1.5.1 (2014-01)
Digital Video Broadcasting (DVB); Subtitling systems
(NEQ)
ГОСТ Р 56953-2016
ОКС 33.170
ОКП 657400
Дата введения
1 июня 2017 года
Предисловие
1 РАЗРАБОТАН Автономной некоммерческой организацией "Научно-технический центр информатики" (АНО "НТЦИ")
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 480 "Связь"
3 УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 7 июня 2016 г. N 546-ст
4 Настоящий стандарт разработан с учетом основных нормативных положений стандарта Европейского института по стандартизации в области телекоммуникаций (ETSI) ЕТСИ ЕН 300 743 V1.5.1 (2014-01) "Телевидение вещательное цифровое. Системы субтитров" [ETSI EN 300 743 V1.5.1 (2014-01) "Digital Video Broadcasting (DVB); Subtitling systems", NEQ]
5 ВВЕДЕН ВПЕРВЫЕ
Правила применения настоящего стандарта установлены в ГОСТ Р 1.0-2012 (раздел 8). Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе "Национальные стандарты", а официальный текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя "Национальные стандарты". Соответствующая информация, уведомления и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
1 Область применения
Настоящий стандарт определяет систему кодирования субтитров, логотипов и иных графических элементов для их передачи в транспортных потоках DVB. Данная система использует таблицы преобразования цветовой палитры (ТПЦП) для определения цветов графических элементов. Транспортировка кодированных графических элементов основана на системе MPEG-2.
Требования настоящего стандарта следует учитывать при разработке, изготовлении и эксплуатации оборудования DVB.
2 Нормативные ссылки
В настоящем стандарте использованы нормативные ссылки на следующие стандарты:
ГОСТ Р 52210-2004 Телевидение вещательное цифровое. Термины и определения
ГОСТ Р 52591-2006 Система передачи данных пользователя в цифровом телевизионном формате. Основные параметры
ГОСТ Р 54994-2012 Телевидение вещательное цифровое. Передача служб 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, язык и идентификаторы страниц должны быть указаны в таблице карты программ (PMT) для интересующей телевизионной услуги (язык и идентификатор страницы в дескрипторе субтитров, определенного в 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] сигнализирует о значениях идентификаторов страниц сегментов, необходимых для декодирования данной службы субтитров. Дескриптор субтитров должен быть включен в состав PMT программы и должен быть связан с 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, содержащие поток субтитров, поступают на буфер передачи размеров B1 байт. Из буфера передачи данные выходят со скоростью R1 кбит/с. Если данные отсутствуют, их скорость равна 0. Для устаревших декодеров размер буфера передачи равен 512 байтам, скорость выходного потока данных равна 192 кбит/с. Для декодеров, которые способны работать с потоками, содержащими сегменты определения дисплея, размер буфера передачи равен 1024 байтам, скорость выходного потока данных равна 400 кбит/с.
Транспортные пакеты из буфера передачи обрабатываются путем отброса заголовков транспортных пакетов и пакетов PES. Значения PTS передаются на следующие этапы обработки субтитров. В препроцессоре сегменты, необходимые для выбранной службы субтитров, выделяются из потока субтитров. Выходным сигналом препроцессора является поток сегментов субтитров, которые фильтруются на основе значения идентификатора страницы, полученного из дескриптора субтитров.
Отобранные сегменты поступают в буфер кодированных данных размером B2 кбайт. Для устаревших декодеров размер буфера кодированных данных равен 24 кбайтам. Для декодеров, которые способны работать с потоками, содержащими сегменты определения дисплея, размер буфера кодированных данных равен 100 кбайтам. Только полные сегменты выходят из данного буфера. Вывод и декодирование сегментов происходит мгновенно (занимает нулевое время). Если сегмент содержит данные пикселей, декодер субтитров останавливает вывод сегментов из буфера кодированных данных, пока все пиксели не будут переданы в буфер пикселей. Пиксельные данные объектов, которые используются более чем один раз, передаются отдельно для каждого использования.
Скорость передачи пиксельных данных в буфер пикселей равна R3 кбит/с, размер буфера пикселей равен B3 кбайтам. Для устаревших декодеров размер буфера пикселей равен 80 кбайтам, скорость входного потока данных равна 512 кбит/с. Для декодеров, которые способны работать с потоками, содержащими сегменты определения дисплея, размер буфера пикселей равен 320 кбайтам, скорость входного потока данных равна 2 Мбит/с.
Данные, необходимые для составления субтитров, такие как композиция страницы, композиции региона, таблицы ТПЦП, хранятся в буфере композиции, который имеет размер 4 кбайта.
5.1 Временная модель декодера
Требования к использованию памяти в модели декодера субтитров зависит от размера и глубины цветности используемых на странице регионов. Полное описание использования памяти декодера должно быть доставлено к началу каждой эпохи. Границы эпох обеспечивают гарантированные точки получения услуги. Границы эпохи сигнализируются сегментами композиции страницы с состоянием страницы типа "смена режима ("mode change).
Буфер пикселей и буфер композиции хранят состояние декодера субтитров. Когда декодер принимает сегмент композиции страницы (СКС) с состоянием страницы типа "смена режима, вся выделенная для предыдущих сегментов память очищается, т.е. состояние декодера сбрасывается.
Все регионы, которые будут использоваться в эпохе, должны представляться в наборе показа сегментами композиции региона (СКР) в сопровождении СКС с состоянием страницы типа "смена режима (первый набор показа в эпохе). Все записи ТПЦП, которые будут использоваться в эпохе, должны быть введены в первом наборе показа. Последующие сегменты могут изменить значения буфера пикселей и буфера композиции, но не могут изменять количество требуемой памяти.
Требования к временной модели декодера:
- в начале эпохи набор показа должен содержать полный набор сегментов СКР для всех регионов, которые будут использоваться в данной эпохе. СКС должен содержать список регионов, представленных в начале эпохи. В отдельных случаях СКС может содержать нулевой список видимых регионов;
- СКР должен присутствовать в наборе показа, если регион должен быть изменен. СКР необязательно должен быть в списке регионов СКС. Это позволяет изменять регионы, пока они не видны;
- СКР могут присутствовать в наборе показа, даже если они не будут изменены;
- декодер должен проверять каждый СКР в наборе показа, чтобы определить, должен ли регион быть модифицирован. Три возможные причины изменения:
- флаг заполнения региона установлен;
- модификация содержания ТПЦП;
- список объектов ненулевой длины.
5.2 Модель буферной памяти
СКС с состоянием страницы типа "смена режима разрушает все предыдущие содержания буфера пикселей и буфера композиции путем стирания их содержимого.
В течение одной эпохи размер выделенной памяти в буфере пикселей остается постоянным.
Размер памяти, выделяемый для региона в буфере пикселей region_bits, определяют по формуле:
region_bits = region_width x region_height x
x region_depth (1)
где 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
while nextbits() = = '0000 1111' {
Subtitling_segment()
}
8
bslbf
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
segment_data_field()
}
16
uimsbf
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: поле идентификатора страницы.
segment_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
if(display_window_flag = = 1) {
16
uimsbf
16
uimsbf
display_window_horizontal_position_minimum
16
uimsbf
16
uimsbf
display_window_horizontal_position_maximum
display_window_vertical_position_minimum
display_window_vertical_position_maximum
}
}
16
uimsbf
Семантика:
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
while (processed_length < segment_length) {
2
bslbf
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
reserved
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
while (processed_length < segment_length) {
2
bslbf
object_id
16
bslbf
object_type
2
bslbf
object_provider_flag
2
bslbf
object_horizontal_position
12
uimsbf
reserved
4
bslbf
object_vertical_position
if (object_type = =0x01 or object_type = = 0x02){
12
uimsbf
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
while (processed_length < segment_length) {
4
bslbf
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
if full_range_flag = ='1' {
1
bslbf
Y-value
8
bslbf
Cr-value
8
bslbf
Cb-value
8
bslbf
T-value
} else {
8
bslbf
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 и связан с Y-, Cr-, Cb- и T-значениями.
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
if (object_coding_method = = '00'){
1
top_field_data_block_length
16
uimsbf
bottom_field_data_block_length
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())
16
uimsbf
8_stuff_bits
}
if (object_coding_method = = '01') {
8
bslbf
number of codes
for (i = = 1, i <= number of codes, i ++)
8
uimsbf
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
if data_type = ='0x10' {
repeat {
2-bit/pixel_code_string()
} until (end of 2-bit/pixel_code_string)
while (!bytealigned())
8
bslbf
2_stuff_bits
if data_type = ='0x11' {
repeat {
4-bit/pixel_code_string()
} until (end of 4-bit/pixel_code_string)
if (!bytealigned())
2
bslbf
4_stuff_bits
}
}
if data_type = ='0x12' {
repeat {
8-bit/pixel_code_string()
} until (end of 8-bit/pixel_code_string)
}
if data_type = ='0x20'
4
bslbf
2_to_4-bit_map-table
if data_type = ='0x21'
16
bslbf
2_to_8-bit_map-table
if data_type = ='0x22'
32
bslbf
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
} else {
2
bslbf
2-bit_zero
2
bslbf
switch_1
if (switch_1 = = '1') {
1
bslbf
run_length_3-10
3
uimsbf
2-bit_pixel-code
} else {
2
bslbf
switch_2
if (switch_2 = = '0') {
1
bslbf
switch_3
if (switch_3 = = '10') {
2
bslbf
run_length_12-27
4
uimsbf
2-bit_pixel-code
}
if (switch_3 = = '11') {
2
bslbf
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
} else {
4
bslbf
4-bit_zero
4
bslbf
switch_1
if (switch_1 = = '0') {
if (nextbits() != '000')
1
bslbf
run_length_3-9
else
3
uimsbf
end_of_string_signal
} else {
3
bslbf
switch_2
if (switch_2 = = '0') {
1
bslbf
run_length_4-7
2
bslbf
4-bit_pixel-code
} else {
4
bslbf
switch_3
if (switch_3 = = '10') {
2
bslbf
run_length_9-24
4
uimsbf
4-bit_pixel-code
}
if (switch_3 = = '11') {
4
bslbf
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
} else {
8
bslbf
8-bit_zero
8
bslbf
switch_1
if switch_1 = = '0' {
if nextbits() != '000 0000'
1
bslbf
run_length_1-127
else
7
uimsbf
end_of_string_signal
} else {
7
bslbf
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
if (disparity_shift_update_sequence_page_flag = =1) {
disparity_shift_update_sequence()
}
while (processed_length<segment_length) {
8
tcimsbf
region_id
8
uimsbf
disparity_shift_update_sequence_region_flag
1
bslbf
reserved
5
uimsbf
number_of_subregions_minus_1
for (n=0; n<= number_of_subregions_minus_1; n++) {
if (number_of_subregions_minus_1 > 0) {
2
uimsbf
subregion_horizontal_position
16
uimsbf
subregion_width
}
16
uimsbf
subregion_disparity_shift_integer_part
8
tcimsbf
subregion_disparity_shift_fractional_part
4
uimsbf
reserved
if (disparity_shift_update_sequence_region_flag = =1) {
disparity_shift_update_sequence()
}
}
}
}
4
uimsbf
Синтаксис последовательности 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
for (i= 0; i< division_period_count; i ++) {
8
uimsbf
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_subregions_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 должно быть кратно (>= 1) периоду кадров и его максимальное значение составляет около 186 секунд.
division_period_count: определяет количество уникальных значений расхождений (>= 1) и, следовательно, количество временных интервалов в цикле "for disparity_shift_update_sequence.
interval_count: определяет множитель, используемый для расчета PTS для данного обновления расхождения от начального значения PTS. Расчет для PTS этого обновления выполняют по формуле:
PTSnew = PTSprevious +
+ (interval_duration * interval_count), (2)
где interval_count - множитель >= 1;
PTSnew - новое значение PTS, увеличивается с каждой итерацией цикла;
PTSprevious - начальное значение PTS, сигнализируется в заголовке PES.
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 битов
Зависимость выходных битов от входных должна быть следующая:
bo1 = bi1
bo2 = bi2 | bi3 | bi4,
где bi1, bi2, bi3, bi4 - последовательность входных битов (bi1 приходит первым);
bo1, bo2 - последовательность выходных битов (bo1 приходит первым).
9.2 Редукция 8 битов до 2 битов
Зависимость выходных битов от входных должна быть следующая:
bo1 = bi1
bo2 = bi2 | bi3 | bi4,
где bi1, bi2, bi3, bi4, bi5, bi6, bi7, bi8 - последовательность входных битов (bi1 приходит первым);
bo1, bo2 - последовательность выходных битов (bo1 приходит первым).
9.3 Редукция 8 битов до 4 битов
Зависимость выходных битов от входных должна быть следующая:
bo1 = bi1
bo2 = bi2
bo3 = bi3
bo4 = bi4,
где bi1, bi2, bi3, bi4, bi5, bi6, bi7, bi8 - последовательность входных битов (bi1 приходит первым);
bo1, bo2, bo3, bo4 - последовательность выходных битов (bo1 приходит первым).
10 Содержание таблиц преобразования цветовой палитры (ТПЦП) и таблиц перекодировки по умолчанию
10.1 Содержание 256-цветной ТПЦП по умолчанию
Содержание 256-цветной ТПЦП по умолчанию формируется в соответствии с алгоритмом, приведенным на рисунке 3.
if b1 = = '0' andand b5 = = '0' {
if b2 = = '0' andand b3 = = '0' andand b4 = = '0' {
if b6 = = '0' andand b7 = = '0' andand b8 = = '0'
T = 100%
else {
R= 100% x b8
G = 100% x b7
B = 100% x b6
T = 75%
}
}
else {
R = 33,3% x b8 + 66,7% x b4
G = 33,3% x b7 + 66,7% x b3
B = 33,3% x b6 + 66,7% x b2
T = 0%
}
}
if b1 = = '0' andand b5 = = '1' {
R = 33,3% x b8 + 66,7% x b4
G = 33,3% x b7 + 66,7% x b3
B = 33,3% x b6 + 66,7% x b2
T = 50%
}
if b1 = = '1' andand b5 = = '0' {
R = 16,7% x b8 + 33,3% x b4 + 50%
G = 16,7% x b7 + 33,3% x b3 + 50%
B = 16,7% x b6 + 33,3% x b2 + 50%
T = 0%
}
if b1 = = '1' andand b5 = = '1' {
R = 16,7% x b8 + 33,3% x b4
G = 16,7% x b7 + 33,3% x b3
B = 16,7% x b6 + 33,3% x b2
T = 0%
}
Рисунок 3 - Алгоритм формирования содержания 256-цветной
ТПЦП по умолчанию
Семантика:
b1, b2, b3, b4, b5, b6, b7, b8 - биты 8-битового поля номера записи, бит b1 приходит первым.
R - уровень красного.
G - уровень зеленого.
B - уровень синего.
T - уровень прозрачности.
10.2 Содержание 16-цветной ТПЦП по умолчанию
Содержание 16-цветной ТПЦП по умолчанию формируется в соответствии с алгоритмом, приведенным на рисунке 4.
if b1 = = '0'{
if b2 = = '0' andand b3 = = '0' andand b4 = = '0' {
T = 100%
}
else {
R = 100% x b4
G = 100% x b3
B = 100% x b2
T = 0%
}
}
if b1 = = '1' {
R = 50% x b4
G = 50% x b3
B = 50% x b2
T = 0%
}
Рисунок 4 - Алгоритм формирования содержания 16-цветной ТПЦП
по умолчанию
Семантика:
b1, b2, b3, b4 - биты 4-битового поля номера записи, бит b1 приходит первым.
R - уровень красного.
G - уровень зеленого.
B - уровень синего.
T - уровень прозрачности.
10.3 Содержание 4-цветной ТПЦП по умолчанию
Содержание 4-цветной ТПЦП по умолчанию формируется в соответствии с алгоритмом, приведенным на рисунке 5.
if b1 = = '0' andand b2 = = '0' {
T = 100%
}
if b1 = = '0' andand b2 = = '1' {
R = G = B = 100%
T = 0%
}
if b1 = = '1' andand b2 = = '0'{
R = G = B = 0%
T = 0%
}
if b1 = = '1' andand b2 = = '1' {
R = G = B = 50%
T = 0%
}
Рисунок 5 - Алгоритм формирования содержания 4-цветной ТПЦП
по умолчанию
Семантика:
b1, b2 - биты 2-битового поля номера записи, бит b1 приходит первым.
R - уровень красного.
G - уровень зеленого.
B - уровень синего.
T - уровень прозрачности.
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)