[FFmpeg-devel] [PATCH 5/7] avcodec/ass_split: extend recognized fields in ASS splitter

Clément Bœsch u at pkh.me
Sat Oct 11 19:59:10 CEST 2014


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 413e9c8..fea38e7 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 06c1ce3..c912252 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()) */
-- 
2.1.2



More information about the ffmpeg-devel mailing list