From patchwork Fri May 5 11:31:23 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 41492 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dca6:b0:f3:34fa:f187 with SMTP id ky38csp407795pzb; Fri, 5 May 2023 04:31:58 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ43bzLFFYG0ZHNJz3g42sUklM/wbbz3GOOs/G7WSD9b0UdodKbVdMjBMOiMnvazEDAaAxcP X-Received: by 2002:a17:907:3f8d:b0:953:4db7:c30e with SMTP id hr13-20020a1709073f8d00b009534db7c30emr1108542ejc.76.1683286317834; Fri, 05 May 2023 04:31:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1683286317; cv=none; d=google.com; s=arc-20160816; b=G1UI1p5O8cCfWy41bJRtMCU6oH2rubMY1vEg6WLKmxcE5R4KzHyE5yPne8buwtIBFY i6UrHCMTlx4SquEaqLyFSNDqt/LwaIGdUBfXCQDb48dxUnd7MWhImSxwpMUXun/vzBPQ uy2358wOs+haaj5Os8ZUhd/FBuAbkH3Ans+Tul+GdwrB2SX376BFV87GbSGi5JlHC5iU 6oI7Nmli1ochKmJCLsvlBPJ2g7bWN2U2SBLLdD7uPjjoXkITJijn/b+KFGG//WAZwhnH WwtDSw4gh67q1HmQ0xNxYPiQfUvetl1aSEAZ1mKb8o2P5/3JyZZePHx1B78MC2DFZBn+ x5Ow== 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=5BweHSjhVj0F/1lyoU4OhcYlmGFvPsg7nmK8yxPwUbk=; b=rLugPFj1x8Qlt3cSBf1sBTnzsSLx3xpQJT1+NSWXb/Rnm4PcL59vFN4brPZfrftm+J B6nVjk/zvNM5k8wKHLjU6chPepgpsMcZudM8Jh2Ze1r+CrT80GPZy0wF+qi2cyoCaMKf HvaHsewoUZtk9Uvl/LhnEzOfqSmTqGYlQwyqWBIicBXi2Wx7vK+BxvVU8KVrEqDOQywp rHNBkagx8Y4uCM1ylGABLv5OEidpbPxpeJN7C/M7cB+3tHIbVdaIRjfEKqUz36gQaah9 M/+QdvizYRkOM+r0RAU/WIRJBA2crPLBK8tu3QJi/+sRAKF7PV7jOTEZYqrPCCSZsHn9 gTpQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=H7xt1W7Y; 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 xo13-20020a170907bb8d00b0094f557aeae7si1009082ejc.283.2023.05.05.04.31.42; Fri, 05 May 2023 04:31:57 -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; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=H7xt1W7Y; 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 8170368C00B; Fri, 5 May 2023 14:31:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 58C3F68BE9E for ; Fri, 5 May 2023 14:31:30 +0300 (EEST) Received: by mail-lf1-f53.google.com with SMTP id 2adb3069b0e04-4f004cc54f4so1915676e87.3 for ; Fri, 05 May 2023 04:31:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1683286289; x=1685878289; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=+7/hdfnPiBvsEEswRunKnoy09koPIGMbqiMN62zTyww=; b=H7xt1W7Yno70fWx3nx4Ln8vAL8guKPa2YxhMWmZhMGK1wSd550s8NFGyzFX5a48UnS m3wD5syW6UXbsiZFU74MJuIs5wGhxoIIYa70wgnGqzhyPwSdSmEAhGwf9negP0N24/z8 3zk21UqueIS18lAhYBJvPOeQeapp4h3T6kBjg880hQNZ8g2AXdfF3oY+aM1MgayAX4Mf w05qNsAJfElVMCw/cOGOaSWFAk2Dw7iwUmRHw26d5NNC8NLG4kSZILiqZXshMJs7PbHM kfYb5vv1c23gY5x6shvzUF1BukdajQgpDePuBvQM+pvy/Ir62VYpHkMwB830L79Gwcku KUuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1683286289; x=1685878289; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=+7/hdfnPiBvsEEswRunKnoy09koPIGMbqiMN62zTyww=; b=dqT0q2EeJhgdoZwyOSuqV+BCOx6dDX6KNdG9WADmkftbJLpFuq6rTSwl98Q2lACaU+ zmuCzyeVmBxPpaELdjemjy+fdhA6VYzpD42cKuE2k+KsYXnrrutz4TNjuJskcxHklXxP 3MdH/zqGRMexT98XY308+adn/s5O25pPrlsPx1YSDi8IM67LeOU7iyd7T9NrnM3v0qU+ ayhq8x9mdRg6j49XwYhGGhS+lCH8f+ewd7xaRqyY3qh13010kVt1dv3OwKBIfDnvACFK nY3mv3BGRF/T/RR62ZPUomQhFrxviyxBEQZZO5gzlO2W6fBzMi26oHSBkjDfPoaMAMBh Tl8Q== X-Gm-Message-State: AC+VfDwzboSppPUJXXg/I0xn6lkTyxDKhGY+bqSZ2Sp4qmBr/+ny8tKP hWhmjbk+jxsqRvDuuzA/asRQDt47z74= X-Received: by 2002:ac2:5962:0:b0:4f0:345:6ceb with SMTP id h2-20020ac25962000000b004f003456cebmr453032lfp.14.1683286289431; Fri, 05 May 2023 04:31:29 -0700 (PDT) Received: from localhost.localdomain (91-153-198-187.elisa-laajakaista.fi. [91.153.198.187]) by smtp.gmail.com with ESMTPSA id n11-20020ac2490b000000b004f1406b059asm250200lfi.219.2023.05.05.04.31.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 05 May 2023 04:31:28 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 May 2023 14:31:23 +0300 Message-Id: <20230505113123.28404-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avformat/demux: in case of no timestamps, calculate dts based on previous dts and duration 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: D8EdljXkWKJe From: Martin Machalek Adds DTS to packets which would otherwise break tbr calculation within libavformat, as well as packet rate calculation in ffmpeg. An example of such input would be an MPEG-TS stream where a whole GOP is put into a single PES packet. Co-authored-by: Jan Ekström Signed-off-by: Jan Ekström --- libavformat/demux.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libavformat/demux.c b/libavformat/demux.c index 06de71cd6e..9a4ab28679 100644 --- a/libavformat/demux.c +++ b/libavformat/demux.c @@ -1098,6 +1098,11 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st, if (!onein_oneout) // This should happen on the first packet update_initial_timestamps(s, pkt->stream_index, pkt->dts, pkt->pts, pkt); + + if (pkt->dts == AV_NOPTS_VALUE && !is_relative(sti->cur_dts) && + sti->cur_dts != AV_NOPTS_VALUE && pkt->duration > 0) + pkt->dts = sti->cur_dts + pkt->duration; + if (pkt->dts > sti->cur_dts) sti->cur_dts = pkt->dts;