#include <assert.h>
#include "avcodec.h"
#include "ass.h"
#include "codec_internal.h"
#include "libavutil/opt.h"
Go to the source code of this file.
|
#define | SCREEN_ROWS 15 |
|
#define | SCREEN_COLUMNS 32 |
|
#define | SET_FLAG(var, val) ( (var) |= ( 1 << (val)) ) |
|
#define | UNSET_FLAG(var, val) ( (var) &= ~( 1 << (val)) ) |
|
#define | CHECK_FLAG(var, val) ( (var) & ( 1 << (val)) ) |
|
#define | CHARSET_OVERRIDE_LIST(START_SET, ENTRY, END_SET) |
|
#define | START_SET(IDX) [IDX] = { |
|
#define | ENTRY(idx, string) [idx] = string, |
|
#define | END_SET }, |
|
#define | EMPTY_START(IDX) |
|
#define | EMPTY_END |
|
#define | ASSERT_ENTRY(IDX, str) |
|
#define | OFFSET(x) offsetof(CCaptionSubContext, x) |
|
#define | SD AV_OPT_FLAG_SUBTITLE_PARAM | AV_OPT_FLAG_DECODING_PARAM |
|
|
enum | cc_mode { CCMODE_POPON,
CCMODE_PAINTON,
CCMODE_ROLLUP,
CCMODE_TEXT
} |
|
enum | cc_color_code {
CCCOL_WHITE,
CCCOL_GREEN,
CCCOL_BLUE,
CCCOL_CYAN,
CCCOL_RED,
CCCOL_YELLOW,
CCCOL_MAGENTA,
CCCOL_USERDEFINED,
CCCOL_BLACK,
CCCOL_TRANSPARENT
} |
|
enum | cc_font { CCFONT_REGULAR,
CCFONT_ITALICS,
CCFONT_UNDERLINED,
CCFONT_UNDERLINED_ITALICS
} |
|
enum | cc_charset { CCSET_BASIC_AMERICAN,
CCSET_SPECIAL_AMERICAN,
CCSET_EXTENDED_SPANISH_FRENCH_MISC,
CCSET_EXTENDED_PORTUGUESE_GERMAN_DANISH
} |
|
|
static av_cold int | init_decoder (AVCodecContext *avctx) |
|
static av_cold int | close_decoder (AVCodecContext *avctx) |
|
static void | flush_decoder (AVCodecContext *avctx) |
|
static void | write_char (CCaptionSubContext *ctx, struct Screen *screen, char ch) |
|
static int | validate_cc_data_pair (const uint8_t *cc_data_pair, uint8_t *hi) |
| This function after validating parity bit, also remove it from data pair. More...
|
|
static struct Screen * | get_writing_screen (CCaptionSubContext *ctx) |
|
static void | roll_up (CCaptionSubContext *ctx) |
|
static int | capture_screen (CCaptionSubContext *ctx) |
|
static void | update_time (CCaptionSubContext *ctx, int64_t pts) |
|
static void | handle_bgattr (CCaptionSubContext *ctx, uint8_t hi, uint8_t lo) |
|
static void | handle_textattr (CCaptionSubContext *ctx, uint8_t hi, uint8_t lo) |
|
static void | handle_pac (CCaptionSubContext *ctx, uint8_t hi, uint8_t lo) |
|
static int | handle_edm (CCaptionSubContext *ctx) |
|
static int | handle_eoc (CCaptionSubContext *ctx) |
|
static void | handle_delete_end_of_row (CCaptionSubContext *ctx) |
|
static void | handle_char (CCaptionSubContext *ctx, char hi, char lo) |
|
static int | process_cc608 (CCaptionSubContext *ctx, uint8_t hi, uint8_t lo) |
|
static int | decode (AVCodecContext *avctx, AVSubtitle *sub, int *got_sub, const AVPacket *avpkt) |
|
◆ SCREEN_ROWS
◆ SCREEN_COLUMNS
#define SCREEN_COLUMNS 32 |
◆ SET_FLAG
#define SET_FLAG |
( |
|
var, |
|
|
|
val |
|
) |
| ( (var) |= ( 1 << (val)) ) |
◆ UNSET_FLAG
#define UNSET_FLAG |
( |
|
var, |
|
|
|
val |
|
) |
| ( (var) &= ~( 1 << (val)) ) |
◆ CHECK_FLAG
#define CHECK_FLAG |
( |
|
var, |
|
|
|
val |
|
) |
| ( (var) & ( 1 << (val)) ) |
◆ CHARSET_OVERRIDE_LIST
◆ START_SET
#define START_SET |
( |
|
IDX | ) |
[IDX] = { |
◆ ENTRY
#define ENTRY |
( |
|
idx, |
|
|
|
string |
|
) |
| [idx] = string, |
◆ END_SET
◆ EMPTY_START
#define EMPTY_START |
( |
|
IDX | ) |
|
◆ EMPTY_END
◆ ASSERT_ENTRY
#define ASSERT_ENTRY |
( |
|
IDX, |
|
|
|
str |
|
) |
| |
Value:
"'" str "' string takes too much space");
Definition at line 184 of file ccaption_dec.c.
◆ OFFSET
◆ SD
◆ cc_mode
Enumerator |
---|
CCMODE_POPON | |
CCMODE_PAINTON | |
CCMODE_ROLLUP | |
CCMODE_TEXT | |
Definition at line 37 of file ccaption_dec.c.
◆ cc_color_code
Enumerator |
---|
CCCOL_WHITE | |
CCCOL_GREEN | |
CCCOL_BLUE | |
CCCOL_CYAN | |
CCCOL_RED | |
CCCOL_YELLOW | |
CCCOL_MAGENTA | |
CCCOL_USERDEFINED | |
CCCOL_BLACK | |
CCCOL_TRANSPARENT | |
Definition at line 44 of file ccaption_dec.c.
◆ cc_font
Enumerator |
---|
CCFONT_REGULAR | |
CCFONT_ITALICS | |
CCFONT_UNDERLINED | |
CCFONT_UNDERLINED_ITALICS | |
Definition at line 57 of file ccaption_dec.c.
◆ cc_charset
Enumerator |
---|
CCSET_BASIC_AMERICAN | |
CCSET_SPECIAL_AMERICAN | |
CCSET_EXTENDED_SPANISH_FRENCH_MISC | |
CCSET_EXTENDED_PORTUGUESE_GERMAN_DANISH | |
Definition at line 64 of file ccaption_dec.c.
◆ init_decoder()
◆ close_decoder()
◆ flush_decoder()
◆ write_char()
◆ validate_cc_data_pair()
static int validate_cc_data_pair |
( |
const uint8_t * |
cc_data_pair, |
|
|
uint8_t * |
hi |
|
) |
| |
|
static |
This function after validating parity bit, also remove it from data pair.
The first byte doesn't pass parity, we replace it with a solid blank and process the pair. If the second byte doesn't pass parity, it returns INVALIDDATA user can ignore the whole pair and pass the other pair.
Definition at line 374 of file ccaption_dec.c.
Referenced by decode().
◆ get_writing_screen()
◆ roll_up()
◆ capture_screen()
◆ update_time()
◆ handle_bgattr()
◆ handle_textattr()
◆ handle_pac()
◆ handle_edm()
◆ handle_eoc()
◆ handle_delete_end_of_row()
◆ handle_char()
◆ process_cc608()
◆ decode()
◆ ms_tb
◆ charset_overrides
const char charset_overrides[4][128][sizeof("\u266a")] |
|
static |
◆ bg_attribs
const unsigned char bg_attribs[8] |
|
static |
◆ pac2_attribs
const unsigned char pac2_attribs[32][3] |
|
static |
◆ options
Initial value:= {
{
"real_time",
"emit subtitle events as they are decoded for real-time display",
OFFSET(real_time),
AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1,
SD },
{
"real_time_latency_msec",
"minimum elapsed time between emitting real-time subtitle events",
OFFSET(real_time_latency_msec),
AV_OPT_TYPE_INT, { .i64 = 200 }, 0, 500,
SD },
{
"data_field",
"select data field",
OFFSET(data_field),
AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1,
SD, .unit =
"data_field" },
{
"auto",
"pick first one that appears", 0,
AV_OPT_TYPE_CONST, { .i64 =-1 }, 0, 0,
SD, .unit =
"data_field" },
}
Definition at line 941 of file ccaption_dec.c.
◆ ccaption_dec_class
Initial value:= {
.class_name = "Closed Captions Decoder",
}
Definition at line 951 of file ccaption_dec.c.
◆ ff_ccaption_decoder
Initial value:= {
.p.name = "cc_dec",
}
Definition at line 958 of file ccaption_dec.c.