From patchwork Sun May 17 07:24:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jun Zhao X-Patchwork-Id: 19721 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 A7873449CD1 for ; Sun, 17 May 2020 10:52:41 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 81C63680B6C; Sun, 17 May 2020 10:52:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi1-f196.google.com (mail-oi1-f196.google.com [209.85.167.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 865F66804D5 for ; Sun, 17 May 2020 10:52:34 +0300 (EEST) Received: by mail-oi1-f196.google.com with SMTP id s198so6299841oie.6 for ; Sun, 17 May 2020 00:52:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=ME7IUSqnmAr7j/HFXVy4q34QZtYUQxCBJ0sxZwClQbg=; b=lw2E58M8imG9Ckih8QELNvcr/NRCKP6l6HNSn1l49l//Gt5bGGe8yCigIfcjqB7ySO L7WrD8ECL3/omXJ6trLY5P82Xl7GMexWlY9Ee8b+JRbXky6qoSvZNiHRBYAMHgvX6gSo ENmZbiLN7L3IjNuRCUQAeiK1kIWf0G/iKwH/JOvw5cBkhwMWumZaOLoF05XsqGcqsrYx 4SLATTvkjODOXXmO6BeMZQGOq5hms+0g5OmlvdApFIFAAmL2dEkUNYjlv0DS11wm0ZlH XvH5iLgZGqy5mEwxuiyc20zb4bC3U2I5qpaHK2LMvKROspF58Js4Ord0kuNyiMjV8RdS FAVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ME7IUSqnmAr7j/HFXVy4q34QZtYUQxCBJ0sxZwClQbg=; b=EHaYiRlpa/e1HpKke6X4upqRl+UhrzOfYh6ZWFykRl/KIVIeVKdmjE7TcdDY/e7eNP EnKQxIDd+J7S2oE8Cwo1jEl2k81/Nf7TTJrGP3B89XNM1rPWlwIwmsy5gGL300P06STl LtBzvsMB2NQznjdHOEPiAOo5TBpcBCC0QqXDU65F62AJkLOCqqvNspZkJuJnbBXxKdgC SlQdkUwE+6DAnKR8Oi0aIZkjAvVrB3neuzrwSJmk1nT+hF0Qas8Ek4s23JlT5jEm5ZdK mm2SmoAqx1lMDxpr9Hk7ans86AcX+SR6VNiDqhr29hEhi4MfyBUWsi1s638A6EmbfHxI L0VA== X-Gm-Message-State: AOAM5331hojejsbE3htWCwkhxcGvAJMLRthYgLXU9EhOcdeytjVxfUcv lrVSeAxcqirOPZ/BsqGsOu05it5N X-Google-Smtp-Source: ABdhPJyWGNyl3Ju+kUPNbUgkxv+GV3VXG6vrFRlwyIdSAVzj3uaND5Fxsv0zQQH4IwYCml7/xdF9iA== X-Received: by 2002:a17:90a:7e4:: with SMTP id m91mr12599560pjm.155.1589700301875; Sun, 17 May 2020 00:25:01 -0700 (PDT) Received: from localhost.localdomain ([49.51.162.193]) by smtp.gmail.com with ESMTPSA id w186sm5840740pff.83.2020.05.17.00.24.59 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 17 May 2020 00:25:00 -0700 (PDT) From: Jun Zhao To: ffmpeg-devel@ffmpeg.org Date: Sun, 17 May 2020 15:24:44 +0800 Message-Id: <1589700286-4129-1-git-send-email-mypopydev@gmail.com> X-Mailer: git-send-email 2.7.4 Subject: [FFmpeg-devel] [PATCH 1/3] lavc/aac_ac3_parser: improve the raw AAC file bit rate calculation 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: Jun Zhao MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Jun Zhao Now we just use one ADTS raw frame to calculate the bit rate, it's lead to a larger error when get the duration from bit rate, the improvement cumulate Nth ADTS frames to get the average bit rate. e,g used the command get the duration like: ffprobe -show_entries format=duration -i fate-suite/aac/foo.aac before this improvement dump the duration=2.173935 after this improvement dump the duration=1.979267 in fact, the real duration can be get by command like: ffmpeg -i fate-suite/aac/foo.aac -f null /dev/null with time=00:00:01.97 Also update the fate-adtstoasc_ticket3715. Signed-off-by: Jun Zhao --- libavcodec/aac_ac3_parser.c | 9 +++++++-- libavcodec/aac_ac3_parser.h | 2 ++ tests/ref/fate/adtstoasc_ticket3715 | 2 +- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/libavcodec/aac_ac3_parser.c b/libavcodec/aac_ac3_parser.c index 54e4598..0746798 100644 --- a/libavcodec/aac_ac3_parser.c +++ b/libavcodec/aac_ac3_parser.c @@ -97,8 +97,13 @@ get_next: avctx->audio_service_type = s->service_type; } - if (avctx->codec_id != AV_CODEC_ID_EAC3) - avctx->bit_rate = s->bit_rate; + /* Calculate the average bit rate */ + s->frame_number++; + if (avctx->codec_id != AV_CODEC_ID_EAC3) { + avctx->bit_rate = + (s->last_bit_rate * (s->frame_number -1) + s->bit_rate)/s->frame_number; + s->last_bit_rate = avctx->bit_rate; + } } return i; diff --git a/libavcodec/aac_ac3_parser.h b/libavcodec/aac_ac3_parser.h index c2506a5..b04041f 100644 --- a/libavcodec/aac_ac3_parser.h +++ b/libavcodec/aac_ac3_parser.h @@ -55,6 +55,8 @@ typedef struct AACAC3ParseContext { uint64_t state; int need_next_header; + int frame_number; + int last_bit_rate; enum AVCodecID codec_id; } AACAC3ParseContext; diff --git a/tests/ref/fate/adtstoasc_ticket3715 b/tests/ref/fate/adtstoasc_ticket3715 index 49fa3eb..3b473ee 100644 --- a/tests/ref/fate/adtstoasc_ticket3715 +++ b/tests/ref/fate/adtstoasc_ticket3715 @@ -1,4 +1,4 @@ -4110be924e21846d0e174fac679b062e *tests/data/fate/adtstoasc_ticket3715.mov +3e63cbb6bb6ec756d79fab2632fef305 *tests/data/fate/adtstoasc_ticket3715.mov 33324 tests/data/fate/adtstoasc_ticket3715.mov #extradata 0: 2, 0x00340022 #tb 0: 1/44100