ffmpeg | branch: master | Eejya Singh <singh.ee...@gmail.com> | Wed Jan 28 17:59:42 2015 +0530| [40b198e98736819f647f794e57517d1b42e85791] | committer: Clément Bœsch
lavfi/subtitles: add force_style option Signed-off-by: Eejya Singh <singh.ee...@gmail.com> Signed-off-by: Clément Bœsch <u...@pkh.me> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=40b198e98736819f647f794e57517d1b42e85791 --- doc/filters.texi | 10 ++++++++++ libavfilter/version.h | 2 +- libavfilter/vf_subtitles.c | 23 +++++++++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) diff --git a/doc/filters.texi b/doc/filters.texi index c6fef0c..a90825a 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -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 diff --git a/libavfilter/version.h b/libavfilter/version.h index 78863af..49ea3a9 100644 --- a/libavfilter/version.h +++ b/libavfilter/version.h @@ -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, \ diff --git a/libavfilter/vf_subtitles.c b/libavfilter/vf_subtitles.c index be4c6a5..f7fc1a6 100644 --- a/libavfilter/vf_subtitles.c +++ b/libavfilter/vf_subtitles.c @@ -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, _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog