mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-30 23:10:32 +00:00
lavfi/subtitles: add force_style option
Signed-off-by: Eejya Singh <singh.eejya@gmail.com> Signed-off-by: Clément Bœsch <u@pkh.me>
This commit is contained in:
parent
5ae140c04f
commit
40b198e987
@ -8554,6 +8554,10 @@ useful if not UTF-8.
|
||||
|
||||
@item stream_index, si
|
||||
Set subtitles stream index. @code{subtitles} filter only.
|
||||
|
||||
@item force_style
|
||||
Override default style or script info parameters of the subtitles. It accepts a
|
||||
string containing ASS style format @code{KEY=VALUE} couples separated by ",".
|
||||
@end table
|
||||
|
||||
If the first key is not specified, it is assumed that the first value
|
||||
@ -8580,6 +8584,12 @@ To render the second subtitles stream from that file, use:
|
||||
subtitles=video.mkv:si=1
|
||||
@end example
|
||||
|
||||
To make the subtitles stream from @file{sub.srt} appear in transparent green
|
||||
@code{DejaVu Serif}, use:
|
||||
@example
|
||||
subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'
|
||||
@end example
|
||||
|
||||
@section super2xsai
|
||||
|
||||
Scale the input by 2x and smooth using the Super2xSaI (Scale and
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
#define LIBAVFILTER_VERSION_MAJOR 5
|
||||
#define LIBAVFILTER_VERSION_MINOR 9
|
||||
#define LIBAVFILTER_VERSION_MICRO 103
|
||||
#define LIBAVFILTER_VERSION_MICRO 104
|
||||
|
||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
|
||||
LIBAVFILTER_VERSION_MINOR, \
|
||||
|
@ -51,6 +51,7 @@ typedef struct {
|
||||
ASS_Track *track;
|
||||
char *filename;
|
||||
char *charenc;
|
||||
char *force_style;
|
||||
int stream_index;
|
||||
uint8_t rgba_map[4];
|
||||
int pix_step[4]; ///< steps per pixel for each plane of the main output
|
||||
@ -260,6 +261,7 @@ static const AVOption subtitles_options[] = {
|
||||
{"charenc", "set input character encoding", OFFSET(charenc), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, FLAGS},
|
||||
{"stream_index", "set stream index", OFFSET(stream_index), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, FLAGS},
|
||||
{"si", "set stream index", OFFSET(stream_index), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, INT_MAX, FLAGS},
|
||||
{"force_style", "force subtitle style", OFFSET(force_style), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, FLAGS},
|
||||
{NULL},
|
||||
};
|
||||
|
||||
@ -392,6 +394,27 @@ static av_cold int init_subtitles(AVFilterContext *ctx)
|
||||
if (ret < 0)
|
||||
goto end;
|
||||
|
||||
if (ass->force_style) {
|
||||
char **list = NULL;
|
||||
char *temp = NULL;
|
||||
char *ptr = av_strtok(ass->force_style, ",", &temp);
|
||||
int i = 0;
|
||||
while (ptr) {
|
||||
av_dynarray_add(&list, &i, ptr);
|
||||
if (!list) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto end;
|
||||
}
|
||||
ptr = av_strtok(NULL, ",", &temp);
|
||||
}
|
||||
av_dynarray_add(&list, &i, NULL);
|
||||
if (!list) {
|
||||
ret = AVERROR(ENOMEM);
|
||||
goto end;
|
||||
}
|
||||
ass_set_style_overrides(ass->library, list);
|
||||
av_free(list);
|
||||
}
|
||||
/* Decode subtitles and push them into the renderer (libass) */
|
||||
if (dec_ctx->subtitle_header)
|
||||
ass_process_codec_private(ass->track,
|
||||
|
Loading…
Reference in New Issue
Block a user