From d9f272fe33063350127d1d6632804f4f0fd8dd9c Mon Sep 17 00:00:00 2001 From: Clément Bœsch Date: Sat, 11 Oct 2014 16:10:51 +0200 Subject: avcodec/ass_split: extend recognized fields in ASS splitter This simplifies the logic for the fix in the next commit. --- libavcodec/ass_split.c | 31 ++++++++++++++++++++++++++++++- libavcodec/ass_split.h | 20 ++++++++++++++++++++ 2 files changed, 50 insertions(+), 1 deletion(-) diff --git a/libavcodec/ass_split.c b/libavcodec/ass_split.c index 413e9c8d06..fea38e719e 100644 --- a/libavcodec/ass_split.c +++ b/libavcodec/ass_split.c @@ -44,7 +44,7 @@ typedef struct { int size; int offset; int offset_count; - ASSFields fields[10]; + ASSFields fields[24]; } ASSSection; static const ASSSection ass_sections[] = { @@ -68,11 +68,25 @@ static const ASSSection ass_sections[] = { {"Fontname", ASS_STR, offsetof(ASSStyle, font_name) }, {"Fontsize", ASS_INT, offsetof(ASSStyle, font_size) }, {"PrimaryColour",ASS_COLOR,offsetof(ASSStyle, primary_color)}, + {"SecondaryColour",ASS_COLOR,offsetof(ASSStyle, secondary_color)}, + {"OutlineColour",ASS_COLOR,offsetof(ASSStyle, outline_color)}, {"BackColour", ASS_COLOR,offsetof(ASSStyle, back_color) }, {"Bold", ASS_INT, offsetof(ASSStyle, bold) }, {"Italic", ASS_INT, offsetof(ASSStyle, italic) }, {"Underline", ASS_INT, offsetof(ASSStyle, underline) }, + {"StrikeOut", ASS_INT, offsetof(ASSStyle, strikeout) }, + {"ScaleX", ASS_FLT, offsetof(ASSStyle, scalex) }, + {"ScaleY", ASS_FLT, offsetof(ASSStyle, scaley) }, + {"Spacing", ASS_FLT, offsetof(ASSStyle, spacing) }, + {"Angle", ASS_FLT, offsetof(ASSStyle, angle) }, + {"BorderStyle", ASS_INT, offsetof(ASSStyle, border_style) }, + {"Outline", ASS_FLT, offsetof(ASSStyle, outline) }, + {"Shadow", ASS_FLT, offsetof(ASSStyle, shadow) }, {"Alignment", ASS_INT, offsetof(ASSStyle, alignment) }, + {"MarginL", ASS_INT, offsetof(ASSStyle, margin_l) }, + {"MarginR", ASS_INT, offsetof(ASSStyle, margin_r) }, + {"MarginV", ASS_INT, offsetof(ASSStyle, margin_v) }, + {"Encoding", ASS_INT, offsetof(ASSStyle, encoding) }, {0}, } }, @@ -86,10 +100,20 @@ static const ASSSection ass_sections[] = { {"Fontname", ASS_STR, offsetof(ASSStyle, font_name) }, {"Fontsize", ASS_INT, offsetof(ASSStyle, font_size) }, {"PrimaryColour",ASS_COLOR,offsetof(ASSStyle, primary_color)}, + {"SecondaryColour", ASS_COLOR, offsetof(ASSStyle, secondary_color) }, + {"TertiaryColour", ASS_COLOR, offsetof(ASSStyle, outline_color) }, {"BackColour", ASS_COLOR,offsetof(ASSStyle, back_color) }, {"Bold", ASS_INT, offsetof(ASSStyle, bold) }, {"Italic", ASS_INT, offsetof(ASSStyle, italic) }, + {"BorderStyle", ASS_INT, offsetof(ASSStyle, border_style) }, + {"Outline", ASS_FLT, offsetof(ASSStyle, outline) }, + {"Shadow", ASS_FLT, offsetof(ASSStyle, shadow) }, {"Alignment", ASS_ALGN, offsetof(ASSStyle, alignment) }, + {"MarginL", ASS_INT, offsetof(ASSStyle, margin_l) }, + {"MarginR", ASS_INT, offsetof(ASSStyle, margin_r) }, + {"MarginV", ASS_INT, offsetof(ASSStyle, margin_v) }, + {"AlphaLevel", ASS_INT, offsetof(ASSStyle, alpha_level) }, + {"Encoding", ASS_INT, offsetof(ASSStyle, encoding) }, {0}, } }, @@ -103,6 +127,11 @@ static const ASSSection ass_sections[] = { {"Start", ASS_TIMESTAMP, offsetof(ASSDialog, start) }, {"End", ASS_TIMESTAMP, offsetof(ASSDialog, end) }, {"Style", ASS_STR, offsetof(ASSDialog, style) }, + {"Name", ASS_STR, offsetof(ASSDialog, name) }, + {"MarginL", ASS_INT, offsetof(ASSDialog, margin_l) }, + {"MarginR", ASS_INT, offsetof(ASSDialog, margin_r) }, + {"MarginV", ASS_INT, offsetof(ASSDialog, margin_v) }, + {"Effect", ASS_STR, offsetof(ASSDialog, effect) }, {"Text", ASS_STR, offsetof(ASSDialog, text) }, {0}, } diff --git a/libavcodec/ass_split.h b/libavcodec/ass_split.h index 06c1ce3309..c9122526c0 100644 --- a/libavcodec/ass_split.h +++ b/libavcodec/ass_split.h @@ -41,13 +41,28 @@ typedef struct { char *font_name; /**< font face (case sensitive) */ int font_size; /**< font height */ int primary_color; /**< color that a subtitle will normally appear in */ + int secondary_color; + int outline_color; /**< color for outline in ASS, called tertiary in SSA */ int back_color; /**< color of the subtitle outline or shadow */ int bold; /**< whether text is bold (1) or not (0) */ int italic; /**< whether text is italic (1) or not (0) */ int underline; /**< whether text is underlined (1) or not (0) */ + int strikeout; + float scalex; + float scaley; + float spacing; + float angle; + int border_style; + float outline; + float shadow; int alignment; /**< position of the text (left, center, top...), defined after the layout of the numpad (1-3 sub, 4-6 mid, 7-9 top) */ + int margin_l; + int margin_r; + int margin_v; + int alpha_level; + int encoding; } ASSStyle; /** @@ -58,6 +73,11 @@ typedef struct { int start; /**< start time of the dialog in centiseconds */ int end; /**< end time of the dialog in centiseconds */ char *style; /**< name of the ASSStyle to use with this dialog */ + char *name; + int margin_l; + int margin_r; + int margin_v; + char *effect; char *text; /**< actual text which will be displayed as a subtitle, can include style override control codes (see ff_ass_split_override_codes()) */ -- cgit v1.2.3