FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Enumerations | Functions | Variables
ccaption_dec.c File Reference
#include "avcodec.h"
#include "ass.h"
#include "libavutil/internal.h"
#include "libavutil/opt.h"

Go to the source code of this file.

Data Structures

struct  Screen
 
struct  CCaptionSubContext
 

Macros

#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 COR3(var, with1, with2, with3)   ( (var) == (with1) || (var) == (with2) || (var) == (with3) )
 

Enumerations

enum  cc_mode {
  CCMODE_POPON, CCMODE_PAINTON, CCMODE_ROLLUP_2, CCMODE_ROLLUP_3,
  CCMODE_ROLLUP_4, 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 }
 

Functions

static av_cold int init_decoder (AVCodecContext *avctx)
 
static av_cold int close_decoder (AVCodecContext *avctx)
 
static int write_char (CCaptionSubContext *ctx, char *row, uint8_t col, char ch)
 
static int validate_cc_data_pair (uint8_t *cc_data_pair)
 This function after validating parity bit, also remove it from data pair. More...
 
static struct Screenget_writing_screen (CCaptionSubContext *ctx)
 
static void roll_up (CCaptionSubContext *ctx)
 
static int reap_screen (CCaptionSubContext *ctx, int64_t pts)
 
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, int64_t pts)
 
static int handle_eoc (CCaptionSubContext *ctx, int64_t pts)
 
static void handle_delete_end_of_row (CCaptionSubContext *ctx, char hi, char lo)
 
static void handle_char (CCaptionSubContext *ctx, char hi, char lo, int64_t pts)
 
static int process_cc608 (CCaptionSubContext *ctx, int64_t pts, uint8_t hi, uint8_t lo)
 
static int decode (AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avpkt)
 

Variables

static const unsigned char pac2_attribs [32][3]
 
static const uint8_t parity_table [256]
 
static const AVOption options []
 
static const AVClass ccaption_dec_class
 
AVCodec ff_ccaption_decoder
 

Macro Definition Documentation

#define SCREEN_ROWS   15

Definition at line 27 of file ccaption_dec.c.

Referenced by reap_screen().

#define SCREEN_COLUMNS   32

Definition at line 28 of file ccaption_dec.c.

Referenced by roll_up(), and write_char().

#define SET_FLAG (   var,
  val 
)    ( (var) |= ( 1 << (val)) )

Definition at line 30 of file ccaption_dec.c.

Referenced by handle_char(), handle_textattr(), and roll_up().

#define UNSET_FLAG (   var,
  val 
)    ( (var) &= ~( 1 << (val)) )

Definition at line 31 of file ccaption_dec.c.

Referenced by roll_up().

#define CHECK_FLAG (   var,
  val 
)    ( (var) & ( 1 << (val)) )

Definition at line 32 of file ccaption_dec.c.

Referenced by reap_screen(), and roll_up().

#define COR3 (   var,
  with1,
  with2,
  with3 
)    ( (var) == (with1) || (var) == (with2) || (var) == (with3) )

Referenced by process_cc608().

Enumeration Type Documentation

enum cc_mode
Enumerator
CCMODE_POPON 
CCMODE_PAINTON 
CCMODE_ROLLUP_2 
CCMODE_ROLLUP_3 
CCMODE_ROLLUP_4 
CCMODE_TEXT 

Definition at line 38 of file ccaption_dec.c.

Enumerator
CCCOL_WHITE 
CCCOL_GREEN 
CCCOL_BLUE 
CCCOL_CYAN 
CCCOL_RED 
CCCOL_YELLOW 
CCCOL_MAGENTA 
CCCOL_USERDEFINED 
CCCOL_BLACK 
CCCOL_TRANSPARENT 

Definition at line 47 of file ccaption_dec.c.

enum cc_font
Enumerator
CCFONT_REGULAR 
CCFONT_ITALICS 
CCFONT_UNDERLINED 
CCFONT_UNDERLINED_ITALICS 

Definition at line 60 of file ccaption_dec.c.

Function Documentation

static av_cold int init_decoder ( AVCodecContext avctx)
static

Definition at line 175 of file ccaption_dec.c.

static av_cold int close_decoder ( AVCodecContext avctx)
static

Definition at line 196 of file ccaption_dec.c.

static int write_char ( CCaptionSubContext ctx,
char *  row,
uint8_t  col,
char  ch 
)
static
Parameters
ctxclosed caption context just to print log

Definition at line 207 of file ccaption_dec.c.

Referenced by handle_char(), handle_delete_end_of_row(), handle_pac(), and handle_textattr().

static int validate_cc_data_pair ( uint8_t cc_data_pair)
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 231 of file ccaption_dec.c.

Referenced by decode().

static struct Screen* get_writing_screen ( CCaptionSubContext ctx)
static
static void roll_up ( CCaptionSubContext ctx)
static

Definition at line 285 of file ccaption_dec.c.

Referenced by process_cc608().

static int reap_screen ( CCaptionSubContext ctx,
int64_t  pts 
)
static

Definition at line 318 of file ccaption_dec.c.

Referenced by handle_edm(), and process_cc608().

static void handle_textattr ( CCaptionSubContext ctx,
uint8_t  hi,
uint8_t  lo 
)
static

Definition at line 351 of file ccaption_dec.c.

Referenced by process_cc608().

static void handle_pac ( CCaptionSubContext ctx,
uint8_t  hi,
uint8_t  lo 
)
static

Definition at line 370 of file ccaption_dec.c.

Referenced by process_cc608().

static int handle_edm ( CCaptionSubContext ctx,
int64_t  pts 
)
static
Parameters
ptsit is required to set end time

Definition at line 404 of file ccaption_dec.c.

Referenced by handle_eoc(), and process_cc608().

static int handle_eoc ( CCaptionSubContext ctx,
int64_t  pts 
)
static

Definition at line 415 of file ccaption_dec.c.

Referenced by process_cc608().

static void handle_delete_end_of_row ( CCaptionSubContext ctx,
char  hi,
char  lo 
)
static

Definition at line 424 of file ccaption_dec.c.

Referenced by process_cc608().

static void handle_char ( CCaptionSubContext ctx,
char  hi,
char  lo,
int64_t  pts 
)
static

Definition at line 432 of file ccaption_dec.c.

Referenced by process_cc608().

static int process_cc608 ( CCaptionSubContext ctx,
int64_t  pts,
uint8_t  hi,
uint8_t  lo 
)
static

Definition at line 460 of file ccaption_dec.c.

Referenced by decode().

static int decode ( AVCodecContext avctx,
void data,
int *  got_sub,
AVPacket avpkt 
)
static
Examples:
qsvdec.c.

Definition at line 523 of file ccaption_dec.c.

Referenced by frame_alloc(), frame_free(), get_buffer(), get_format(), main(), and show_formats_devices().

Variable Documentation

const unsigned char pac2_attribs[32][3]
static

Definition at line 67 of file ccaption_dec.c.

Referenced by handle_pac(), and handle_textattr().

const uint8_t parity_table[256]
static

Definition at line 105 of file ccaption_dec.c.

Referenced by validate_cc_data_pair().

const AVOption options[]
static
Initial value:
= {
{NULL}
}
#define NULL
Definition: coverity.c:32

Definition at line 571 of file ccaption_dec.c.

const AVClass ccaption_dec_class
static
Initial value:
= {
.class_name = "Closed caption Decoder",
.item_name = av_default_item_name,
.option = options,
}
#define LIBAVUTIL_VERSION_INT
Definition: version.h:62
av_default_item_name
static const AVOption options[]
Definition: ccaption_dec.c:571

Definition at line 575 of file ccaption_dec.c.

AVCodec ff_ccaption_decoder
Initial value:
= {
.name = "cc_dec",
.long_name = NULL_IF_CONFIG_SMALL("Closed Caption (EIA-608 / CEA-708) Decoder"),
.priv_data_size = sizeof(CCaptionSubContext),
.close = close_decoder,
.priv_class = &ccaption_dec_class,
}
static av_cold int init(AVCodecContext *avctx)
Definition: avrndec.c:35
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
Definition: internal.h:175
static av_cold int init_decoder(AVCodecContext *avctx)
Definition: ccaption_dec.c:175
static const AVClass ccaption_dec_class
Definition: ccaption_dec.c:575
static int decode(AVCodecContext *avctx, void *data, int *got_sub, AVPacket *avpkt)
Definition: ccaption_dec.c:523
static av_cold int close_decoder(AVCodecContext *avctx)
Definition: ccaption_dec.c:196

Definition at line 582 of file ccaption_dec.c.