From patchwork Sun Sep 20 17:06:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 22538 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 6BC1844B943 for ; Sun, 20 Sep 2020 20:06:45 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5525768B9F3; Sun, 20 Sep 2020 20:06:45 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F0D8768B5C9 for ; Sun, 20 Sep 2020 20:06:35 +0300 (EEST) Received: by mail-lj1-f193.google.com with SMTP id c2so9123911ljj.12 for ; Sun, 20 Sep 2020 10:06:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=r+4RF+fmxLDSFU/JYYtsuY1mtlVe/FRs4jH/Hjs4DXw=; b=l62+HUvm4CQeOT/eLSZYB8xW32XMGcoHwq0R55FKJCboUS09hFivOnyKL5+/btG+3o ZpSmLvaF9SH2NSfre8Jy8dkco4MLwfeknKn2stAcnGQScTcrqZXE8MISbzRLNNT8JFkt LrZpPauXiphWu9krYUz9THON3YCvmYyJT5Fa5BeUQAs1ZbE2xbZxNjU6jKERt7HDLc0O OGEA9VVtFX1Gyiua1ykiosfAlqWQ8FQwT5+erUxDALSI5Ozk23CRGPbZR5lu1gfNM9cC tGzV0n9AXklwECJTF4Adn/+g5GmspKL3MUHEFJ/L2bS6mY/ZM7L0AvT7Fcdgb3gCRn8A ngBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=r+4RF+fmxLDSFU/JYYtsuY1mtlVe/FRs4jH/Hjs4DXw=; b=DMAZBwDz05PGOmZTw26ojvBDmTYBnbHHoYVPYOZCfNAdGTIJsEzYrw/oLaQ/pzUd93 mCfZx0SPBVmmfomP3vcVVCVYlzlM5DRr5AVYLSzNAwfDsVv5GktLeelA+3Tp7WW0OQDM uf6A2CJpz2NUSkJ+20pB9MfNBykIf5XT7g9uFwRKZJg5X05YWojbgF9R+IGn7964r/7/ geVCEFSGAiQXxouTfZ/ZpoV0y0M73goOlD8bj4goAS3Bjijl709EiU0SQwOywWZVJAnL rIhPzk9AXhg7I4ODOSkZpWTL8Z7bN3CHdZ2MeIejfzwUmA67AxsFC4uqLav+mxVAAWeT tcXw== X-Gm-Message-State: AOAM532aNXUMLLMst1ogzPMJKtAUMG5YpyHTei+QeV4D9dyc019NiQDO +61gkERGeYfeCpm0psRIQ1zJydceqzk= X-Google-Smtp-Source: ABdhPJx879Zft4VSiiGBR/bMVPmwijYzVZ/KrJahIsoINV0BXOA2IPpjtcze805cLS7Q2noRreuAEQ== X-Received: by 2002:a2e:545:: with SMTP id 66mr15677023ljf.469.1600621594980; Sun, 20 Sep 2020 10:06:34 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id x14sm1909108lfc.93.2020.09.20.10.06.34 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 20 Sep 2020 10:06:34 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sun, 20 Sep 2020 20:06:28 +0300 Message-Id: <20200920170629.26504-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200920170629.26504-1-jeebjp@gmail.com> References: <20200920170629.26504-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/5] avformat/movenc: use more fall-back values for average bit rate fields 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" If the average bit rate cannot be calculated, such as in the case of streamed fragmented mp4, utilize various available parameters in priority order. Tests are updated where the esds or btrt or ISML manifest boxes' output changes. --- libavformat/movenc.c | 17 +++++++++++++++++ tests/ref/lavf/ismv | 6 +++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 9bff2c89ca..0f14e255e9 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -647,6 +647,23 @@ static struct mpeg4_bit_rate_values calculate_mpeg4_bit_rates(MOVTrack *track) NULL); unsigned avg_bit_rate = compute_avg_bitrate(track); + if (!avg_bit_rate) { + // if there is no calculate'able average bit rate, such as + // in the case of fragmented MP4, utilize the following values + // in priority order: + // + // 1. average bit rate property + // 2. bit rate (usually average over the whole clip) + // 3. maximum bit rate property + + if (props && props->avg_bitrate) { + avg_bit_rate = props->avg_bitrate; + } else if (track->par->bit_rate) { + avg_bit_rate = track->par->bit_rate; + } else if (props && props->max_bitrate) { + avg_bit_rate = props->max_bitrate; + } + } return (struct mpeg4_bit_rate_values){ .buffer_size = props ? props->buffer_size / 8 : 0, diff --git a/tests/ref/lavf/ismv b/tests/ref/lavf/ismv index e7361705fa..ac7f72ba33 100644 --- a/tests/ref/lavf/ismv +++ b/tests/ref/lavf/ismv @@ -1,9 +1,9 @@ -4c6bc5ac805a76bbbd886a69d2e61554 *tests/data/lavf/lavf.ismv +48fb8d7a5d19bd60f3a49ccf4b7d6593 *tests/data/lavf/lavf.ismv 313169 tests/data/lavf/lavf.ismv tests/data/lavf/lavf.ismv CRC=0x9d9a638a -18678627921460328ea3fed238d0d57d *tests/data/lavf/lavf.ismv +d19cd8e310a2e94fe0a0d11c5dc29217 *tests/data/lavf/lavf.ismv 322075 tests/data/lavf/lavf.ismv tests/data/lavf/lavf.ismv CRC=0xe8130120 -b9a858caf55b1eff2273e746e9f72dc4 *tests/data/lavf/lavf.ismv +3b6023766845b51b075aed474c00f73c *tests/data/lavf/lavf.ismv 312546 tests/data/lavf/lavf.ismv tests/data/lavf/lavf.ismv CRC=0x9d9a638a