libclosedcaption 1.0.3
Extração de closed caption ISDB-Tb/SBTVD de arquivos MPEG-TS
Carregando...
Procurando...
Nenhuma entrada encontrado
caption-closed-controls.h
Ir para a documentação desse arquivo.
1
56#ifndef CAPTION_CLOSED_CONTROLS_H_
57#define CAPTION_CLOSED_CONTROLS_H_
58
59#include "caption-common.h"
60#include "caption-data.h"
61#include "caption-closed.h"
62#include "caption-management.h"
63
68#define DEBUG_CAPTION_CLOSED_CONTROLCODE
69
72
76typedef struct {
77 const uint8_t *argv;
78 const uint16_t argc;
79 uint16_t *pos;
81 void *data;
84
88typedef struct {
92 bool (*callback)(const CC_ControlCodes_CallbackData_t *d);
93
94#ifdef DEBUG_CAPTION_CLOSED_CONTROLCODE
95 const char *code_name;
96#endif /* DEBUG_CAPTION_CLOSED_CONTROLCODE */
98
99#ifdef DEBUG_CAPTION_CLOSED_CONTROLCODE
101# define CAPTION_CTRL_SET(code, callback) { code, callback, #code }
102#else
103# define CAPTION_CTRL_SET(code, callback) { code, callback }
104#endif /* DEBUG_CAPTION_CLOSED_CONTROLCODE */
105
112const char *
114
151
221
293
315#define CTRL_CSI_FB 0x20
316#define CTRL_CSI_IB 0x3b
318#define CTRL_CSI_MAX_Pn_ARGS 5
319#define CTRL_CSI_MAX_Pn_FIELDS (5+1)
329 uint8_t argc;
330};
331
341
351
359bool caption_closed_controls_is_table (const uint8_t *byte,
360 enum CC_ControlCodes_TableJump_e *table);
361
377 const uint8_t *argv,
378 const uint16_t argc,
379 uint16_t *pos,
380 CaptionClosed_t *caption);
381
405
413static inline bool caption_closed_controls_cmlat2rgb (CC_Color_CMLA_t index, CC_Color_t *color)
414{
415 static const CC_Color_t palete_index[] = {
416 /* <R> <G> <B> <A> */
417 { 0x00, 0x00, 0x00, 0xFF }, // SET_CMLA0_BLACK
418 { 0xFE, 0x00, 0x00, 0xFF }, // SET_CMLA1_FULL_INTENSITY_RED
419 { 0x00, 0xFE, 0x00, 0xFF }, // SET_CMLA2_FULL_INTENSITY_GREEN
420 { 0xFE, 0xFE, 0x00, 0xFF }, // SET_CMLA3_FULL_INTENSITY_YELLOW
421 { 0x00, 0x00, 0xFE, 0xFF }, // SET_CMLA4_FULL_INTENSITY_BLUE
422 { 0xFE, 0x00, 0xFE, 0xFF }, // SET_CMLA5_FULL_INTENSITY_MAGNETA
423 { 0x00, 0xFE, 0xFE, 0xFF }, // SET_CMLA6_FULL_INTENSITY_CYAN
424 { 0xFE, 0xFE, 0xFE, 0xFF }, // SET_CMLA7_FULL_INTENSITY_WHITE
425 { 0x00, 0x00, 0x00, 0x00 }, // SET_CMLA8_TRANSPARENT
426 { 0x79, 0x00, 0x00, 0xFF }, // SET_CMLA9_HALF_INTENSITY_RED
427 { 0x00, 0x7D, 0x00, 0xFF }, // SET_CMLA10_HALF_INTENSITY_GREEN
428 { 0x79, 0x79, 0x00, 0xFF }, // SET_CMLA11_HALF_INTENSITY_YELLOW
429 { 0x00, 0x00, 0x79, 0xFF }, // SET_CMLA12_HALF_INTENSITY_BLUE
430 { 0x79, 0x00, 0x79, 0xFF }, // SET_CMLA13_HALF_INTENSITY_MAGNETA
431 { 0x00, 0x79, 0x79, 0xFF }, // SET_CMLA14_HALF_INTENSITY_CYAN
432 { 0x79, 0x79, 0x79, 0xFF } // SET_CMLA15_HALF_INTENSITY_WHITE
433 };
434
435 assert (color != NULL);
436
437 if ((unsigned)index >= ARRAY_SIZE(palete_index))
438 {
439 DTV_DEBUG("Índice de cor (%d) fora da paleta.", index);
440 return FALSE;
441 }
442
443 *color = palete_index[index];
444
445 return TRUE;
446}
447
448#endif /* CAPTION_CLOSED_CONTROLS_H_ */
bool callback_controls_c1_WHF(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_MGF(const CC_ControlCodes_CallbackData_t *d)
CaptionClosed_CtrlCodes_C1_CSI
@ CTRL_C1_CSI_PAD_0x5a
@ CTRL_C1_CSI_PAD_0x55
@ CTRL_C1_CSI_PAD_0x5c
@ CTRL_C1_CSI_PAD_0x67
@ CTRL_C1_CSI_PAD_0x6c
@ CTRL_C1_CSI_PAD_0x66
@ CTRL_C1_CSI_PAD_0x68
@ CTRL_C1_CSI_PAD_0x6d
@ CTRL_C1_CSI_PAD_0x54
@ CTRL_C1_CSI_PAD_0x61
@ CTRL_C1_CSI_PAD_0x69
@ CTRL_C1_CSI_PAD_0x60
@ CTRL_C1_CSI_PAD_0x64
@ CTRL_C1_CSI_PAD_0x6a
@ CTRL_C1_CSI_PAD_0x62
@ CTRL_C1_CSI_PAD_0x5b
@ CTRL_C1_CSI_PAD_0x5e
@ CTRL_C1_CSI_PAD_0x6b
@ CTRL_C1_CSI_PAD_0x5d
CaptionClosed_CtrlCodes_C0
@ CTRL_C0_PAD_0x06
@ CTRL_C0_PAD_0x04
@ CTRL_C0_PAD_0x17
@ CTRL_C0_PAD_0x02
@ CTRL_C0_PAD_0x1a
@ CTRL_C0_PAD_0x03
@ CTRL_C0_PAD_0x05
@ CTRL_C0_PAD_0x01
bool callback_controls_c0_ESC(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_APS(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_BLF(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_APD(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_LS0(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_CAN(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_SS2(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_RS(const CC_ControlCodes_CallbackData_t *d)
CaptionClosed_CtrlCodes_C1
@ CTRL_C1_PAD_0x9e
@ CTRL_C1_PAD_0x8e
@ CTRL_C1_PAD_0x8c
@ CTRL_C1_PAD_0x9c
@ CTRL_C1_PAD_0x9f
@ CTRL_C1_PAD_0x8d
@ CTRL_C1_PAD_0x96
@ CTRL_C1_PAD_0x8f
bool callback_controls_c0_PAPF(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CSI_orn(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CDC(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_BKF(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CSI_sdp(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CSI_rcs(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_MSZ(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_NSZ(const CC_ControlCodes_CallbackData_t *d)
bool caption_closed_controls_is_table(const uint8_t *byte, enum CC_ControlCodes_TableJump_e *table)
bool csi_arg_Pn_load(CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_SZX(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CSI_ssm(const CC_ControlCodes_CallbackData_t *d)
CC_ControlCodes_TableJump_e
@ CC_CTRLCODE_SET_UNKNOWN
@ CC_CTRLCODE_SET_C1
@ CC_CTRLCODE_SET_C0
bool callback_controls_c1_CSI_svs(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_COL(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_SSZ(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_POL(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CSI_load(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_TIM(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_MAC(const CC_ControlCodes_CallbackData_t *d)
const char * caption_closed_controls_get_name(const uint8_t code)
bool callback_controls_c1_WMM(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CNF(const CC_ControlCodes_CallbackData_t *d)
@ SET_CMLA9_HALF_INTENSITY_RED
@ SET_CMLA3_FULL_INTENSITY_YELLOW
@ SET_CMLA6_FULL_INTENSITY_CYAN
@ SET_CMLA14_HALF_INTENSITY_CYAN
@ SET_CMLA8_TRANSPARENT
@ SET_CMLA2_FULL_INTENSITY_GREEN
@ SET_CMLA1_FULL_INTENSITY_RED
@ SET_CMLA13_HALF_INTENSITY_MAGNETA
@ SET_CMLA15_HALF_INTENSITY_WHITE
@ SET_CMLA10_HALF_INTENSITY_GREEN
@ SET_CMLA11_HALF_INTENSITY_YELLOW
@ SET_CMLA5_FULL_INTENSITY_MAGNETA
@ SET_CMLA7_FULL_INTENSITY_WHITE
@ SET_CMLA4_FULL_INTENSITY_BLUE
@ SET_CMLA12_HALF_INTENSITY_BLUE
bool callback_controls_c0_APB(const CC_ControlCodes_CallbackData_t *d)
uint8_t CaptionClosed_CtrlCode_t
bool callback_controls_c1_FLC(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_STL(const CC_ControlCodes_CallbackData_t *d)
#define CTRL_CSI_MAX_Pn_ARGS
bool callback_controls_c1_GRF(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_APR(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_RDF(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_SPL(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_RPC(const CC_ControlCodes_CallbackData_t *d)
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)
bool callback_controls_c1_CSI_cfs(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_US(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_CS(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_YLF(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_APF(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_SS3(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_LS1(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CSI_shs(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CSI_swf(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c0_APU(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_HLC(const CC_ControlCodes_CallbackData_t *d)
bool callback_controls_c1_CSI_sdf(const CC_ControlCodes_CallbackData_t *d)
Interpretação do texto da legenda (closed caption) e do seu estado: cores, tamanho dos caracteres,...
Headers padrão e macros utilitárias usadas por toda a biblioteca.
#define DTV_DEBUG(fmt,...)
#define ARRAY_SIZE(x)
#define TRUE
#define FALSE
Leitura do data_group da legenda (ARIB STD-B24, Volume 3, 9.2).
Leitura do "caption management data" e do "caption statement data" (ARIB STD-B24, Volume 3,...
CaptionClosed_CtrlCode_t current_code
const CaptionClosed_CtrlCode_t code
uint16_t argv[CTRL_CSI_MAX_Pn_ARGS]