From patchwork Fri Mar 27 18:00:03 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 18443 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 BD52F44B160 for ; Fri, 27 Mar 2020 20:00:22 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 983D468B6DE; Fri, 27 Mar 2020 20:00:22 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io1-f47.google.com (mail-io1-f47.google.com [209.85.166.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 13B1968B497 for ; Fri, 27 Mar 2020 20:00:16 +0200 (EET) Received: by mail-io1-f47.google.com with SMTP id q9so10796204iod.4 for ; Fri, 27 Mar 2020 11:00:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=J+ZB06/ePSYrrAya0g/LTjFFNbHVQEv2jqBYp6UnEeQ=; b=usDTW44WQGuStSj7exW5gyuLklHyXach22YDTLRNc2aXVQQhpfGWpJbZSx0DH7kUJC A1Eq2GuugFp2tFofGC8iR3ga62K0/YmeGMUx0e9LVKTqMZIG4vuWi22ZAXMGnkD5kUyO 29l4fJoc7rAcZ3v8T9lZU2+pT8Q7OVNfIpmFQpnOgg8d7+enwmF1lY4SORDDIQi9yjQB R4JLm4pjSmsCtbhQiZDqtiVxb1jEJrfIGCHescW2K14btWBEv7jprrcsq/tiRd9u6Ry7 a3HMxvtWrzak5mVKM3qFYA9kfJ2+9aspTeISOe6nHIbLU/6Vp/Gr/KKt6DdLjXr3xWUX Qjyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=J+ZB06/ePSYrrAya0g/LTjFFNbHVQEv2jqBYp6UnEeQ=; b=Zn6e1fDoooMOvKggfDCxVh6sqtNr9tDiT8+tavcNDripbKqO0EBtyGpqwR1TVqVBoB ciAg5KqpbGIDlVyjp3wnikprKqN9o04gvwxPPyodWVCJZBbaRxK4UtHvOV5rf4vfqWA5 7ExEnHNV3k8f7PuAgBrouBTSkEtkC49nh2TAUdymkZyP/xFGfFVHQYNgJq1Zv6WYvgEO sFslbb10L2GE7jS6w6GhVzmLpBZnNHH15y7lh4HK/9fjiTjl10XzwBCkyikLfR86x3Zw f2B+MUHCi9m+RA8Qy2FyKS/dXeHy423CJN7PJ1NXZLbYZHGed4kh5wJ49pm6XDNOOIbJ VUkw== X-Gm-Message-State: ANhLgQ0r2/S4nMYRNd7F3OKXB6tizbZaU44IiLP8oDrI8z98ZDnljcPb aK/75UdJ27p7ANUJb60BOZ42BseEuEBWndFqhHdZAg== X-Google-Smtp-Source: ADFU+vsWxL3EesqD6I/3iY4WpV4Zw7mkFD6gjh6iUqm0qljXXK9LsP5DlA8I9Fk+n5Mk2fWHu2C9bYHtsg8CiqRtLQA= X-Received: by 2002:a02:8184:: with SMTP id n4mr73327jag.31.1585332014338; Fri, 27 Mar 2020 11:00:14 -0700 (PDT) MIME-Version: 1.0 From: Carl Eugen Hoyos Date: Fri, 27 Mar 2020 19:00:03 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH]lavc/aacdec_template: Only warn once about unusual 7.1 encoding 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" Hi! Attached patch reduces warnings when decoding a file with 7.1(wide) aac encoding. Please comment, Carl Eugen From fbbfb50842a5e47ac8aab34308c278d17df6ba12 Mon Sep 17 00:00:00 2001 From: Carl Eugen Hoyos Date: Fri, 27 Mar 2020 18:52:16 +0100 Subject: [PATCH] lavc/aacdec_template: Only warn once about unusual 7.1 encoding. --- libavcodec/aac.h | 2 +- libavcodec/aacdec_template.c | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/libavcodec/aac.h b/libavcodec/aac.h index c2b9c980cb..d3355f1b73 100644 --- a/libavcodec/aac.h +++ b/libavcodec/aac.h @@ -356,7 +356,7 @@ struct AACContext { OutputConfiguration oc[2]; int warned_num_aac_frames; int warned_960_sbr; - + int warned_71_wide; int warned_gain_control; /* aacdec functions pointers */ diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index bb11de3458..8f647667ee 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -520,14 +520,14 @@ static void flush(AVCodecContext *avctx) * * @return Returns error status. 0 - OK, !0 - error */ -static int set_default_channel_config(AVCodecContext *avctx, +static int set_default_channel_config(AACContext *ac, uint8_t (*layout_map)[3], int *tags, int channel_config) { if (channel_config < 1 || (channel_config > 7 && channel_config < 11) || channel_config > 12) { - av_log(avctx, AV_LOG_ERROR, + av_log(ac->avctx, AV_LOG_ERROR, "invalid default channel configuration (%d)\n", channel_config); return AVERROR_INVALIDDATA; @@ -547,8 +547,8 @@ static int set_default_channel_config(AVCodecContext *avctx, * As actual intended 7.1(wide) streams are very rare, default to assuming a * 7.1 layout was intended. */ - if (channel_config == 7 && avctx->strict_std_compliance < FF_COMPLIANCE_STRICT) { - av_log(avctx, AV_LOG_INFO, "Assuming an incorrectly encoded 7.1 channel layout" + if (!ac->warned_71_wide++ && channel_config == 7 && ac->avctx->strict_std_compliance < FF_COMPLIANCE_STRICT) { + av_log(ac->avctx, AV_LOG_INFO, "Assuming an incorrectly encoded 7.1 channel layout" " instead of a spec-compliant 7.1(wide) layout, use -strict %d to decode" " according to the specification instead.\n", FF_COMPLIANCE_STRICT); layout_map[2][2] = AAC_CHANNEL_SIDE; @@ -573,7 +573,7 @@ static ChannelElement *get_che(AACContext *ac, int type, int elem_id) av_log(ac->avctx, AV_LOG_DEBUG, "mono with CPE\n"); - if (set_default_channel_config(ac->avctx, layout_map, + if (set_default_channel_config(ac, layout_map, &layout_map_tags, 2) < 0) return NULL; if (output_configure(ac, layout_map, layout_map_tags, @@ -592,7 +592,7 @@ static ChannelElement *get_che(AACContext *ac, int type, int elem_id) av_log(ac->avctx, AV_LOG_DEBUG, "stereo with SCE\n"); - if (set_default_channel_config(ac->avctx, layout_map, + if (set_default_channel_config(ac, layout_map, &layout_map_tags, 1) < 0) return NULL; if (output_configure(ac, layout_map, layout_map_tags, @@ -841,7 +841,7 @@ static int decode_ga_specific_config(AACContext *ac, AVCodecContext *avctx, if (tags < 0) return tags; } else { - if ((ret = set_default_channel_config(avctx, layout_map, + if ((ret = set_default_channel_config(ac, layout_map, &tags, channel_config))) return ret; } @@ -937,7 +937,7 @@ static int decode_eld_specific_config(AACContext *ac, AVCodecContext *avctx, skip_bits_long(gb, 8 * len); } - if ((ret = set_default_channel_config(avctx, layout_map, + if ((ret = set_default_channel_config(ac, layout_map, &tags, channel_config))) return ret; @@ -1200,7 +1200,7 @@ static av_cold int aac_decode_init(AVCodecContext *avctx) ac->oc[1].m4ac.chan_config = i; if (ac->oc[1].m4ac.chan_config) { - int ret = set_default_channel_config(avctx, layout_map, + int ret = set_default_channel_config(ac, layout_map, &layout_map_tags, ac->oc[1].m4ac.chan_config); if (!ret) output_configure(ac, layout_map, layout_map_tags, @@ -3002,7 +3002,7 @@ static int parse_adts_frame_header(AACContext *ac, GetBitContext *gb) push_output_configuration(ac); if (hdr_info.chan_config) { ac->oc[1].m4ac.chan_config = hdr_info.chan_config; - if ((ret = set_default_channel_config(ac->avctx, + if ((ret = set_default_channel_config(ac, layout_map, &layout_map_tags, hdr_info.chan_config)) < 0) -- 2.24.1