From patchwork Thu Feb 21 15:20:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: qq2225936589 X-Patchwork-Id: 12131 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 5C263449408 for ; Thu, 21 Feb 2019 20:42:42 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4500C68ABD8; Thu, 21 Feb 2019 20:42:42 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from m12-17.163.com (m12-17.163.com [220.181.12.17]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6337368ACAF for ; Thu, 21 Feb 2019 17:20:52 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=Boly2MzdY8r8Tnrrzp Z2h3kUSk1f0X/VSX9L4wpFj64=; b=METsJH5S4ZCeMQMxx/L9GanPjY3UHjLhhM DlnX+yc3jXZBjLldKcHNr+h6f0ls8UtUvQbNooD9q7isDy6OYrEaFFRktabNU7S7 6lUjnUOB+M0rKgNmSVEJ1iKsTmbctj3DSK1z25RzO40l1m8gnEAy28Yzcfs0j3tr 8ts3vStho= Received: from localhost.localdomain (unknown [219.150.9.188]) by smtp13 (Coremail) with SMTP id EcCowAD3xKzOwW5cR7ijGw--.44401S2; Thu, 21 Feb 2019 23:20:47 +0800 (CST) From: qq2225936589 To: ffmpeg-devel@ffmpeg.org Date: Thu, 21 Feb 2019 23:20:39 +0800 Message-Id: <20190221152039.11372-1-qq2225936589@163.com> X-Mailer: git-send-email 2.13.0.windows.1 X-CM-TRANSID: EcCowAD3xKzOwW5cR7ijGw--.44401S2 X-Coremail-Antispam: 1Uf129KBjvJXoWxJryfKFyxJw4xGrW3Ww48Zwb_yoW5JF17pr n8u3saqryfJF1UZwn3C3Wvy3WrGw1xCwn8Zw47C3y8JF95tr1UXa1akF90k3WkXrs3A343 ZrWYvw1xGwsrtw7anT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07jrgAwUUUUU= X-Originating-IP: [219.150.9.188] X-CM-SenderInfo: dttsjjqvztlkiyz6il2tof0z/1tbiZQ9iWFWBfJDuNwAAsx X-Mailman-Approved-At: Thu, 21 Feb 2019 20:42:41 +0200 Subject: [FFmpeg-devel] [PATCH] libavfilter/vf_subtitles: add options offset set subtitles time offset X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: qq2225936589 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: qq2225936589 --- doc/filters.texi | 3 +++ libavfilter/vf_subtitles.c | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/filters.texi b/doc/filters.texi index 0ef6f56d5d..5dee472837 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -16307,6 +16307,9 @@ useful if not UTF-8. @item stream_index, si Set subtitles stream index. @code{subtitles} filter only. +@item offset +Set subtitles time offset. @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 ",". diff --git a/libavfilter/vf_subtitles.c b/libavfilter/vf_subtitles.c index a7b02461f2..ba6f03e385 100644 --- a/libavfilter/vf_subtitles.c +++ b/libavfilter/vf_subtitles.c @@ -27,6 +27,7 @@ * @see{http://www.matroska.org/technical/specs/subtitles/ssa.html} */ +#include #include #include "config.h" @@ -52,6 +53,7 @@ typedef struct AssContext { char *filename; char *fontsdir; char *charenc; + float offset; char *force_style; int stream_index; int alpha; @@ -266,6 +268,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}, + {"offset", "set subtitles time offset", OFFSET(offset), AV_OPT_TYPE_FLOAT, { .dbl = 0.0}, -600.0, 600.0, FLAGS}, {"force_style", "force subtitle style", OFFSET(force_style), AV_OPT_TYPE_STRING, {.str = NULL}, CHAR_MIN, CHAR_MAX, FLAGS}, {NULL}, }; @@ -458,7 +461,7 @@ static av_cold int init_subtitles(AVFilterContext *ctx) av_log(ctx, AV_LOG_WARNING, "Error decoding: %s (ignored)\n", av_err2str(ret)); } else if (got_subtitle) { - const int64_t start_time = av_rescale_q(sub.pts, AV_TIME_BASE_Q, av_make_q(1, 1000)); + const int64_t start_time = av_rescale_q(sub.pts, AV_TIME_BASE_Q, av_make_q(1, 1000)) + ass->offset*1000; const int64_t duration = sub.end_display_time; for (i = 0; i < sub.num_rects; i++) { char *ass_line = sub.rects[i]->ass;