From patchwork Sun Aug 6 01:04:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Daniel_Gl=C3=B6ckner?= X-Patchwork-Id: 4632 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.46.211 with SMTP id u202csp1211014vsu; Sat, 5 Aug 2017 18:05:26 -0700 (PDT) X-Received: by 10.28.87.6 with SMTP id l6mr3846852wmb.110.1501981526416; Sat, 05 Aug 2017 18:05:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1501981526; cv=none; d=google.com; s=arc-20160816; b=MsWJA4ZqY84d9MPmcC+OZAFpXB5LQjJSn09bSfXbC2I2aJQam5J2R0Hule/LsWawQ/ X/3dCN0eva9XcxPtO3pGo5I9VvBT0jteVMaAdgJTxkDCXGFWLZ3S6l8yB4f0vQ4zloUr p2r0vlSCrYvY5PsYLcmCl5j0CbG3EHCMk9Rt78CbzKOmOacsnpJcTKF2MiHifVASD5tT +LtnQIbsR5l/VT19AB2AhAsGAdL35+BkewaqcYPjxwWvbRV8ShiRXLWfgSuDZTbiQ1da LjVn8pbnT/AOJ2g8HmQZkYXGfuTHbBTP6r1Pvbzkfwad+SHuz6wb3J2y+fN8wlqgAMYW 4iDA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to:arc-authentication-results; bh=bXSqZECsZJ2ocHHrRTvRFn9AV016Rfv0fmf9eRqUb5Q=; b=XUuiQEZ18+K0MnqW2J8N7XLXOvFKcJGhbkBsVtECO5KPtv4TMOAauhMoL1/GRrBpmW 96nzgev+Ba511GUajTVtEs5y6LoK+uj5Hd8EFq6ASzRrEJhEK+HMU1qSz2qwoQv83wuk FPUzgT1cixnE2iQ8c/Iu5Bc0WyTfhORdTWx/5oFkp4WOb/YT/7BFdV1mFWWIhjkkXrlX r+ADu8kEk64aSRkETneaNug6xTHaXzOD7dpg9J7Qz5YgSmmrVc+bWu5J5IIOJfGI2zx7 gTrbUKJ+eihscc7Yh2EvLEjEvE8eal5mFAisQiJGkxslTuCzmRl2d3S98NYuS2ReghGg tG3Q== 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 n47si4578581wrf.343.2017.08.05.18.05.25; Sat, 05 Aug 2017 18:05: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 6D79D6891E9; Sun, 6 Aug 2017 04:05:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mout.gmx.net (mout.gmx.net [212.227.17.22]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 549BC680617 for ; Sun, 6 Aug 2017 04:05:14 +0300 (EEST) Received: from minime.bse ([77.22.132.34]) by mail.gmx.com (mrgmx102 [212.227.17.168]) with ESMTPSA (Nemesis) id 0LpPg1-1d8hCx1oJx-00fC34 for ; Sun, 06 Aug 2017 03:05:14 +0200 Received: (qmail 24075 invoked by uid 500); 6 Aug 2017 01:05:13 -0000 From: =?UTF-8?q?Daniel=20Gl=C3=B6ckner?= To: ffmpeg-devel@ffmpeg.org Date: Sun, 6 Aug 2017 03:04:53 +0200 Message-Id: <1501981493-24031-1-git-send-email-daniel-gl@gmx.net> X-Mailer: git-send-email 2.7.0 MIME-Version: 1.0 X-Provags-ID: V03:K0:CdPBKJCpak6HhRczscZd/iXC3+wXYo4Wpy3Yq1nW/H+bSjQMVth rsbUiJ39zyBn72Gnl71KrJUeTWGiZusupsHUEFpUnPDPg30xwnD/W3LOBpNi9ycvG1tHlvu ysLQTofnpQzAI7YSScvVpSsDJBO33xH5lliA4sOjG74+2KNGCfwtKb8uBA056BkFOjLRdkc EkVRutzxtpF/8W9yyqPig== X-UI-Out-Filterresults: notjunk:1; V01:K0:wrYi9NTI/5M=:ji1D1meNHbKnFWM1nASXB2 pjnIfQhpzGHtR/fsYhCcI3Ju4musfmFn6dCfPwrTjKWN37STkwbcgxaV11fViGRs9kZi71Mf5 uJEM+YGYhXI5tS+K96NPQqrWkJapQtJEu59HFujOQr30drBHqvs+DCwowZT6pMe+bHBpJaAPc ZT5dg6mjRU9dICb/PFcnkHoC7+4O3TutZKPm0hybAhDjWL88R2dBk/UEAPlllPPCOJowehPeN JpZGXn+A3VwJC2D3i/B1NPUL4yeWSXnkb28e24ZqlJbHd0elTOzY7wrFsZ7XjuA1yyyGrN4Z3 gTRBm1pdA0tAJKQws4ukXqMoTdlpEftDDIioAO6vVovbsjN+qMHFSgh+9xJrKtfS0V0JaP4FO Vh9cJfooXdXByXDEMuDo87o358kiIGtm5qVWF5etjXAeq7wxnKCvHa451iqmXpQjAobovuv8L 83on4z2oC2EX9XmOFOmZULmnMS5TOTB2YhlypV3mwSOF48VTZRvxhVwhD9FprXUs71WPHWUCl 0+r3gpCVA5RzP41s1NNUzFqAYKKyWgWjlJ83g7xxWQ1HIDSGOFw58rEXLh92jYfxMX3WJ4KK/ m2BVDDeKnr9Hbt2Xkxd3FLa1LkCTJ8pRV0okixNggV52q97luSeSIarWYWhpL3IuKXV00FNv6 bRKd2f2jWFoesVmrlkxxLex8GNPltnOMmzkJE5QkSLAj5Cx58NOpCLcZiUt+5gCv8M/vg5uFa 2HTM8SzAQ8cOnnscBrvbFERJ6l37+uvSZu9i/Y292W02Ob2C5BdXo7lZ4CE08nrddFyEkaLQf yKH/g8Z6m8Zpqu4mvIVV8jWyeO6BSx26kKBl5H3fF+UlCw7RhQ= Subject: [FFmpeg-devel] [PATCH] avformat/mov: prevent duplication of first fragment's ctts_data 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: =?UTF-8?q?Daniel=20Gl=C3=B6ckner?= Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" MP4 files with fragments might have the first moof box that is mentioned in a fragment index before the first mdat box. Since it is then already parsed by mov_read_header, we have to make sure that mov_switch_root will not parse it again when seeking by setting the headers_read flag in the index. Parsing it a second time would cause the ctts_data array to receive a second copy of the information from the trun box, leading to wrong PTS values for the second and following fragments in presence of B-frames. Fixes ticket 6560. Signed-off-by: Daniel Glöckner --- libavformat/mov.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavformat/mov.c b/libavformat/mov.c index 63f84be..c2da1b6 100644 --- a/libavformat/mov.c +++ b/libavformat/mov.c @@ -6345,6 +6345,13 @@ static int mov_read_header(AVFormatContext *s) } ff_configure_buffers_for_index(s, AV_TIME_BASE); + for (i = 0; i < mov->fragment_index_count; i++) { + MOVFragmentIndex *idx = mov->fragment_index_data[i]; + for (j = 0; j < idx->item_count; j++) + if (idx->items[j].moof_offset <= mov->fragment.moof_offset) + idx->items[j].headers_read = 1; + } + return 0; }