From patchwork Sat Nov 27 21:19:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 31782 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:d206:0:0:0:0:0 with SMTP id q6csp4102186iob; Sat, 27 Nov 2021 13:20:41 -0800 (PST) X-Google-Smtp-Source: ABdhPJw4LZwBOK89a8Z1wiBiZG57ACNqda4M2pPcguNnriJHI+JtCpPiyhjQBar6WH2wY3UpBBxZ X-Received: by 2002:a17:907:3daa:: with SMTP id he42mr49260885ejc.160.1638048041297; Sat, 27 Nov 2021 13:20:41 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638048041; cv=none; d=google.com; s=arc-20160816; b=oV6eSOTm2QEWnkhmmkL5QwJNExW0wfbDpGSpw0TZ8RWuG6X+1C5n9JifWpxt5atGbU T6ICJhi2G/jpyu/EZUY5+DSRcm3eEJoTjx3gvtd3e8UzLEhNt8iN6ufascJdktbAR7gB IgFR1GAQD+uEJO3Ohnyk6tDu9gVwy7bH8GjUMfhmdlie5+bgHdNn/7iPL+42+lQkOJTD y++T4xtG552bZRQSZgplsCw1o0jGTJlCIgaAnjTYuFUJKlK2SVZd+ucnrt2igMflcQRv oObNK6lWTVbC6lMMvHBf3EZXJJZMZgniG4WNaE6ctt9reuWqbaOEqO+VS+3Cnwjq3VJP YlgQ== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=tLID+dHf7h6aWBFw3EAaK1AsvZPNi7U/yrfW/gdnVBA=; b=ULOsg4imJ7XIgCnmsWOkfGYVSq9IaGH3CHMcFH3hP1FCzH2bAeUyIfSdSG61eO2Ubz 8S/jMco17BzWW/cHbKw427Ag/PLCQa0EH7n15y/TSjf0DqneSTGds2z+18vRAKUHNo6F oAz3Yt1DlJCOdiiI2IUpcihss+Qlrhz83Oxqj3vNDyoRz8x16vK+ZtfV0L5gAS0YBgVC Zcr0AI1LsjYkICucNT7OFYFxx+ZSp22GJbHS5Zn+mh7e9TikX9Ha1O+WYiFeMw6jDY4I mU2yYfQ27QxneK542HTRXQNfEFLh6eMKuPQTernHANBNFgAmt80bbszjq7F2ubJ7rPK0 w4Og== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=kFPhorI2; 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=QUARANTINE 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 c23si14345885eje.22.2021.11.27.13.20.40; Sat, 27 Nov 2021 13:20:41 -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=20210112 header.b=kFPhorI2; 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=QUARANTINE 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 ABD1F68A987; Sat, 27 Nov 2021 23:20:35 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vk1-f177.google.com (mail-vk1-f177.google.com [209.85.221.177]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3045C68A927 for ; Sat, 27 Nov 2021 23:20:29 +0200 (EET) Received: by mail-vk1-f177.google.com with SMTP id s17so8281651vka.5 for ; Sat, 27 Nov 2021 13:20:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=TnG5yvi2V/Mn5SO0ElWqTsb53xvjsBG60uMiLXf/oEA=; b=kFPhorI25dbQ/nrodvJcBJegVI1TdeLLlgJJUDKxSmMGu1wUPYmPLrCRr35rVNuigY aXOrqLW+jfaBkcvX4OkCxh2kt+b03i6BV+oZQA9uvyuuFWWg+f7HxQ6vgZq4MHsKyMEF gc8YueXrjDOHsNKmYzeIeYy7VdBos+uZM/CtjhFO/TbGCx3ElVMh3R8tGKnQE4SRdfzZ tve79B1yPqlZ8HYsjtjHliwUKIGrnpkBUPy3Vsys66g67Rsq1LXGp1NyZcZteIvEuvft vsP2HaASLwLyXsg0GN9y1UVo8E6egBGCaRFi5/BO/tY1xYKDRzkf8WgzXDo1Ravu2Bjl /LXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=TnG5yvi2V/Mn5SO0ElWqTsb53xvjsBG60uMiLXf/oEA=; b=dGIb9Kr6JsuedyZdHJ7OIGyMbynvGcUMwBoRddKXLGYVGHJjAmQURhp1YSxla0REBm u6f8vrr9rhM3mWh6nJmORzH67q0YF8D+G8U0+9UKUBfHZGokEdPsSLovMNDD+XLetPzm OqWDlNqXRusf056o6I4QHSEjYJ23itLbKRffgkyoW/Ten4RKjwlWAa0gIKRK4lfB4Bal NSch2QlTjK3fTr8WOMkeqHltkCxPo2mJGrv9vlVsigtM4QCRLw4XbONViwFWuA4P+vIP oavtGUBWp8kpeuVas7e1OdOFfCOSYOTXQbhXDUaRwIFOC1quW5q2EsBX2HgJ5x9aTaiT LjFg== X-Gm-Message-State: AOAM533tll4c8GJY/ZqWcgJwG3OXcQqoENSEUjgi+0uXjkM1xGhG/eZY YKfju7DLcn42HnANm1LYMo7UIMvq/zg4+g== X-Received: by 2002:a05:6122:201b:: with SMTP id l27mr28835901vkd.1.1638048026886; Sat, 27 Nov 2021 13:20:26 -0800 (PST) Received: from localhost.localdomain ([181.23.87.117]) by smtp.gmail.com with ESMTPSA id t132sm5519713vkb.19.2021.11.27.13.20.25 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 27 Nov 2021 13:20:26 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sat, 27 Nov 2021 18:19:51 -0300 Message-Id: <20211127211951.60321-1-jamrial@gmail.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] ffmpeg: fix usage of -shortest in codec copy scenarios 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: 3f2u56DlE0yv Don't mark all streams as finished, instead make sync_opts keep track of the stream's duration, and set recording_time to it, same as in transcoding paths. Fixes tickets #9512 and #9513. Signed-off-by: James Almer --- fftools/ffmpeg.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index c838e2604c..71c0460733 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -1486,13 +1486,12 @@ static void do_video_stats(OutputStream *ost, int frame_size) static void finish_output_stream(OutputStream *ost) { OutputFile *of = output_files[ost->file_index]; - int i; ost->finished = ENCODER_FINISHED | MUXER_FINISHED; if (of->shortest) { - for (i = 0; i < of->ctx->nb_streams; i++) - output_streams[of->ost_index + i]->finished = ENCODER_FINISHED | MUXER_FINISHED; + int64_t end = av_rescale_q(ost->sync_opts - ost->first_pts, ost->mux_timebase, AV_TIME_BASE_Q); + of->recording_time = FFMIN(of->recording_time, end); } } @@ -2089,10 +2088,6 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p } } - /* force the input stream PTS */ - if (ost->enc_ctx->codec_type == AVMEDIA_TYPE_VIDEO) - ost->sync_opts++; - if (av_packet_ref(opkt, pkt) < 0) exit_program(1); @@ -2116,6 +2111,8 @@ static void do_streamcopy(InputStream *ist, OutputStream *ost, const AVPacket *p opkt->duration = av_rescale_q(pkt->duration, ist->st->time_base, ost->mux_timebase); + ost->sync_opts += opkt->duration; + output_packet(of, opkt, ost, 0); }