avfilter/ass: add shaping option
The documentation is mostly based on ass.h public header.
This commit is contained in:
parent
8a9c5db29e
commit
4b58349bc8
@ -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
|
and libavformat to work. On the other hand, it is limited to ASS (Advanced
|
||||||
Substation Alpha) subtitles files.
|
Substation Alpha) subtitles files.
|
||||||
|
|
||||||
|
This filter accepts the following option in addition to the common options from
|
||||||
|
the @ref{subtitles} filter:
|
||||||
|
|
||||||
|
@table @option
|
||||||
|
@item shaping
|
||||||
|
Set the shaping engine
|
||||||
|
|
||||||
|
Available values are:
|
||||||
|
@table @samp
|
||||||
|
@item auto
|
||||||
|
The default libass shaping engine, which is the best available.
|
||||||
|
@item simple
|
||||||
|
Fast, font-agnostic shaper that can do only substitutions
|
||||||
|
@item complex
|
||||||
|
Slower shaper using OpenType for substitutions and positioning
|
||||||
|
@end table
|
||||||
|
|
||||||
|
The default is @code{auto}.
|
||||||
|
@end table
|
||||||
|
|
||||||
@section bbox
|
@section bbox
|
||||||
|
|
||||||
Compute the bounding box for the non-black pixels in the input frame
|
Compute the bounding box for the non-black pixels in the input frame
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
#define LIBAVFILTER_VERSION_MAJOR 5
|
#define LIBAVFILTER_VERSION_MAJOR 5
|
||||||
#define LIBAVFILTER_VERSION_MINOR 1
|
#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, \
|
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||||
LIBAVFILTER_VERSION_MINOR, \
|
LIBAVFILTER_VERSION_MINOR, \
|
||||||
|
@ -55,6 +55,7 @@ typedef struct {
|
|||||||
uint8_t rgba_map[4];
|
uint8_t rgba_map[4];
|
||||||
int pix_step[4]; ///< steps per pixel for each plane of the main output
|
int pix_step[4]; ///< steps per pixel for each plane of the main output
|
||||||
int original_w, original_h;
|
int original_w, original_h;
|
||||||
|
int shaping;
|
||||||
FFDrawContext draw;
|
FFDrawContext draw;
|
||||||
} AssContext;
|
} AssContext;
|
||||||
|
|
||||||
@ -141,6 +142,8 @@ static int config_input(AVFilterLink *inlink)
|
|||||||
if (ass->original_w && ass->original_h)
|
if (ass->original_w && ass->original_h)
|
||||||
ass_set_aspect_ratio(ass->renderer, (double)inlink->w / inlink->h,
|
ass_set_aspect_ratio(ass->renderer, (double)inlink->w / inlink->h,
|
||||||
(double)ass->original_w / ass->original_h);
|
(double)ass->original_w / ass->original_h);
|
||||||
|
if (ass->shaping != -1)
|
||||||
|
ass_set_shaper(ass->renderer, ass->shaping);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -207,6 +210,10 @@ static const AVFilterPad ass_outputs[] = {
|
|||||||
|
|
||||||
static const AVOption ass_options[] = {
|
static const AVOption ass_options[] = {
|
||||||
COMMON_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},
|
{NULL},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user