From patchwork Wed Nov 29 19:29:49 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 6456 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp4886853jah; Wed, 29 Nov 2017 11:30:39 -0800 (PST) X-Google-Smtp-Source: AGs4zMYWq7Gu9DvmNIJdVRiUvtOexBfl8/tfcThFN3s7h/UjgnxYjm+3zZ44Z9iA1XR3QI3+roH8 X-Received: by 10.223.156.202 with SMTP id h10mr3098479wre.174.1511983839206; Wed, 29 Nov 2017 11:30:39 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1511983839; cv=none; d=google.com; s=arc-20160816; b=bE24YnjMDPZ6qZuKeQY6RBMBHWVdMdt/MxrSsxaDa8ceZQk/eeJu6jkcnT0U1fK2d6 Cga/wwUwr0VqQahlnEz443TDoGhQiZgi/tvv7QKeKj+9I9CTqVoDecefjdsIS2D+reU7 vL+1JQhGpxlywLWHDZvrFDGKEF58w2mArka+flXftYXLHwjAZFzXbBIzUZhf6/MS2Ybu QFxEN1LdT3TEXtfTHqQlvEzIvvAXCJAR7kaBZNJwC9+UFn5ax1ctUc0mlNWVmzybHKui JxqpO+SBHLFoPE1KZF8RhTuzHwKPCG6uc7oECkIkdudcTuhLtkeZzLOP0I9TeWAvJ7kZ P0tQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=RnsNiWReICnKsgmolVrV9FsFmiqA3oZzKsobeK1REnI=; b=pMVGQ1HRFjfkVFqigChac895QYN5ggCy/oZe5HNmHj5rOLjMLZlDZmpsNA83tPudWT jIJgEQDGsh2YlRIo6ZxP2lTdt9b42wBLFyerQXNRL9LJvcmsfXVZhhNYslgCBHi6p5G2 +AFIl15surYnhCjC4Cg/JuKmzdxmCVtmZkNUqZG9COdaogyViO0P+GLRUwOYUwplyKm/ gA7whRQNk6zKb5r5a7Fgwu34hCwGRRelwFMDCTPaALso2ObCoOG3dXGkPYbxV1t+B4zJ M4WeCoRixmUY0K6bVLLCXQ4QfVdqV6gtaPLo7NkHwJDWgKLZHR95FJPRMGZo1Zt1UOo4 i36Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=DNcch6VZ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 33si1731482wra.274.2017.11.29.11.30.38; Wed, 29 Nov 2017 11:30:39 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=DNcch6VZ; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 861D168A538; Wed, 29 Nov 2017 21:30:34 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CEADF68A52C for ; Wed, 29 Nov 2017 21:30:28 +0200 (EET) Received: by mail-wm0-f65.google.com with SMTP id g130so37753100wme.0 for ; Wed, 29 Nov 2017 11:30:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=BNZ9TAcoMMz1dtcPiPWKArN1TqqLhImOUHMI7D5CUTA=; b=DNcch6VZoO6Z/Sjwx73fXd7hHEJxlonkoRafSzd/Znwa/fDtLpirU3XRgWtql2/MVi 8cQL2YKo1sQ/n/WZkAAOFNG8FeuH2dSWjSPC9O+LVmzZwnwTDOGxtclimvdh5/XI6a3h 7mhZIdAzXZSRgBVymC30Wz4Ph3UsRdfI6VnT+RtWV61aTR2ptgJ7bXKPgTmcAwPf1oRr i0W6E3GydiR+USHSTFKFWGZRb1vqHEzK0vhGBhTQFnp3CQG/3yhVkhZDCP65mGxFiOIW Mc6xzkoUmAx3Zhe8OHrI+c6fCSPdb2DZA5G0y+Mplv/goYAAn8EhuEU4n6x5EnlEcEfT 3Hdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=BNZ9TAcoMMz1dtcPiPWKArN1TqqLhImOUHMI7D5CUTA=; b=aKDkGM+WNWNhZbsPZ2TM1UObkFfD/ov+JsCAmplXCTmC0eajJtp+njJr4psaKGKpHW 0laj6ExeyKekf81D/6DwN66WhI8ms0N74lWd2DuBGaLbQhH5TGCgcL7fjTfF8sR/q4P5 99fMwdoNgoB7hsRzcK1g0jCJPrq9f9r09jzQxkkMOoLfG3Jl39XBDpoacGD2srCioqOu cCrdd5x/U9InwdB7XAws9lwdqaT7sQE7SmWn5TXtTyfoZ/XozFIoxMVFDq01/xKfhSnw FYqQZnDCmpYuEUa3o14TJzsyNb5DeAoahsayRk3TuORE2dj4W1Dk99bFH599kn+HGTrd 9esQ== X-Gm-Message-State: AJaThX4voTI9epMkPOwO50OmW96P32Xhd48Kir1oEG11T27plWKyO1zF enYLYE8DA4qw7A7kkCyNjllnNw== X-Received: by 10.28.155.18 with SMTP id d18mr3414130wme.107.1511983831232; Wed, 29 Nov 2017 11:30:31 -0800 (PST) Received: from localhost.localdomain ([94.250.174.60]) by smtp.gmail.com with ESMTPSA id v18sm2078793wrv.37.2017.11.29.11.30.30 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 29 Nov 2017 11:30:30 -0800 (PST) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Nov 2017 20:29:49 +0100 Message-Id: <20171129192949.19952-1-onemda@gmail.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171129190244.16550-1-onemda@gmail.com> References: <20171129190244.16550-1-onemda@gmail.com> Subject: [FFmpeg-devel] [PATCH] avfilter/vf_tile: add init_padding option 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Paul B Mahol --- doc/filters.texi | 5 +++++ libavfilter/vf_tile.c | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/filters.texi b/doc/filters.texi index 4a4efc70c8..ec37b9dcb8 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -14637,6 +14637,11 @@ is "black". @item overlap Set the number of frames to overlap when tiling several successive frames together. The value must be between @code{0} and @var{nb_frames - 1}. + +@item init_padding +Set the number of frames to initially be empty before displaying first output frame. +This controls how soon will one get first output frame. +The value must be between @code{0} and @var{nb_frames - 1}. @end table @subsection Examples diff --git a/libavfilter/vf_tile.c b/libavfilter/vf_tile.c index 7717ce12e7..924cfe77bb 100644 --- a/libavfilter/vf_tile.c +++ b/libavfilter/vf_tile.c @@ -38,6 +38,8 @@ typedef struct TileContext { unsigned margin; unsigned padding; unsigned overlap; + unsigned init_padding; + unsigned first_frame; unsigned current; unsigned nb_frames; FFDrawContext draw; @@ -62,6 +64,8 @@ static const AVOption tile_options[] = { { "color", "set the color of the unused area", OFFSET(rgba_color), AV_OPT_TYPE_COLOR, {.str = "black"}, .flags = FLAGS }, { "overlap", "set how many frames to overlap for each render", OFFSET(overlap), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS }, + { "init_padding", " set how many frames to initially pad", OFFSET(init_padding), + AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS }, { NULL } }; @@ -99,6 +103,13 @@ static av_cold int init(AVFilterContext *ctx) tile->overlap = tile->nb_frames - 1; } + if (tile->init_padding >= tile->nb_frames) { + av_log(ctx, AV_LOG_WARNING, "init_padding must be less than %d\n", tile->nb_frames); + } else { + tile->current = tile->init_padding; + } + tile->first_frame = 1; + return 0; } @@ -201,11 +212,14 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *picref) tile->out_ref->height = outlink->h; /* fill surface once for margin/padding */ - if (tile->margin || tile->padding) + if (tile->margin || tile->padding || + (tile->init_padding != 0 && tile->first_frame)) ff_fill_rectangle(&tile->draw, &tile->blank, tile->out_ref->data, tile->out_ref->linesize, 0, 0, outlink->w, outlink->h); + if (tile->first_frame) + tile->first_frame = 0; } if (tile->prev_out_ref) {