|
libclosedcaption 1.0.3
Extração de closed caption ISDB-Tb/SBTVD de arquivos MPEG-TS
|
Comandos de controle C0, C1 e CSI do texto da legenda. Mais...
#include "caption-common.h"#include "caption-data.h"#include "caption-closed.h"#include "caption-management.h"

Ir para o código-fonte desse arquivo.
Estruturas de Dados | |
| struct | CC_ControlCodes_CallbackData_t |
| struct | CaptionClosedControls_t |
| struct | csi_arg_Pn |
Definições e Macros | |
| #define | DEBUG_CAPTION_CLOSED_CONTROLCODE |
| #define | CAPTION_CTRL_SET(code, callback) { code, callback, #code } |
| #define | CTRL_C0_NULL 0x00 |
| #define | CTRL_C0_BELL 0x07 |
| #define | CTRL_CSI_FB 0x20 |
| #define | CTRL_CSI_IB 0x3b |
| #define | CTRL_CSI_MAX_Pn_ARGS 5 |
| #define | CTRL_CSI_MAX_Pn_FIELDS (5+1) |
Definições de Tipos | |
| typedef uint8_t | CaptionClosed_CtrlCode_t |
Comandos de controle C0, C1 e CSI do texto da legenda.
O texto da legenda mistura caracteres e comandos de controle (ARIB STD-B24, Volume 1, 7.2; ABNT NBR 15606-1; ARIB TR-B14, 6.5):
CSI P1 ; P2 ; ... 0x20 F, onde os parâmetros são números decimais em ASCII e o byte final F identifica o comando (SWF, SDF, SDP...).Cada comando tem uma callback callback_controls_*, chamada por caption_closed_controls_load(). Ela lê os parâmetros, atualiza o CaptionClosed_t e avança a posição de leitura além dos parâmetros. Quando a callback retorna TRUE, o hook de controles é chamado (veja caption-hooking.h).
Comandos que não devem ser usados em closed caption (apenas em superimpose) retornam FALSE, mas ainda assim pulam os seus parâmetros, para que não sejam tratados como texto.
Exemplo de texto de legenda (TV Globo):
* 00000000 0c 9b 37 20 53 9b 31 37 36 3b 39 39 20 5f 9b 36 |..7.S.176;99._.6| * 00000010 30 38 3b 33 39 30 20 56 9b 33 36 3b 33 36 20 57 |08;390.V.36;36.W| * 00000020 9b 32 20 58 9b 31 36 20 59 9b 38 20 6e 88 1c 4c |.2.X.16.Y.8.n..L| * 00000030 40 87 90 50 5b 4d 41 54 45 55 53 5d 20 4f 20 43 |@..P[MATEUS].O.C| * 00000040 41 4c 49 58 54 4f 20 56 41 49 0d 52 45 53 4f 4c |ALIXTO.VAI.RESOL| * 00000050 56 45 52 20 4f 20 50 52 4f 42 4c 45 4d 41 20 44 |VER.O.PROBLEMA.D| * 00000060 4f 20 43 41 52 52 4f 2c 0d 4f 20 4d 41 49 53 20 |O.CARRO,.O.MAIS.| * 00000070 52 c1 50 49 44 4f 20 50 4f 53 53 cd 56 45 4c 2e |R.PIDO.POSS.VEL.| * * 0c CS: limpa a tela * 9b 37 20 53 CSI SWF(7): formato 960x540 horizontal * 9b ... 20 5f CSI SDP(176;99): posição da área de exibição * 9b ... 20 56 CSI SDF(608;390): tamanho da área de exibição * 9b ... 20 57 CSI SSM(36;36): tamanho dos caracteres * 9b 32 20 58 CSI SHS(2): espaçamento horizontal * 9b 31 36 20 59 CSI SVS(16): espaçamento vertical * 9b 38 20 6e CSI RCS(8): cor de raster transparente * 88 SSZ: caracteres pequenos * 1c 4c 40 APS(12, 0): cursor na linha 12, coluna 0 * 87 WHF: texto branco * 90 50 COL: fundo preto * 0d APR: nova linha * c1, cd 'Á' e 'Í' em ISO-8859-15 *
Definição no arquivo caption-closed-controls.h.
| #define DEBUG_CAPTION_CLOSED_CONTROLCODE |
Inclui o campo CaptionClosedControls_t::code_name nas tabelas de comandos, usado por caption_closed_controls_get_name() nas mensagens de depuração.
Definição na linha 68 do arquivo caption-closed-controls.h.
| #define CAPTION_CTRL_SET | ( | code, | |
| callback | |||
| ) | { code, callback, #code } |
Monta uma entrada das tabelas de comandos.
Definição na linha 101 do arquivo caption-closed-controls.h.
| #define CTRL_C0_NULL 0x00 |
NUL: ignorado.
Definição na linha 122 do arquivo caption-closed-controls.h.
| #define CTRL_C0_BELL 0x07 |
BEL: ignorado em closed caption.
Definição na linha 123 do arquivo caption-closed-controls.h.
| #define CTRL_CSI_FB 0x20 |
Byte intermediário (0x20) que antecede o byte final do CSI.
Definição na linha 315 do arquivo caption-closed-controls.h.
| #define CTRL_CSI_IB 0x3b |
Separador de parâmetros do CSI (';').
Definição na linha 316 do arquivo caption-closed-controls.h.
| #define CTRL_CSI_MAX_Pn_ARGS 5 |
Máximo de parâmetros lidos de um CSI.
Definição na linha 318 do arquivo caption-closed-controls.h.
| #define CTRL_CSI_MAX_Pn_FIELDS (5+1) |
Máximo de dígitos de um parâmetro, mais o '\0' (até "65535").
Definição na linha 319 do arquivo caption-closed-controls.h.
| typedef uint8_t CaptionClosed_CtrlCode_t |
Código de um comando de controle (C0, C1 ou CSI).
Definição na linha 71 do arquivo caption-closed-controls.h.
Comandos C0 (ARIB TR-B14, Tabela 3.11; ARIB STD-B24, Tabela 7-14).
Os valores sem uso são preenchidos com PAD, para que o código menos 0x08 seja o índice direto na tabela de callbacks.
Definição na linha 121 do arquivo caption-closed-controls.h.
Comandos C1 (ARIB TR-B14, Tabela 3.11; ARIB STD-B24, Tabela 7-15).
Os valores sem uso são preenchidos com PAD, para que o código menos 0x80 seja o índice direto na tabela de callbacks.
| Enumeradores | |
|---|---|
| CTRL_C1_BKF | Black Foreground: texto preto. |
| CTRL_C1_RDF | Red Foreground: texto vermelho. |
| CTRL_C1_GRF | Green Foreground: texto verde. |
| CTRL_C1_YLF | Yellow Foreground: texto amarelo. |
| CTRL_C1_BLF | Blue Foreground: texto azul. |
| CTRL_C1_MGF | Magenta Foreground: texto magenta. |
| CTRL_C1_CNF | Cyan Foreground: texto ciano. |
| CTRL_C1_WHF | White Foreground: texto branco. |
| CTRL_C1_SSZ | Small Size: caracteres pequenos. |
| CTRL_C1_MSZ | Middle Size: caracteres médios. |
| CTRL_C1_NSZ | Normal Size: caracteres normais. |
| CTRL_C1_SZX | Character Size Controls: tamanho especificado por P1. |
| CTRL_C1_PAD_0x8c | Sem uso. |
| CTRL_C1_PAD_0x8d | Sem uso. |
| CTRL_C1_PAD_0x8e | Sem uso. |
| CTRL_C1_PAD_0x8f | Sem uso. |
| CTRL_C1_COL | Colour Controls: cor do texto/fundo (P1, ou 0x20 P2 para a paleta). |
| CTRL_C1_FLC | Flashing Control: pisca. |
| CTRL_C1_CDC | Conceal Display Controls. |
| CTRL_C1_POL | Pattern Polarity Controls. |
| CTRL_C1_WMM | Writing Mode Modification. |
| CTRL_C1_MAC | Macro Command. |
| CTRL_C1_PAD_0x96 | Sem uso. |
| CTRL_C1_HLC | Highlighting Character Block: contorno. |
| CTRL_C1_RPC | Repeat Character: repete o próximo caractere. |
| CTRL_C1_SPL | Stop Lining: fim do sublinhado. |
| CTRL_C1_STL | Start Lining: início do sublinhado. |
| CTRL_C1_CSI | Control Sequence Introducer: sequência estendida, veja CaptionClosed_CtrlCodes_C1_CSI. |
| CTRL_C1_PAD_0x9c | Sem uso. |
| CTRL_C1_TIM | Time Controls: espera/temporização. |
| CTRL_C1_PAD_0x9e | Sem uso. |
| CTRL_C1_PAD_0x9f | Sem uso. |
Definição na linha 184 do arquivo caption-closed-controls.h.
Subcomandos do CSI: o byte final F da sequência CSI P1 ; P2 ; ... 0x20 F (ARIB STD-B24, Tabela 7-17).
Os valores sem uso são preenchidos com PAD, para que o código menos 0x53 seja o índice direto na tabela de callbacks.
Definição na linha 262 do arquivo caption-closed-controls.h.
Início de cada tabela de comandos: o código menos este valor é o índice na tabela de callbacks.
| Enumeradores | |
|---|---|
| CC_CTRLCODE_SET_UNKNOWN | Não é um comando. |
| CC_CTRLCODE_SET_C0 | Tabela C0 (0x08 a 0x1f). |
| CC_CTRLCODE_SET_C1 | Tabela C1 (0x80 a 0x9f). |
Definição na linha 346 do arquivo caption-closed-controls.h.
| enum CC_Color_CMLA_t |
Cores da paleta CMLA (Colour Map Lower Address), usada pelos comandos de cor (BKF ~ WHF e COL).
Definição na linha 386 do arquivo caption-closed-controls.h.
| const char * caption_closed_controls_get_name | ( | const uint8_t | code | ) |
Nome de um comando, para mensagens de depuração.
| code | Código C0, C1 ou do subcomando CSI. |
| bool callback_controls_c0_APB | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
APB: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_APF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
APF: aceito, sem efeito no estado.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_APD | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
APD: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_APU | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
APU: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_CS | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
CS: liga CaptionClosed_t::need_clear.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_APR | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
APR: aceito; o hook de controles recebe a quebra de linha.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_LS1 | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
LS1: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_LS0 | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
LS0: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_PAPF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
PAPF: não suportado; pula 1 parâmetro.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_CAN | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
CAN: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_SS2 | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SS2: não suportado; pula 1 parâmetro.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_ESC | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
ESC: não suportado; pula a sequência inteira.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_APS | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
APS: atualiza CaptionClosed_t::APS (2 parâmetros).
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_SS3 | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SS3: entrega o caractere G3 em UTF-8 ao hook de texto.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_RS | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
RS: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c0_US | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
US: aceito, sem efeito no estado.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_BKF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
BKF: texto preto.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_RDF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
RDF: texto vermelho.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_GRF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
GRF: texto verde.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_YLF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
YLF: texto amarelo.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_BLF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
BLF: texto azul.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_MGF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
MGF: texto magenta.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CNF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
CNF: texto ciano.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_WHF | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
WHF: texto branco.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_SSZ | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SSZ: caracteres pequenos.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_MSZ | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
MSZ: caracteres médios.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_NSZ | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
NSZ: caracteres normais.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_SZX | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SZX: guarda P1 em CaptionClosed_t::char_size_custom.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_COL | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
COL: cor do texto, do fundo ou de meia intensidade.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_FLC | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
FLC: não suportado; pula 1 parâmetro.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CDC | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
CDC: não suportado; pula 1 ou 2 parâmetros.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_POL | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
POL: não suportado; pula 1 parâmetro.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_WMM | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
WMM: não suportado; pula 1 parâmetro.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_MAC | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
MAC: não suportado; pula 1 parâmetro.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_HLC | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
HLC: não suportado; pula 1 parâmetro.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_RPC | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
RPC: não suportado; pula 1 parâmetro.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_SPL | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SPL: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_STL | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
STL: não suportado em closed caption.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_TIM | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
TIME: não suportado; pula 2 parâmetros.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_load | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
CSI: lê a sequência e despacha o subcomando.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_swf | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SWF: formato, caracteres por linha e linhas.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_ssm | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SSM: tamanho dos caracteres (P1 x P2).
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_shs | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SHS: espaçamento horizontal (P1).
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_svs | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SVS: espaçamento vertical (P1).
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_orn | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
ORN: não implementado.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_cfs | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
CFS: não implementado.
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_rcs | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
RCS: cor de raster (P1, de 0 a 15).
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_sdf | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SDF: tamanho da área de exibição (P1 x P2).
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool callback_controls_c1_CSI_sdp | ( | const CC_ControlCodes_CallbackData_t * | d | ) |
SDP: posição da área de exibição (P1, P2).
| d | Dados do comando (veja CC_ControlCodes_CallbackData_t). |
| bool csi_arg_Pn_load | ( | CC_ControlCodes_CallbackData_t * | d | ) |
Lê os parâmetros decimais de uma sequência CSI, separados por ';'.
| d | d->argv aponta para o primeiro parâmetro, d->argc é a quantidade de bytes de parâmetros e d->data aponta para a struct csi_arg_Pn que recebe os valores. |
| bool caption_closed_controls_is_table | ( | const uint8_t * | byte, |
| enum CC_ControlCodes_TableJump_e * | table | ||
| ) |
Verifica se um byte é um comando C0 ou C1.
| byte | Byte do texto da legenda. |
| table | Recebe a tabela do comando, ou CC_CTRLCODE_SET_UNKNOWN. |
| bool caption_closed_controls_load | ( | enum CC_ControlCodes_TableJump_e | table, |
| const uint8_t * | argv, | ||
| const uint16_t | argc, | ||
| uint16_t * | pos, | ||
| CaptionClosed_t * | caption | ||
| ) |
Executa o comando C0/C1 em argv[*pos].
Chama a callback do comando, que avança pos além dos parâmetros, e, se ela retornar TRUE, chama o hook de controles.
| table | Tabela do comando, obtida por caption_closed_controls_is_table(). |
| argv | Buffer do texto da legenda. |
| argc | Quantidade de bytes disponíveis a partir de pos. |
| pos | Posição do comando em argv; ao retornar, aponta para o último byte consumido pelo comando. |
| caption | Estado da legenda. |