From patchwork Tue Oct 18 12:36:44 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 38777 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp2082696pzb; Tue, 18 Oct 2022 05:38:36 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4BNkjQn68V0AvTER58paQZFx4vL+j06ypcI+Xa3PTKN0sU5DgWDJ1vd8y51x9UnaLEibC4 X-Received: by 2002:a17:907:2701:b0:78d:cb12:6d94 with SMTP id w1-20020a170907270100b0078dcb126d94mr2317471ejk.344.1666096705658; Tue, 18 Oct 2022 05:38:25 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666096705; cv=none; d=google.com; s=arc-20160816; b=aVUaL+EZWZpIneEwcmkrKFNHIYoGcXv+38OCbj1Cv8iSt9yhcmmiDBa2CT0EgktjMY qpYmlw41+zG0UNCDhoLEy1IyxZYn8njOPtW5oBnx6KLR9YzybUFyTmxvf85HimbTuulB /9b1Y2F4f4kpUu8Nk+SyIV7s66ApFiArLKumj+AwRtjU4nntrECpngckK5bwecnn4zG3 cemEAawK4J1Y9aO/XAs25an8czLx9x1Ev6Fsl6PfjR7S/Zm2TOeLIKkHi8KMtDovePNE pgqPUlodJJ2ly02NLfpnfQScnuccJuPY28oeeZg9NRLreFdo/2u94MG5AdNxRTT3KtvA rCnw== 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=x7NIO2+4Tf0s8XbMNEYfDqSeztAdraJi6BU7fdZyEis=; b=GCZt7XdGdhjUbuMG3ZHZmDbUdoqIQUGX3frP298gg+LhOHL7IqjDuAWk7AacsyDQTY pLCxk74wwizVeZx0NwePRhShpvNAOrSt1TFMVzb78ieEzWwzlpBOcIOta14pBH/oNfZh ADMNeZleq+VBCSWx57h4vzzjnhJd9LRLCl/1+pKoe/vuSn40Jr+bbmj8LzQ7qbVbxcs7 NDpYy1gQIRbsLOtmMkP+5e383gC7pIIavI1PfkI+J6F4OrR0r8f0MnAgIjeOsXfqWG8D 0F+oM3CUY+4RLDmNoFCRkbtvDrVJB4kDZr4VQk+v1eBDlGdkkFIeifFc7VGQQqH06LBZ XG5Q== 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 n8-20020a05640205c800b00458e87a1d83si14003797edx.54.2022.10.18.05.38.24; Tue, 18 Oct 2022 05:38:25 -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 782EE68BD1F; Tue, 18 Oct 2022 15:38: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 BBC4B68BCE1 for ; Tue, 18 Oct 2022 15:38:14 +0300 (EEST) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 19976240D0E for ; Tue, 18 Oct 2022 14:38:14 +0200 (CEST) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id ss8ochhEmHd5 for ; Tue, 18 Oct 2022 14:38: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 945622404F5 for ; Tue, 18 Oct 2022 14:38:13 +0200 (CEST) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:::1]) by libav.khirnov.net (Postfix) with ESMTP id 9B78D3A13D9 for ; Tue, 18 Oct 2022 14:38:13 +0200 (CEST) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 18 Oct 2022 14:36:44 +0200 Message-Id: <20221018123701.25002-3-anton@khirnov.net> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20221018123701.25002-1-anton@khirnov.net> References: <20221018123701.25002-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/20] fftools/ffmpeg: drop init_input_threads() 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: fTBBxPuzzxS2 Start threads implicitly when ifile_get_packet() is called. Simplifies the demuxer API. --- fftools/ffmpeg.c | 3 --- fftools/ffmpeg.h | 1 - fftools/ffmpeg_demux.c | 24 +++++++++--------------- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index ceb26145a3..aac35026bd 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -3910,9 +3910,6 @@ static int transcode(void) timer_start = av_gettime_relative(); - if ((ret = init_input_threads()) < 0) - goto fail; - while (!received_sigterm) { int64_t cur_time= av_gettime_relative(); diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index 35410ec4a1..b60f415389 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -759,7 +759,6 @@ int ifile_open(OptionsContext *o, const char *filename); * - a negative error code on failure */ int ifile_get_packet(InputFile *f, AVPacket **pkt); -int init_input_threads(void); void free_input_threads(void); #define SPECIFIER_OPT_FMT_str "%s" diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index f92500abf9..aaa91293c3 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -330,11 +330,10 @@ void free_input_threads(void) free_input_thread(i); } -static int init_input_thread(int i) +static int thread_start(Demuxer *d) { int ret; - InputFile *f = input_files[i]; - Demuxer *d = demuxer_from_ifile(f); + InputFile *f = &d->f; if (f->thread_queue_size <= 0) f->thread_queue_size = (nb_input_files > 1 ? 8 : 1); @@ -377,24 +376,19 @@ fail: return ret; } -int init_input_threads(void) -{ - int i, ret; - - for (i = 0; i < nb_input_files; i++) { - ret = init_input_thread(i); - if (ret < 0) - return ret; - } - return 0; -} - int ifile_get_packet(InputFile *f, AVPacket **pkt) { + Demuxer *d = demuxer_from_ifile(f); InputStream *ist; DemuxMsg msg; int ret; + if (!f->in_thread_queue) { + ret = thread_start(d); + if (ret < 0) + return ret; + } + if (f->readrate || f->rate_emu) { int i; int64_t file_start = copy_ts * (