[FFmpeg-cvslog] lavfi/subtitles: add force_style option
Eejya Singh
git at videolan.org
Sun Feb 8 11:39:17 CET 2015
ffmpeg | branch: master | Eejya Singh <singh.eejya at 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.eejya at gmail.com>
Signed-off-by: Clément Bœsch <u at 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.
+
+ at 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
+ at code{DejaVu Serif}, use:
+ at example
+subtitles=sub.srt:force_style='FontName=DejaVu Serif,PrimaryColour=&HAA00FF00'
+ at 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,
More information about the ffmpeg-cvslog
mailing list