From patchwork Tue Jan 26 16:43:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25200 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 4DDDF44BDFF for ; Tue, 26 Jan 2021 18:44:06 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3867C689956; Tue, 26 Jan 2021 18:44:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EEBF1688342 for ; Tue, 26 Jan 2021 18:43:57 +0200 (EET) Received: by mail-wm1-f44.google.com with SMTP id o10so1767039wmc.1 for ; Tue, 26 Jan 2021 08:43:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=+AO701hCIrXKMaAcXBsLjN4cHJLe8lA1O9mkkaPn78Q=; b=WS4te8Y1mUKmt4MqlyiubMOMmKSJO5X1OQCbkA7TGmD3gGC3/gPgUhBeqa//s1Tzhm a1iIjFjZciFTVQe4Eq2iYsuRNdSo6vdzBiFXtcRMY8vtOErUjqKtAeDSA+eAHZ5xmNh+ bWtF1ZmGpMmubf8x9KqkllFpxT3hZMeUjLe2bU2UPGd6qgpzvJi4Qm1e+NUyGXjksAL0 52TG0SbPOXV/SWz23DJ2j7PYxKkb54FIolaCpjo8AEmoyiS3psei/pksPPoOJLdd+YH+ nQ4VrGy8sel3HS8hRvINc4jAVA3UPz5GFuYIflG4CPu3s+y7kn3BRDa1NxITS7XpSysQ drTw== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=+AO701hCIrXKMaAcXBsLjN4cHJLe8lA1O9mkkaPn78Q=; b=R1DN4D6HL8ajCdKYsVKeoLNZDZy/QAgCKSvB5S5EVMnyR30HBt678oM27wEzixo1BK +hvwNTa60/PXytBd4fRC43x7HwW9GQXlMwUuQlMETX3Tq87UmGwiI/AyM6cPpbBCwG4q MgOWCdZripYBckVEHpnFnXAJWoT4OpH8DnTEYWzMEeQ1MN8yMKq7/si7oB6JLBJyjA2U WdMSQx2XgjYiOwLJU0M8TmVNFQNswC2hRxmGXuuVpDp3zyQ35l/Ane46vvnxEFBE4TGG T1F6ilgsKGNxrcsbc3aOAyGZU9ds6O63+2obAIojgpesltm4JttOPkBpxUWS6Ctk3Ifo MW4w== X-Gm-Message-State: AOAM5322KG5Rn8/w8JsTpvgVSikyuDTInQDqAYG7ycy12IwGLuZFWmgv 8MldEO7RlrXTDYnEjWxPP0x8gmM+6RY= X-Google-Smtp-Source: ABdhPJzwoqXeIWvn3BerRAwL1brwtKR7Hgh3OY9kCl/yTUoNpCnOL3ade/uHJv8Kx//UmvfDQZRamA== X-Received: by 2002:a1c:a4c1:: with SMTP id n184mr577389wme.112.1611679437238; Tue, 26 Jan 2021 08:43:57 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id h23sm4156798wmi.26.2021.01.26.08.43.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 26 Jan 2021 08:43:56 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 26 Jan 2021 17:43:28 +0100 Message-Id: <20210126164328.1889908-4-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210126164328.1889908-1-andreas.rheinhardt@gmail.com> References: <20210126164328.1889908-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4] avcodec/dolby_e: Avoid duplicating sample rate table 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Set the sample rate when parsing the header instead and only copy the value in the decoder and the parser. Signed-off-by: Andreas Rheinhardt --- libavcodec/dolby_e.c | 2 +- libavcodec/dolby_e.h | 6 ++---- libavcodec/dolby_e_parse.c | 6 +++++- libavcodec/dolby_e_parser.c | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/libavcodec/dolby_e.c b/libavcodec/dolby_e.c index 9031c18210..ecb2f4802a 100644 --- a/libavcodec/dolby_e.c +++ b/libavcodec/dolby_e.c @@ -1105,7 +1105,7 @@ static int dolby_e_decode_frame(AVCodecContext *avctx, void *data, } avctx->channels = s->metadata.nb_channels; - avctx->sample_rate = sample_rate_tab[s->metadata.fr_code]; + avctx->sample_rate = s->metadata.sample_rate; avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; i = s->metadata.nb_channels / 2; diff --git a/libavcodec/dolby_e.h b/libavcodec/dolby_e.h index 32471bce80..9f0c065729 100644 --- a/libavcodec/dolby_e.h +++ b/libavcodec/dolby_e.h @@ -58,6 +58,8 @@ typedef struct DolbyEHeaderInfo { * @{ */ int multi_prog_warned; + + int sample_rate; /** @} */ } DolbyEHeaderInfo; @@ -81,10 +83,6 @@ typedef struct DBEContext { uint8_t buffer[1024 * 3 + AV_INPUT_BUFFER_PADDING_SIZE]; } DBEContext; -static const uint16_t sample_rate_tab[16] = { - 0, 42965, 43008, 44800, 53706, 53760 -}; - /** * Use the provided key to transform the input into data (put into s->buffer) * suitable for further processing and initialize s->gb to read said data. diff --git a/libavcodec/dolby_e_parse.c b/libavcodec/dolby_e_parse.c index 00b5536020..ffedcd99a4 100644 --- a/libavcodec/dolby_e_parse.c +++ b/libavcodec/dolby_e_parse.c @@ -30,6 +30,10 @@ static const uint8_t nb_channels_tab[MAX_PROG_CONF + 1] = { 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 6, 6, 6, 6, 6, 6, 4, 4, 4, 4, 8, 8 }; +static const uint16_t sample_rate_tab[16] = { + 0, 42965, 43008, 44800, 53706, 53760 +}; + static int skip_input(DBEContext *s, int nb_words) { if (nb_words > s->input_size) { @@ -145,7 +149,7 @@ int ff_dolby_e_parse_header(DBEContext *s, const uint8_t *buf, int buf_size) header->fr_code = get_bits(&s->gb, 4); header->fr_code_orig = get_bits(&s->gb, 4); - if (!sample_rate_tab[header->fr_code] || + if (!(header->sample_rate = sample_rate_tab[header->fr_code]) || !sample_rate_tab[header->fr_code_orig]) { if (s->avctx) av_log(s->avctx, AV_LOG_ERROR, "Invalid frame rate code\n"); diff --git a/libavcodec/dolby_e_parser.c b/libavcodec/dolby_e_parser.c index 8e713b44ed..3ae973bddf 100644 --- a/libavcodec/dolby_e_parser.c +++ b/libavcodec/dolby_e_parser.c @@ -51,7 +51,7 @@ static int dolby_e_parse(AVCodecParserContext *s2, AVCodecContext *avctx, } avctx->channels = s->metadata.nb_channels; - avctx->sample_rate = sample_rate_tab[s->metadata.fr_code]; + avctx->sample_rate = s->metadata.sample_rate; avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; end: