|
libclosedcaption 1.0.3
Extração de closed caption ISDB-Tb/SBTVD de arquivos MPEG-TS
|
Demultiplexador MPEG-TS: tabelas PAT/PMT, estatísticas por PID e remontagem dos pacotes PES de um PID. Mais...


Ir para o código-fonte desse arquivo.
Estruturas de Dados | |
| struct | TsPidInfo_t |
Definições e Macros | |
| #define | TS_PID_PAT 0x0000 |
| #define | TS_PID_NULL 0x1fff |
| #define | TS_PID_MAX 0x2000 |
| #define | TS_PID_NONE 0xffff |
Definições de Tipos | |
| typedef void(* | TsDemuxPesCallback_t) (const uint8_t *pes, size_t len, void *userdata) |
| typedef struct TsDemux_s | TsDemux_t |
Funções | |
| TsDemux_t * | ts_demux_new (void) |
| void | ts_demux_free (TsDemux_t *demux) |
| void | ts_demux_set_pes_callback (TsDemux_t *demux, uint16_t pid, TsDemuxPesCallback_t callback, void *userdata) |
| void | ts_demux_push (TsDemux_t *demux, const uint8_t *packet) |
| void | ts_demux_flush (TsDemux_t *demux) |
| const TsPidInfo_t * | ts_demux_get_pid_info (const TsDemux_t *demux, uint16_t pid) |
| uint16_t | ts_demux_get_caption_pid (const TsDemux_t *demux) |
| const char * | ts_demux_describe_pid (const TsDemux_t *demux, uint16_t pid, char *buf, size_t len) |
| const char * | ts_stream_type_name (uint8_t stream_type) |
| const char * | ts_component_tag_name (int16_t component_tag) |
| const char * | ts_system_pid_name (uint16_t pid) |
Demultiplexador MPEG-TS: tabelas PAT/PMT, estatísticas por PID e remontagem dos pacotes PES de um PID.
O demux recebe os pacotes TS de 188 bytes (veja ts-reader.h) e:
component_tag da PMT;Exemplo:
Definição no arquivo ts-demux.h.
| #define TS_PID_PAT 0x0000 |
PID da PAT (Program Association Table).
Definição na linha 42 do arquivo ts-demux.h.
| #define TS_PID_NULL 0x1fff |
PID dos pacotes nulos (stuffing).
Definição na linha 45 do arquivo ts-demux.h.
| #define TS_PID_MAX 0x2000 |
Quantidade de PIDs possíveis (13 bits).
Definição na linha 48 do arquivo ts-demux.h.
| #define TS_PID_NONE 0xffff |
Valor utilizado para indicar "nenhum PID".
Definição na linha 51 do arquivo ts-demux.h.
| typedef void(* TsDemuxPesCallback_t) (const uint8_t *pes, size_t len, void *userdata) |
Callback chamada para cada PES completo do PID escolhido em ts_demux_set_pes_callback().
| pes | Pacote PES completo, a partir do packet_start_code_prefix (00 00 01). Só é válido durante a chamada. |
| len | Tamanho de pes em bytes. |
| userdata | Ponteiro informado em ts_demux_set_pes_callback(). |
Definição na linha 75 do arquivo ts-demux.h.
| typedef struct TsDemux_s TsDemux_t |
Demultiplexador MPEG-TS. Estrutura opaca, criada por ts_demux_new().
Definição na linha 82 do arquivo ts-demux.h.
| TsDemux_t * ts_demux_new | ( | void | ) |
Cria um demultiplexador.
| void ts_demux_free | ( | TsDemux_t * | demux | ) |
Libera o demultiplexador. Não chama ts_demux_flush().
| demux | Demux criado por ts_demux_new(). Aceita NULL. |
| void ts_demux_set_pes_callback | ( | TsDemux_t * | demux, |
| uint16_t | pid, | ||
| TsDemuxPesCallback_t | callback, | ||
| void * | userdata | ||
| ) |
Escolhe o PID cujos pacotes PES serão remontados e entregues à callback.
Apenas um PID é remontado por vez. Uma nova chamada substitui a anterior e descarta o PES que estava incompleto.
| demux | Demux criado por ts_demux_new(). |
| pid | PID a ser remontado, ou TS_PID_NONE para desligar. |
| callback | Função chamada para cada PES completo. |
| userdata | Repassado para a callback. |
| void ts_demux_push | ( | TsDemux_t * | demux, |
| const uint8_t * | packet | ||
| ) |
Processa um pacote TS.
Pacotes com o transport_error_indicator ligado são ignorados. Pacotes perdidos (falha no continuity_counter) descartam o PES incompleto.
| demux | Demux criado por ts_demux_new(). |
| packet | Pacote de TS_PACKET_SIZE bytes, iniciando em TS_SYNC_BYTE. |
| void ts_demux_flush | ( | TsDemux_t * | demux | ) |
Entrega o último PES, caso ainda esteja pendente.
Um PES só é considerado completo quando o próximo começa ou quando atinge o PES_packet_length; por isso, chame esta função no final do arquivo.
| demux | Demux criado por ts_demux_new(). |
| const TsPidInfo_t * ts_demux_get_pid_info | ( | const TsDemux_t * | demux, |
| uint16_t | pid | ||
| ) |
Retorna as informações coletadas sobre um PID.
| demux | Demux criado por ts_demux_new(). |
| pid | PID entre 0 e TS_PID_MAX - 1. |
pid for inválido. | uint16_t ts_demux_get_caption_pid | ( | const TsDemux_t * | demux | ) |
Retorna o PID de legenda sugerido pela PMT.
É escolhido o stream privado (stream_type 0x06) com component_tag de legenda: 0x30 a 0x37 (full-seg) ou 0x87 (one-seg), dando preferência ao menor component_tag, ou seja, à legenda principal do full-seg.
| demux | Demux criado por ts_demux_new(). |
| const char * ts_demux_describe_pid | ( | const TsDemux_t * | demux, |
| uint16_t | pid, | ||
| char * | buf, | ||
| size_t | len | ||
| ) |
Monta uma descrição legível do PID, por exemplo "0x06 PES privado (component_tag 0x30, legenda)".
| demux | Demux criado por ts_demux_new(). |
| pid | PID entre 0 e TS_PID_MAX - 1. |
| buf | Buffer que recebe a descrição. |
| len | Tamanho de buf (128 bytes são suficientes). |
buf. | const char * ts_stream_type_name | ( | uint8_t | stream_type | ) |
Nome do stream_type da PMT (ISO/IEC 13818-1, Tabela 2-34).
| stream_type | Valor do stream_type. |
"H.264 video", ou "desconhecido". | const char * ts_component_tag_name | ( | int16_t | component_tag | ) |
Nome do component_tag no ISDB-T (ARIB TR-B14 / ABNT NBR 15608).
| component_tag | Valor do component_tag. |
"legenda", "legenda one-seg", "superimpose", ou NULL para os demais valores. | const char * ts_system_pid_name | ( | uint16_t | pid | ) |
Nome dos PIDs reservados para tabelas do sistema (PAT, NIT, SDT, EIT, etc.).
| pid | PID a ser consultado. |