[FFmpeg-cvslog] avfilter/ass: add shaping option

Clément Bœsch git at videolan.org
Tue Sep 16 21:24:13 CEST 2014


ffmpeg | branch: master | Clément Bœsch <u at pkh.me> | Thu Sep 11 21:10:43 2014 +0200| [4b58349bc8ff2ff5dfbc9eef1e5856fd16e1f517] | committer: Clément Bœsch

avfilter/ass: add shaping option

The documentation is mostly based on ass.h public header.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=4b58349bc8ff2ff5dfbc9eef1e5856fd16e1f517
---

 doc/filters.texi           |   20 ++++++++++++++++++++
 libavfilter/version.h      |    2 +-
 libavfilter/vf_subtitles.c |    7 +++++++
 3 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/doc/filters.texi b/doc/filters.texi
index bb486ea..e9dab47 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -2552,6 +2552,26 @@ Same as the @ref{subtitles} filter, except that it doesn't require libavcodec
 and libavformat to work. On the other hand, it is limited to ASS (Advanced
 Substation Alpha) subtitles files.
 
+This filter accepts the following option in addition to the common options from
+the @ref{subtitles} filter:
+
+ at table @option
+ at item shaping
+Set the shaping engine
+
+Available values are:
+ at table @samp
+ at item auto
+The default libass shaping engine, which is the best available.
+ at item simple
+Fast, font-agnostic shaper that can do only substitutions
+ at item complex
+Slower shaper using OpenType for substitutions and positioning
+ at end table
+
+The default is @code{auto}.
+ at end table
+
 @section bbox
 
 Compute the bounding box for the non-black pixels in the input frame
diff --git a/libavfilter/version.h b/libavfilter/version.h
index e855fd3..9ce4fcd 100644
--- a/libavfilter/version.h
+++ b/libavfilter/version.h
@@ -31,7 +31,7 @@
 
 #define LIBAVFILTER_VERSION_MAJOR  5
 #define LIBAVFILTER_VERSION_MINOR  1
-#define LIBAVFILTER_VERSION_MICRO 100
+#define LIBAVFILTER_VERSION_MICRO 101
 
 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
                                                LIBAVFILTER_VERSION_MINOR, \
diff --git a/libavfilter/vf_subtitles.c b/libavfilter/vf_subtitles.c
index c9c21a7..be4c6a5 100644
--- a/libavfilter/vf_subtitles.c
+++ b/libavfilter/vf_subtitles.c
@@ -55,6 +55,7 @@ typedef struct {
     uint8_t rgba_map[4];
     int     pix_step[4];       ///< steps per pixel for each plane of the main output
     int original_w, original_h;
+    int shaping;
     FFDrawContext draw;
 } AssContext;
 
@@ -141,6 +142,8 @@ static int config_input(AVFilterLink *inlink)
     if (ass->original_w && ass->original_h)
         ass_set_aspect_ratio(ass->renderer, (double)inlink->w / inlink->h,
                              (double)ass->original_w / ass->original_h);
+    if (ass->shaping != -1)
+        ass_set_shaper(ass->renderer, ass->shaping);
 
     return 0;
 }
@@ -207,6 +210,10 @@ static const AVFilterPad ass_outputs[] = {
 
 static const AVOption ass_options[] = {
     COMMON_OPTIONS
+    {"shaping", "set shaping engine", OFFSET(shaping), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, FLAGS, "shaping_mode"},
+        {"auto", NULL,                 0, AV_OPT_TYPE_CONST, {.i64 = -1},                  INT_MIN, INT_MAX, FLAGS, "shaping_mode"},
+        {"simple",  "simple shaping",  0, AV_OPT_TYPE_CONST, {.i64 = ASS_SHAPING_SIMPLE},  INT_MIN, INT_MAX, FLAGS, "shaping_mode"},
+        {"complex", "complex shaping", 0, AV_OPT_TYPE_CONST, {.i64 = ASS_SHAPING_COMPLEX}, INT_MIN, INT_MAX, FLAGS, "shaping_mode"},
     {NULL},
 };
 



More information about the ffmpeg-cvslog mailing list