|
libclosedcaption 1.0.3
Extração de closed caption ISDB-Tb/SBTVD de arquivos MPEG-TS
|
Converte os pacotes PES de legenda em linhas de texto. Mais...
#include "caption-common.h"

Ir para o código-fonte desse arquivo.
Estruturas de Dados | |
| struct | CaptionLine_t |
Definições e Macros | |
| #define | CAPTION_SCREEN_MAX_LINES 16 |
| #define | CAPTION_SCREEN_LINE_LEN 256 |
Definições de Tipos | |
| typedef void(* | CaptionScreenLineCallback_t) (const CaptionLine_t *line, void *userdata) |
| typedef struct CaptionScreen_s | CaptionScreen_t |
Funções | |
| CaptionScreen_t * | caption_screen_new (CaptionScreenLineCallback_t callback, void *userdata) |
| void | caption_screen_free (CaptionScreen_t *screen) |
| bool | caption_screen_push_pes (CaptionScreen_t *screen, const uint8_t *pes, size_t len) |
| void | caption_screen_flush (CaptionScreen_t *screen) |
| bool | caption_screen_line_continues (const char *line, const char *prefix) |
Converte os pacotes PES de legenda em linhas de texto.
É a forma mais simples de usar a biblioteca: recebe os PES completos do PID da legenda (veja ts-demux.h), executa todo o processamento (packet_pes_load(), caption_data_load(), caption_management_load() e caption_closed_run()) e entrega cada linha de legenda pronta, em UTF-8, para uma callback.
Como as linhas são montadas
Exemplo:
Definição no arquivo caption-screen.h.
| #define CAPTION_SCREEN_MAX_LINES 16 |
Máximo de linhas mantidas na tela.
Definição na linha 53 do arquivo caption-screen.h.
| #define CAPTION_SCREEN_LINE_LEN 256 |
Tamanho máximo de uma linha, em bytes UTF-8 (incluindo o '\0').
Definição na linha 56 do arquivo caption-screen.h.
| typedef void(* CaptionScreenLineCallback_t) (const CaptionLine_t *line, void *userdata) |
Callback chamada para cada linha de legenda finalizada.
| line | A linha. Só é válida durante a chamada. |
| userdata | Ponteiro informado em caption_screen_new(). |
Definição na linha 72 do arquivo caption-screen.h.
| typedef struct CaptionScreen_s CaptionScreen_t |
Tela de legenda. Estrutura opaca, criada por caption_screen_new().
Definição na linha 78 do arquivo caption-screen.h.
| CaptionScreen_t * caption_screen_new | ( | CaptionScreenLineCallback_t | callback, |
| void * | userdata | ||
| ) |
Cria uma tela de legenda.
| callback | Chamada para cada linha finalizada. |
| userdata | Repassado para a callback. |
| void caption_screen_free | ( | CaptionScreen_t * | screen | ) |
Libera a tela. Não chama caption_screen_flush().
| screen | Tela criada por caption_screen_new(). Aceita NULL. |
| bool caption_screen_push_pes | ( | CaptionScreen_t * | screen, |
| const uint8_t * | pes, | ||
| size_t | len | ||
| ) |
Processa um PES completo do PID da legenda.
PES inválidos, com CRC incorreto, ou que não são "caption statement data" (por exemplo, o "caption management data") são ignorados.
| screen | Tela criada por caption_screen_new(). |
| pes | PES completo, a partir do packet_start_code_prefix (00 00 01). |
| len | Tamanho de pes em bytes. |
| void caption_screen_flush | ( | CaptionScreen_t * | screen | ) |
Entrega todas as linhas que ainda estão na tela e limpa a tela. Chame no final do arquivo.
| screen | Tela criada por caption_screen_new(). |
| bool caption_screen_line_continues | ( | const char * | line, |
| const char * | prefix | ||
| ) |
Verifica se line começa com prefix, ignorando os acentos das letras do Latin-1 (U+00C0 a U+00FF). Por exemplo, "ESPECÍFICO" começa com "ESPECI".
| line | Texto em UTF-8. |
| prefix | Prefixo em UTF-8. |
line começa com prefix.