From patchwork Fri Dec 3 05:06:55 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 31896 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp211472iog; Thu, 2 Dec 2021 21:08:00 -0800 (PST) X-Google-Smtp-Source: ABdhPJzOAiTNOue7oR864J4W18rfjhQVOQ01nlkoB/or34vd/nTJX2UlXfmsO/O4Sb4YZcr7Kh16 X-Received: by 2002:a50:fe1a:: with SMTP id f26mr23119079edt.132.1638508080236; Thu, 02 Dec 2021 21:08:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1638508080; cv=none; d=google.com; s=arc-20160816; b=wHgGGKytckYsMBYrltS0WvAbBewnGmyozqdaTtPdLEQrt7p+j79nXqSuqvxW1B2vfv j8hKUlACVYpRY/tWRFazuk9dhbMNrlPn+hFZfLpUoJkpcJzQ5HNiYRVyINu+YoLqmD6i vr8BhUSObe3TJsQiDaZaGt0deE9WGX0czp4fyNIV3R7mwZAeergQVK8ywJc+zKDjGOUk iJw9l0HPWU/cWBk26WMssCB+uhVdY1RaiTcOZMb7QP/9XBoyEwCpKLtIGdAcVv4w+tTK HO05IN+wT3QKqiiQ2oR599QgxBlyO+K/QG5o7AXFPBr9BkxdlfojV/F9XKTCqvZ+9fzu SSTg== 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:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=EMyzYJ/vQtnFww4x2naEACQcjh+YB0+y3SONrahWjMw=; b=BVIugVp9QkCqjwuTMOE9xVIQAPelwgybeZkF4yFCNdzMNqDqXE8JIJwypLahDJzLlb C/DO0NT8Y8DKI0VCl387I0K2oAYBvdecqJkCR2wvWsIYo1NKCYaZFEnXVXO6zRTe8GrF QDuoVLDGJZ7HTvpENyqbKL2ZBTHqRahO86EcBnMxkHFz9GNVqtZkW5tI77chqd3kDqGc y3VE8WgwVSn30QfUOTQwcw+I6VnUoQNHl+XcbGzoeyuCjjri+iFkSujd7Ttu+Wr/9lrc midsJjYg1fH8Jusil6OXQdYJZRP0FqcHrlnd2k5L40VJHWThJTHGKUXc2Cyno/fqRnin OuUw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=YiKXuIBS; 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=NONE dis=NONE) header.from=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q8si2143801ejr.568.2021.12.02.21.07.59; Thu, 02 Dec 2021 21:08:00 -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=@foxmail.com header.s=s201512 header.b=YiKXuIBS; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DC35268A825; Fri, 3 Dec 2021 07:07:26 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-84.mail.qq.com (unknown [203.205.251.84]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3358D68A825 for ; Fri, 3 Dec 2021 07:07:14 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1638508031; bh=Z8g0rYW3Ky1NrS6abwQArXLSTgjG/2AuKv35EOkKhiY=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=YiKXuIBS28qgri5xa5TMykKHQxSa2+1sQRzLUQIVKZqEtAe5yIRDn97u1pdLCHxhA kydGSd/gHA40qufJ6d7/uqbTmXkVw0CrSTGkMDzp0KLFM6yZChBqBXEz4G2LOLC1or 1Y0US7nOJ+g92K4CO84Kfzf8f5u6ZtnIUfjROiGg= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.56]) by newxmesmtplogicsvrszb6.qq.com (NewEsmtp) with SMTP id 1C926A18; Fri, 03 Dec 2021 13:07:09 +0800 X-QQ-mid: xmsmtpt1638508030txp1p06dw Message-ID: X-QQ-XMAILINFO: NWth7vBa++Gd7vU8ezA7WROoEuZ5ksu5c01RJC1IxzunvSjJbi5mWL4qXnxe+F oz2C9OxLjh7umsP4mWTWaTXUSuS/r7joi6nPkHwkzF8IZ1gRIfj0ucq5JL73MiqWUYNTINFhMqaJ 7F+ny9X4vhdjBcR/B1QfIgB3xHY3udEz8PqFCPbxea0tX3f6o5DlcUmGNr+I01kUHJ9GOecdJNhP OSekngOzwvkn1vmtlzHgL/VUwUuzSahz4yj25KVVVJxiv1ZXptMajnd70SVThhBhI/AH9QrM8tCa 5o+VxsOnmmAadfRM30yi+2FbISk2uAR1chqQJl7FxJcFN4RPzAVE6jjlA+tOEhnYNh3TUIr9n1mX nBV1DnaW3Eslm8wYIYA4E7p64M8XrazM2PqHhWZlQ8X1SZIDxeEIgRy5TBCZRaeTF8Rlv2eXpWgD m6fk2dFK+xhy+vMQ/DbY8dux0re4ql+qyof26K2LGL8C9U7WyoAoW3fE00KQAg1VGIxFIdTWPaX8 qOKXY2vHGnOWta3USCxG5ARYX3Ps6GToejr5qJamcJlHRU4Ddp0ybiahM6ecrptdU3W1j5H2WsW4 O5PwItTU3eWnqaKmUv2wa7pWgDpbXGogJhbNkcJJvR36X7W1N+k9pAf65ih4bnl+sw34PBGNGaZi 92EMDVwy9VB/SSRvdvF0nFRwZbe9vwE8nMyJ0FdE3ZsXvTQReNdh60YtOpVokQqXZHByUmytEChq NVSlMAftkxNspXCCrR3IM7mV94jCVqvUzXBAFFVsQjE+Gj9NVzAtHGNR7gNpt7JPjtnX9AStFFZx 2PoiFpat/EsFw1dB1no/pHcMAL2Ur6ZkVfUG50/SrfwPMxLNbGQE0DF/bODxAKbP5p9a9hFxWN5w == From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Dec 2021 13:06:55 +0800 X-OQ-MSGID: <20211203050657.72755-3-quinkblack@foxmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211203050657.72755-1-quinkblack@foxmail.com> References: <20211203050657.72755-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/5] avformat/movenc: fix traf_number field inside tfra box 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 Cc: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: qHGv8yYHmXbw traf_number indicates the ‘traf’ number that contains the sync sample. The number ranges from 1 (the first ‘traf’ is numbered 1) in each ‘moof’. For A-V interleaved fmp4 with two traf boxes inside a moof, tfra box was broken. --- libavformat/movenc.c | 4 +++- libavformat/movenc.h | 2 ++ tests/ref/fate/movenc | 28 ++++++++++++++-------------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 06d3819591..f8731d33c5 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -4628,6 +4628,7 @@ static int mov_add_tfra_entries(AVIOContext *pb, MOVMuxContext *mov, int tracks, int size) { int i; + uint32_t index = 0; for (i = 0; i < mov->nb_streams; i++) { MOVTrack *track = &mov->tracks[i]; MOVFragmentInfo *info; @@ -4659,6 +4660,7 @@ static int mov_add_tfra_entries(AVIOContext *pb, MOVMuxContext *mov, int tracks, info->time = 0; } info->tfrf_offset = 0; + info->traf_index = ++index; mov_write_tfrf_tags(pb, mov, track); } return 0; @@ -4960,7 +4962,7 @@ static int mov_write_tfra_tag(AVIOContext *pb, MOVTrack *track) continue; avio_wb64(pb, track->frag_info[i].time); avio_wb64(pb, track->frag_info[i].offset + track->data_offset); - avio_w8(pb, 1); /* traf number */ + avio_w8(pb, track->frag_info[i].traf_index); /* traf number */ avio_w8(pb, 1); /* trun number */ avio_w8(pb, 1); /* sample number */ } diff --git a/libavformat/movenc.h b/libavformat/movenc.h index f73604d6f3..e3a5e2864a 100644 --- a/libavformat/movenc.h +++ b/libavformat/movenc.h @@ -81,6 +81,8 @@ typedef struct MOVFragmentInfo { int64_t tfrf_offset; int size; uint32_t first_sample_flags; + /* ranges from 1 (the first ‘traf’ is numbered 1) in each ‘moof’ */ + uint32_t traf_index; } MOVFragmentInfo; typedef struct MOVTrack { diff --git a/tests/ref/fate/movenc b/tests/ref/fate/movenc index 70c66b7fd7..529a1c6da5 100644 --- a/tests/ref/fate/movenc +++ b/tests/ref/fate/movenc @@ -2,17 +2,17 @@ write_data len 36, time nopts, type header atom ftyp write_data len 2429, time nopts, type header atom - write_data len 788, time 1000000, type sync atom moof write_data len 110, time nopts, type trailer atom - -6f06e338c71468d56580df40ff265066 3363 non-empty-moov +e38b4db4d6542159a18a231df1f8a17a 3363 non-empty-moov write_data len 36, time nopts, type header atom ftyp write_data len 2761, time nopts, type header atom - write_data len 908, time 966667, type sync atom moof write_data len 110, time nopts, type trailer atom - -caf0876986b5f033efc0958c338289cc 3815 non-empty-moov-elst +aced0fb08e209f7b892fc69319de4c6c 3815 non-empty-moov-elst write_data len 36, time nopts, type header atom ftyp write_data len 2669, time nopts, type header atom - write_data len 908, time 1000000, type sync atom moof write_data len 110, time nopts, type trailer atom - -e106084014ed245ed7c4a30f1d11a3ac 3723 non-empty-moov-no-elst +d2879ae4007bec11714c47ed9c4606c9 3723 non-empty-moov-no-elst write_data len 24, time nopts, type header atom ftyp write_data len 1171, time nopts, type header atom - write_data len 728, time 0, type sync atom moof @@ -26,29 +26,29 @@ write_data len 1123, time nopts, type header atom - write_data len 796, time 0, type sync atom moof write_data len 788, time 1000000, type sync atom moof write_data len 148, time nopts, type trailer atom - -08f4b3ad3a3ea224b2ee731476b9056b 2891 empty-moov +7c8bbc289e14ae747ad3f9c73107912b 2891 empty-moov write_data len 36, time nopts, type header atom ftyp write_data len 1123, time nopts, type header atom - write_data len 1068, time 0, type sync atom moof write_data len 908, time 1000000, type sync atom moof write_data len 148, time nopts, type trailer atom - -d7a2dcb43eb0f95f92669f55fc7adeba 3283 empty-moov-no-elst +0c6a543b723d16f5bb2bbb1204625a41 3283 empty-moov-no-elst write_data len 36, time nopts, type header atom ftyp write_data len 1123, time nopts, type header atom - write_data len 900, time -33333, type sync atom moof write_data len 908, time 966667, type sync atom moof write_data len 148, time nopts, type trailer atom - -ea70ca697306976879be408431c27aee 3115 empty-moov-no-elst-no-adjust +f99a6f2437e513d6dcf521f8d167f342 3115 empty-moov-no-elst-no-adjust write_data len 1159, time nopts, type header atom ftyp write_data len 796, time 0, type sync atom moof write_data len 788, time 1000000, type sync atom moof write_data len 148, time nopts, type trailer atom - -08f4b3ad3a3ea224b2ee731476b9056b 2891 delay-moov +7c8bbc289e14ae747ad3f9c73107912b 2891 delay-moov write_data len 1231, time nopts, type header atom ftyp write_data len 916, time -33333, type sync atom moof write_data len 908, time 966667, type sync atom moof write_data len 148, time nopts, type trailer atom - -314cc3b6296f4ee583b328a34be50b2f 3203 delay-moov-elst +a7ddf0bfd32683de9dd22afe3b1135a4 3203 delay-moov-elst write_data len 1195, time nopts, type header atom ftyp write_data len 836, time 0, type sync atom moof write_data len 67, time nopts, type trailer atom - @@ -117,12 +117,12 @@ write_data len 1223, time nopts, type header atom ftyp write_data len 2572, time -333333, type sync atom sidx write_data len 996, time 5166667, type sync atom sidx write_data len 148, time nopts, type trailer atom - -d37a7eda807912b9ed05ccfe003a9e4f 4939 vfr +0009ab3c8ebc80a286e5b10dfacc8ef3 4939 vfr write_data len 1223, time nopts, type header atom ftyp write_data len 2572, time -333333, type sync atom sidx write_data len 996, time 5166667, type sync atom sidx write_data len 148, time nopts, type trailer atom - -d37a7eda807912b9ed05ccfe003a9e4f 4939 vfr-noduration +0009ab3c8ebc80a286e5b10dfacc8ef3 4939 vfr-noduration write_data len 1231, time nopts, type header atom ftyp write_data len 1500, time -333333, type sync atom moof write_data len 1500, time nopts, type unknown atom - @@ -131,7 +131,7 @@ write_data len 1500, time 9666667, type sync atom moof write_data len 1500, time nopts, type unknown atom - write_data len 1004, time nopts, type unknown atom - write_data len 148, time nopts, type trailer atom - -08b6401dc81912e5264245b7233c4ab3 9299 large_frag +9549eeeac8731d820dc395bc73aa605f 9299 large_frag write_data len 1231, time nopts, type header atom ftyp write_data len 684, time -33333, type sync atom moof write_data len 504, time 800000, type boundary atom moof @@ -139,15 +139,15 @@ write_data len 420, time 1266667, type boundary atom moof write_data len 668, time 1566667, type sync atom moof write_data len 440, time 2233333, type boundary atom moof write_data len 205, time nopts, type trailer atom - -2dd052ab30624c1a415184c5bf973670 4152 vfr-noduration-interleave +9ec014d07518b90a5321d792d737bfc0 4152 vfr-noduration-interleave write_data len 1231, time nopts, type header atom ftyp write_data len 916, time 0, type sync atom moof write_data len 908, time 1000000, type sync atom moof write_data len 148, time nopts, type trailer atom - -d81c3a0ce5940a2db74c99ad435e0560 3203 delay-moov-elst-neg-cts +b8076064cedf2fefc242d9af67cdaeba 3203 delay-moov-elst-neg-cts write_data len 36, time nopts, type header atom ftyp write_data len 1123, time nopts, type header atom - write_data len 900, time 0, type sync atom moof write_data len 908, time 1000000, type sync atom moof write_data len 148, time nopts, type trailer atom - -3be575022e446855bca1e45b7942cc0c 3115 empty-moov-neg-cts +c1307485f65c4a00a06ca82f5e0b1361 3115 empty-moov-neg-cts