From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 58BBE4375E for ; Wed, 23 Aug 2023 09:55:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 506CC68C579; Wed, 23 Aug 2023 12:55:52 +0300 (EEST) Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1C7C568AAB3 for ; Wed, 23 Aug 2023 12:55:45 +0300 (EEST) Received: by mail-lj1-f171.google.com with SMTP id 38308e7fff4ca-2bba6fc4339so83644351fa.2 for ; Wed, 23 Aug 2023 02:55:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1692784544; x=1693389344; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=tbX36c3odEoLypIH6W5ywrQQHVPMfp4h0P+zwqSXS8U=; b=oVb3ANHZ/3GFbQj3TcQxJ676ahpAMJRxkeFvaZQvEqajayEgNwrS6yl4teDtNF9kCq 03RAltamfMcSAmOu7jUy9gZCkZ+R+7WN14hEjLdt5WNtZgYJxC+sIaifQAkfojT4FbdD 1IXswxni2Jad0ROfmDqqfufgDNgoiRSzBTRjfJPzj21b+KUQB6OtwxtykRgKK4G2eg24 pwhce0R3ONwDwI3ae5MKrg+Zil4ZbmmEr4pNisIIJ21eSghPnGFpbIet1+KTP0lr9pD2 1llfggMPs/3Fn/LNheSx56cnStmFj5Z830HjMmO0/OXD3PGw9pzmza77HDShYGDN2gdm 9r4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1692784544; x=1693389344; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=tbX36c3odEoLypIH6W5ywrQQHVPMfp4h0P+zwqSXS8U=; b=EgwhNrmS6un5ZVedsf6RJUVHLmrjWc1mNsSIyHRCQGLY0hRzggbpQgSKM6bsQ8rR/Q 3Ttm//7YD/z4o9uqs5O2WSxzFvymFjaofPVxpJRFQdB2Gv3stUTlOFV5wOnbi24CgDsE 4nWXd3EUcvoccS8nCPJJYIdKoF90zqSZkTb0mfpy3vw2r6M3YfuVchJZofszp0+obsJ6 Rt1MfCZFc9/MseGX1sDUN6ZdQ1YMIWq3cMbO8ygikyrJWX20HNXPu2Ac+PBrKx/1zHS0 RXlILV18rp6J+4Z4TiRvrAc7AWKonP1r+C5S/c8jo9+ZaLUp1VDwzpaQn0bpficLOCVr X/yw== X-Gm-Message-State: AOJu0YyJO1modkB9vzkzQOPY1YII8CHPMxywyQ0SRs1qCBCpzcMXOLa2 CqQV7k2eJ/Ze/+WQzZPY0lYCnULRo0B7Hg== X-Google-Smtp-Source: AGHT+IGSYK9Z0OCElN6+fJ1nmEC3AILBrxilRYAVF0NuFCONPRfo4ihH+yWHuV0neRSF2qmS/zs7mg== X-Received: by 2002:a19:6d09:0:b0:4f9:556b:93c2 with SMTP id i9-20020a196d09000000b004f9556b93c2mr6358366lfc.1.1692784543567; Wed, 23 Aug 2023 02:55:43 -0700 (PDT) Received: from ulrikm-thinkpad.spotify.net (h-37-123-131-56.A498.priv.bahnhof.se. [37.123.131.56]) by smtp.gmail.com with ESMTPSA id c2-20020ac25302000000b004fe48530a1asm2597076lfh.99.2023.08.23.02.55.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 23 Aug 2023 02:55:43 -0700 (PDT) From: Ulrik Mikaelsson To: ffmpeg-devel@ffmpeg.org Date: Wed, 23 Aug 2023 11:55:05 +0200 Message-Id: <20230823095505.490814-1-ulrik.mikaelsson@gmail.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2] avformat/mp3dec: Subtract known padding from 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 Cc: Ulrik Mikaelsson Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: When an Info-tag is present, marking initial and trailing samples as padding, those samples should not be included in the calculation of track duration. This solves a surprising user experience where converting a WAV->MP3->WAV, ffprobe will show the duration of the mp3 as slightly longer than both the input and the output. --- libavformat/mp3dec.c | 3 ++- tests/ref/fate/gapless-mp3-side-data | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/libavformat/mp3dec.c b/libavformat/mp3dec.c index 05c13228bc..54947f521e 100644 --- a/libavformat/mp3dec.c +++ b/libavformat/mp3dec.c @@ -350,7 +350,8 @@ static int mp3_parse_vbr_tags(AVFormatContext *s, AVStream *st, int64_t base) avio_seek(s->pb, base + vbrtag_size, SEEK_SET); if (mp3->frames) - st->duration = av_rescale_q(mp3->frames, (AVRational){spf, c.sample_rate}, + st->duration = av_rescale_q(((uint64_t)mp3->frames * (uint64_t)spf) - mp3->start_pad - mp3->end_pad, + (AVRational){1, c.sample_rate}, st->time_base); if (mp3->header_filesize && mp3->frames && !mp3->is_cbr) st->codecpar->bit_rate = av_rescale(mp3->header_filesize, 8 * c.sample_rate, mp3->frames * (int64_t)spf); diff --git a/tests/ref/fate/gapless-mp3-side-data b/tests/ref/fate/gapless-mp3-side-data index caf42068dc..495a5bb865 100644 --- a/tests/ref/fate/gapless-mp3-side-data +++ b/tests/ref/fate/gapless-mp3-side-data @@ -596,5 +596,5 @@ packet|codec_type=audio|stream_index=0|pts=218603520|pts_time=15.490612|dts=2186 packet|codec_type=audio|stream_index=0|pts=218972160|pts_time=15.516735|dts=218972160|dts_time=15.516735|duration=368640|duration_time=0.026122|size=418|pos=249718|flags=K__|data_hash=CRC32:3789f3cf|side_data|side_data_type=Skip Samples|skip_samples=0|discard_padding=1152|skip_reason=0|discard_reason=0 -stream|index=0|codec_name=mp3|profile=unknown|codec_type=audio|codec_tag_string=[0][0][0][0]|codec_tag=0x0000|sample_fmt=fltp|sample_rate=44100|channels=2|channel_layout=stereo|bits_per_sample=0|initial_padding=0|id=N/A|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/14112000|start_pts=353600|start_time=0.025057|duration_ts=219340800|duration=15.542857|bit_rate=128000|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=595|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|disposition:captions=0|disposition:descriptions=0|disposition:metadata=0|disposition:dependent=0|disposition:still_image=0|tag:encoder=LAME3.93 -format|filename=gapless.mp3|nb_streams=1|nb_programs=0|format_name=mp3|start_time=0.025057|duration=15.542857|size=250264|bit_rate=128812|probe_score=51|tag:title=test +stream|index=0|codec_name=mp3|profile=unknown|codec_type=audio|codec_tag_string=[0][0][0][0]|codec_tag=0x0000|sample_fmt=fltp|sample_rate=44100|channels=2|channel_layout=stereo|bits_per_sample=0|initial_padding=0|id=N/A|r_frame_rate=0/0|avg_frame_rate=0/0|time_base=1/14112000|start_pts=353600|start_time=0.025057|duration_ts=218521600|duration=15.484807|bit_rate=128000|max_bit_rate=N/A|bits_per_raw_sample=N/A|nb_frames=N/A|nb_read_frames=N/A|nb_read_packets=595|disposition:default=0|disposition:dub=0|disposition:original=0|disposition:comment=0|disposition:lyrics=0|disposition:karaoke=0|disposition:forced=0|disposition:hearing_impaired=0|disposition:visual_impaired=0|disposition:clean_effects=0|disposition:attached_pic=0|disposition:timed_thumbnails=0|disposition:captions=0|disposition:descriptions=0|disposition:metadata=0|disposition:dependent=0|disposition:still_image=0|tag:encoder=LAME3.93 +format|filename=gapless.mp3|nb_streams=1|nb_programs=0|format_name=mp3|start_time=0.025057|duration=15.484807|size=250264|bit_rate=129295|probe_score=51|tag:title=test -- 2.39.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".