From patchwork Sun Jul 4 14:50:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Linjie Fu X-Patchwork-Id: 28755 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5d:965a:0:0:0:0:0 with SMTP id d26csp3354423ios; Sun, 4 Jul 2021 07:51:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxruW8sTSto8lMTDEVpsR5Gz0d7Yhex5kf5MYtwkdlzOVOK3uhlrz4SRrOhMoIgRO5SpC/e X-Received: by 2002:a17:907:7d8c:: with SMTP id oz12mr9006528ejc.202.1625410268867; Sun, 04 Jul 2021 07:51:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1625410268; cv=none; d=google.com; s=arc-20160816; b=qIEAf20GUsA5M2l0Qk/eaeKglj/UCL8Yxkaq4y36WW3bPHHCxffVKoLlEz2nFm8/Kv GHSZSqVf6acVdXpM8iJqBMv2pMAZulfUbYcp1RUNpNl0VZDey9vUNjrvh21EMuQQ+OEE KyU0i4cpqF3kmxSVfKphwUMnsLY75Fju11m77C5igWvvJAcpw376CkfvtIkB7zH2+MK2 JHLRK3+VMg8cTbxNydnTB7WaM0wSJsq/djm1ulRmHOrXmSWiiBW2ro0UjrI6Pl2NQbAX aSMMt318a4te/EvkShrPdU6b+5BMnImYpjBqz6y2TyEoOBXeck+ieiKL1DFwlybHqzy6 l3UQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=a3GF4nLlHUUv5WxZ0dpGg9Mx/rboUmimVvvK0oi6CV8=; b=r5SNFQUr7fwdHuUhod/zQNyTnCgiycCfTAvVOMa/d5uF9CD8GRV3ViJCs1Ajp7lQcI 8AUAfhgD4OkYWN2LCwwynEslDwg0cAwAm+U6OeEePoiZb+NTbujk1DWIn1vnSTHauol4 9PKHdmCWLAVDAQ3lTwEb/PYVsv2wPohyEODPIDmO2bUMGps1Zb2/xcw3kqvnzEHPxMn5 WRhdi4ObgTpp5eFpE3Zwy59MtrJPWnSL9IQD53wnWxHMjX/2Z587tL3S1oWP1Z8x+4Wx ZE1gO/NxCaKacCv0QoHS+QhNJoRQxEN3gazVqpd6uXP22czfQoUH8Z18Z2paOHB3+9LO fGqw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id di15si535576edb.332.2021.07.04.07.51.08; Sun, 04 Jul 2021 07:51:08 -0700 (PDT) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E54A868A5B9; Sun, 4 Jul 2021 17:50:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from zg8tmty1ljiyny4xntqumjca.icoremail.net (zg8tmty1ljiyny4xntqumjca.icoremail.net [165.227.154.27]) by ffbox0-bg.mplayerhq.hu (Postfix) with SMTP id B60CD68A476 for ; Sun, 4 Jul 2021 17:50:49 +0300 (EEST) Received: from localhost.localdomain (unknown [58.247.210.251]) by mail-app4 (Coremail) with SMTP id cS_KCgD3za7DyuFg_lOTAA--.42048S2; Sun, 04 Jul 2021 22:50:44 +0800 (CST) From: Linjie Fu To: ffmpeg-devel@ffmpeg.org Date: Sun, 4 Jul 2021 22:50:23 +0800 Message-Id: <20210704145023.3141-1-fulinjie@zju.edu.cn> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-CM-TRANSID: cS_KCgD3za7DyuFg_lOTAA--.42048S2 X-Coremail-Antispam: 1UD129KBjvJXoW7Cry7tFy7ur45ZrWUKF1UGFg_yoW8GryUpr Z5Gr9xKan5Xry3AF1Fgw4q9r45Krs5JF4Y9FWvqwnIv3W7Jr1xKay7Kr4Y9rWFqryxuF4Y kr4jgF1DKa47ZaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDU0xBIdaVrnRJUUUkYb7Iv0xC_KF4lb4IE77IF4wAFF20E14v26r1j6r4UM7CY07I2 0VC2zVCF04k26cxKx2IYs7xG6rWj6s0DM7CIcVAFz4kK6r1j6r18M28lY4IEw2IIxxk0rw A2F7IY1VAKz4vEj48ve4kI8wA2z4x0Y4vE2Ix0cI8IcVAFwI0_tr0E3s1l84ACjcxK6xII jxv20xvEc7CjxVAFwI0_Gr1j6F4UJwA2z4x0Y4vEx4A2jsIE14v26rxl6s0DM28EF7xvwV C2z280aVCY1x0267AKxVW0oVCq3wAS0I0E0xvYzxvE52x082IY62kv0487Mc02F40EFcxC 0VAKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUJVWUGwAv7VC2z280aVAFwI0_Gr0_Cr 1lOx8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcxkI7VAKI48JMxkIecxEwVAFwVW5XwCF04k2 0xvY0x0EwIxGrwCFx2IqxVCFs4IE7xkEbVWUJVW8JwC20s026c02F40E14v26r1j6r18MI 8I3I0E7480Y4vE14v26r106r1rMI8E67AF67kF1VAFwI0_Jrv_JF1lIxkGc2Ij64vIr41l IxAIcVC0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIx AIcVCF04k26cxKx2IYs7xG6r1j6r1xMIIF0xvEx4A2jsIE14v26r1j6r4UMIIF0xvEx4A2 jsIEc7CjxVAFwI0_Jr0_GrUvcSsGvfC2KfnxnUUI43ZEXa7IU00ks3UUUUU== X-CM-SenderInfo: ysrvjiarsuq6lmxovvfxof0/ Subject: [FFmpeg-devel] [PATCH v2] fftools/ffmpeg: accelerate seeking while reading input at native frame rate X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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: Linjie Fu Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: bl0L4txxvrjj From: Linjie Fu Skip the logic of frame rate emulation until the input reaches the specified start time. Test CMD: $ffmpeg -re -ss 30 -i input.mp4 -pix_fmt yuv420p -f sdl2 - Before the patch: first time to got frame, it takes 257305 us After this patch: first time to got frame, it takes 48879 us Signed-off-by: Linjie Fu --- [v2]: fixed the mixed declaration and code warning Calculate the time to get the first frame: https://github.com/fulinjie/ffmpeg/commit/2aa4762e1e65709997b1ab9dd596332244db80ed fftools/ffmpeg.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index e97d879cb3..c8849e4250 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -4221,10 +4221,14 @@ static int get_input_packet(InputFile *f, AVPacket **pkt) { if (f->rate_emu) { int i; + int64_t pts; + int64_t now; for (i = 0; i < f->nb_streams; i++) { InputStream *ist = input_streams[f->ist_index + i]; - int64_t pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE); - int64_t now = av_gettime_relative() - ist->start; + if (!ist->got_output) + continue; + pts = av_rescale(ist->dts, 1000000, AV_TIME_BASE); + now = av_gettime_relative() - ist->start; if (pts > now) return AVERROR(EAGAIN); }