On date Wednesday 2015-02-04 01:30:09 +0530, Eejya Singh encoded: > Hi, > I've implemented a force_style option in the subtitles filter. Kindly find > the patch attached. > > -- > Eejya Singh, > 3rd year undergraduate, > Computer Science, > BITS Pilani Goa Campus
> From 88014fde69b249d3b1cb8e6bd2f654156ba2b4e7 Mon Sep 17 00:00:00 2001 > From: Eejya Singh <singh.ee...@gmail.com> > Date: Wed, 28 Jan 2015 17:41:42 +0530 > Subject: [PATCH] Adding Force Style option in Subtitles Filter lavfi/subtitles: add force_style option > > Signed-off-by: Eejya Singh <singh.ee...@gmail.com> > --- > doc/filters.texi | 14 ++++++++++++++ > libavfilter/version.h | 2 +- > libavfilter/vf_subtitles.c | 24 ++++++++++++++++++++++++ > 3 files changed, 39 insertions(+), 1 deletion(-) > > diff --git a/doc/filters.texi b/doc/filters.texi > index 261fd24..60ef7f4 100644 > --- a/doc/filters.texi > +++ b/doc/filters.texi > @@ -8470,6 +8470,10 @@ useful if not UTF-8. > > @item stream_index, si > Set subtitles stream index. @code{subtitles} filter only. > + > +@item force_style > +Set desired style for the customization of subtitles.It follows ASS style > format. > + You should describe the syntax here, otherwise the user will have to guesswork. > @end table > > If the first key is not specified, it is assumed that the first value > @@ -8496,6 +8500,16 @@ To render the second subtitles stream from that file, > use: > subtitles=video.mkv:si=1 > @end example > > +To change the font of subtitles stream from file, use: > +@example > +subtitles=sub.srt:force_style=FontName=Arial > +@end example > + > +To change the color and formatting of subtitles stream from file, use: > +@example > +subtitles='sub.srt:force_style=FontName=Arial,PrimaryColour=255' > +@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 50967f4..7ec374d 100644 > --- a/libavfilter/version.h > +++ b/libavfilter/version.h > @@ -31,7 +31,7 @@ > > #define LIBAVFILTER_VERSION_MAJOR 5 > #define LIBAVFILTER_VERSION_MINOR 6 > -#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 be4c6a5..0fae118 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}, > }; > > @@ -389,6 +391,28 @@ static av_cold int init_subtitles(AVFilterContext *ctx) > if (ass->charenc) > av_dict_set(&codec_opts, "sub_charenc", ass->charenc, 0); > ret = avcodec_open2(dec_ctx, dec, &codec_opts); > + You should keep the if ret < 0 check here. > + 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); > + } Question: in the key=value Ass property couples, can value contain the "," special character? LGTM otherwise. -- FFmpeg = Faithful Fostering Mysterious Prodigious Eretic God _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel