From patchwork Thu Aug 18 13:46:05 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 37348 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp323077pzh; Thu, 18 Aug 2022 06:46:26 -0700 (PDT) X-Google-Smtp-Source: AA6agR6FASi5JtF46dC434Nh1AnTYi+vqFLuLguj7Sc4RkRy9GhCoVnoiEKiJXkbyBFZ6UCBtGJO X-Received: by 2002:a17:907:97d2:b0:730:657f:bef5 with SMTP id js18-20020a17090797d200b00730657fbef5mr1913056ejc.757.1660830386143; Thu, 18 Aug 2022 06:46:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1660830386; cv=none; d=google.com; s=arc-20160816; b=dYva1vEA0UGbC8TKZ/jtf8yWFbJq+/prEeUZsobdzeM9BCVcPLKVy0k3+n8fkgq2oo BIscoBITHfnkuk+9zP9jFwga7ZKKijV/ee0vxkeawJDFlf64b0ExqwZKwfj0HDRp3BVc SE+AtiNxmocSy6gfjiUuNjJrXm4E+g7EJiXhJ16KWdWVreIznjOnRFmNws49ZgYlKEMJ lTSC2dy+spJNNpAX/Cz0Mc2GNBuhwSHhvTWnD4aVfzLbSARMvDEcXGqwcTUWhn+06kPK pqLI3/uszCrzIOyOUA2HT4Von/E04DqCw2IrKwreboawCVQ/ZpGlSeIApyZcHp012bud DjFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to; bh=sime+z/VDDekgf+kN9MdIQLAfVls95KdsDeDD3DZULU=; b=kV80kzH+EazoQufTRhJfsBRsk2TolDnD4kFzwVV+wMFucRQ+1KGNYkDoisn01xiGAo sE4j23UXKwVIWz/houFD7rgooeaB9UhJ/YAKch/Y1NrfbaWV7QL5WzPRaAeTDWliMMJM OlT2Wi5x0iCcg3/xFquZJU1GJzx4xydmcsukj7YhNm1d4oPEYqvWZaSXjKGpmzLg4g7f Bwq6pLxXMG8IgDqk00IUD1CZMsa+nHO8KX+bNBJv6TOsjZz7UtIwx2YfpbFo6WT3osnE V14l8rJFHjZpua2/l8bAYuBcof5LfWfEjoQ8WKmuLy9O0N+tB1y/675E4DjRAnu6UgX2 pqaw== 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 s9-20020a508dc9000000b00445ec0f51c5si1005669edh.302.2022.08.18.06.46.25; Thu, 18 Aug 2022 06:46:26 -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 8AA7268B99B; Thu, 18 Aug 2022 16:46:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9A1A568A6D0 for ; Thu, 18 Aug 2022 16:46:15 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 52B7F240507 for ; Thu, 18 Aug 2022 15:46:14 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id 9me5ies8P7CJ for ; Thu, 18 Aug 2022 15:46:13 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 6BA3B240511 for ; Thu, 18 Aug 2022 15:46:12 +0200 (CEST) Received: by libav.khirnov.net (Postfix, from userid 1000) id 55D5E3A169F; Thu, 18 Aug 2022 15:46:06 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Thu, 18 Aug 2022 15:46:05 +0200 Message-Id: <20220818134605.12583-4-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220818134605.12583-1-anton@khirnov.net> References: <20220818134605.12583-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4] fftools/ffmpeg: call av_guess_frame_rate() when opening the file 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Ca3R8B7LDymb It is currently called when configuring the filter, which races with the demuxer thread. --- fftools/ffmpeg.h | 2 ++ fftools/ffmpeg_filter.c | 2 +- fftools/ffmpeg_opt.c | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index f67a2f1d1d..ee3ae8120e 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -343,6 +343,8 @@ typedef struct InputStream { */ AVCodecContext *parser_dec; + AVRational framerate_guessed; + int64_t prev_pkt_pts; int64_t start; /* time when read started */ /* predicted dts of the next packet read for this stream or (when there are diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index f9ae76f76d..16622e49c1 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -738,7 +738,7 @@ static int configure_input_video_filter(FilterGraph *fg, InputFilter *ifilter, } if (!fr.num) - fr = av_guess_frame_rate(input_files[ist->file_index]->ctx, ist->st, NULL); + fr = ist->framerate_guessed; if (ist->dec_ctx->codec_type == AVMEDIA_TYPE_SUBTITLE) { ret = sub2video_prepare(ist, ifilter); diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index a505c7b26f..0810bd0b9e 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -1074,6 +1074,8 @@ static void add_input_streams(OptionsContext *o, AVFormatContext *ic) exit_program(1); } + ist->framerate_guessed = av_guess_frame_rate(ic, st, NULL); + break; case AVMEDIA_TYPE_AUDIO: ist->guess_layout_max = INT_MAX;