ДЕКОДЕР, КОДЕР, КОМПЬЮТЕРНАЯ ПРОГРАММА И СПОСОБ
DECODER, ENCODER, COMPUTER PROGRAM AND METHOD

Предпосылки изобретения
Область техники, к которой относится изобретение
Настоящее техническое решение относится к декодеру, кодеру, компьютерной программе и способу.
Описание известного уровня техники
Описание в разделе «ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ», предоставленное в настоящем документе, предназначено для общего представления контекста настоящего изобретения. Работа указанных в настоящем документе изобретателей, в той мере, в которой она описана в разделе «ПРЕДПОСЫЛКИ ИЗОБРЕТЕНИЯ», а также аспекты описания, которые могут не расцениваться в ином случае как предшествующий уровень техники на дату подачи, ни явно, ни косвенно не указаны как предшествующий уровень техники в отношении настоящего технического решения.
Известно, что субтитры передаются в виде текста или битовых карт. В случае битовых карт механизм передачи таких субтитров изложен в [1].
Однако изобретатель данного изобретения обнаружил две проблемы.
Во-первых, постоянно требуется уменьшение объема передаваемых данных и обработки в субтитрах. Поэтому к битовым картам перед передачей в качестве субтитров желательно применять сжатие.
Во-вторых, существуют другие форматы с открытым исходным кодом, такие как стандарт «Переносимая сетевая графика» (Portable Network Graphics), которые становятся все более популярными. Учитывая это, субтитры могут быть созданы в формате PNG, который перед передачей может нуждаться в преобразовании в формат структуры системы ввода субтитров. Поэтому желательно, чтобы субтитры создавались в формате PNG, и чтобы их преобразование в субтитры было как можно более простым и удобным.
Целью настоящего изобретения является решение этих проблем. Настоящее изобретение не ограничивается рассмотрением этих целей и проблем.
Сущность изобретения
Устройство кодирования субтитров, содержащее схему управления, выполненную с возможностью приема файла в формате переносимой сетевой графики (PNG), при этом файл PNG содержит данные изображения и таблицу палитры, включающую справочную таблицу цветов; преобразования справочной таблицы цветов в сегмент определения справочной таблицы цветов; сохранения данных изображения в виде блока пиксельных данных; и кодирования сегмента определения справочной таблицы цветов и блока пиксельных данных в качестве субтитров на изображении.
Другие признаки и варианты осуществления могут быть в целом записаны как в нижеследующей формуле изобретения, прилагаемой к настоящему документу.
Вышеизложенные абзацы были предоставлены с целью общего представления и не предназначены для ограничения объема следующей формулы изобретения. Описанные варианты осуществления вместе с дополнительными преимуществами будут лучше всего поняты исходя из следующего подробного описания в сочетании с сопроводительными графическими материалами.
Краткое описание графических материалов
Более полное понимание настоящего изобретения и многих из его сопутствующих преимуществ будет легко достигнуто, поскольку они становятся понятнее исходя из следующего подробного описания при рассмотрении в сочетании с сопроводительными графическими материалами, на которых:
на фиг. 1 показан телевизионный приемник 100 согласно вариантам осуществления настоящего изобретения;
на фиг. 2 показано телевизионное передающее устройство 200 согласно вариантам осуществления настоящего изобретения;
на фиг. 3 показана принципиальная схема процесса 300 кодирования, переноса и декодирования битовой карты субтитров в соответствии со спецификацией ввода субтитров, изложенной в [1];
на фиг. 4 показана принципиальная схема известного процесса 400 кодирования субтитров с чересстрочной разверткой;
на фиг. 5 показан синтаксис object_data_segment с использованием чересстрочной развертки;
на фиг. 6А и 6В показаны принципиальные схемы двух типов процесса 600 кодирования субтитров с прогрессивной разверткой согласно вариантам осуществления настоящего изобретения;
на фиг. 7 показана структура 700 object_data_segment согласно вариантам осуществления настоящего изобретения;
на фиг. 8 показана блок-схема 800, поясняющая процесс, выполняемый в кодере 210 субтитров согласно вариантам осуществления настоящего изобретения;
на фиг. 9 показана блок-схема 900, поясняющая процесс, выполняемый в декодере 110 субтитров согласно вариантам осуществления настоящего изобретения;
на фиг. 10 показана блок-схема процесса 1000, выполняемого кодером 210 субтитров;
на фиг. 11 представлена блок-схема, показывающая процесс 1100, выполняемый декодером 110 субтитров;
на фиг. 12 показана блок-схема процесса 1200 согласно вариантам осуществления настоящего изобретения;
на фиг. 13 показаны этапы процесса преобразования для файла формата PNG, который соответствует требованию субтитров согласно вариантам осуществления; и
на фиг. 14 показана блок-схема процесса 1300 согласно вариантам осуществления изобретения.
Описание вариантов осуществления
Теперь обратимся к графическим материалам, на которых подобные позиционные обозначения обозначают идентичные или соответствующие части на нескольких видах.
Последующее описание разделено на три части. Первая часть представляет собой описание, поясняющее механизм передачи и приема битовых карт субтитров в системе прогрессивной развертки.
Вторая часть представляет собой описание, поясняющее механизм сжатия битовых карт субтитров. Этот метод сжатия применим к битовым картам, отправляемым в системе чересстрочной развертки или прогрессивной развертки.
Третья часть представляет собой описание, поясняющее механизм передачи и приема субтитров в формате PNG. Для специалистов в данной области техники будет очевидно, что передача и прием субтитров в формате PNG могут происходить либо в существующей системе чересстрочной развертки, либо в системе прогрессивной развертки, описанной в первой части.
Часть 1 - Система прогрессивной развертки
На фиг. 1 показан телевизионный приемник 100 согласно вариантам осуществления настоящего изобретения. Телевизионный приемник 100 может представлять собой телевизионную приставку, принимающую наземное телевидение, кабельное телевидение или спутниковое телевидение, или может представлять собой устройство, принимающее телевизионные услуги через соединение передачи данных, такое как широкополосное соединение c Интернетом, или через сеть мобильной связи. Телевизионный приемник 100 может быть встроен в телевизионное устройство отображения или устройство чтения оптических дисков, такое как Blu-Ray или DVD-проигрыватель. В качестве альтернативы телевизионный приемник может быть встроен в игровую приставку, персональный компьютер или любое другое подходящее устройство. Телевизионный приемник может быть выполнен в виде программного приложения, которое выполняется на портативном устройстве или на любом из вышеупомянутых типов устройств. Телевизионный приемник является одним из примеров устройства, содержащего, например, декодер или какой-либо механизм декодирования для декодирования телевизионного сигнала.
Работа телевизионного приемника 100 управляется контроллером 105. Контроллер 105 может быть выполнен в виде схемы управления, которая обычно выполнена из полупроводникового материала и работает под управлением компьютерного программного обеспечения, воплощенного в виде машиночитаемого кода. Этот код может храниться в контроллере 105 или может храниться в другом месте в телевизионном приемнике 100. В этом конкретном примере компьютерное программное обеспечение хранится в носителе 125 данных, который подключен к контроллеру 105. Носитель 125 данных может быть выполнен в виде любого подходящего носителя, такого как твердотельное запоминающее устройство или магнитный или оптически читаемый носитель. В носителе 125 данных также могут храниться другие данные, такие как информация профиля пользователя, данные приложения и контент.
К контроллеру 105 также подключен телевизионный декодер 120, которым управляет контроллер 105. Телевизионный декодер 120 может быть выполнен в виде схемы связи, которая выполнена с возможностью приема телевизионных сигналов, кодированных с использованием набора стандартов системы цифрового телевизионного вещания (DVB). В вариантах осуществления кодированные телевизионные сигналы могут транслироваться или доставляться в режиме многоадресной или одноадресной передачи по наземной линии, кабельной линии, спутниковой линии, широкополосному соединению с Интернетом или по сотовой (мобильной телефонной) сети. Телевизионные сигналы могут содержать аудио/видеоконтент, который может представлять собой только аудиоконтент, только видео или изображение, либо как аудиоконтент, так и видеоконтент (или контент изображений). Действительно, телевизионные сигналы могут быть видеосигналами или сигналами изображений, которые также могут содержать аудиоинформацию.
Телевизионный декодер 120 подключен к антенне 130, которая позволяет принимать эти телевизионные сигналы. Антенна 130 может быть выполнена в виде антенны типа «волновой канал» и логопериодической антенны или спутниковой антенны, кабельного распределителя или любого другого подходящего приемного устройства. В некоторых вариантах осуществления устройства телевизионного декодера антенна выполнена в виде модема, который принимает телевизионные сигналы от кабельного соединения, например, широкополосного соединения с Интернетом.
Контроллер 105 также соединен с модулем 135 пользовательского ввода. Модуль 135 пользовательского ввода может представлять собой пульт или средство дистанционного управления, сенсорный экран, стилус, клавиатуру, мышь, систему распознавания жестов или любой вид устройства, подходящего для того, чтобы обеспечить возможность пользователю управлять работой телевизионного приемника 100.
Контроллер 105 также соединен с модулем 115 пользовательского вывода. Модуль 115 пользовательского вывода может представлять собой дисплей (в который встроен или к которому подключен телевизионный приемник), носимую технику, такую как умные часы или очки, или любой вид устройства, подходящий для того, чтобы обеспечить возможность пользователю принимать телевизионные выходные данные телевизионного приемника 100.
Внутри контроллера 105 находится декодер 110 субтитров, который может быть выполнен как единое целое с контроллером 105 или может быть отдельным от него устройством. Назначением декодера 110 субтитров является декодирование субтитров, передаваемых с телевизионным сигналом или иным образом связанных с ним. Работа декодера 110 субтитров управляется контроллером 105, и его работа будет описана позже. Однако декодер 110 субтитров будет выполнять механизмы, описанные в трех частях настоящей заявки. Декодер 110 субтитров, как и контроллер 105, может быть воплощен в виде схемы и может управляться программным обеспечением, хранящимся в носителе 125 данных.
На фиг. 2 показано телевизионное передающее устройство 200 согласно вариантам осуществления настоящего изобретения. Телевизионное передающее устройство 200 может представлять собой систему доставки, передающей наземное телевидение, кабельное телевидение или спутниковое телевидение.
Работа телевизионного передающего устройства 200 управляется контроллером 205. Контроллер 205 может быть выполнен в виде схемы управления, которая обычно выполнена из полупроводникового материала и работает под управлением компьютерного программного обеспечения, воплощенного в виде машиночитаемого кода. Этот код может храниться в контроллере 205 или может храниться в другом месте в телевизионном передающем устройстве 200. В этом конкретном примере компьютерное программное обеспечение хранится в носителе 225 данных, который подключен к контроллеру 205. Носитель 225 данных может быть выполнен в виде любого подходящего носителя, такого как твердотельное запоминающее устройство или магнитный или оптически читаемый носитель. В носителе 225 данных также могут храниться другие данные, такие как информация профиля пользователя, данные приложения и контент.
К контроллеру 205 также подключен телевизионный кодер 220. Телевизионный кодер 220 может быть выполнен в виде схемы связи, которая выполнена с возможностью передачи телевизионных сигналов, кодированных с использованием стандарта системы цифрового телевизионного вещания (DVB). В вариантах осуществления кодированные телевизионные сигналы могут доставляться по наземной линии, кабельной линии, спутниковой линии, широкополосному соединению с Интернетом или по сотовой (мобильной телефонной) сети.
Телевизионный кодер 220 подключен к антенне 230, которая позволяет передавать или транслировать эти телевизионные сигналы. Для проводных систем доставки антенна заменяется модемом, коммутатором, сервером или сетью доставки контента.
Контроллер 205 также соединен с модулем 235 пользовательского ввода. Модуль 235 пользовательского ввода может представлять собой пульт или средство дистанционного управления, сенсорный экран, стилус, клавиатуру, мышь, систему речевого управления, систему распознавания жестов или любой вид устройства, подходящего для того, чтобы обеспечить возможность пользователю управлять работой телевизионного передающего устройства 200.
Контроллер 205 также соединен с модулем 215 пользовательского вывода. Модуль 215 пользовательского вывода может представлять собой дисплей (в который встроен или к которому подключен телевизионный приемник), носимую технику, такую как умные часы или очки, или любой вид устройства, подходящий для того, чтобы обеспечить возможность пользователю просматривать телевизионные выходные данные телевизионного передающего устройства 200.
Внутри контроллера 205 находится кодер 210 субтитров, который может быть выполнен как единое целое с контроллером 205 или может быть отдельным от него устройством. Кодер субтитров представляет собой устройство, которое кодирует субтитры или каким-либо образом связывает субтитры с телевизионным сигналом или контентом. Работа кодера 210 субтитров управляется контроллером 205, и его работа будет описана позже. Однако кодер 210 субтитров будет выполнять механизмы, описанные в трех частях настоящей заявки. Кодер 210 субтитров, как и контроллер 205, может быть воплощен в виде схемы и может управляться программным обеспечением, хранящимся в носителе 225 данных.
На фиг. 3 показана принципиальная схема процесса 300 кодирования, переноса и декодирования битовой карты субтитров в соответствии со спецификацией ввода субтитров, изложенной в [1]. Во избежание неопределенности объект из [1] включен в настоящий документ посредством ссылки.
Процесс 300 имеет битовую карту 305 субтитров, которая должна быть наложена на телевизионный контент. В изображенном примере битовая карта представляет собой графическое представление текста «Вот что она сказала». Конечно, битовая карта может быть любым графическим представлением, таким как другие слова, изображения, символы или тому подобное. Битовая карта 305 подается в кодер 210 субтитров, приведенный на фиг. 2. Битовая карта кодируется в кодере 210 субтитров. В известной системе кодер субтитров кодирует битовую карту с кодированием с чересстрочной разверткой. Однако в вариантах осуществления настоящего изобретения кодер 210 субтитров кодирует битовую карту напрямую с кодированием с прогрессивной разверткой, как будет объяснено позже.
Телевизионный контент мультиплексируется с битовой картой субтитров, затем передается или транслируется в блоке 310 на телевизионный приемник 100. В некоторых вариантах осуществления битовые карты субтитров в их кодированной форме доставляются отдельно от телевизионного контента, например, через интернет-соединение, повторно комбинируются и синхронизируются с телевизионным контентом в телевизионном приемнике 100. Телевизионный контент принимается и декодируется в телевизионном приемнике 100, и битовая карта субтитров декодируется декодером 110 субтитров. В известной системе кодирование с чересстрочной разверткой декодируется, и, если дисплей является дисплеем с прогрессивной разверткой, телевизионному приемнику 100 необходимо выполнить соответствующее преобразование из чересстрочной развертки в прогрессивную развертку. Однако в вариантах осуществления настоящего изобретения декодер 110 субтитров будет принимать битовую карту субтитров, закодированную с кодированием с прогрессивной разверткой, и поэтому этот дополнительный этап преобразования в телевизионном приемнике 100 не требуется. Затем на этапе 315 отображается телевизионный контент, содержащий битовую карту субтитров.
На фиг. 4 показана принципиальная схема известного процесса 400 кодирования субтитров с чересстрочной разверткой. Битовая карта 305 субтитров разделена на верхнее поле 405 и нижнее поле 410. В верхнем поле 405 кодируются нечетные строки пикселей, а в нижнем поле кодируются четные строки пикселей. На фиг. 4 изображены входные данные битовой карты субтитров в виде ряда строк, имитирующих форму битовой карты субтитров. Они приведены всего лишь из соображений удобства, поскольку известно, что каждый pixel-data_sub-block представляет собой непрерывный ряд байтовых значений без разграничения в соответствии с формой битовой карты субтитров. Затем на этапе 415 эти строки пиксельных данных подвергаются кодированию длин серий в соответствии с известным способом в [1] и переносятся в object_data_segment стандарта DVB, который изложен в [1], причем пиксельные данные каждого поля, подвергнутые кодированию длин серий, переносятся как два отдельных поля в соответствующих субблоках. Битовые карты субтитров также могут доставляться в приемники без этапа применения кодирования длин серий или аналогичных простых методов сжатия.
На фиг. 5 показан синтаксис сегмента object_data_segment с использованием чересстрочной развертки. Как видно, длина блока верхнего поля указана в top_field_data_block_length 505, и длина блока нижнего поля указана в bottom_field_data_block_length 510. Кроме того, существует зарезервированный бит 510, который в известном сегменте object_data_segment не выделен.
Следовательно, в этом известном синтаксисе даже битовые карты субтитров с прогрессивной разверткой предварительно обрабатываются для переноса в структуру object_data_segment как битовые карты с чересстрочной разверткой и передаются как битовые карты с чересстрочной разверткой. Затем телевизионный приемник 100 должен декодировать битовые карты с чересстрочной разверткой и преобразовывать их в битовые карты с прогрессивной разверткой для отображения.
На фиг. 6А показана принципиальная схема процесса 600 кодирования субтитров с прогрессивной разверткой согласно вариантам осуществления настоящего изобретения. Битовая карта 305 субтитров разделена на строки пиксельных данных для прогрессивной развертки. На фиг. 6А изображены входные данные битовой карты субтитров в виде ряда строк, имитирующих форму битовой карты субтитров. Они приведены всего лишь из соображений удобства, поскольку известно, что каждый pixel-data_sub-block представляет собой непрерывный ряд байтовых значений без разграничения в соответствии с формой битовой карты субтитров. Затем на этапе 610 эти строки пиксельных данных подвергаются кодированию длин серий в соответствии с известным способом в [1] и на этапе 615 переносятся в нижнем поле object_data_segment.
Чтобы декодер 110 субтитров понимал, что принятая битовая карта субтитров имеет прогрессивную развертку, в top_field_data_block_length устанавливается 0 (ноль). Другими словами, значение top_field_data_block_length равно 0x0000. Затем в bottom_field_data_block_length устанавливается размер битовой карты, и все содержимое битовой карты в формате прогрессивной развертки отправляется в нижнем поле.
Конечно, хотя на фиг. 6А показана битовая карта субтитров, отправляемая в нижнем поле, предполагается, что битовая карта субтитров может быть отправлена в верхнем поле. В этом случае битовая карта 305 субтитров снова будет разделена на строки пиксельных данных для прогрессивной развертки. Однако эти строки пиксельных данных затем кодируются в верхнем поле object_data_segment.
В качестве альтернативы в поле object_coding_method может быть установлено значение 0b10 (десятичное число два). В этом случае строки пиксельных данных могут быть сжаты с использованием способа, описанного в настоящем изобретении, то есть с использованием zlib. На этапе 615 сжатые субтитры переносятся в блок пиксельных данных object_data_segment. Это показано на фиг. 6B.
С целью того, чтобы декодер 110 субтитров понимал, что полученная битовая карта субтитров имеет прогрессивную развертку, зарезервированный бит 510 будет переопределен, чтобы сигнализировать, что object_data_segment содержит субтитр битовой карты с прогрессивной разверткой. Это связано с тем, что [1] уже включает опцию для установки bottom_field_data_block_length в нулевое значение. В известном сегменте данных объекта установка в bottom_field_data_block_length 0 (нуля) означает, что пиксельные данные верхнего поля действительны для нижнего поля и, таким образом, эффективно повторяют пиксельные данные верхнего поля в нижнем поле.
Следовательно, в случае если значение bottom_field_data_ block_length равно 0x0000, зарезервированный бит должен будет измениться на бит progressive_scan_bitmap, как будет объяснено со ссылкой на фиг. 7. Конечно, хотя определение top_field_data_block_length как 0x0000 (ноль) будет достаточно для указания прогрессивной развертки и битовой карты субтитров, содержащейся в нижнем поле, бит progressive_scan_bitmap также может использоваться, когда битовая карта субтитров отправляется в нижнем поле.
Продолжая объяснение битовой карты субтитров, отправленной в верхнем поле, затем в top_field_data_block_length устанавливается размер битовой карты, подвергнутой кодированию длин серий, и все содержимое битовой карты, подвергнутой кодированию длин серий, в формате прогрессивной развертки отправляется в верхнем поле.
В качестве альтернативы для ситуации на фиг. 6В в поле способа кодирования объекта устанавливается значение 0b10. На фиг. 7 показана структура 700 object_data_segment согласно вариантам осуществления настоящего изобретения. В структуре 700 object_data_segment согласно вариантам осуществления настоящего изобретения в поле object_coding_method устанавливается значение 0b10, затем длина сжатых данных битовой карты переносится как 16-битовое поле данных, называемое, например, pixel-data_block_length, затем следует последовательность байтовых значений сжатого изображения субтитров, перенесенных в поле, называемом, например, pixel-data_block, зарезервированный бит на фиг. 5 изменяется на бит 705 progressive_scan_bitmap.
Бит progress_scan_bitmap может быть определен следующим образом.
Битовая карта с прогрессивной разверткой: Когда установлено значение «1», пиксельные данные, содержащиеся в верхнем поле pixel-data_sub-block, соответствуют битовой карте с прогрессивной разверткой, и в нижнем поле pixel-data_sub-block не содержится никаких данных, поэтому в поле bottom_field_data_block_length должно быть установлено значение «0x0000». В этом случае не применяется ранее определенный случай поля bottom_field_data_block_length, содержащего значение «0x0000», означающее, что пиксельные данные нижнего поля совпадают с пиксельными данными верхнего поля. Когда в progress_scan_bitmap установлено «0», битовая карта субтитров должна состоять из верхнего и нижнего полей, и когда пиксельные данные не передаются в нижнем поле, то есть в bottom_field_data_block_length установлено значение «0x0000», тогда данные для верхнего поля должен быть действительны для нижнего поля. В качестве альтернативы в поле object_coding_method может быть установлено значение 0b10, затем длина сжатых данных битовой карты переносится как 16-битовое поле данных, называемое, например, pixel_data_block_length, затем следует последовательность байтовых значений сжатого изображения субтитров, перенесенных в поле, называемом, например, pixel-data_block.
На фиг. 8 показана блок-схема 800, поясняющая процесс, выполняемый в кодере 210 субтитров. Процесс 800 начинается на этапе 805. Затем на этапе 810 получают битовую карту субтитров. На этапе 815 определяют, имеет ли битовая карта субтитров чересстрочную развертку, если да, то процесс продолжается известным способом и заканчивается на этапе 820. Однако, если битовая карта субтитров имеет прогрессивную развертку, процесс переходит к этапу 825.
На этапе 825 определяют, должна ли битовая карта субтитров переноситься в верхнем поле или нижнем поле. Если битовая карта субтитров должна переноситься в нижнем поле, для top_field_block_length в данных сегмента объекта устанавливается значение 0x0000, и для bottom_field_data_block_length устанавливается размер битовой карты. При необходимости также может быть установлен бит progressive_scan_bitmap. Затем битовая карта субтитров в режиме прогрессивной развертки переносится в нижнем поле.
Если битовая карта субтитров должна быть перенесена в верхнем поле, в bottom_field_data_block_length в данных сегмента объекта устанавливается 0x0000, и в top_field_data_block_length устанавливается размер битовой карты. В этом случае также устанавливают бит progressive_scan_bitmap. Затем битовая карта субтитров в режиме прогрессивной развертки переносится в верхнем поле.
В качестве альтернативы входная битовая карта подвергается двухэтапному процессу сжатия, применяемому в графическом формате PNG в соответствии со спецификацией PNG [3], который включает этап предварительного сжатия посредством фильтрации (прогнозирования) и затем фактического сжатия с использованием алгоритма zlib (DEFLATE) согласно RFC1951 [2]. Известно, что для битовых карт с индексированными цветами, принятых для субтитров в настоящем изобретении, наилучшим обычно является фильтр типа 0 (нулевой фильтр). По завершении известно число байтов, полученных в результате сжатия битовой карты, и это число устанавливается в поле данных pixel_data_block_length. Затем следуют сжатые данные для битовой карты с прогрессивной разверткой, представленные полем pixel-data_block.
Процесс заканчивается на этапе 830, когда отправляется битовая карта субтитров.
На фиг. 9 показана блок-схема 900, поясняющая процесс, выполняемый в декодере 110 субтитров. Процесс начинается на этапе 905. Телевизионный приемник 100 принимает кодированный телевизионный сигнал. Он принимается и декодируется на этапе 910.
Затем на этапе 915 декодер 110 субтитров идентифицирует, переносятся ли субтитры с прогрессивной разверткой или чересстрочной разверткой.
С целью определения, что битовая карта субтитров отправлена с прогрессивной разверткой, декодер 110 субтитров идентифицирует, установлено ли в top_field_data_block_length значение 0x000, и установлено ли в bottom_field_data_block_length ненулевое значение. В этом случае декодер 110 субтитров может при необходимости также идентифицировать, установлен ли бит progressive_scan_bitmap. В этом случае декодер 110 субтитров знает, что битовая карта субтитров имеет прогрессивную развертку и отправляется в нижнем поле.
В качестве альтернативы декодер 110 субтитров может идентифицировать, установлено ли в bottom_field_data_block_length значение 0x000, и установлено ли в top_field_data_block_length ненулевое значение. В этом случае декодер 110 субтитров также идентифицирует, установлен ли бит progressive_scan_bitmap. В этом случае, если установлено поле progress_scan_bitmap, декодер 110 субтитров знает, что битовая карта субтитров имеет прогрессивную развертку и отправляется в верхнем поле.
В качестве альтернативы, если поле progress_scan_bitmap не установлено, декодер 110 субтитров знает, что битовая карта субтитров имеет чересстрочную развертку, и пиксельные данные верхнего поля действительны для пиксельных данных нижнего поля.
Конечно, если ни длина top_field_data_block, ни длина bottom_field_data_block не установлены в 0x000, то декодер 110 субтитров знает, что битовая карта субтитров имеет чересстрочную развертку.
В качестве альтернативы можно определить, отправляется ли битовая карта субтитров с прогрессивной разверткой, по значению object_coding_method, как описано для процесса кодирования.
Затем на этапе 920 отображаются субтитры, и процесс заканчивается на этапе 925.
Хотя вышеизложенное описывает отправку битовой карты в верхнем или нижнем поле в полном объеме, изобретение не ограничивается таким образом. Действительно, битовая карта субтитров может быть разделена и перенесена как в верхнем поле, так и в нижнем поле. Например, наличие бита progress_scan_bitmap может указывать, что верхняя половина битовой карты субтитров переносится в верхнем поле, и нижняя половина переносится в нижнем поле. В этом случае как в top_field_data_block_length, так и в bottom_field_data_block_length будут ненулевые значения, и бит progressive_scan_bitmap будет определять только то, что битовая карта субтитров имеет прогрессивную развертку и переносится в верхнем поле и нижнем поле заранее определенным образом. Это может быть предопределено стандартом или иным образом.
В этом случае определение бита progress_scan_bitmap может измениться, чтобы также включать случай, когда он установлен, и значения top_field_data_block_length и bottom_field_data_block_length отличны от нуля, то данные в верхнем поле будут первым заранее заданным (уже установленным) сегментом битовой карты, и данные в нижнем поле будут вторым заранее заданным (уже установленным) сегментом битовой карты.
Часть 2 - Сжатие битовых карт
Как отмечено выше, желательно уменьшить объем данных, передаваемых в субтитрах DVB. Следовательно, согласно вариантам осуществления настоящего изобретения субтитры подвергаются двухэтапному процессу сжатия, применяемому в графическом формате PNG в соответствии со спецификацией PNG [3], который до встраивания их в сигнал DVB включает этап предварительного сжатия посредством фильтрации (прогнозирования) и затем фактическое сжатие с использованием алгоритма zlib (DEFLATE) согласно RFC1951 [2]. Здесь отмечается, что сжатие может применяться к субтитрам в битовой карте с чересстрочной разверткой или в битовой карте с прогрессивной разверткой. Это сжатие будет выполняться кодером 210 субтитров.
На фиг. 10 показана блок-схема процесса 1000, выполняемого кодером 210 субтитров.
Процесс начинается на этапе 1005.
На этапе 1010 принимается битовая карта, которая должна быть встроена в сигнал DVB.
Затем на этапе 1015 битовая карта подвергается сжатию согласно вариантам осуществления настоящего изобретения. В вариантах осуществления настоящего изобретения выполняется двухэтапный процесс сжатия, применяемый в графическом формате PNG в соответствии со спецификацией PNG [3]. Он включает этап предварительного сжатия посредством фильтрации (прогнозирования) и затем фактическое сжатие с использованием алгоритма zlib (DEFLATE) согласно RFC1951 [2], то есть алгоритма DEFLATE с использованием условий и ограничений, указанных в спецификации PNG [3].
Затем на этапе 1020 сжатая битовая карта встраивается в сигнал DVB. Это встраивание формирует варианты осуществления настоящего изобретения.
В разделе 7.2 из [1] описаны синтаксис и семантика сегмента ввода субтитров. В частности, в таблице 2 определены различные сегменты. Теперь будет описано соответствие между сжатой битовой картой и сегментами таблицы 2.
Сегмент определения отображения в разделе 7.2.1 из [1] и сегмент композиции страницы в разделе 7.2.2 из [1] используются в текущем виде. Сегмент композиции области в разделе 7.2.3 из [1] является таким же за исключением того, что кодирование справочной таблицы цветов (CLUT) и глубина цвета ограничены 8 битами.
Сегмент определения CLUT раздела 7.2.4 из [1] может использоваться в текущем виде. В качестве альтернативы сегмент определения CLUT из 7.2.4 из [1] может быть отброшен и заменен определением CLUT из [3].
Сегмент данных объекта в разделе 7.2.5 из [1] может использоваться в текущем виде для битовой карты с чересстрочной разверткой. Однако для системы прогрессивной развертки, описанной выше в части 1, используется object_coding_method 0x2, что является новым вариантом в таблице 8 из 7.2.5 [1], указывающим на перенос объекта субтитров с прогрессивной разверткой. Согласно настоящему изобретению определена новая структура данных для переноса пиксельных данных, называемая здесь блоком пиксельных данных. Она состоит из ширины и высоты битовой карты и выходных данных двухэтапного процесса сжатия данных битовой карты, как указано в спецификации PNG [3].
Поле pixel_data_block_length сегмента object_data_segment устанавливается равным количеству байтов, выводимых описанным двухэтапным процессом сжатия. Конечно, оно может быть разделено на верхнее поле и нижнее поле, если это необходимо для чересстрочной развертки или, как указано выше, для прогрессивной развертки. В случае, когда двухэтапное сжатие применяется к битовым картам с чересстрочной разверткой, существует отдельный сигнал или флаг для информирования о том, какой способ используется, но в настоящем изобретении этот синтаксис более подробно не описан.
После того как битовая карта сжата и встроена, на этапе 1025 процесс заканчивается.
Затем сигнал DVB передается на телевизионный приемник 100 согласно вариантам осуществления.
На фиг. 11 представлена блок-схема, показывающая процесс 1100, выполняемый декодером 110 субтитров в телевизионном приемнике 100.
Процесс 1100 начинается на этапе 1105. На этапе 1110 сигнал DVB, принятый телевизионным приемником 100, подается на декодер 110 субтитров. На этапе 1115 из сигнала DVB извлекается сжатая битовая карта субтитров. На этапе 1120 сжатая битовая карта субтитров распаковывается, и на этапе 1125 процесс заканчивается. Затем битовая карта отображается как субтитр.
Часть 3 - Механизм передачи и приема субтитров в формате PNG в DVB
Как отмечалось выше, использование графики PNG расширяется. Это происходит потому, что стандарт PNG позволяет графике обладать обширными возможностями. Включение графики PNG в DVB обеспечивает точку сходимости функциональной совместимости для различных телевизионных систем и систем ввода субтитров мультимедийных данных, из которой можно осуществлять адаптацию к различным системам доставки, включая DVB.
Однако, поскольку графика PNG обладает обширными возможностями, не достаточно просто включить графику PNG в субтитры, потому что телевизионные субтитры имеют ограниченные требования и, следовательно, полосу пропускания и возможности обработки, выделенные для них. Декодер, способный декодировать все доступные функции PNG, может не потребоваться. Декодер, который обращается к определениям PNG при использовании для передачи субтитров, может быть более эффективным в вычислительном отношении, более быстродействующим и менее дорогостоящим. Когда декодер субтитров совместно использует вычислительные ресурсы, такие как шины и память, с другими функциями, обработка только необходимых частей PNG для ввода субтитров может позволить использовать совместно используемые ресурсы для других функций. Это может улучшить производительность и ощущения пользователя.
Этому посвящена данная часть настоящего изобретения.
На фиг. 12 показана блок-схема процесса 1200 согласно вариантам осуществления изобретения. Он будет выполняться кодером 210 субтитров.
Процесс начинается на этапе 1205.
Процесс переходит к этапу 1210, где кодер 210 субтитров принимает графический файл PNG согласно вариантам осуществления настоящего изобретения, который соответствует стандарту DVB.
В соответствии со спецификацией PNG [3] файл PNG должен начинаться с фрагмента заголовка изображения IHDR. Различные свойства файла изображения PNG либо извлекаются из фрагмента IHDR, либо проверяются на совместимость с требуемым профилем субтитров DVB.
Во-первых, ширина и высота, сохраненные во фрагменте IHDR файла PNG, извлекаются и вводятся в поля ширины и высоты соответственно структуры данных, называемой в настоящем документе pixel-data_sub-block.
Во-вторых, для ввода субтитров DVB требуется 8 бит на пиксель. Однако PNG допускает от 1 до 16 бит на пиксель. Следовательно, графический файл PNG согласно вариантам осуществления будет иметь только 8 бит на пиксель. Это значение может быть проверено кодером субтитров DVB, но эту информацию в структурах данных DVB нет необходимости повторять, поскольку это предполагается.
В-третьих, субтитры DVB поддерживают обработку цветового пространства sRGB. Следовательно, графический файл PNG согласно вариантам осуществления должен указывать обработку цветового пространства sRGB. Это значение может быть проверено кодером субтитров DVB, но эту информацию в структурах данных DVB нет необходимости повторять, поскольку это предполагается.
В-четвертых, изображение в графическом файле PNG будет иметь индексированный цвет. Это будет в форме CLUT. Использование CLUT эффективно по сравнению с передачей методом TrueColour с альфа-каналом, и CLUT достаточно для субтитров. Следовательно, тип изображения в файле PNG должен иметь индексированный цвет с типом цвета 3. Это значение может быть проверено кодером субтитров DVB, но эту информацию в структурах данных DVB нет необходимости повторять, поскольку это предполагается. Глубина цвета в режиме индексированных цветов файла PNG должна составлять 8, что совпадает с предусмотренным для использования с кодированными битовыми картами субтитров с прогрессивной разверткой в стандарте DVB.
В-пятых, графический файл PNG содержит вспомогательную информацию.
Эта вспомогательная информация может включать в себя различные дополнительные типы фрагментов. Одним из необходимых типов фрагментов является таблица палитры, связанная с индексированными изображениями PNG (PLTE). Он содержит CLUT. Данные, содержащиеся в фрагменте PLTE, преобразуются в форму сегмента определения CLUT DVB таким образом, что для правильного воспроизведения субтитров декодером субтитров генерируется эквивалентная CLUT.
Поскольку сегмент определения CLUT DVB содержит параметры яркости (Y) и цветовые компоненты Cr и Cb, необходимо выполнить преобразование из RGB, чтобы получить значения для CLUT DVB.
Другой требуемый тип фрагментов – это фрагменты данных изображения (IDAT). Он содержит сжатые данные изображения субтитров.
Другим требуемым типом фрагмента в вариантах осуществления является trNS, то есть фрагмент прозрачности. В режиме индексированных цветов PNG этот фрагмент содержит альфа-значение для каждой записи CLUT. Кодер субтитров DVB считывает альфа-значения из фрагмента tRNS и вводит эквивалентные значения в прозрачность, т. е. значения «T» в сегменте определения CLUT DVB.
Другая вспомогательная информация не является обязательной. Например, цвет фона субтитра может быть предоставлен во вспомогательной информации «цвет фона».
Также может быть предоставлена вспомогательная информация «текстовые данные». В случае, если эта информация присутствует, предполагается, что текстовые данные субтитра будут включены в это поле. Предоставление текстовых данных позволяет телевизионному приемнику 100 выполнять некоторые действия, например, инициировать уведомление пользователя на основе содержимого текстовых данных. Кроме того, алгоритм преобразования текста в речь может считывать текстовые данные, чтобы улучшить доступность для людей с нарушениями зрения. Текстовые данные могут выступать в качестве точки отсчета на временной шкале контента, которую пользователь может выбрать для поиска и начала воспроизведения в этой точке. Действительно, наличие ключевого слова в текстовых данных может даже привести к тому, что запись контента будет начата на основании поиска зрителем ключевого слова. Кодирование в текстовых данных также может быть предусмотрено для обеспечения правильного или улучшенного произношения. Некоторые слова в текстовых данных могут быть разделены маркировочными знаками, известными в приемнике, чтобы указать, как механизм преобразования текста в речь должен произносить слово. Например:
IEEE: ~~ Ай трипл и ~~
Caius College: ~~ Киз Колледж ~~
Sky Spts: ~~ Скай Спортс ~~
В вариантах осуществления, где декодер может отображать текстовые данные, подсказки с разделителями произношения не отображаются. Текстовые данные, предоставленные в других целях, могут отображаться или не отображаться декодером для просмотра пользователем.
Может быть предоставлена дополнительная информация «время». Она указывает время отображения субтитров относительно отображения сопровождающего элемента контента. Конечно, «время» также может быть абсолютным временем, в течение которого должны отображаться субтитры. Это позволяет телевизионному приемнику 100 знать, когда отображать субтитры в вариантах осуществления, где не используется обычный метод использования временной отметки предоставления пакета, определенный стандартом MPEG (группа экспертов по движущимся изображениям).
Может быть предоставлена вспомогательная информация о «физических размерах пикселя». Если она присутствует, она должна указывать формат квадратного пикселя, как того требует субтитр DVB. Это значение может быть проверено кодером субтитров DVB, но эту информацию в структурах данных DVB нет необходимости повторять, поскольку это предполагается.
Поскольку этот модифицированный профиль графического файла PNG полностью соответствует формату PNG, профиль PNG может быть зарегистрирован, как описано в [3]. При регистрации профиля можно сигнализировать о совместимости соответствующих файлов PNG, которые соответствуют использованию в качестве объектов субтитров DVB, например, в процессах создания и обмена субтитрами.
Процесс переходит к этапу 1215, где субтитры профиля PNG встраиваются в сигнал DVB для передачи.
С целью встраивания субтитров профиля PNG в сигнал DVB вся необходимая информация (как описано выше) извлекается и повторно вставляется или при необходимости преобразуется в структуру данных субтитров DVB. Все заголовки фрагментов и содержимое в файле PNG могут быть удалены. В этом процессе необходимо извлекать и поддерживать или преобразовывать только содержимое критических фрагментов IHDR и PLTE и вспомогательных фрагментов tRNS.
Информация PLTE, которая включает CLUT в формате PNG и фрагмент tRNS, содержащий альфа-значения для каждой записи CLUT, преобразуются в сегмент определения CLUT, соответствующий сегменту определения CLUT в 7.2.4 из [1].
Заголовки внутри фрагментов IDAT удаляются, а оставшиеся данные изображения сцепляются. Вычисляется длина сцепленных данных изображения, и вычисленное значение сохраняется в поле pixel_data_block_length в сегменте данных объекта в 7.2.5 из [1]. Значение типа кодирования объекта устанавливается в зависимости от того, выполняется чересстрочная или прогрессивная развертка. Сцепленные данные изображения затем сохраняются как блок пиксельных данных в сегменте данных объекта DVB. Опять же, значение типа кодирования объекта устанавливается в зависимости от того, выполняется чересстрочная или прогрессивная развертка.
На этапе 1220 процесс заканчивается.
Этапы процесса преобразования для файла PNG, который соответствует требованию субтитров DVB, изображены на фиг. 13.
На фиг. 13 фрагментами, содержащимися в исходном PNG, как отмечено выше, являются IHDR, PLTE, tRNS и IDAT. Другие вспомогательные фрагменты, отмеченные выше, используются по мере необходимости. Фрагмент IEND (который отмечает конец файла PNG) отбрасывается. Различные фрагменты показаны в 1305 на фиг. 13.
Во время процесса преобразования 1300 фрагмент PLTE извлекается, и записи CLUT преобразуются, как описано в отношении фиг. 12. Альфа-значения извлекаются из tRNS и вместе с записями CLUT PLTE образуют сегмент определения CLUT, как пояснено на фиг. 12.
Данные IDAT, из которых были удалены заголовки, сцепляются. Рассчитывается размер сцепленных данных. Вычисленное значение вставляется как pixel_data_block_length, и сцепленные данные вставляются в поле сжатых данных битовой карты. Извлекается ширина IHDR и усекается до 16 бит. Это значение вставляется как поле bitmap_width в структуру данных object_data_segment. Извлекается высота IHDR и усекается до 16 бит. Это значение вставляется как поле bitmap_height в структуру данных object_data_segment. Усечение до 16 бит происходит вследствие ограничений в размерах пикселей на экране телевизора.
Структуры данных в формате субтитров показаны на 1310.
На фиг. 14 показана блок-схема процесса 1400 согласно вариантам осуществления изобретения. Он будет выполняться декодером 110 субтитров.
Процесс начинается на этапе 1405.
Декодер 110 субтитров принимает сигнал DVB со встроенным графическим файлом PNG. Это этап 1410.
На этапе 1415 декодируется сигнал DVB. На этапе 1420 процесс заканчивается, после чего субтитры воспроизводятся на дисплее. При воспроизведении субтитров телевизионный приемник 100 предполагает, что система цветопередачи для воспроизведения является sRGB. Кроме того, глубина цвета кодирования пикселя составляет 8 бит на пиксель, причем значение пикселя представляет индекс связанной CLUT.
В свете вышеизложенного возможны многочисленные модификации и видоизменения настоящего изобретения. Следует понимать, что в пределах объема прилагаемой формулы изобретения, изобретение может быть осуществлено иначе, чем конкретно описано в настоящей заявке.
Ввиду того, что варианты осуществления настоящего изобретения были описаны как реализованные по меньшей мере частично посредством аппаратуры обработки данных, управляемой программным обеспечением, будет принято во внимание, что постоянный машиночитаемый носитель, содержащий такое программное обеспечение, такой как оптический диск, магнитный диск, полупроводниковая память или т. п., также рассматривается как представляющий вариант осуществления настоящего изобретения.
Следует понимать, что в приведенном выше описании для ясности описаны варианты осуществления со ссылкой на различные функциональные блоки, схемы и/или процессоры. Однако будет очевидно, что любое подходящее распределение функциональных возможностей между различными функциональными блоками, схемами и/или процессорами может использоваться без ущерба для вариантов осуществления.
Описанные варианты осуществления могут быть реализованы в любой подходящей форме, включая аппаратное обеспечение, программное обеспечение, аппаратно-программное обеспечение или любую их комбинацию. Описанные варианты осуществления могут при необходимости по меньшей мере частично быть реализованы, как компьютерное программное обеспечение, работающее на одном или нескольких процессорах для обработки данных и/или процессорах цифровой обработки сигналов. Элементы и компоненты любого варианта осуществления могут быть физически, функционально и логически реализованы любым подходящим путем. Действительно, функциональные возможности могут быть реализованы в одном блоке, во множестве блоков или как часть других функциональных блоков. Как таковые, раскрытые варианты осуществления могут быть реализованы в одном блоке или могут быть физически и функционально распределены между различными блоками, схемами и/или процессорами.
Хотя настоящее изобретение было описано в связи с некоторыми вариантами осуществления, оно не предназначено для ограничения конкретной формой, изложенной в настоящем документе. В дополнение к этому, хотя может показаться, что признак описан в связи с конкретными вариантами осуществления, специалист в данной области техники осознает, что различные признаки описанных вариантов осуществления могут комбинироваться любым способом, подходящим для реализации технического решения.
Варианты осуществления настоящего технического решения могут в целом описываться следующими пронумерованными пунктами:
1. Устройство кодирования субтитров, содержащее
схему управления, выполненную с возможностью
приема файла в формате переносимой сетевой графики (PNG), при этом файл PNG содержит данные изображения и таблицу палитры, включающую справочную таблицу цветов;
преобразования справочной таблицы цветов в сегмент определения справочной таблицы цветов;
сохранения данных изображения в виде блока пиксельных данных; и
кодирования сегмента определения справочной таблицы цветов и блока пиксельных данных в качестве субтитров на изображении.
2. Устройство кодирования согласно пункту 1, в котором файл PNG включает поле текстовых данных, содержащее текст, воспроизводящий по меньшей мере часть данных изображения.
3. Устройство кодирования согласно пункту 1 или 2, в котором файл PNG включает поле времени, указывающее время отображения субтитра относительно отображения изображения.
4. Устройство кодирования согласно пункту 1, 2 или 3, в котором файл PNG включает поле времени, указывающее абсолютное время отображения субтитра.
5. Устройство кодирования согласно любому из предыдущих пунктов, в котором файл PNG включает фиксированное поле размера физического пикселя.
6. Устройство кодирования согласно любому из предыдущих пунктов, в котором файл PNG имеет глубину цвета 8 бит на пиксель, использует цветовое пространство sRGB и режим индексированных цветов.
7. Устройство декодирования субтитров, содержащее
схему управления, выполненную с возможностью
приема кодированного изображения от устройства кодирования субтитров согласно любому из предыдущих пунктов; и
декодирования кодированного изображения.
8. Способ кодирования субтитров, включающий
прием файла в формате переносимой сетевой графики (PNG), причем файл PNG содержит данные изображения и таблицу палитры, включающую справочную таблицу цветов;
преобразование справочной таблицы цветов в сегмент определения справочной таблицы цветов;
сохранение данных изображения в виде блока пиксельных данных; и
кодирование сегмента определения справочной таблицы цветов и блока пиксельных данных в качестве субтитров на изображении.
9. Способ кодирования согласно пункту 8, отличающийся тем, что файл PNG включает поле текстовых данных, содержащее текст, воспроизводящий по меньшей мере часть данных изображения.
10. Способ кодирования согласно пункту 8 или 9, в котором файл PNG включает поле времени, указывающее время отображения субтитра относительно отображения изображения.
11. Способ кодирования согласно пункту 8, 9 или 10, в котором файл PNG включает поле времени, указывающее абсолютное время отображения субтитра.
12. Способ кодирования согласно любому из пунктов 8–11, в котором файл PNG включает фиксированное поле размера физического пикселя.
13. Способ кодирования согласно любому из пунктов 8–12, в котором файл PNG имеет глубину цвета 8 бит на пиксель, использует цветовое пространство sRGB и использует режим индексированных цветов.
14. Способ декодирования субтитров, включающий
прием кодированного изображения из способа кодирования субтитров согласно любому из пунктов 8–13; и
декодирование кодированного изображения.
15. Машиночитаемый носитель данных, выполненный с возможностью хранения компьютерной программы, которая при загрузке на компьютер настраивает компьютер на выполнение способа согласно любому из пунктов 8–14.
16. Устройство декодирования субтитров, содержащее схему управления, выполненную с возможностью декодирования субтитров в формате PNG, связанных с кодированными телевизионными сигналами, при этом субтитры в формате PNG были адаптированы из файлов PNG, из которых были удалены данные фрагментов PNG и параметры из них были включены в данные субтитров DVB, причем при декодировании используются указанные параметры для вывода субтитров с декодированными телевизионными сигналами.
17. Устройство декодирования субтитров согласно пункту 16, в котором данные фрагментов PNG представляют собой фрагмент IHDR файла PNG, который расположен в полях ширины и высоты соответственно pixel-data_sub-block в object_coding_method данных субтитров DVB.
18. Способ декодирования субтитров, включающий декодирование субтитров в формате PNG, связанных с кодированными телевизионными сигналами, при этом субтитры в формате PNG были адаптированы из файлов PNG, из которых были удалены данные фрагментов PNG и параметры из них были включены в данные субтитров DVB, при этом при декодировании используют указанные параметры для вывода субтитров с декодированными телевизионными сигналами.
19. Способ декодирования субтитров согласно пункту 18, в котором данные фрагментов PNG представляют собой фрагмент IHDR файла PNG, который расположен в полях ширины и высоты соответственно pixel-data_sub-block в object_coding_method данных субтитров DVB.
20. Устройство декодирования субтитров, содержащее схему управления, выполненную с возможностью приема изображения от устройства кодирования субтитров, при этом субтитр представляет собой графическое изображение в формате PNG, и изображение кодируется в соответствии со стандартом системы цифрового телевизионного вещания; и
декодирования кодированного субтитра.
21. Телевизионное принимающее устройство, содержащее декодер для декодирования видеоконтента из телевизионных сигналов и дополнительно содержащее устройство декодирования субтитров согласно пункту 16.
22. Телевизионное принимающее устройство, содержащее декодер для декодирования видеоконтента из телевизионных сигналов и схему, выполненную с возможностью выполнения способа декодирования субтитров согласно пункту 18.
Ссылка
[1] ETSI TS 300 743 v1.5.1 (2014-01); DVB система цифрового телевизионного вещания (DVB); Системы ввода субтитров.
[2] IETF RFC 1951, Спецификация формата сжатых данных DEFLATE, версия 1.3
[3] ISO/IEC 15948; Информационные технологии. Компьютерная графика и обработка изображений. Переносимая сетевая графика (PNG): Функциональная спецификация.