From: softworkz <ffmpegagent@gmail.com>
To: ffmpeg-devel@ffmpeg.org
Cc: Michael Niedermayer <michael@niedermayer.cc>,
softworkz <softworkz@hotmail.com>,
Andriy Gelman <andriy.gelman@gmail.com>,
Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Subject: [FFmpeg-devel] [PATCH v5 16/25] avfilter/stripstyles: Add stripstyles filter
Date: Sat, 25 Jun 2022 09:57:48 +0000
Message-ID: <bca90ebc3e439e7f024fb68a8579e8c342e2f6bd.1656151077.git.ffmpegagent@gmail.com> (raw)
In-Reply-To: <pull.18.v5.ffstaging.FFmpeg.1656151077.ffmpegagent@gmail.com>
From: softworkz <softworkz@hotmail.com>
- stripstyles {S -> S)
Remove all inline styles from subtitle events
Signed-off-by: softworkz <softworkz@hotmail.com>
---
doc/filters.texi | 37 ++++++
libavfilter/Makefile | 1 +
libavfilter/allfilters.c | 1 +
libavfilter/sf_stripstyles.c | 237 +++++++++++++++++++++++++++++++++++
4 files changed, 276 insertions(+)
create mode 100644 libavfilter/sf_stripstyles.c
diff --git a/doc/filters.texi b/doc/filters.texi
index 0d078e2573..1158df64d2 100644
--- a/doc/filters.texi
+++ b/doc/filters.texi
@@ -27058,6 +27058,43 @@ ffmpeg -i "http://streams.videolan.org/samples/sub/SSA/subtitle_testing_complex.
@end example
@end itemize
+@section stripstyles
+
+Remove all inline styles from subtitle events.
+
+Inputs:
+@itemize
+@item 0: Subtitles[TEXT]
+@end itemize
+
+Outputs:
+@itemize
+@item 0: Subtitles[TEXT]
+@end itemize
+
+It accepts the following parameters:
+
+@table @option
+@item remove_animated
+Also remove text which is subject to animation (default: true)
+Usually, animated text elements are used used in addition to static subtitle lines for creating effects, so in most cases it is safe to remove the animation content.
+If subtitle text is missing, try setting this to false.
+
+@item select_layer
+Process only ASS subtitle events from a specific layer. This allows to filter out certain effects where an ASS author duplicates the text onto multiple layers.
+
+@end table
+
+@subsection Examples
+
+@itemize
+@item
+Remove styles and animations from ASS subtitles and output events from ass layer 0 only. Then convert asn save as SRT stream:
+@example
+ffmpeg -i "https://streams.videolan.org/samples/sub/SSA/subtitle_testing_complex.mkv" -filter_complex "[0:1]stripstyles=select_layer=0" -map 0 -c:s srt output.mkv
+@end example
+@end itemize
+
@section textmod
diff --git a/libavfilter/Makefile b/libavfilter/Makefile
index 6a68c44e1c..a99a0f6583 100644
--- a/libavfilter/Makefile
+++ b/libavfilter/Makefile
@@ -580,6 +580,7 @@ OBJS-$(CONFIG_NULLSINK_FILTER) += vsink_nullsink.o
# subtitle filters
OBJS-$(CONFIG_CENSOR_FILTER) += sf_textmod.o
OBJS-$(CONFIG_SHOW_SPEAKER_FILTER) += sf_textmod.o
+OBJS-$(CONFIG_STRIPSTYLES_FILTER) += sf_stripstyles.o
OBJS-$(CONFIG_TEXTMOD_FILTER) += sf_textmod.o
# multimedia filters
diff --git a/libavfilter/allfilters.c b/libavfilter/allfilters.c
index 2228e414db..7a958b51d4 100644
--- a/libavfilter/allfilters.c
+++ b/libavfilter/allfilters.c
@@ -572,6 +572,7 @@ extern const AVFilter ff_avsrc_movie;
/* subtitle filters */
extern const AVFilter ff_sf_censor;
extern const AVFilter ff_sf_showspeaker;
+extern const AVFilter ff_sf_stripstyles;
extern const AVFilter ff_sf_textmod;
/* those filters are part of public or internal API,
diff --git a/libavfilter/sf_stripstyles.c b/libavfilter/sf_stripstyles.c
new file mode 100644
index 0000000000..78dc6f3ef4
--- /dev/null
+++ b/libavfilter/sf_stripstyles.c
@@ -0,0 +1,237 @@
+/*
+ * Copyright (c) 2021 softworkz
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file
+ * text subtitle filter which removes inline-styles from subtitles
+ */
+
+#include "libavutil/opt.h"
+#include "internal.h"
+#include "libavutil/ass_internal.h"
+#include "libavutil/ass_split_internal.h"
+#include "libavutil/bprint.h"
+
+typedef struct StripStylesContext {
+ const AVClass *class;
+ enum AVSubtitleType format;
+ int remove_animated;
+ enum ASSSplitComponents keep_flags;
+ int select_layer;
+} StripStylesContext;
+
+typedef struct DialogContext {
+ StripStylesContext* ss_ctx;
+ AVBPrint buffer;
+ int drawing_scale;
+ int is_animated;
+ int plain_text_length;
+} DialogContext;
+
+static void dialog_text_cb(void *priv, const char *text, int len)
+{
+ DialogContext *s = priv;
+
+ av_log(s->ss_ctx, AV_LOG_DEBUG, "dialog_text_cb: %s\n", text);
+
+ if (!s->drawing_scale && (!s->is_animated || !s->ss_ctx->remove_animated))
+ s->plain_text_length += len;
+ ////av_bprint_append_data(&s->buffer, text, len);
+}
+
+static void dialog_new_line_cb(void *priv, int forced)
+{
+ DialogContext *s = priv;
+ if (!s->drawing_scale && !s->is_animated)
+ s->plain_text_length += 2;
+ ////av_bprint_append_data(&s->buffer, forced ? "\\N" : "\\n", 2);
+}
+
+static void dialog_drawing_mode_cb(void *priv, int scale)
+{
+ DialogContext *s = priv;
+ s->drawing_scale = scale;
+}
+
+static void dialog_animate_cb(void *priv, int t1, int t2, int accel, char *style)
+{
+ DialogContext *s = priv;
+ s->is_animated = 1;
+}
+
+static void dialog_move_cb(void *priv, int x1, int y1, int x2, int y2, int t1, int t2)
+{
+ DialogContext *s = priv;
+ if (t1 >= 0 || t2 >= 0)
+ s->is_animated = 1;
+}
+
+static const ASSCodesCallbacks dialog_callbacks = {
+ .text = dialog_text_cb,
+ .new_line = dialog_new_line_cb,
+ .drawing_mode = dialog_drawing_mode_cb,
+ .animate = dialog_animate_cb,
+ .move = dialog_move_cb,
+};
+
+static char *process_dialog(StripStylesContext *s, const char *ass_line)
+{
+ DialogContext dlg_ctx = { .ss_ctx = s };
+ ASSDialog *dialog = avpriv_ass_split_dialog(NULL, ass_line);
+ char *result = NULL;
+
+ if (!dialog)
+ return NULL;
+
+ if (s->select_layer >= 0 && dialog->layer != s->select_layer) {
+ avpriv_ass_free_dialog(&dialog);
+ return NULL;
+ }
+
+ dlg_ctx.ss_ctx = s;
+
+ av_bprint_init(&dlg_ctx.buffer, 512, AV_BPRINT_SIZE_UNLIMITED);
+
+ avpriv_ass_filter_override_codes(&dialog_callbacks, &dlg_ctx, dialog->text, &dlg_ctx.buffer, s->keep_flags);
+
+ if (av_bprint_is_complete(&dlg_ctx.buffer) && dlg_ctx.buffer.len > 0 && dlg_ctx.plain_text_length > 0)
+ result = avpriv_ass_get_dialog_ex(dialog->readorder, dialog->layer, dialog->style, dialog->name, dialog->margin_l, dialog->margin_r, dialog->margin_v, dialog->effect, dlg_ctx.buffer.str);
+
+ av_bprint_finalize(&dlg_ctx.buffer, NULL);
+ avpriv_ass_free_dialog(&dialog);
+
+ return result;
+}
+
+static int config_output(AVFilterLink *outlink)
+{
+ AVFilterLink *inlink = outlink->src->inputs[0];
+
+ outlink->w = inlink->w;
+ outlink->h = inlink->h;
+ outlink->time_base = inlink->time_base;
+ outlink->frame_rate = inlink->frame_rate;
+
+ return 0;
+}
+
+static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
+{
+ StripStylesContext *s = inlink->dst->priv;
+ AVFilterLink *outlink = inlink->dst->outputs[0];
+ int ret;
+
+ outlink->format = inlink->format;
+
+ ret = av_frame_make_writable(frame);
+ if (ret <0 ) {
+ av_frame_free(&frame);
+ return AVERROR(ENOMEM);
+ }
+
+ for (unsigned i = 0; i < frame->num_subtitle_areas; i++) {
+
+ AVSubtitleArea *area = frame->subtitle_areas[i];
+
+ if (area->ass) {
+ char *tmp = area->ass;
+ area->ass = process_dialog(s, area->ass);
+
+ if (area->ass) {
+ av_log(inlink->dst, AV_LOG_DEBUG, "original: %d %s\n", i, tmp);
+ av_log(inlink->dst, AV_LOG_DEBUG, "stripped: %d %s\n", i, area->ass);
+ }
+ else
+ area->ass = NULL;
+
+ av_free(tmp);
+ }
+ }
+
+ return ff_filter_frame(outlink, frame);
+}
+
+#define OFFSET(x) offsetof(StripStylesContext, x)
+#define FLAGS (AV_OPT_FLAG_SUBTITLE_PARAM | AV_OPT_FLAG_FILTERING_PARAM)
+
+static const AVOption stripstyles_options[] = {
+ { "keep_flags", "flags to control which override codes to keep", OFFSET(keep_flags), AV_OPT_TYPE_FLAGS, { .i64 = ASS_SPLIT_TEXT }, .flags = FLAGS, .unit = "keepflags" },
+ { "basic", "keep static style tags only", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_BASIC }, .flags=FLAGS, .unit = "keepflags" },
+ { "all_known", "keep all known tags", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_ALL_KNOWN }, .flags=FLAGS, .unit = "keepflags" },
+ { "text", "keep text content", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_TEXT }, .flags=FLAGS, .unit = "keepflags" },
+ { "color", "keep color tags (\\c, \\<n>c)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_COLOR }, .flags=FLAGS, .unit = "keepflags" },
+ { "alpha", "keep color alpha tags (\\alpha, \\<n>a)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_ALPHA }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_name", "keep font name tags (\\fn)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_NAME }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_size", "keep font size tags (\\fs)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_SIZE }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_scale", "keep font scale tags (\\fscx, \\fscy)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_SCALE }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_spacing", "keep font spacing tags (\\fsp)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_SPACING }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_charset", "keep font charset tags (\\fe)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_CHARSET }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_bold", "keep font bold tags (\\b)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_BOLD }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_italic", "keep font italic tags (\\i)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_ITALIC }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_underline", "keep font underline tags (\\u)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_UNDERLINE }, .flags=FLAGS, .unit = "keepflags" },
+ { "font_strikeout", "keep font strikeout tags (\\s)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FONT_STRIKEOUT }, .flags=FLAGS, .unit = "keepflags" },
+ { "text_border", "keep text border tags (\\bord)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_TEXT_BORDER }, .flags=FLAGS, .unit = "keepflags" },
+ { "text_shadow", "keep text shadow tags (\\shad)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_TEXT_SHADOW }, .flags=FLAGS, .unit = "keepflags" },
+ { "text_rotate", "keep text rotate tags (\\fr)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_TEXT_ROTATE }, .flags=FLAGS, .unit = "keepflags" },
+ { "text_blur", "keep text blur tags (\\blur, \\be)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_TEXT_BLUR }, .flags=FLAGS, .unit = "keepflags" },
+ { "text_wrap", "keep text wrap tags (\\q)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_TEXT_WRAP }, .flags=FLAGS, .unit = "keepflags" },
+ { "text_align", "keep text align tags (\\a, \\an)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_TEXT_ALIGNMENT }, .flags=FLAGS, .unit = "keepflags" },
+ { "reset_override", "keep override reset tags (\\r)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_CANCELLING }, .flags=FLAGS, .unit = "keepflags" },
+ { "move", "keep move tags (\\move)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_MOVE }, .flags=FLAGS, .unit = "keepflags" },
+ { "pos", "keep position tags (\\pos)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_POS }, .flags=FLAGS, .unit = "keepflags" },
+ { "origin", "keep origin tags (\\org)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_ORIGIN }, .flags=FLAGS, .unit = "keepflags" },
+ { "draw", "keep drawing tags (\\p)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_DRAW }, .flags=FLAGS, .unit = "keepflags" },
+ { "animate", "keep animation tags (\\t)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_ANIMATE }, .flags=FLAGS, .unit = "keepflags" },
+ { "fade", "keep fade tags (\\fad, \\fade)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_FADE }, .flags=FLAGS, .unit = "keepflags" },
+ { "clip", "keep clip tags (\\clip)", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_CLIP }, .flags=FLAGS, .unit = "keepflags" },
+ { "unknown", "keep unknown tags", .type = AV_OPT_TYPE_CONST, { .i64 = ASS_SPLIT_UNKNOWN }, .flags=FLAGS, .unit = "keepflags" },
+ { "remove_animated", "remove animated text (default: yes)", OFFSET(remove_animated), AV_OPT_TYPE_BOOL, {.i64 = 1 }, 0, 1, FLAGS, 0 },
+ { "select_layer", "process a specific ass layer only", OFFSET(select_layer), AV_OPT_TYPE_INT, {.i64 = -1 }, -1, INT_MAX, FLAGS, 0 },
+ { NULL },
+};
+
+AVFILTER_DEFINE_CLASS(stripstyles);
+
+static const AVFilterPad inputs[] = {
+ {
+ .name = "default",
+ .type = AVMEDIA_TYPE_SUBTITLE,
+ .filter_frame = filter_frame,
+ },
+};
+
+static const AVFilterPad outputs[] = {
+ {
+ .name = "default",
+ .type = AVMEDIA_TYPE_SUBTITLE,
+ .config_props = config_output,
+ },
+};
+
+const AVFilter ff_sf_stripstyles = {
+ .name = "stripstyles",
+ .description = NULL_IF_CONFIG_SMALL("Strip subtitle inline styles"),
+ .priv_size = sizeof(StripStylesContext),
+ .priv_class = &stripstyles_class,
+ FILTER_INPUTS(inputs),
+ FILTER_OUTPUTS(outputs),
+ FILTER_SINGLE_SUBFMT(AV_SUBTITLE_FMT_ASS),
+};
+
--
ffmpeg-codebot
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-06-25 10:00 UTC|newest]
Thread overview: 217+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-14 1:13 [FFmpeg-devel] [PATCH 00/24] Subtitle Filtering 2022 ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 01/24] avcodec, avutil: Move enum AVSubtitleType to avutil, add new and deprecate old values ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 02/24] avutil/frame: Prepare AVFrame for subtitle handling ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 03/24] avcodec/subtitles: Introduce new frame-based subtitle decoding API ffmpegagent
2022-01-14 17:53 ` Andreas Rheinhardt
2022-01-15 7:59 ` Soft Works
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 04/24] avfilter/subtitles: Update vf_subtitles to use new decoding api ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 05/24] avcodec, avutil: Move ass helper functions to avutil as avpriv_ and extend ass dialog parsing ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 06/24] avcodec/subtitles: Migrate subtitle encoders to frame-based API ffmpegagent
2022-01-14 17:22 ` Michael Niedermayer
2022-01-15 8:03 ` Soft Works
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 07/24] avcodec/subtitles: Replace deprecated enum values ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 08/24] fftools/play, probe: Adjust for subtitle changes ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 09/24] avfilter/subtitles: Add subtitles.c for subtitle frame allocation ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 10/24] avfilter/avfilter: Handle subtitle frames ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 11/24] avfilter/avfilter: Fix hardcoded input index ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 12/24] avfilter/sbuffer: Add sbuffersrc and sbuffersink filters ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 13/24] avfilter/overlaygraphicsubs: Add overlaygraphicsubs and graphicsub2video filters ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 14/24] avfilter/overlaytextsubs: Add overlaytextsubs and textsubs2video filters ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 15/24] avfilter/textmod: Add textmod, censor and show_speaker filters ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 16/24] avfilter/stripstyles: Add stripstyles filter ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 17/24] avfilter/splitcc: Add splitcc filter for closed caption handling ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 18/24] avfilter/graphicsub2text: Add new graphicsub2text filter (OCR) ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 19/24] avfilter/subscale: Add filter for scaling and/or re-arranging graphical subtitles ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 20/24] avfilter/subfeed: add subtitle feed filter ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 21/24] fftools/ffmpeg: Introduce subtitle filtering new frame-based subtitle encoding ffmpegagent
2022-01-14 16:52 ` Michael Niedermayer
2022-01-15 8:36 ` Soft Works
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 22/24] avutil/ass_split: Add parsing of hard-space tags (\h) ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 23/24] avcodec/webvttenc: convert hard-space tags to ffmpegagent
2022-01-14 1:13 ` [FFmpeg-devel] [PATCH 24/24] doc/APIchanges: update for subtitle filtering changes ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 00/26] Subtitle Filtering 2022 ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 01/26] avcodec, avutil: Move enum AVSubtitleType to avutil, add new and deprecate old values ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 02/26] avutil/frame: Prepare AVFrame for subtitle handling ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 03/26] avcodec/subtitles: Introduce new frame-based subtitle decoding API ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 04/26] avfilter/subtitles: Update vf_subtitles to use new decoding api ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 05/26] avcodec, avutil: Move ass helper functions to avutil as avpriv_ and extend ass dialog parsing ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 06/26] avcodec/subtitles: Replace deprecated enum values ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 07/26] fftools/play, probe: Adjust for subtitle changes ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 08/26] avfilter/subtitles: Add subtitles.c for subtitle frame allocation ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 09/26] avfilter/avfilter: Handle subtitle frames ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 10/26] avfilter/avfilter: Fix hardcoded input index ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 11/26] avfilter/sbuffer: Add sbuffersrc and sbuffersink filters ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 12/26] avfilter/overlaygraphicsubs: Add overlaygraphicsubs and graphicsub2video filters ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 13/26] avfilter/overlaytextsubs: Add overlaytextsubs and textsubs2video filters ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 14/26] avfilter/textmod: Add textmod, censor and show_speaker filters ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 15/26] avfilter/stripstyles: Add stripstyles filter ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 16/26] avfilter/splitcc: Add splitcc filter for closed caption handling ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 17/26] avfilter/graphicsub2text: Add new graphicsub2text filter (OCR) ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 18/26] avfilter/subscale: Add filter for scaling and/or re-arranging graphical subtitles ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 19/26] avfilter/subfeed: add subtitle feed filter ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 20/26] avcodec/subtitles: Migrate subtitle encoders to frame-based API ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 21/26] fftools/ffmpeg: Introduce subtitle filtering and new frame-based subtitle encoding ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 22/26] avutil/ass_split: Add parsing of hard-space tags (\h) ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 23/26] avcodec/webvttenc: convert hard-space tags to ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 24/26] doc/APIchanges: update for subtitle filtering changes ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 25/26] avcodec/webvttenc: Don't encode drawing codes and empty lines ffmpegagent
2022-01-20 2:48 ` [FFmpeg-devel] [PATCH v2 26/26] avcodec/dvbsubdec: Fix conditions for fallback to default resolution ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 00/26] Subtitle Filtering 2022 ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 01/26] avcodec, avutil: Move enum AVSubtitleType to avutil, add new and deprecate old values ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 02/26] avutil/frame: Prepare AVFrame for subtitle handling ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 03/26] avcodec/subtitles: Introduce new frame-based subtitle decoding API ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 04/26] avfilter/subtitles: Update vf_subtitles to use new decoding api ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 05/26] avcodec, avutil: Move ass helper functions to avutil as avpriv_ and extend ass dialog parsing ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 06/26] avcodec/subtitles: Replace deprecated enum values ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 07/26] fftools/play, probe: Adjust for subtitle changes ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 08/26] avfilter/subtitles: Add subtitles.c for subtitle frame allocation ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 09/26] avfilter/avfilter: Handle subtitle frames ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 10/26] avfilter/avfilter: Fix hardcoded input index ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 11/26] avfilter/sbuffer: Add sbuffersrc and sbuffersink filters ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 12/26] avfilter/overlaygraphicsubs: Add overlaygraphicsubs and graphicsub2video filters ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 13/26] avfilter/overlaytextsubs: Add overlaytextsubs and textsubs2video filters ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 14/26] avfilter/textmod: Add textmod, censor and show_speaker filters ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 15/26] avfilter/stripstyles: Add stripstyles filter ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 16/26] avfilter/splitcc: Add splitcc filter for closed caption handling ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 17/26] avfilter/graphicsub2text: Add new graphicsub2text filter (OCR) ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 18/26] avfilter/subscale: Add filter for scaling and/or re-arranging graphical subtitles ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 19/26] avfilter/subfeed: add subtitle feed filter ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 20/26] avcodec/subtitles: Migrate subtitle encoders to frame-based API ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 21/26] fftools/ffmpeg: Introduce subtitle filtering and new frame-based subtitle encoding ffmpegagent
2022-01-20 10:06 ` Michael Niedermayer
2022-01-20 15:17 ` Soft Works
2022-01-20 18:00 ` Andriy Gelman
2022-01-20 20:01 ` Soft Works
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 22/26] avutil/ass_split: Add parsing of hard-space tags (\h) ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 23/26] avcodec/webvttenc: convert hard-space tags to ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 24/26] doc/APIchanges: update for subtitle filtering changes ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 25/26] avcodec/webvttenc: Don't encode drawing codes and empty lines ffmpegagent
2022-01-20 3:25 ` [FFmpeg-devel] [PATCH v3 26/26] avcodec/dvbsubdec: Fix conditions for fallback to default resolution ffmpegagent
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 00/23] Subtitle Filtering 2022 ffmpegagent
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 01/23] avcodec, avutil: Move enum AVSubtitleType to avutil, add new and deprecate old values softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 02/23] avutil/frame: Prepare AVFrame for subtitle handling softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 03/23] avcodec/subtitles: Introduce new frame-based subtitle decoding API softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 04/23] avcodec/libzvbi: set subtitle type softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 05/23] avfilter/subtitles: Update vf_subtitles to use new decoding api softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 06/23] avcodec, avutil: Move ass helper functions to avutil as avpriv_ and extend ass dialog parsing softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 07/23] avcodec/subtitles: Replace deprecated enum values softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 08/23] fftools/play, probe: Adjust for subtitle changes softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 09/23] avfilter/subtitles: Add subtitles.c for subtitle frame allocation softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 10/23] avfilter/avfilter: Handle subtitle frames softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 11/23] avfilter/avfilter: Fix hardcoded input index softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 12/23] avfilter/sbuffer: Add sbuffersrc and sbuffersink filters softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 13/23] avfilter/overlaygraphicsubs: Add overlaygraphicsubs and graphicsub2video filters softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 14/23] avfilter/overlaytextsubs: Add overlaytextsubs and textsubs2video filters softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 15/23] avfilter/textmod: Add textmod, censor and show_speaker filters softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 16/23] avfilter/stripstyles: Add stripstyles filter softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 17/23] avfilter/splitcc: Add splitcc filter for closed caption handling softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 18/23] avfilter/graphicsub2text: Add new graphicsub2text filter (OCR) softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 19/23] avfilter/subscale: Add filter for scaling and/or re-arranging graphical subtitles softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 20/23] avfilter/subfeed: add subtitle feed filter softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 21/23] avcodec/subtitles: Migrate subtitle encoders to frame-based API softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 22/23] fftools/ffmpeg: Introduce subtitle filtering and new frame-based subtitle encoding softworkz
2022-05-28 13:25 ` [FFmpeg-devel] [PATCH v4 23/23] avcodec/dvbsubdec: Fix conditions for fallback to default resolution softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 00/25] Subtitle Filtering 2022 ffmpegagent
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 01/25] avcodec, avutil: Move enum AVSubtitleType to avutil, add new and deprecate old values softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 02/25] avutil/frame: Prepare AVFrame for subtitle handling softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 03/25] avcodec/subtitles: Introduce new frame-based subtitle decoding API softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 04/25] avcodec/libzvbi: set subtitle type softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 05/25] avfilter/subtitles: Update vf_subtitles to use new decoding api softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 06/25] avcodec, avutil: Move ass helper functions to avutil as avpriv_ and extend ass dialog parsing softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 07/25] avcodec/subtitles: Replace deprecated enum values softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 08/25] fftools/play, probe: Adjust for subtitle changes softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 09/25] avfilter/subtitles: Add subtitles.c for subtitle frame allocation softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 10/25] avfilter/avfilter: Handle subtitle frames softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 11/25] avfilter/avfilter: Fix hardcoded input index softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 12/25] avfilter/sbuffer: Add sbuffersrc and sbuffersink filters softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 13/25] avfilter/overlaygraphicsubs: Add overlaygraphicsubs and graphicsub2video filters softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 14/25] avfilter/overlaytextsubs: Add overlaytextsubs and textsubs2video filters softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 15/25] avfilter/textmod: Add textmod, censor and show_speaker filters softworkz
2022-06-25 9:57 ` softworkz [this message]
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 17/25] avfilter/splitcc: Add splitcc filter for closed caption handling softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 18/25] avfilter/graphicsub2text: Add new graphicsub2text filter (OCR) softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 19/25] avfilter/subscale: Add filter for scaling and/or re-arranging graphical subtitles softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 20/25] avfilter/subfeed: add subtitle feed filter softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 21/25] avfilter/text2graphicsub: Added text2graphicsub subtitle filter tcoza
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 22/25] avfilter/snull, strim: Add snull and strim filters softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 23/25] avcodec/subtitles: Migrate subtitle encoders to frame-based API softworkz
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 24/25] fftools/ffmpeg: Introduce subtitle filtering and new frame-based subtitle encoding softworkz
2022-06-25 11:34 ` Michael Niedermayer
2022-06-25 11:42 ` Andreas Rheinhardt
2022-06-25 12:31 ` Soft Works
2022-06-25 13:00 ` Andreas Rheinhardt
2022-06-26 16:27 ` Soft Works
2022-06-25 9:57 ` [FFmpeg-devel] [PATCH v5 25/25] avcodec/dvbsubdec: Fix conditions for fallback to default resolution softworkz
2022-06-26 16:34 ` [FFmpeg-devel] [PATCH v6 00/25] Subtitle Filtering 2022 ffmpegagent
2022-06-26 16:34 ` [FFmpeg-devel] [PATCH v6 01/25] avcodec, avutil: Move enum AVSubtitleType to avutil, add new and deprecate old values softworkz
2022-06-26 16:34 ` [FFmpeg-devel] [PATCH v6 02/25] avutil/frame: Prepare AVFrame for subtitle handling softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 03/25] avcodec/subtitles: Introduce new frame-based subtitle decoding API softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 04/25] avcodec/libzvbi: set subtitle type softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 05/25] avfilter/subtitles: Update vf_subtitles to use new decoding api softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 06/25] avcodec, avutil: Move ass helper functions to avutil as avpriv_ and extend ass dialog parsing softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 07/25] avcodec/subtitles: Replace deprecated enum values softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 08/25] fftools/play, probe: Adjust for subtitle changes softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 09/25] avfilter/subtitles: Add subtitles.c for subtitle frame allocation softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 10/25] avfilter/avfilter: Handle subtitle frames softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 11/25] avfilter/avfilter: Fix hardcoded input index softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 12/25] avfilter/sbuffer: Add sbuffersrc and sbuffersink filters softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 13/25] avfilter/overlaygraphicsubs: Add overlaygraphicsubs and graphicsub2video filters softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 14/25] avfilter/overlaytextsubs: Add overlaytextsubs and textsubs2video filters softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 15/25] avfilter/textmod: Add textmod, censor and show_speaker filters softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 16/25] avfilter/stripstyles: Add stripstyles filter softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 17/25] avfilter/splitcc: Add splitcc filter for closed caption handling softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 18/25] avfilter/graphicsub2text: Add new graphicsub2text filter (OCR) softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 19/25] avfilter/subscale: Add filter for scaling and/or re-arranging graphical subtitles softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 20/25] avfilter/subfeed: add subtitle feed filter softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 21/25] avfilter/text2graphicsub: Added text2graphicsub subtitle filter softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 22/25] avfilter/snull, strim: Add snull and strim filters softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 23/25] avcodec/subtitles: Migrate subtitle encoders to frame-based API softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 24/25] fftools/ffmpeg: Introduce subtitle filtering and new frame-based subtitle encoding softworkz
2022-06-26 16:35 ` [FFmpeg-devel] [PATCH v6 25/25] avcodec/dvbsubdec: Fix conditions for fallback to default resolution softworkz
2022-07-02 16:39 ` [FFmpeg-devel] [PATCH v5 00/25] Subtitle Filtering 2022 Paul B Mahol
2022-07-02 17:18 ` Nicolas George
2022-07-02 17:27 ` Paul B Mahol
2022-07-02 17:26 ` Nicolas George
2022-07-02 19:11 ` Soft Works
2022-07-02 19:17 ` Nicolas George
2022-07-02 19:21 ` Soft Works
2022-07-02 19:29 ` Soft Works
2022-07-02 19:36 ` Nicolas George
2022-07-02 20:32 ` Soft Works
2022-07-02 20:40 ` Paul B Mahol
2022-07-02 20:50 ` Soft Works
2022-07-03 7:58 ` Jean-Baptiste Kempf
2022-07-03 10:42 ` Paul B Mahol
2022-07-04 8:45 ` Jean-Baptiste Kempf
2022-07-02 21:10 ` Matt Zagrabelny
2022-07-02 21:22 ` Nicolas George
2022-07-02 21:27 ` Paul B Mahol
2022-07-02 21:45 ` Matt Zagrabelny
2022-07-02 22:16 ` Nicolas George
2022-07-03 17:07 ` Michael Niedermayer
2022-07-03 17:25 ` Paul B Mahol
2022-07-24 15:10 ` Nicolas George
2022-07-24 18:38 ` Soft Works
2022-07-24 19:21 ` Soft Works
2022-07-25 6:44 ` Ronald S. Bultje
2022-07-25 17:44 ` Nicolas George
2022-07-25 11:32 ` Michael Niedermayer
2022-07-25 19:01 ` Nicolas George
2022-07-25 19:39 ` Michael Niedermayer
2022-07-02 19:03 ` Soft Works
2022-08-11 22:50 ` Soft Works
2022-08-21 9:41 ` Paul B Mahol
2022-08-21 9:51 ` Nicolas George
2022-08-21 10:41 ` Jean-Baptiste Kempf
2022-08-22 12:18 ` Anton Khirnov
2022-08-22 14:38 ` Jean-Baptiste Kempf
2022-08-24 22:19 ` Soft Works
2022-08-26 20:47 ` Anton Khirnov
2022-08-26 22:48 ` Soft Works
2022-08-31 1:39 ` Anton Khirnov
2022-08-31 4:02 ` Soft Works
2022-09-20 14:30 ` Soft Works
2022-11-14 11:10 ` Soft Works
2022-10-10 11:08 ` Soft Works
2022-08-22 22:08 ` Soft Works
2022-08-22 23:08 ` Soft Works
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=bca90ebc3e439e7f024fb68a8579e8c342e2f6bd.1656151077.git.ffmpegagent@gmail.com \
--to=ffmpegagent@gmail.com \
--cc=andreas.rheinhardt@outlook.com \
--cc=andriy.gelman@gmail.com \
--cc=ffmpeg-devel@ffmpeg.org \
--cc=michael@niedermayer.cc \
--cc=softworkz@hotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
This inbox may be cloned and mirrored by anyone:
git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
ffmpegdev@gitmailbox.com
public-inbox-index ffmpegdev
Example config snippet for mirrors.
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git