Go to the documentation of this file.
33 #define NUM_CC_PALETTES 2
34 #define CC_FONT_MAX 256
72 int video_width,
int video_height);
static const int parity_table[256]
Parity table for packets.
Definition: cc_decoder.c:313
cc_decoder_t * cc_decoder_open(cc_state_t *cc_state)
Definition: cc_decoder.c:1488
osd_object_t * cap_display
Definition: cc_decoder.c:347
clut_t bordercol
Definition: cc_decoder.c:91
Definition: cc_decoder.c:335
cc_memory_t ** active
Definition: cc_decoder.c:424
@ GREEN
Definition: cc_decoder.c:68
clut_t textcol
Definition: cc_decoder.c:92
struct cc_attribute_s cc_attribute_t
static const colorinfo_t cc_text_trans[7]
Definition: cc_decoder.c:96
static void cc_hide_displayed(cc_decoder_t *this)
Definition: cc_decoder.c:1085
#define NTSC_FRAME_DURATION
Definition: cc_decoder.c:54
#define OSD_TEXT2
Definition: osd.h:282
spu_decoder_class_t spu_class
Definition: cc_decoder.h:49
static const int text_colormap[7]
Definition: cc_decoder.c:77
Definition: cc_decoder.c:417
static int ccrow_find_next_attr_change(cc_row_t *this, int pos, int lastpos)
Definition: cc_decoder.c:554
#define OSD_TEXT7
Definition: osd.h:287
uint8_t cb
Definition: alphablend.h:45
static void cc_renderer_adjust_osd_object(cc_renderer_t *this)
Definition: cc_decoder.c:940
#define OSD_TEXT1
Definition: osd.h:281
static void ccbuf_add_char(cc_buffer_t *this, uint8_t c)
Definition: cc_decoder.c:712
struct cc_memory_s cc_memory_t
int pac_attr_chg
Definition: cc_decoder.c:400
metronom_t * metronom
Definition: cc_decoder.c:372
#define CLUT_Y_CR_CB_INIT(_y, _cr, _cb)
Definition: video_overlay.h:31
static void cc_renderer_free_osd_object(cc_renderer_t *this)
Definition: cc_decoder.c:929
static void cc_show_displayed(cc_decoder_t *this)
Definition: cc_decoder.c:1102
struct cc_state_s cc_state_t
cc_decoder_t * cc_decoder_open(cc_state_t *cc_state)
Definition: cc_decoder.c:1488
static int cc_renderer_on_display(cc_renderer_t *this)
Definition: cc_decoder.c:888
cc_state_t * cc_state
Definition: cc_decoder.c:374
static void cc_renderer_hide_caption(cc_renderer_t *this, int64_t vpts)
Definition: cc_decoder.c:894
void(* free_object)(osd_object_t *osd_to_close)
Definition: osd.h:99
#define OSD_TEXT6
Definition: osd.h:286
static clut_t interpolate_color(clut_t src, clut_t dest, int steps, int current_step)
Definition: cc_decoder.c:488
static const int rowdata[]
Definition: cc_decoder.c:223
cc_attribute_t pac_attr
Definition: cc_decoder.c:401
uint32_t cc_palette[OVL_PALETTE_SIZE]
Definition: cc_decoder.c:369
@ BLACK
Definition: cc_decoder.c:68
static void cc_decode_ext_attribute(cc_decoder_t *this, int channel, uint8_t c1, uint8_t c2)
Definition: cc_decoder.c:1187
static void cc_decode_PAC(cc_decoder_t *this, int channel, uint8_t c1, uint8_t c2)
Definition: cc_decoder.c:1151
int64_t(* got_spu_packet)(metronom_t *self, int64_t pts)
Definition: metronom.h:121
int64_t pts
Definition: cc_decoder.c:435
void cc_renderer_update_cfg(cc_renderer_t *this_obj, int video_width, int video_height)
Definition: cc_decoder.c:991
static int ccbuf_has_displayable(cc_buffer_t *this)
Definition: cc_decoder.c:701
static void get_font_metrics(osd_renderer_t *renderer, const char *fontname, int font_size, int *maxw, int *maxh)
Definition: cc_decoder.c:453
int config_version
Definition: cc_decoder.h:45
int can_cc
Definition: cc_decoder.h:58
static const uint8_t cc_text_trans_alpha[TEXT_PALETTE_SIZE]
Definition: cc_decoder.c:199
static void ccbuf_tab(cc_buffer_t *this, int tabsize)
Definition: cc_decoder.c:787
cc_attribute_t attributes
Definition: cc_decoder.c:389
int cc_enabled
Definition: cc_decoder.h:37
static void ccrow_set_attributes(cc_renderer_t *renderer, cc_row_t *this, int pos)
Definition: cc_decoder.c:563
#define CAP_BG_COL
Definition: cc_decoder.c:61
cc_memory_t buffer[2]
Definition: cc_decoder.c:419
static void cc_decode_special_char(cc_decoder_t *this, int channel, uint8_t c1, uint8_t c2)
Definition: cc_decoder.c:1196
int attr_chg
Definition: cc_decoder.c:399
cc_renderer_t * cc_renderer_open(osd_renderer_t *osd_renderer, metronom_t *metronom, cc_state_t *cc_state, int video_width, int video_height)
Definition: cc_decoder.c:959
int midrow_attr
Definition: cc_decoder.c:391
Definition: cc_decoder.h:53
@ CYAN
Definition: cc_decoder.c:68
void cc_renderer_close(cc_renderer_t *this_obj)
Definition: cc_decoder.c:980
int rowpos
Definition: cc_decoder.c:407
int y
Definition: cc_decoder.c:340
Definition: cc_decoder.h:36
struct colorinfo_s colorinfo_t
cc_renderer_t * renderer
Definition: cc_decoder.h:60
cc_state_t * cc_state
Definition: cc_decoder.c:445
#define OVL_PALETTE_SIZE
Definition: video_out.h:280
static void ccbuf_set_cursor(cc_buffer_t *this, int row, int column, int underline, int italics, int color)
Definition: cc_decoder.c:755
uint8_t y
Definition: alphablend.h:47
int max_char_height
Definition: cc_decoder.c:343
char font[256]
Definition: cc_decoder.h:38
cc_row_t rows[15]
Definition: cc_decoder.c:406
cc_config_t * cc_cfg
Definition: cc_decoder.h:54
NULL
Definition: xine_plugin.c:78
cc_memory_t * off_buf
Definition: cc_decoder.c:422
uint8_t foo
Definition: alphablend.h:48
void decode_cc(cc_decoder_t *this, uint8_t *buffer, uint32_t buf_len, int64_t pts)
Definition: cc_decoder.c:1375
static void ccmem_exit(cc_memory_t *this)
Definition: cc_decoder.c:834
static void ccmem_init(cc_memory_t *this)
Definition: cc_decoder.c:828
int(* set_encoding)(osd_object_t *osd, const char *encoding)
Definition: osd.h:174
#define NUM_CC_PALETTES
Definition: cc_decoder.h:33
cc_renderer_t * cc_renderer_open(osd_renderer_t *osd_renderer, metronom_t *metronom, cc_state_t *cc_state, int video_width, int video_height)
Definition: cc_decoder.c:959
@ WHITE
Definition: cc_decoder.c:68
int width
Definition: cc_decoder.c:341
cc_config_t cc_cfg
Definition: cc_decoder.h:50
cc_char_cell_t cells[32]
Definition: cc_decoder.c:396
uint8_t c
Definition: cc_decoder.c:388
int pos
Definition: cc_decoder.c:397
int x
Definition: cc_decoder.c:339
Definition: cc_decoder.c:395
int cc_scheme
Definition: cc_decoder.h:43
int center
Definition: cc_decoder.h:41
unsigned int width
Definition: gfontrle.c:4
#define OSD_TEXT5
Definition: osd.h:285
@ MAGENTA
Definition: cc_decoder.c:68
int displayed
Definition: cc_decoder.c:348
int(* render_text)(osd_object_t *osd, int x1, int y1, const char *text, int color_base)
Definition: osd.h:185
@ BLUE
Definition: cc_decoder.c:68
void cc_decoder_close(cc_decoder_t *this_obj)
Definition: cc_decoder.c:1517
uint8_t italic
Definition: cc_decoder.c:380
struct cc_config_s cc_config_t
uint32_t f_offset
Definition: cc_decoder.c:437
#define TEXT_PALETTE_SIZE
Definition: osd.h:274
int displayed
Definition: cc_decoder.c:442
char italic_font[256]
Definition: cc_decoder.h:40
static void ccmem_clear(cc_memory_t *this)
Definition: cc_decoder.c:819
int(* set_font)(osd_object_t *osd, const char *fontname, int size)
Definition: osd.h:166
int num_chars
Definition: cc_decoder.c:398
#define CC_COLUMNS
Definition: cc_decoder.c:57
void cc_renderer_close(cc_renderer_t *this_obj)
Definition: cc_decoder.c:980
#define MAX(a, b)
Definition: demux_ts.c:323
int channel_no
Definition: cc_decoder.c:413
#define TRANSP_SPACE
Definition: cc_decoder.c:220
Definition: spu_decoder.h:42
metronom_t * metronom
Definition: cc_decoder.c:447
static void cc_set_channel(cc_decoder_t *this, int channel)
Definition: cc_decoder.c:1063
int video_width
Definition: cc_decoder.c:336
int font_size
Definition: cc_decoder.h:39
Definition: cc_decoder.c:387
int(* get_text_size)(osd_object_t *osd, const char *text, int *width, int *height)
Definition: osd.h:191
Definition: cc_decoder.h:48
static int ccrow_find_end_of_text_part(cc_row_t *this, int pos)
Definition: cc_decoder.c:538
cc_buffer_t channel[2]
Definition: cc_decoder.c:412
static int64_t cc_renderer_calc_vpts(cc_renderer_t *this, int64_t pts, uint32_t ntsc_frame_offset)
Definition: cc_decoder.c:878
static void cc_swap_buffers(cc_decoder_t *this)
Definition: cc_decoder.c:1122
static void cc_renderer_show_caption(cc_renderer_t *this, cc_buffer_t *buf, int64_t vpts)
Definition: cc_decoder.c:904
void(* filled_rect)(osd_object_t *osd, int x1, int y1, int x2, int y2, int color)
Definition: osd.h:128
uint8_t background
Definition: cc_decoder.c:383
void decode_cc(cc_decoder_t *this, uint8_t *buffer, uint32_t buf_len, int64_t pts)
Definition: cc_decoder.c:1375
uint8_t foreground
Definition: cc_decoder.c:382
int height
Definition: cc_decoder.c:342
static int good_parity(uint16_t data)
Definition: cc_decoder.c:477
#define NUM_FG_COL
Definition: cc_decoder.c:64
static cc_buffer_t * active_ccbuffer(cc_decoder_t *this)
Definition: cc_decoder.c:1072
unsigned int height
Definition: gfontrle.c:5
struct spucc_class_s spucc_class_t
static void cc_renderer_build_palette(cc_renderer_t *this)
Definition: cc_decoder.c:843
Definition: cc_decoder.c:379
static const int chartbl[128]
Character translation table.
Definition: cc_decoder.c:261
#define OSD_TEXT4
Definition: osd.h:284
static void ccrow_render(cc_renderer_t *renderer, cc_row_t *this, int rownum)
Definition: cc_decoder.c:579
static void cc_decode_midrow_attr(cc_decoder_t *this, int channel, uint8_t c1, uint8_t c2)
Definition: cc_decoder.c:1211
int64_t display_vpts
Definition: cc_decoder.c:356
void cc_decoder_close(cc_decoder_t *this)
Definition: cc_decoder.c:1517
Definition: metronom.h:71
static int ccrow_find_current_attr(cc_row_t *this, int pos)
Definition: cc_decoder.c:546
static void ccrow_fill_transp(cc_row_t *rowbuf)
Definition: cc_decoder.c:516
uint8_t cc_trans[OVL_PALETTE_SIZE]
Definition: cc_decoder.c:370
cc_memory_t * on_buf
Definition: cc_decoder.c:421
@ YELLOW
Definition: cc_decoder.c:68
#define OSD_TEXT3
Definition: osd.h:283
Definition: cc_decoder.c:411
static const uint8_t cc_text_solid_alpha[TEXT_PALETTE_SIZE]
Definition: cc_decoder.c:203
#define CC_CHANNELS
Definition: cc_decoder.c:58
int video_height
Definition: cc_decoder.c:337
void cc_renderer_update_cfg(cc_renderer_t *this_obj, int video_width, int video_height)
Definition: cc_decoder.c:991
int max_char_width
Definition: cc_decoder.c:344
static int cc_onscreen_displayable(cc_decoder_t *this)
Definition: cc_decoder.c:1079
osd_renderer_t * renderer
Definition: cc_decoder.c:440
static const colorinfo_t cc_text_solid[7]
Definition: cc_decoder.c:147
struct cc_buffer_s cc_buffer_t
static void ccbuf_render(cc_renderer_t *renderer, cc_buffer_t *this)
Definition: cc_decoder.c:802
@ TRANSPARENT
Definition: cc_decoder.c:68
int64_t last_hide_vpts
Definition: cc_decoder.c:366
clut_t bgcol
Definition: cc_decoder.c:90
Definition: alphablend.h:44
osd_renderer_t * osd_renderer
Definition: cc_decoder.c:346
osd_object_t *(* new_object)(osd_renderer_t *this_gen, int width, int height)
Definition: osd.h:94
uint32_t capid
Definition: cc_decoder.c:428
static int ccrow_find_next_text_part(cc_row_t *this, int pos)
Definition: cc_decoder.c:530
static void cc_decode_tab(cc_decoder_t *this, int channel, uint8_t c1, uint8_t c2)
Definition: cc_decoder.c:1304
#define CC_ROWS
Definition: cc_decoder.c:56
static const uint8_t *const cc_alpha_palettes[2]
Definition: cc_decoder.c:213
@ RED
Definition: cc_decoder.c:68
static void cc_decode_standard_char(cc_decoder_t *this, uint8_t c1, uint8_t c2)
Definition: cc_decoder.c:1140
Definition: cc_decoder.c:89
static const uint8_t specialchar[]
Definition: cc_decoder.c:227
#define CC_FONT_MAX
Definition: cc_decoder.h:34
static void cc_decode_misc_control_code(cc_decoder_t *this, int channel, uint8_t c1, uint8_t c2)
Definition: cc_decoder.c:1240
Definition: cc_decoder.c:405
static void ccbuf_apply_attribute(cc_buffer_t *this, cc_attribute_t *attr)
Definition: cc_decoder.c:775
static const colorinfo_t *const cc_text_palettes[2]
Definition: cc_decoder.c:208
struct cc_char_cell_s cc_char_cell_t
uint8_t underline
Definition: cc_decoder.c:381
uint8_t cr
Definition: alphablend.h:46
static void cc_decode_EIA608(cc_decoder_t *this, uint16_t data)
Definition: cc_decoder.c:1316
uint32_t lastcode
Definition: cc_decoder.c:432