From patchwork Mon Sep 26 17:13:38 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jon Toohill X-Patchwork-Id: 727 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.140.66 with SMTP id o63csp2026195vsd; Mon, 26 Sep 2016 10:14:26 -0700 (PDT) X-Received: by 10.194.127.101 with SMTP id nf5mr1156391wjb.54.1474910065883; Mon, 26 Sep 2016 10:14:25 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w1si20265747wje.194.2016.09.26.10.14.25; Mon, 26 Sep 2016 10:14:25 -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=@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 6FD51689E99; Mon, 26 Sep 2016 20:13:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf0-f172.google.com (mail-pf0-f172.google.com [209.85.192.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ECD80689E7C for ; Mon, 26 Sep 2016 20:13:39 +0300 (EEST) Received: by mail-pf0-f172.google.com with SMTP id l25so19639668pfb.1 for ; Mon, 26 Sep 2016 10:13:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5Z2j0CgWOa0NavlhvdGoWVYlGWEMJ/+ICkqUUBglJ8s=; b=kojKxKba6+009QA+f65CaYuD4NLbwZaNPh4BzQpwCkYOszPFOSEjZr8YRNuZJ4VQKj rixRxhjcqOpfb4ostMA+W0yiBe9zModCYif0yiAAuDCRdTl+m6w+C/xmpqRcxqzM9/ZJ hf4C/50d9xiuDzzsHjqDYy6Ck1zTvh8ywELkvcLMO+RlzGmBGQ985a7yw037dQEwQjPf 0b2bFeMI6c8J4kIdRvoSLjbz5515HHgP8aK90wKmg0+agAmQaXam+LMeYSaR26KwMkOp vw9o2O8Y1l2W9fI0teO74PuhwenpcosFKpcjj5CY9PCODvvzlEUGuX/Y/VtcOaWEdpnp q0JA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=5Z2j0CgWOa0NavlhvdGoWVYlGWEMJ/+ICkqUUBglJ8s=; b=jtAGREzPWqGd3QfEoWoU/TnRunG14Ke+uets0yugos6gOqM+4CvGFnBsB49MEwacNI 4QEQPbb4FM0MX5aBLlRYei1WQ5vXsfB4CPgy9mjqGBjbdh7w2M/YBV6u3/etKxxmA9cN vg7WgS66b1ZRzdkPja7ZKjiSSeU2jimW4Orep3e9nFipPoe0KO92+PxNn+5Rk080UxrT Es1ci+0o+5HYHq8H9B32TVINhbtljYwFZgP3Tyn+Cu4WBlwSqXKgoFP1xz4kDBFiPEtZ XqlICZIxDU+q6xGCodEhleiLuOKZlRp0gV43mC4HXVdHigq1Hf6T2E5cUCWaLsCCWnFi O3MQ== X-Gm-Message-State: AE9vXwM/+xwSLJy0+W2xDeqO1petSyVYt1Z711P0lguL1U4tKr9Dt4D0dBKGtejgiaZ1nscC X-Received: by 10.98.70.132 with SMTP id o4mr40973834pfi.132.1474910035864; Mon, 26 Sep 2016 10:13:55 -0700 (PDT) Received: from mungolini.mtv.corp.google.com ([100.96.2.73]) by smtp.gmail.com with ESMTPSA id c66sm32499223pfd.24.2016.09.26.10.13.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 26 Sep 2016 10:13:55 -0700 (PDT) From: Jon Toohill To: ffmpeg-devel@ffmpeg.org Date: Mon, 26 Sep 2016 10:13:38 -0700 Message-Id: <1474910019-13882-4-git-send-email-jtoohill@google.com> X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: <1474910019-13882-1-git-send-email-jtoohill@google.com> References: <1474910019-13882-1-git-send-email-jtoohill@google.com> Subject: [FFmpeg-devel] [PATCH 3/4] lavf/mp3enc: write encoder delay/padding upon closing 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: Jon Toohill MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" trailing_padding is not known before encoding. --- libavformat/mp3enc.c | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/libavformat/mp3enc.c b/libavformat/mp3enc.c index de63401..433b070 100644 --- a/libavformat/mp3enc.c +++ b/libavformat/mp3enc.c @@ -247,12 +247,7 @@ static int mp3_write_xing(AVFormatContext *s) ffio_fill(dyn_ctx, 0, 8); // empty replaygain fields avio_w8(dyn_ctx, 0); // unknown encoding flags avio_w8(dyn_ctx, 0); // unknown abr/minimal bitrate - - // encoder delay - if (par->initial_padding - 528 - 1 >= 1 << 12) { - av_log(s, AV_LOG_WARNING, "Too many samples of initial padding.\n"); - } - avio_wb24(dyn_ctx, FFMAX(par->initial_padding - 528 - 1, 0)<<12); + avio_wb24(dyn_ctx, 0); // empty encoder delay/padding avio_w8(dyn_ctx, 0); // misc avio_w8(dyn_ctx, 0); // mp3gain @@ -381,7 +376,7 @@ static void mp3_update_xing(AVFormatContext *s) AVReplayGain *rg; uint16_t tag_crc; uint8_t *toc; - int i, rg_size; + int i, rg_size, delay, padding; /* replace "Xing" identification string with "Info" for CBR files. */ if (!mp3->has_variable_bitrate) @@ -422,6 +417,17 @@ static void mp3_update_xing(AVFormatContext *s) } } + /* write encoder delay/padding */ + delay = FFMAX(s->streams[0]->codec->initial_padding - 528 - 1, 0); + padding = s->streams[0]->codec->trailing_padding; + if (delay >= 1 << 12) { + av_log(s, AV_LOG_WARNING, "Too many samples of initial padding.\n"); + } + if (padding >= 1 << 12) { + av_log(s, AV_LOG_WARNING, "Too many samples of initial padding.\n"); + } + AV_WB24(mp3->xing_frame + mp3->xing_offset + 141, (delay << 12) + padding); + AV_WB32(mp3->xing_frame + mp3->xing_offset + XING_SIZE - 8, mp3->audio_size); AV_WB16(mp3->xing_frame + mp3->xing_offset + XING_SIZE - 4, mp3->audio_crc);