CEA-708

редактировать
Стандарт для скрытых субтитров для цифрового телевидения ATSC

CEA -708 - стандарт для скрытые субтитры для потоков ATSC цифрового телевидения (DTV) в США и Канаде. Он был разработан Electronic Industries Alliance.

В отличие от RLE DVB и субтитров DVD, субтитры CEA-708 имеют низкую полосу пропускания и текстовые, как и соответствующие EIA-608. титры и субтитры EBU телетекста. Однако, отличие от пар байтов EIA-608, субтитры CEA-708 не могут быть модулированы на композитном выходе линии 21 NTSC VBI приемника ATSC и визуализироваться приемником с цифровыми видеокадрами, в том числе включает больше Набор символов Latin-1 и включает заглушки для поддержки полных заголовков UTF-32 и загружаемых шрифтов. Потоки субтитров CEA-708 также могут инкапсулировать пары байтов EIA-608 внутри, что является довольно распространенным использованием.

Субтитры CEA-708 вводятся в видеопотоки MPEG-2 в данные пользователя изображения. Пакеты расположены в порядке изображений и должны быть переставлены так же, как и рамки изображений. Это известно как транспортный поток DTVCC. Этот канал с фиксированной пропускной способностью , который имеет 960 бит / с, обычно выделяемых для обратно совместимых "инкапсулированных" заголовков Строки 21, и 8640 бит / с, выделяемых для заголовков CEA-708, всего 9600 бит / с. с. Стандарт ATSC A / 53 содержит особенности кодирования. Основная форма сигнализации - через дескриптор заголовка PSIP, который указывает язык каждого заголовка и если он отформатирован для «легкого чтения» (3-й уровень для изучающего языка) в PSIP EIT для каждого события и, возможно, в H.222 PMT, только если видео всегда отправляет данные субтитров.

Декодеры субтитров CEA-708 требуются в США в соответствии с требованиями FCC для всех цифровых телевизоров с диагональю 13 дюймов (33 см) или больше. Кроме того, некоторые вещательные компании по правилам FCC требуют субтитров процент их трансляций.

Содержание
  • 1 Пакеты в CEA-708
    • 1.1 Данные изображения пользователя
    • 1.2 Пакет данных со скрытыми субтитрами (cc_data_pkt)
    • 1.3 Пакет DTVCC (cc_data_1 / cc_data_2)
    • 1.4 Пакет служебного блока (packet_data)
  • 2 Кодирование потока заголовков (block_data)
    • 2.1 Группы символов
      • 2.1.1 Таблица C0
      • 2.1.2 Таблица C1
      • 2.1.3 Таблица C2
      • 2.1.4 Таблица C3
      • 2.1.5 Таблица G0
      • 2.1.6 Таблица G1
      • 2.1.7 Таблица G2
      • 2.1.8 Таблица G3
    • 2.2 Команды заголовков
      • 2.2.1 EndOfText (0x03)
      • 2.2.2 SetCurrentWindow0-7 (0x80-0x87)
      • 2.2.3 ClearWindows (0x88 ​​+ 1 байт)
      • 2.2.4 DisplayWindows (0x89 + 1 байт)
      • 2.2.5 HideWindows (0x8A + 1 байт)
      • 2.2.6 ToggleWindows (0x8B + 1 байт)
      • 2.2.7 DeleteWindows (0x8C + 1 байт)
      • 2.2.8 Задержка (0x8D + 1 байт)
      • 2.2.9 DelayCancel (0x8E)
      • 2.2.10 Сброс (0x8F)
      • 2.2.11 SetPenAttributes (0x90 + 2 байта)
      • 2.2.12 SetPenColor (0x91 + 3 байта)
      • 2.2.13 SetPenLocation (0x92 + 2 байта)
      • 2.2.14 SetWindowAttributes (0x97 + 4 байта)
      • 2.2.15 DefineWindow07 (0x98-0x9F, + 6 байтов)
        • 2.2.15.1 Предопределенный пера
        • 2.2.15.2 Предопределенный стиль окна
  • 3 Как интерпретировать поток заголовков
    • 3.1 Текст / команды
    • 3.2 Перенос слов
    • 3.3 Идентификатор привязки
    • 3.4 Шрифты
    • 3.5 Windows
    • 3.6 Блокировка строк и столбцов
    • 3.7 Замечания по реализации
  • 4 Ссылки
  • 5 Внешние ссылки
Пакеты в CEA-708

Потоки заголовков передаются с множеством оболочек пакетов вокруг них. Это пользовательские данные изображения, которые содержат данные заголовка, который содержит пакеты cc_data, который содержит пакеты заголовка канала, который содержит служебный блок, содержит потоки заголовков. Эти пакеты подробно развитие в этом разделе. Но сами потоки использования в следующих разделах.

Это разбиение на уровнях основано на эталонной модели протокола OSI :

Уровни OSIУровни DTVCCКомментарии
ПриложениеИнтерпретацияВыдача команд и добавление текста в окнах
ПрезентацияКодированиеРазделение отдельных команд и символов
СеансСервисПакеты служебного блока
-ПакетСборка пакета DTVCC из пакетов cc_data
ТранспортВнедлеченные пакеты cc_data из видеокадров
СетьНеиспользуемаяпрямая связь
СсылкаSMPTE 259M или H.222 или MXF видеокадры, отделенные от формата канала
ФизическийSDI или 8VSB , демодулированный из передачи

В этом разделе будут различные пакеты, уровень кодирования и уровни представления в оставшейся части этого документа.

Данные пользователя изображения

Они вставляются перед активным видеокадром или видеопакетом SMPTE 259M. Общие видеопакеты - это заголовок изображения, набор параметров изображения и сущность Формат обмена материалами.

ISO / IEC 13818 / 14496-2 префикс структуры пользовательских данных
ДлинаИмяТипЗначение
32 битыuser_data_start_codeшаблонный bslbf0x000001B2
32 битаuser_identifierASCII bslbfGA94
8 биткод_типа_пользователяuimsbf3
X * 8 битструктура_типа_пользователядвоичныйв свободной форме

bslbf: битовая строка, сначала левый бит; uimsbf: целое число без знака, первый старший бит

H.264 / H.265 префикс дополнительной расширенной информации
ДлинаИмяТипЗначение
8–16 битnal_unitbslbf с шаблоном6 в 8 битах для H.264. 39 из 16 -биты для H.265
8 битpayloadTypeuimsbf4
8 битpayloadSizeuimsbfпеременная
8 битitu_t_t35_country_codeuimsbf181
16 битitu_t_t35_provider_codeuimsbf49 или 47
32 битаATSC_идентификатор_пользователя. (только для провайдера 49)ASCII bslbfGA94
8 битATSC1_data_user_data_type_code. (только для провайдера 47 или 49)uimsbf3
8 битDIRECTV_user_data_length. (только для провайдера 47)uimsbfпеременная
X * 8 битструктура_типа_пользователядвоичныйпроизвольная форма

bslbf: бит строка, сначала левый бит; uimsbf: целое число без знака, первый старший бит

ПРИМЕЧАНИЕ : SEI в зависимости от кодировщика может содержать больше полезных данных, чем только заголовки, поэтому потребуется перемещаться по всем содержащимся внутри типам полезных данных.

Если для itu_t_t35_country_code установлено значение 181, itu_t_t35_provider_code определяет производителей, обслуживаемых в США.

itu_t_t35_provider_code для поддерживаемых производителей в США, когда установлено значение 47, определяет DirecTV user_data, а значение 49 определяет ATSC user_data.

Код ATSC_user_identifier для ATSC1_data - «GA94», а для EBU AFD_data - «DTG1».

Если код ATSC1_user_data_type_code не равен 3 для DTV CC, 4 для SCTE EIA-608, 5 для выбора яркости с амплитудно-импульсной модуляцией SCTE или 6 для штриховых данных EBU, то пакет будет завершен байты 0x0, 0x0, 0x1.

SMPTE 291M пакетирование
ДлинаИмяТипПо умолчанию
16 или 128 битancillary_flag или. ancillary_headerшаблонный bslbf или. 7 uimsbf0xFFFF или. меняется
8 битdata_iduimsbf97 (0x61)
8 битидентификатор_вторичных_данныхuimsbf1
8 битколичество_данныхuimsbf78 (0x4E)
16 битcdp_iduimsbf0x9669
8 битcdp_data_countuimsbf78 (0x4E)
4 битаcdp_framing_rate. (30000/1001 = 4)uimsbf4
4 битаcdp_reserveduimsbf15 (0xF)
1 битcdp_timecode_addedflag0
1 битcdp_data_block_addedфлаг1
1 битcdp_service_info_addedфлаг0
1 битcdp_service_info_startфлаг0
1 битcdp_service_info_changedфлаг0
1 битcdp_service_in fo_endфлаг0
1 битcdp_contains_captionsфлаг1
1 битcdp_reservedflag1
16 битcdp_counteruimsbfменяется
8 битcdp_data_sectionuimsbf0x72
X * 8 битструктура_типа_пользователядвоичныйв свободной форме
8 битcdp_footer_sectionuimsbf0x74
16 битcdp_counteruimsbfизменено
8 битcdp_checksumuimsbfизменяется

bslbf: битовая строка, сначала левый бит; uimsbf: целое число без знака, первый старший бит

Эта структура была использована для любого цифрового звука или метаданных, которые должны быть синхронизированы с видеокадром. SDI транспортирует каждые восемь битов в 10-битовом выровненном пакете, в отличие от MXF, выровненного по байтам, а байты вспомогательных флагов заменены 128-битным заголовком. Если cdp_timecode_added - истина, то пятибайтовый раздел временного кода SMPTE вставляется перед cdp_data_section. Если cdp_service_info_added истинно, то после cdp_data_section вставляется двухбайтовый заголовок и семь байтов в список служб для служб заголовков. Для cdp_framing_rate можно задать следующие перечисления: 1 для 24000/1001, 2 для 24, 3 для 25, 4 для 30000/1001, 5 для 30, 6 для 50, 7 для 60000/1001 и 8 для 60 кадров в секунду.

cdp_timecode используется, когда поток данных cdp прерывается (т. Е. Не дополняется), а cdp_service_info используется для добавления дополнительных деталей к метаданным вещания PSIP, таких как языковой код, удобство чтения и широкоэкранное использование.

cdp_checksum - это значение, необходимое для приведения арифметической суммы всего пакета (от первого байта cdp_id до cdp_checksum включительно) по модулю 256 к нулю.

структура_типа_пользователя
ДлинаИмяТипПо умолчанию
1 бит (b7)флаг_em_data_процессаflag1
1 бит (b6)process_cc_data_flagflag1
1 бит (b5)additional_data_flagflag0
5 бит (b0-b4)cc_countuimsbfпеременная
8 битem_data. (нет в данных CDP)uimsbf255
cc_count * 24 битаcc_data_pkt'sbslbfв свободной форме
8 битmarker_bits. (нет в данных CDP)bslbf с шаблоном255
24+ битATSC_reserved_user_data. (нет в данных CDP)bslbfв свободной форме

Биты маркера и зарезервированные биты должны быть установлены по умолчанию. Если дополнительный_data_flag установлен, то ATSC_reserved_user_data будет в конце пакета, оканчивающимся байтами 0x0,0x0,0x1. Если process_cc_data_flag установлен, cc_data_pkt должны быть проанализированы следующим образом:

В какое-то время в будущем process_em_data_flag укажет, следует ли обрабатывать набор битов em_data. Временное значение еще не было определено в стандарте ATSC a / 53.

Пакет данных с субтитрами (cc_data_pkt)

Всего 3та:

ДлинаИмяТипПо умолчанию
5 бит (b7-b3)маркерные_биты (все единицы)шаблонный bslbf31
1 бит (b2)cc_validфлаг1
2 бита (b1-b0)cc_typebslbf0
8 битcc_data_1bslbfDTVCC в свободной форме / EIA-608, байт 1
8 битcc_data_2bslbfDTVCC в свободной форме / EIA-608, байт 2

Если cc_valid не установлен, cc_data_pkt следует считать заполнением и отбрасывать. Если он установлен, cc_type будет одним из четырех значений: NTSC_CC_FIELD_1 = 0, NTSC_CC_FIELD_2 = 1, DTVCC_PACKET_DATA = 2, DTVCC_PACKET_START = 3. 1 поля cc_data должны интерпретироваться как EIA-608 Captions (с учетом 4 заголовков, как это делает EIA-608). Если cc_type равно 3, тогда декодер должен начать сборку пакета заголовка канала с cc_data, как описано ниже, а если cc_type равен 2, он должен добавить cc_data к любому собираемому пакету канала заголовка. Если пакет DTVCC уже собирается и либо установлен cc_valid, либо cc_type равен 3, либо cc_valid очищен, а cc_type равно 2 или 3, то пакет следует считать завершенным.

ПРИМЕЧАНИЕ: В декодированных заголовках пакеты cc_data должны быть повторно собраны в правильном порядке для создания пакетов DTVCC. В стандарте это не ясно, но похоже, что это должно быть в порядке представления кадров, а не в закодированных кадров. Это означает, что в кодировщике пакетов DTVCC, вероятно, должны быть разбиты и вставлены в пользовательские данные изображения как пакеты cc_data в порядке отображения.

ПРИМЕЧАНИЕ: Чтобы избежать этой ошибки в стандарте CEA-708, некоторые кодеры кодируют заголовки только для одного типа кадра, например только P-кадра или только I-кадра, поскольку, если используется только один тип кадра, кадр порядок отображение и кодирования кадров одинаков.

Пакет DTVCC (cc_data_1 / cc_data_2)

ДлинаИмяТипПо умолчанию
2 битапорядковый_номерuimsbf0
6 битразмер_пакета. (если 0, размер_пакета равен 64)uimsbfпеременная
(размер_пакета * 2-1) * 8 битовданные_пакетадвоичныйпроизвольный формат

В данных_пакета существует только один тип пакета. Это называется сервисным блоком. Это дополнительно подразделяет транспортный поток DTVCC на 63 подпотока, каждый из которых включает отдельную услугу субтитров. Служба 1 обозначена как основная служба субтитров, а служба 2 - это служба дополнительных языков. Дескриптор Caption указаны любые другие предлагаемые услуги. Package_size определяет количество двух байтовых блоков, за которыми следуют нечетные блоки, дополненные байтом NULL.

Пакет сервисного блока (данные_пакета)

ДлинаИмяТипПо умолчанию
3 битаservice_numberuimsbf1
5 битразмер_блокаuimsbfпеременная
2 битаnull_fill. (только если service_number равен 7)выравнивание по байтам0
6 битрасширенный_service_number. (только если service_number равен 7)uimsbfпеременная
размер_блока * 8 битданные_блока. (когда размер_блока>0)uimsbfв свободной форме

Если service_number равен 7, то добавляется расширенный_service_number и используется вместо service_number. Если block_size равен 0, service_number также должен быть нулевым без наличия block_data. Это называется пустым заголовком служебного блока, который используется для заполнения пакета, когда не отправляются подписи.

Примечание: служебные блоки не могут пересекать границы пакетов канала титров. Это означает, что каждый пакет канала субтитров может быть проанализирован без сохранения состояния служебных блоков.

Кодирование потока субтитров (block_data)

63 подпотока службы субтитров содержат смешанный командный и текстовый поток, как и Telnet. Существует четыре подгруппы логического кода: CL, GL, CR и GR. Каждый из них имеет одно- и многосимвольные кодовые наборы.

Группа CL: C00x00-0x1FПодмножество управляющих кодов ASCII
Группа CR: C10x80-0x9FЗаголовок Коды управления
Группа CL: C20x1000-0x101FРасширенные разные коды управления
Группа CR: C30x1080-0x109FРасширенный набор управляющих кодов 2
Группа GL: G00x20-0x7FМодифицированная версия набора печатных символов ANSI X3.4 (ASCII)
Группа GR: G10xA0-0xFFISO 8859-1 Символы Latin 1
Группа GL: G20x1020-0x107FРасширенный набор кодов управления 1
GR Группа: G30x10A0-0x10FFБудущие символы и значки

Всякий раз, когда появляется командный символ, любой текст, накопленный в анализаторе, должен быть сброшен. Команда при отсутствии ожидающих команд может потребоваться очистка текста, в наборе команд C0 есть нулевая команда, известная как команда ETX. Также есть две специальные команды: Reset и DelayCancel. Их нужно анализировать с опережением. Выданная ранее команда Delay может быть отменена в любое время с помощью команды DelayCancel, поэтому, как только задержка обнаружена, декодер должен ожидать DelayCancel и искать только DelayCancel. С другой стороны, команда Reset отправляется для выхода из неизвестного состояния декодера, и все данные перед этим должны быть проигнорированы.

Группы символов

Таблица C0

0x000x010x020x030x040x050x060x070x080x090x0a0x0b0x0c0x0d0x0e0x0f
0x00NULETXBSFFCRHCR
0x10EXT1P16

NUL, BS, FF и CR интерпретируются так же, как в управляющих кодах ASCII. HCR перемещает перо в начало строки и удаляет ее содержимое. FF очищает экран и перемещает положение пера на (0,0). ETX - это команда NULL, закрытая ранее, которая используется для сброса текста в текущем окне, когда нет других команд. EXT1 используется для перехода в таблицы «C2», «C3», «G2» и «G3» для следующего байта. Наконец, P16 может установить для экранирования следующих байтов для китайских и других карт больших символов.

За всеми символами в диапазоне 0x10-0x17, который в настоящее время включает EXT1, следует один байт, необходимо который интерпретировать по-разному. И за всеми символами в диапазоне 0x18-x1f, который в настоящее время включает P16, следуют байта, которые необходимо интерпретировать по-разному. Если декодер сталкивается с одним из них и не знает, что делать, он все равно должен пропустить следующий или два байта, в зависимости от ситуации, прежде чем продолжить.

Таблица C1

0x000x010x020x030x040x050x060x070x080x090x0a0x0b0x0c0x0d0x0e0x0f
0x80CW0CW1CW2CW3CW4CW5CW6CW7CLWDSWHDWTGWDLWDLYDLCRST
0x90SPASPCSPLSWADF0DF1DF2DF3DF4DF5DF6DF7

Таблица C1 содержит все формы в настоящее время команды заголовков. Они будут подробно в следующем разделе.

Таблица C2

Таблица C2 не содержит команд по состоянию на CEA-708 версии A. Однако, если команда видна в этих наборах кодов, декодер должен пропустить соответствующее количество следующих байтов.

0x00-0x07+0 байтов
0x08-0x0f+1 байт
0x10-0x17+2 байта
0x18- 0x1f+3 байта

Таблица C3

Таблица C3 не содержит команд, начиная с CEA-708 версии A. Однако, если команда видна в этих кодовых наборах, декодер должен пропустить соответствующее количество следующих байтов.

0x80-0x87+4 байта
0x88-0x8f+5 байтов

Таблица G0

0x000x010x020x030x040x050x060x070x080x090x0a0x0b0x0c0x0d 0x0e0x0f
0x20SP!"#$%'()*+,-./
0x300123456789:;<=>?
0x40@ABCDEFGHIJKLMNO
0x50PQRSTUVWXYZ[\]^_
0x60`abcdefghijklmno
0x70pqrstuvwxyz{|}~MN

Таблица G0 в большей части из символов ASCII. SP здесь - сокращение от Space. MN - это музыкальная нота, которая заменяет код команды удаления в ASCII и может быть любым из «♩», «♪», «♫» или «♬» в зависимости от производителя приемника.

Таблица G1

0x000x010x020x030x040x050x060x070x080x090x0a0x0b0x0c0x0d0x0e0x0f
0xa0NBS ¡¤¦§¨©ª«-®
0xb0°±²³´µ·¸¹º»¼½¾¿
0xc0ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ
0xd0ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß
0xe0àáâãäåæçèéêëìíîï
0xf0ðñòóôõö÷øùúûüýþÿ

G1 Таблица в основном представляет собой набор символов ISO 8859-1 Latin-1. Обратите внимание, что символ 0xa0 - это неразрывный пробел, который следует использовать для предотвращения переноса слов для разделения двух отдельных строк.

Таблица G2

0x000x010x020x030x040x050x060x070x080x090x0a0x0b0x0c0x0d0x0e0x0f
0x20TSPNBTSPŠŒ
0x30BLK''šœŸ
0x40
0x50
0x60
0x70

TSP и NBTSP - это прозрачное пространство и неразрывное прозрачное пространство, соответственно. Таблица G2 содержит разные символы, которые могут использоваться не во всех браузерах. BLK указывает на сплошной блок, который заполняет весь символьный блок сплошным цветом переднего плана.

Таблица G3

Таблица G3 содержит только один символ, значок [CC], с квадратными углами. Этот персонаж находится по адресу 0xa0.

Команды заголовка

bitsИмя командыПараметры
ETX 0x038EndOfText
CW0 - CW7 0x80–0x878SetCurrentWindow0– 7
CLW 0x8816ClearWindowsрастровое изображение окна
DSW 0x8916DisplayWindowsрастровое изображение окна
HDW 0x8A16HideWindowsрастровое изображение окна
TGW 0x8B16ToggleWindowsрастровое изображение окна
DLW 0x8C16DeleteWindowsрастровое изображение окна
DLY 0x8D16Задержкадесятые доли секунды
DLC 0x8E8DelayCancel
RST 0x8F8Сброс
SPA 0x9024SetPenAttributesразмер пера, шрифт, сценарии, курсив, подчеркивание
SPC 0x9132SetPenColorцвет переднего плана, непрозрачность переднего плана, цвет фона, непрозрачность фона, цвет края, тип края
SPL 0x9224SetPenLocationстрока, столбец
SWA 0x9740SetWindowAttributesвыравнивание, направление печати, направление прокрутки, перенос слов, эффект изображения, направление эффекта, скорость эффекта. цвет заливки, цвет границы, тип границы, непрозрачность
DF0 - DF7 0x98–0x9F56DefineWindow0–7приоритет, номер привязки, привязка по вертикали, привязка по горизонтали, количество строк, столбцов, заблокировано, видимый, центрированный, стиль ID

EndOfText (0x03)

Команда EndOfText является пустой командой, которая может сброса любого буферизованного текста в текущее окно. Все команды принудительно сбрасывают любой буферизованный текст в текущем окне, поэтому эта команда нужна только тогда, когда нет других ожидающих команд.

SetCurrentWindow0-7 (0x80-0x87)

SetCurrentWindow сообщает декодеру титров, какое окно описывают следующие команды: SetWindowAttributes, SetPenAttributes, SetPenColor, SetPenLocation. Если указанное еще не было создано с помощью команды DefineWindow, то SetCurrentWindow и свойства окна можно безопасно игнорировать окно.

ClearWindows (0x88 ​​+ 1 байт)

ClearWindows очищает все окна, показывает в 8-битном растровом изображении окна.

DisplayWindows (0x89 + 1 байт)

DisplayWindows отображает все окна, быстро в 8-битном растровом изображении окна.

HideWindows (0x8A + 1 байт)

HideWindows скрывает все окна, использует в 8-битном растровом изображении окна.

ToggleWindows (0x8B + 1 байт)

ToggleWindows скрывает все отображаемые окна и отображает все скрытые окна, используемые в 8-битном растровом изображении окна.

DeleteWindows (0x8C + 1 байт)

DeleteWindows удаляет все окна, использует в 8-битном растровом изображении окна. Если в текущем режиме указано последнее окно команды SetCurrentWindow, то текущее окно становится неопределенным, и команды окна окна не должны действовать до следующей команды SetCurrentWindow или DefineWindow.

Задержка (0x8D + 1 байт)

Задержка приостанавливает всю обработку текущей службы, за вспышку DelayCancel и Reset. Период приостановки устанавливается однобайтовым параметром. Параметр указывает задержку в десятых долях секунды, поэтому минимальная задержка составляет 0,1 секунды, максимальная - 25,5 секунды. Задержку в 0 секунд можно игнорировать в декодере, но не следует из кодера. Задержка должна быть отменена, если входной буфер декодера титров переполняется, получено сообщение DelayCancel или Reset или истекает указанное время задержки.

DelayCancel (0x8E)

DelayCancel завершает любую активную задержку и возобновляет нормальную обработку команд. DelayCancel следует сканировать во время задержки.

Reset (0x8F)

Reset удаляет все окна, отменяет любую активную задержку и очищает буфер перед командой Reset. Сброс следует сканировать во время задержки.

SetPenAttributes (0x90 + 2 байта)

Команда SetPenAttributes указывает, как атрибуты символов должны быть в текущем окне до следующей команды SetPenAttributes. Эта команда имеет следующие параметры:

+ - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + | TXT_TAG | ОФС | ПСЗ | | Я | U | EDTYP | FNTAG | + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + 15 8 7 0 ОФС = смещение; PSZ = размер пера I = курсивный переключатель; U = переключатель подчеркивания EDTYP = тип края; FNTAG = тег шрифта
  • размер пера, 2 бита, {SMALL = 0, STANDARD = 1, LARGE = 2, ILLEGAL_VAL = 3}
  • смещение, 2 бита, {SUBSCRIPT = 0, NORMAL = 1, SUPERSCRIPT = 2, ILLEGAL_VAL = 3}
  • текстовый тег, 4 бита, {dialog = 0, source_or_speaker_id = 1, electronics_reproduced_voice = 2, dialog_in_other_language = 3, voiceover = 4, audible_translation = 5, voice_translation = 6, subtitle_translation = 7, song_lyrics = 8, sound_effect_description = 9, music_score_description = 10, oath = 11, undefined_0 = 12, undefined_1 = 13, undefined_2 = 14, invisible = 15}
  • тег шрифта, 3 бита, {default = 0, monospaced_serif = 1, пропорциональный_serif = 2, monospaced_sanserif = 3, пропорциональный_sanserif = 4, casual = 5, cursive = 6, smallcaps = 7}
  • тип края, 3 бита, {NONE = 0, RAISED = 1, DEPRESSED = 2, UNIFORM = 3, LEFT_DROP_SHADOW = 4, RIGHT_DROP_SHADOW = 5, ILLEGAL_VAL0 = 6, ILLEGAL_VAL1 = 7}
  • подчеркивание, 1 бит, {NO = 0, YES = 1}
  • курсив, 1 бит, {NO = 0, YES = 1}

SetPenColor (0x91 + 3 байта)

SetPenColor устанавливает передний план, задний план d, и цвет края для будущего символов. Цвет задается 6 битами, по 2 на синий, зеленый и красный. Биты самого низкого порядка соответствуют синему, следующие два - зеленому, а биты самого высокого порядка - красному. Непрозрачность представлена ​​двумя битами, они представляют собой SOLID = 0, FLASH = 1, TRANSLUCENT = 2 и TRANSPARENT = 3. Цвет края - это цвет обведенных краев текста, но контур имеет ту же непрозрачность, что и передний план, поэтому биты самого высокого порядка третьего байта должны быть очищены. Параметры следующие:

+ - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + | ФОП | F_R | F_G | F_B | | BOP | B_R | B_G | B_B | | 0 | 0 | E_R | E_G | E_B | + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + 23 16 15 8 7 0 ФОП = непрозрачность переднего плана; BOP = непрозрачность фона F_? = компонент цвета переднего плана; B_? = компонент цвета фона E_? = компонент цвета края
  • цвет переднего плана, 6 бит
  • непрозрачность переднего плана, 2 бита
  • цвет фона, 6 бит
  • непрозрачность фона, 2 бита
  • цвет края, 6 бит

SetPenLocation (0x92 + 2 байта)

SetPenLocation указывает местоположение следующего бита добавляемого текста в текущем окне. У него два параметра: строка и столбец. Если не заблокировано (см. «Определить») и установлен МАЛЕНЬКИЙ шрифт, местоположение может находиться за пределами допустимых окон адресов.

+ - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + | 0 | 0 | 0 | 0 | СТРОКА | | 0 | 0 | КОЛОННА | + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + 15 8 7 0
  • строка, 4 бита, обычно 0-14
  • пустое заполнение, 4 бита
  • столбец, 6 бит, обычно 0-31 для форматов 4: 3 и 0-41 для форматов 16: 9
  • нулевое заполнение, 2 бита

SetWindowAttributes (0x97 + 4 байта)

SetWindowAttributes Устанавливает текущие значения окна. Цвет заливки задается 6 битами, по 2 на синий, зеленый и красный. Биты самого низкого порядка соответствуют синему, следующие два - зеленому, а биты самого высокого порядка - красному. Непрозрачность заливки двумя битами, они предоставляют собой SOLID = 0, FLASH = 1, TRANSLUCENT = 2 и TRANSPARENT = 3. Таким же образом задается цвет границы окна. Однако тип границы разделен на два поля. Их следуетинировать, причем тип границы 01 представляет биты младшего разряда, а тип границы 2 - бит старшего разряда. После объединения тип границы имеет 6 допустимых значений: NONE = 0, RAISED = 1, DEPRESSED = 2, UNIFORM = 3, SHADOW_LEFT = 4 и SHADOW_RIGHT = 5.

+ - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + | ФОП | F_R | F_G | F_B | | BTP | B_R | B_G | B_B | | W | B | PRD | SCD | JST | | EFT_SPD | EFD | DEF | + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + 31 24 23 16 15 8 7 0 FOP = непрозрачность заливки; BTP = младшие биты типа границы; B = верхний бит типа границы F_? = компонент цвета заливки; B_? = компонент цвета границы W = переключатель переноса слов; PRD = направление печати; SCD = направление прокрутки JST = выравнивание; EFT_SPD = скорость эффекта; EFD = направление эффекта; DEF = эффект отображения
  • цвет заливки, 6 бит. Цвет внутренней части окна.
  • непрозрачность заливки, 2 бита. {SOLID = 0, FLASH = 1, TRANSLUCENT = 2 и TRANSPARENT = 3}
  • цвет границы, 6 бит. Цвет границы окна.
  • тип границы 01, 2 бита. См. Обсуждение выше.
  • выравнивание, 2 бита. Для направления направо и справа налево печати слева используются следующие значения: {ЛЕВЫЙ = 0, ВПРАВО = 1, ЦЕНТР = 2, ПОЛНЫЙ = 3}, для осуществления печати сверху вниз и снизу вверх. значения: TOP = 0, BOTTOM = 1, CENTER = 2, FULL = 3

Для выравнивания по левому краю декодеры должны отображать часть полученной строки текста при ее получении. Для выравнивания по центру, по правому краю и полного выравнивания декодеры могут отображать любую часть принятой строки текста при ее получении или задерживать выполнение установленной строки текста до достижения индикатора завершения строки. Индикатор завершения строки определяется как получение CR, ETX или любой другой команды, кроме SetPenColor, SetPenAttributes или SetPenLocation, где перо перемещение находится в том же ряду.

Получение символов для отображаемой строки, которая уже содержит текст с выравниванием по центру, правому краю или полным выравниванием, приведет к тому, что строка будет очищена перед отображением нового полученного символа и любых символов. Получение команды согласования, которая изменяет последнее полученное обоснование для данного окна, приведет к очистке окна.

  • направление прокрутки, 2 бита. Это указывает, в каком направлении будет прокручиваться текст при достижении конца «строки» заголовка. Он имеет одно из четырех значений: LEFT_TO_RIGHT = 0, RIGHT_TO_LEFT = 1, TOP_TO_BOTTOM = 2 и BOTTOM_TO_TOP = 3.
  • направление печати, 2 бита. Это определяет, как текст заказа добавляется в окно. Он имеет одно из четырех значений: LEFT_TO_RIGHT = 0, RIGHT_TO_LEFT = 1, TOP_TO_BOTTOM = 2 и BOTTOM_TO_TOP = 3.
  • перенос слов, 1 бит. Если включен перенос заданных слов, в противном случае перенос слов не должен.
  • тип границы 2, 1 бит. См. Обсуждение выше.
  • эффект отображения, 2 бита. Это будет эффект, который будет реакцией для отображения или скрытия окна. Он имеет одно из трех допустимых значений: SNAP = 0, FADE = 1 и WIPE = 2. SNAP означает, что окно должно немедленно стать полностью непрозрачным. FADE, что окно должно исчезать или появляться со скоростью эффекта. Наконец, WIPE означает, что окно должно вылететь на экран или за пределы экрана от границы границы экрана, указанной в направлении эффекта, со скоростью, указанной в скорости эффекта
  • направление эффекта, 2 бита. Это указывает, откуда возникает эффект вытеснения на дисплее окна. Он имеет одно из четырех значений: LEFT_TO_RIGHT = 0, RIGHT_TO_LEFT = 1, TOP_TO_BOTTOM = 2 и BOTTOM_TO_TOP = 3. Когда окно стирается с экрана, его следует стирать в направлении, противоположном тому, как оно было протерто на экране.
  • скорость эффекта, 4 бита. Это указывает в полсекунды, сколько времени должно занять отображение заголовка или эффект скрытия, например FADE и WIPE. Максимальное время составляет 7,5 секунд, а минимальное ненулевое значение - 0,5 секунды.

Цвета, рисование текста, эффекты и типы границ можно настроить с помощью атрибутов SetWindowAttributes и SetPenAttributes команды. Однако поставщик заголовков может пожелать использовать предопределенные стандартные стили окна. Набор предопределенных стилей будет жестко сохранен в приемниках. Этот набор предвосхищает наиболее широко используемые типы окон субтитров, чтобы сохранить полосу пропускания канала субтитров за счет устранения необходимости передавать лишние команды SetWindowAttributes и SetPenAttributes .

Предопределенные стили окна и пера можно указать с помощью параметров стиля окна и идентификатора стиля пера в команде DefineWindow .

DefineWindow07 (0x98-0x9F, + 6 байтов)

DefineWindow0-7 создает одно из восьми окон, используемых декодером титров. Эта команда должна периодически посылаться кодировщиком титров даже для уже существующих окон, чтобы только что настроенный декодер титров мог начать отображать титры. При запуске в уже существующем окне стиль пера и стиль окна могут быть оставлены нулевыми, это указывает декодеру не важные текущие стили, если они существуют, и инициализировать оба стиля 1, если окно не существует в его контексте.

+ - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + | 0 | 0 | V | R | C | ПРИОР | | P | VERT_ANCHOR | | HOR_ANCHOR | + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + 47 40 39 32 31 24 В = видимый; R = переключатель блокировки строки; C = переключатель блокировки столбца PRIOR = приоритет; P = относительный переключатель + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + | ANC_ID | ROW_CNT | | 0 | 0 | COL_COUNT | | 0 | 0 | WNSTY | ПНСТИ | + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + + - + - + - + - + - + - + - + - + 23 16 15 8 7 0 WNSTY = стиль окна; PNSTY = стиль пера

Параметры следующие:

  • приоритет, 3 бита, 0-7. Декодер требуется только для отображения до четырех окон. Если запрашивается более четырех отображаемых окон, декодер должен отображать четыре окна с наивысшим приоритетом.
  • блокировка столбца, 1 бит. Если установлено, блокировка столбца фиксирует абсолютное количество отображаемых столбцов. Если не задан, декодер заголовка может отображать больше столбцов текста, если размер шрифта позволяет это, и команда SetPenLocation может перейти в место за пределами заданного размера окна.
  • блокировка строки, 1 бит. Если установлено блокировка строк фиксирует абсолютное количество отображаемых строк. Если не задан, декодер заголовка может отображать больше строк текста, если это позволяет размер шрифта, а команда SetPenLocation перейти в место за пределами определенного размера окна.
  • видимый, 1 бит. Если установлен, этот флаг заставляет окно при создании, если не установлен, то окно изначально скрыто.
  • ноль, 2 бита. Нулевое заполнение.
  • привязка вертикальная, 7 бит. Вертикальное положение точки привязки окна. Диапазон обычно 0-74. Когда бит относительного позиционирования установлен, диапазон составляет 0-99.
  • относительное позиционирование, 1 бит. Если установлена ​​привязка по горизонтали и привязке по вертикали представляет собой относительные координаты, проценты, а не обычные координаты.
  • привязка по горизонтали, 8 бит. Горизонтальное положение точки привязки окна. Диапазон обычно составляет 0-209, если соотношение сторон потока составляет 16: 9, и 0-159, когда соотношение сторон потока составляет 4: 3.
  • количество строк, 4 бита. Это количество строк текста, при условии, что размер шрифта СТАНДАРТНЫЙ, окно будет удерживаться. Диапазон 0-15. ПРИМЕЧАНИЕ: На практике декодер должен быть единицу, чтобы получить задумал эффект. т.е. 0 ->1, 1 ->2 и т. д.
  • ID привязки, 4 бита. Допустимые значения: {UPPER_LEFT = 0, UPPER_CENTER = 1, UPPER_RIGHT = 2, MIDDLE_LEFT = 3, MIDDLE_CENTER = 4, MIDDLE_RIGHT = 5, LOWER_LEFT = 6, LOWER_CENTER = 7, LOWER_RIGHT = 8}
  • количество столбцов, 6 биты. Это количество столбцов текста, при условии, что размер шрифта СТАНДАРТНЫЙ, окно будет удерживаться. Диапазон 0–31 для потоков 4: 3 и 0–41 для потоков 16: 9. ПРИМЕЧАНИЕ: практика На декодирование должна быть единицу для получения желаемого эффекта. т.е. 0 ->1, 1 ->2 и т. д.
  • ноль, 2 бита. Нулевое заполнение.
  • стиль пера, 3 бита. Если значение равно нулю и это новое окно, для будущих символов следует использовать стиль пера. Если равно нулю и это уже существующее значение, следует использовать предыдущий стиль пера. Для ненулевых значений стиль пера должен быть так, как если бы SetPenStyle был вызван из приведенной ниже таблицы стилей пера.
  • стиль окна, 3 бита. Если значение равно нулю и это новое окно, для будущих символов следует использовать стиль окна один. Если значение равно нулю и это существующее окно, следует использовать предыдущий стиль окна. Для ненулевых значений окна должен быть установлен так, как если бы SetWindowStyle был активирован в таблице стилей окна.
  • ноль, 2 бита. Нулевое заполнение.
Предопределенный стиль пера

Если не указано, предопределенный размер шрифта является стандартным, смещение нормальное, курсив и подчеркивание не установлено, тип края отсутствует, цвет переднего плана белый, непрозрачность переднего плана сплошная, цвет фона - черный, непрозрачность фона - сплошная, а цвет края - черный.

  1. По умолчанию
  2. Моноширинный шрифт без засечек
  3. Пропорциональный шрифт без засечек
  4. Моноширинный без засечек
  5. Пропорциональный без засечек
  6. Моноширинный без зачек - непрозрачность фона прозрачный
  7. Пропорциональный без засечек - прозрачность фонана
Предопределенный стиль окна

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

  1. Всплывающее окно стиля CEA-608
  2. Всплывающее окно с прозрачным фоном - непрозрачность заливки прозрачной
  3. Стиль CEA-608 PopUp по центру - выравнивание по центру
  4. Стиль CEA- 608 RollUp - включен перенос по словам
  5. RollUp с прозрачным фоном - включен перенос по словам; прозрачность заливки - прозрачная
  6. CEA-608 Style Centered RollUp - перенос слов включен; выравнивание по центру
  7. Тикерная лента - направление печати сверху вниз; Направление прокрутки справа налево
Как интерпретировать поток заголовков

Текст / команды

Перенос слов

Иногда может потребоваться выполнение переноса слов в декодере титров. Это может произойти из-за того, что конечный пользователь декодирует заголовок указывает шрифт, отличный от того, который запрашивает кодировщик, или конечный пользователь желает видеть больше текста заголовка, чем обычно. Обратите внимание, что SetWindowAttributes устанавливает флаг переноса слов, если он установлен, это означает, что субтитры написаны с учетом переноса слов, и это может быть обозначено в качестве подсказки декодеру, что перенос слов безопасен. Перенос слов может приготовить для символов возврат каретки, пробела и дефиса, однако как неразрывный пробел (0xA0 в таблице G1), так и неразрывный прозрачный пробел (0x21 в таблице G2) не следует считать безопасными символами. переписать.

Идентификатор привязки

Существует девять допустимых индикаторов привязки,. Eia-708-anchor-id.png

Они используются, чтобы кодировать заголовка, как расширять текстовое поле, когда текст добавляется в окно заголовка. Окну назначается точка привязки или идентификатор и привязки. Если точка привязки равна 0,0, то окно будет расширяться вниз и вправо от верхнего левого угла области заголовка. Если точка привязки составляет 50%, 50%, а привязки равен 4, окно будет расширяться одинаково во всех направлениях от центра области заголовка.

Шрифты

CEA-708 поддерживает восемь тегов шрифтов: undefined, моноширинный шрифт с засечками, пропорциональный шрифт с засечками, моноширинный без засечек, пропорциональный без засечек, обычный, курсив, прописные буквы. Первый не определен, и его, вероятно, следует избегать. Однако, как бы ни были реализованы эти шрифты, их должно быть возможно выделить и выделить курсивом. Жирные версии не нужны, но должна быть возможность рисовать контур каждой буквы другим цветом и непрозрачностью, чем заливка. Наконец, эти шрифты должны поддерживать надстрочные и подстрочные индексы, а также поддерживать Latin-1 плюс дополнительные символы в CEA-708, такие как символы [CC] и дюжину или около того Unicode символов в этом стандарте. Ниже представлены некоторые примеры шрифтов, подробнее см. Статью Википедии Шрифты.

Пропорциональный шрифт с засечками
Пропорциональные и моноширинные шрифты Rockwell font.png
Пропорциональный шрифт без засечек
Arial sample.png

Окна

Адресуемая область окна всегда должна находиться в пределах области безопасного заголовка, чтобы все адресные местоположения находились в пределах окна дисплея, если монитор выходит за пределы изображение на непрямоугольном экране. Если видеопоток имеет соотношение сторон 16: 9, адреса должны быть в диапазоне 0..74 для вертикальных адресов и 0..209 для горизонтальных адресов. Если видеопоток имеет соотношение сторон 4: 3, адреса должны быть в диапазоне 0..74 для вертикальных адресов и 0..159 для горизонтальных адресов. Для других компаний следует использовать относительную адресацию, и как вертикальные, так и горизонтальные адреса должны находиться в диапазоне 0..99%.

Размер должен масштабироваться в зависимости от размера окна шрифта. Имея это в виду, строки длиной более 32 символов, не приветствуются даже на экране с исходным сторонением 16: 9, так что пользователь может выбрать шрифты большего размера, чем указано.

Блокировка строк и столбцов

Функции блокировки строк и столбцов поддерживаются в стандарте CEA-708-B, но в более поздней версии CEA-708-C предполагалось, что и строки, и столбцы заблокированы. Основные функции следующие:

Всего четыре комбинации 1) Строка заблокирована и столбец заблокирован 2) Строка разблокирована и столбец заблокирован 3) Строка заблокирована и столбец разблокирован 4) Строка разблокирована и столбец разблокирован 4) Строка разблокирована и столбец разблокирован

1. Строка заблокирована и столбец заблокирован: если заблокированы и строки, и столбцы, то размер окна с точки зрения столбцов и строк не может быть увеличен.

Для окна, если количество строк и столбцов определено, скажем, как 3 и 10, тогда текст «СТРОКИ И КОЛОННЫ НЕ ЗАБЛОКИРОВАНЫ НА ВСЕГДА И ВСЕГДА», который появляется в строке 0, выглядит так: ниже (предположим, что перенос слов отключен)

1. СТРОКИ И C 2. 3.

Так как оба заблокированы, текст не может быть расширен за пределы 10 столбцов, а также строка не может быть расширена за пределы строки 0.

2. Строка расширена и столбец заблокирован: в этом случае окно может быть расширено до максимальной строки, может быть расширено в команде определения окна. Тот же текст выше будет выглядеть как ниже

1. СТРОКИ И C 2. OLUMNS 3. НЕ ЗАБЛОКИРОВАНЫ

Строка разблокирована, поэтому текст может быть расширен до количества строк команды определения окна.

3. Строка заблокирована и столбец разблокирован: в этом случае окно можно расширить до количества столбцов. В соответствии со стандартом CEA-708 Максимальное количество столбцов для любого окна равно 32. Тот же текст выглядит так, как показано ниже

1. СТРОКИ И КОЛОННЫ НЕ ЗАБЛОКИРОВАНЫ 2. 3.

Столбец разблокирован, поэтому текст может быть расширен до количества столбцов.

4. Строка разблокирована и столбец разблокирован: в этом случае окно может быть расширено как на строки, так и на столбцы. Тот же самый текст будет выглядеть как ниже

1. СТРОКИ И КОЛОННЫ НЕ БЛОКИРУЮТСЯ 2. НАВСЕГДА И ВСЕГДА И ВСЕГДА

Барселона разблокированы, текст может быть расширен до 32 столбцов, а также до всего строк.

Замечания по реализации

  • Минимальный размер буфера для каждой из 63 служб (служб буферы системы служб) составляет 128 байт.
  • В декодере титров команды DelayCancel и Reset должны интерпретироватьсяне механизм буферизации. Сканирование только кодов 0x8E и 0x8F должно быть безопасным.
  • В кодировщике субтитров значения 0x8E и 0x8F, возможно, потребуется закодировать в параметры другой команды. Чтобы избежать этой проблемы, команды можно разделить на несколько подкоманд.
  • Значок скрытого заголовка в кодовом наборе G3 не должен использовать закругленными углами в странах ВТО из-за проблем с лицензированием товарных знаков.
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-13 10:38:29
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте