From patchwork Tue Aug 13 10:29:00 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 14482 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 517FD44834F for ; Tue, 13 Aug 2019 13:35:57 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2E15B68AC06; Tue, 13 Aug 2019 13:35:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f45.google.com (mail-ot1-f45.google.com [209.85.210.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B73856897FA for ; Tue, 13 Aug 2019 13:35:50 +0300 (EEST) Received: by mail-ot1-f45.google.com with SMTP id j7so25784974ota.9 for ; Tue, 13 Aug 2019 03:35:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=mhCYgSke7AJWVvgRynfLOAv+fAtn/5i2g0RpFenpsjQ=; b=eLbvFzCt6XJxyq+LRibRuKX22FshuzxZJbO/8jztuvziOtIC2kjiitng0oG3XLhSZ+ qKf13ppQ3CuukqKUSzWrn8M/w/KM46mqlapLpTqLfcbl4O8OIfmPzjO310nCZQ9dKLSo U7kT3Ipwji7397Z5kDzZbMbFBDl7AM53z5ZLgH2bzxKha2RFCmQQrxnkM2xNAgEGjXrK Nth/Eadq9QnpNr+EZCIY/xIxZ5orwpba05htW1FPlb2j1GdKZlq96MC7lIuNSHqyis4u rk90wOE8OOb4V8/3PZpU16oBRLwMrr6mMEo9yoWsYqw8b00yCKjrqKwcKS4LVULaS5mh 4x1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=mhCYgSke7AJWVvgRynfLOAv+fAtn/5i2g0RpFenpsjQ=; b=WP5FDJTVGVm2kZl45We3hI/lyakBZy0ljrY7/gKQbwlTh+107LFPTZaUOsLPT3+mIO M1YlZ1lIgfYP3F3La7zkLpgzCh2tgn6CfhFxlB1JJXiz1uOHufVsFQ0StxuWKI8waCuD s13dckjk0L3phLcVFXqY4tGiOP1CyGDiZRbQGFl5nA3FCrXcQHr7pMqOIICno6KVa5nU lH8yO/HltJwJGdQ3VDocsX53P7hTFUGXXcOIlq91UjNjDOhMR5LLzMxgM48kSF6GCjH5 f5ZaUfGm6BLfgJF8IIrZ+13jDvaJihg5hqYMKz9m8z2En75nwwVorzCM9WcBBvAjJvFG WeLg== X-Gm-Message-State: APjAAAUVJbRSzu5AfzYs103eb5MduFNsGLWb5NV/7BehYjrGVx+ZjyRg Kz7iWgF4vN9UUDz+5b/I1AhcqyDs X-Google-Smtp-Source: APXvYqycv9pC6LQBYJJSvlZbwf9uZfGdJd5LYpe4m6iD97DR8cgUOrB2trO+MiIBqZViN9ebOXKKLg== X-Received: by 2002:a65:4786:: with SMTP id e6mr33186523pgs.448.1565692145397; Tue, 13 Aug 2019 03:29:05 -0700 (PDT) Received: from localhost.localdomain ([47.90.47.25]) by smtp.gmail.com with ESMTPSA id h17sm7894441pfo.24.2019.08.13.03.29.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 13 Aug 2019 03:29:04 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Tue, 13 Aug 2019 18:29:00 +0800 Message-Id: <1565692140-5928-1-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 1.7.1 Subject: [FFmpeg-devel] [PATCH V1] lavf/mov: fix fMP4 tfdt box lead to dts reset issue X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jun Zhao In fMP4 format, traf maybe have zero or more trun box, in this case, we just used tfdt as dts once. The sample layout like this: [moof] size=8+1392 [mfhd] size=12+4 sequence number = 29 [traf] size=8+1368 [tfhd] size=12+16, flags=20038 track ID = 1 default sample duration = 512 default sample size = 40720 default sample flags = 0 [tfdt] size=12+8, version=1 base media decode time = 1873920 [trun] size=12+452, version=1, flags=e01 sample count = 37 data offset = 1408 [trun] size=12+452, version=1, flags=e01 sample count = 37 data offset = 292973 [trun] size=12+380, version=1, flags=e01 sample count = 31 data offset = 586457 Signed-off-by: Jun Zhao --- libavformat/mov.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-) diff --git a/libavformat/mov.c b/libavformat/mov.c index 24de542..d47d491 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -4762,6 +4762,7 @@ static int mov_read_trun(MOVContext *c, AVIOContext *pb, MOVAtom atom) dts = frag_stream_info->tfdt_dts - sc->time_offset; av_log(c->fc, AV_LOG_DEBUG, "found tfdt time %"PRId64 ", using it for dts\n", dts); + frag_stream_info->tfdt_dts = AV_NOPTS_VALUE; } else { dts = sc->track_end - sc->time_offset; av_log(c->fc, AV_LOG_DEBUG, "found track end time %"PRId64