FFmpeg  4.0
Data Structures | Typedefs | Enumerations | Functions | Variables
ass_split.c File Reference
#include "avcodec.h"
#include "ass_split.h"

Go to the source code of this file.

Data Structures

struct  ASSFields
 
struct  ASSSection
 
struct  ASSSplitContext
 This struct can be casted to ASS to access to the split data. More...
 

Typedefs

typedef int(* ASSConvertFunc) (void *dest, const char *buf, int len)
 

Enumerations

enum  ASSFieldType {
  ASS_STR, ASS_INT, ASS_FLT, ASS_COLOR,
  ASS_TIMESTAMP, ASS_ALGN
}
 

Functions

static int convert_str (void *dest, const char *buf, int len)
 
static int convert_int (void *dest, const char *buf, int len)
 
static int convert_flt (void *dest, const char *buf, int len)
 
static int convert_color (void *dest, const char *buf, int len)
 
static int convert_timestamp (void *dest, const char *buf, int len)
 
static int convert_alignment (void *dest, const char *buf, int len)
 
static uint8_trealloc_section_array (ASSSplitContext *ctx)
 
static int is_eol (char buf)
 
static const char * skip_space (const char *buf)
 
static intget_default_field_orders (const ASSSection *section, int *number)
 
static const char * ass_split_section (ASSSplitContext *ctx, const char *buf)
 
static int ass_split (ASSSplitContext *ctx, const char *buf)
 
ASSSplitContextff_ass_split (const char *buf)
 Split a full ASS file or a ASS header from a string buffer and store the split structure in a newly allocated context. More...
 
static void free_section (ASSSplitContext *ctx, const ASSSection *section)
 
ASSDialogff_ass_split_dialog (ASSSplitContext *ctx, const char *buf, int cache, int *number)
 Split one or several ASS "Dialogue" lines from a string buffer and store them in an already initialized context. More...
 
void ff_ass_free_dialog (ASSDialog **dialogp)
 Free a dialogue obtained from ff_ass_split_dialog2(). More...
 
ASSDialogff_ass_split_dialog2 (ASSSplitContext *ctx, const char *buf)
 Split one ASS Dialogue line from a string buffer. More...
 
void ff_ass_split_free (ASSSplitContext *ctx)
 Free all the memory allocated for an ASSSplitContext. More...
 
int ff_ass_split_override_codes (const ASSCodesCallbacks *callbacks, void *priv, const char *buf)
 Split override codes out of a ASS "Dialogue" Text field. More...
 
ASSStyleff_ass_style_get (ASSSplitContext *ctx, const char *style)
 Find an ASSStyle structure by its name. More...
 

Variables

static const ASSSection ass_sections []
 
static const ASSConvertFunc convert_func []
 

Typedef Documentation

◆ ASSConvertFunc

typedef int(* ASSConvertFunc) (void *dest, const char *buf, int len)

Definition at line 142 of file ass_split.c.

Enumeration Type Documentation

◆ ASSFieldType

Enumerator
ASS_STR 
ASS_INT 
ASS_FLT 
ASS_COLOR 
ASS_TIMESTAMP 
ASS_ALGN 

Definition at line 25 of file ass_split.c.

Function Documentation

◆ convert_str()

static int convert_str ( void dest,
const char *  buf,
int  len 
)
static

Definition at line 144 of file ass_split.c.

◆ convert_int()

static int convert_int ( void dest,
const char *  buf,
int  len 
)
static

Definition at line 156 of file ass_split.c.

◆ convert_flt()

static int convert_flt ( void dest,
const char *  buf,
int  len 
)
static

Definition at line 160 of file ass_split.c.

◆ convert_color()

static int convert_color ( void dest,
const char *  buf,
int  len 
)
static

Definition at line 164 of file ass_split.c.

◆ convert_timestamp()

static int convert_timestamp ( void dest,
const char *  buf,
int  len 
)
static

Definition at line 169 of file ass_split.c.

◆ convert_alignment()

static int convert_alignment ( void dest,
const char *  buf,
int  len 
)
static

Definition at line 176 of file ass_split.c.

◆ realloc_section_array()

static uint8_t* realloc_section_array ( ASSSplitContext ctx)
static

Definition at line 205 of file ass_split.c.

Referenced by ass_split_section().

◆ is_eol()

static int is_eol ( char  buf)
inlinestatic

Definition at line 220 of file ass_split.c.

Referenced by ass_split_section().

◆ skip_space()

static const char* skip_space ( const char *  buf)
inlinestatic

Definition at line 225 of file ass_split.c.

Referenced by ass_split_section(), and ff_ass_split_dialog2().

◆ get_default_field_orders()

static int* get_default_field_orders ( const ASSSection section,
int number 
)
static

Definition at line 232 of file ass_split.c.

Referenced by ass_split_section().

◆ ass_split_section()

static const char* ass_split_section ( ASSSplitContext ctx,
const char *  buf 
)
static

Definition at line 247 of file ass_split.c.

Referenced by ass_split().

◆ ass_split()

static int ass_split ( ASSSplitContext ctx,
const char *  buf 
)
static

Definition at line 349 of file ass_split.c.

Referenced by ff_ass_split(), and ff_ass_split_dialog().

◆ ff_ass_split()

ASSSplitContext* ff_ass_split ( const char *  buf)

Split a full ASS file or a ASS header from a string buffer and store the split structure in a newly allocated context.

Parameters
bufString containing the ASS formatted data.
Returns
Newly allocated struct containing split data.

Definition at line 374 of file ass_split.c.

Referenced by mov_text_encode_init(), srt_encode_init(), and webvtt_encode_init().

◆ free_section()

static void free_section ( ASSSplitContext ctx,
const ASSSection section 
)
static

Definition at line 387 of file ass_split.c.

Referenced by ff_ass_split_dialog(), and ff_ass_split_free().

◆ ff_ass_split_dialog()

ASSDialog* ff_ass_split_dialog ( ASSSplitContext ctx,
const char *  buf,
int  cache,
int number 
)

Split one or several ASS "Dialogue" lines from a string buffer and store them in an already initialized context.

Parameters
ctxContext previously initialized by ff_ass_split().
bufString containing the ASS "Dialogue" lines.
cacheSet to 1 to keep all the previously split ASSDialog in the context, or set to 0 to free all the previously split ASSDialog.
numberIf not NULL, the pointed integer will be set to the number of split ASSDialog.
Returns
Pointer to the first split ASSDialog.

Definition at line 411 of file ass_split.c.

Referenced by encode_frame(), mov_text_encode_frame(), and webvtt_encode_frame().

◆ ff_ass_free_dialog()

void ff_ass_free_dialog ( ASSDialog **  dialogp)

Free a dialogue obtained from ff_ass_split_dialog2().

Definition at line 430 of file ass_split.c.

Referenced by encode_frame(), ff_ass_split_dialog2(), mov_text_encode_frame(), and webvtt_encode_frame().

◆ ff_ass_split_dialog2()

ASSDialog* ff_ass_split_dialog2 ( ASSSplitContext ctx,
const char *  buf 
)

Split one ASS Dialogue line from a string buffer.

Parameters
ctxContext previously initialized by ff_ass_split().
bufString containing the ASS "Dialogue" line.
Returns
Pointer to the split ASSDialog. Must be freed with ff_ass_free_dialog()

Definition at line 442 of file ass_split.c.

Referenced by encode_frame(), mov_text_encode_frame(), and webvtt_encode_frame().

◆ ff_ass_split_free()

void ff_ass_split_free ( ASSSplitContext ctx)

Free all the memory allocated for an ASSSplitContext.

Parameters
ctxContext previously initialized by ff_ass_split().

Definition at line 479 of file ass_split.c.

Referenced by ff_ass_split(), mov_text_encode_close(), srt_encode_close(), and webvtt_encode_close().

◆ ff_ass_split_override_codes()

int ff_ass_split_override_codes ( const ASSCodesCallbacks callbacks,
void priv,
const char *  buf 
)

Split override codes out of a ASS "Dialogue" Text field.

Parameters
callbacksSet of callback functions called for each override code encountered.
privOpaque pointer passed to the callback functions.
bufThe ASS "Dialogue" Text field to split.
Returns
>= 0 on success otherwise an error code <0

Definition at line 492 of file ass_split.c.

Referenced by encode_frame(), mov_text_encode_frame(), and webvtt_encode_frame().

◆ ff_ass_style_get()

ASSStyle* ff_ass_style_get ( ASSSplitContext ctx,
const char *  style 
)

Find an ASSStyle structure by its name.

Parameters
ctxContext previously initialized by ff_ass_split().
stylename of the style to search for.
Returns
the ASSStyle corresponding to style, or NULL if style can't be found

Definition at line 587 of file ass_split.c.

Referenced by srt_style_apply(), and webvtt_style_apply().

Variable Documentation

◆ ass_sections

const ASSSection ass_sections[]
static

Definition at line 50 of file ass_split.c.

◆ convert_func

const ASSConvertFunc convert_func[]
static
Initial value:
= {
}
static int convert_alignment(void *dest, const char *buf, int len)
Definition: ass_split.c:176
static int convert_str(void *dest, const char *buf, int len)
Definition: ass_split.c:144
static int convert_color(void *dest, const char *buf, int len)
Definition: ass_split.c:164
static int convert_flt(void *dest, const char *buf, int len)
Definition: ass_split.c:160
static int convert_timestamp(void *dest, const char *buf, int len)
Definition: ass_split.c:169
static int convert_int(void *dest, const char *buf, int len)
Definition: ass_split.c:156

Definition at line 187 of file ass_split.c.

Referenced by ass_split_section(), and ff_ass_split_dialog2().