From patchwork Wed Jul 29 11:39:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 21359 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 6D1EE44B092 for ; Wed, 29 Jul 2020 14:45:34 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 55CF068BA52; Wed, 29 Jul 2020 14:45:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f182.google.com (mail-lj1-f182.google.com [209.85.208.182]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E123868B9F5 for ; Wed, 29 Jul 2020 14:45:27 +0300 (EEST) Received: by mail-lj1-f182.google.com with SMTP id q7so24696762ljm.1 for ; Wed, 29 Jul 2020 04:45:27 -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=ygUdSx3uk/PnGSjwvbPNW1Ftvhx1EX4wU0qBZRN4KFg=; b=czpv1WMdYHNgjdSb7RyeD84MRXj+VznzMVC+OssY9xIwLMRi/lPwuRsMMdE+aiLc/Y Gq3ZALpcr5Cgm7Kvap/pMTldDVqoi+K5bxUlvHwhN6Nt9UHgiSfDC4KbMn244enliO9q 0HoJqRQr0oVOCjD0YVXQx7r4f/OjCoflgyZUHoLtKBljO2lQZY62bkrnOsZMUyS9abiP CWEyfPmu+UDCGAGpzbAVELN01RDEzm1aH91T9HlUTKJB75Cm0+AMXmLeWM70y86RO9KQ ksL0UAFASeDVVTy2qwJDOeWYYFvUk9NB+C/aPwvFyuST8+N9jkHDkD1yuenynOmCY5v9 S3UA== 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=ygUdSx3uk/PnGSjwvbPNW1Ftvhx1EX4wU0qBZRN4KFg=; b=ZzYsxDd+tnkx+5Kgx+7+Bw6UZ3jtx9ubmUYw/UTN8y958Vk8xJvkNnp4AkssV+It1x OkpwH0S6p+z001OzUegHgQkqrAKt5W1pGcTUUfwhZmWuTtxygbxowEajKBelEQI38LxK HM9TfviYVxwRyYq7BuN0r+qCu/wyO0KdbKoo9iIW937LZ4ndT12qVO0F6z0tuFTXgsPG 4Xateo1LtJFjINRDxw+3Qa0mp4GHCIvsBXrQbwM/bzRTy3G93LfNHeElBc+VT7Nk+E6d 1SKFs4MRXgs0FtFvlALLCwjX1a7bR2aAbGF1T1FL4kNPpU9gEBwZOJNjxRvMQFfeBsmT AoTQ== X-Gm-Message-State: AOAM5301G+hHGuFfovNdqm5D9BSlVsQZHh6kVdH8s0TYDJLVLc/QDD7O QLFjVD9SjRHuWZJfnf0Lln7hU0oy X-Google-Smtp-Source: ABdhPJyCFCnrH9A32oBQ1sDg6z2CSlAtzWCIn8bSXIbN1VP8qpgD9Rc8YXQy6IkJHh7UspABmuQuNQ== X-Received: by 2002:a2e:9e5a:: with SMTP id g26mr15636733ljk.207.1596022793601; Wed, 29 Jul 2020 04:39:53 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id n3sm347003ljj.39.2020.07.29.04.39.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2020 04:39:52 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Jul 2020 14:39:47 +0300 Message-Id: <20200729113952.14574-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200616210253.7169-1-jeebjp@gmail.com> References: <20200616210253.7169-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 0/5 v2] 22.2 channel layout support for AAC decoding 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" Now that we actually have sample(s) for channel_config 13, it was possible to see at which various points the AAC decoder fails attempting to parse the bit stream. As the feature `-request_channel_layout 9223372036854775808` (AV_CH_LAYOUT_NATIVE) seems to work, the channel order has been validated both visually with Audacity, as well as by logging the post-reorder element ordering: (what specific CPE/SCE/LFE elements mean is documented in the `avcodec/aacdectab: add mapping for 22.2` commit): Setting layout map list after reorder... tag 0 = { pos: (null) (3), syn_elem: CPE, elem_id: 1 } tag 1 = { pos: FC (4), syn_elem: SCE, elem_id: 0 } tag 2 = { pos: LFE (8), syn_elem: LFE, elem_id: 0 } tag 3 = { pos: (null) (30), syn_elem: CPE, elem_id: 3 } tag 4 = { pos: (null) (c0), syn_elem: CPE, elem_id: 0 } tag 5 = { pos: BC (100), syn_elem: SCE, elem_id: 1 } tag 6 = { pos: LFE2 (800000000), syn_elem: LFE, elem_id: 1 } tag 7 = { pos: (null) (600), syn_elem: CPE, elem_id: 2 } tag 8 = { pos: (null) (5000), syn_elem: CPE, elem_id: 4 } tag 9 = { pos: TFC (2000), syn_elem: SCE, elem_id: 2 } tag 10 = { pos: TC (800), syn_elem: SCE, elem_id: 3 } tag 11 = { pos: (null) (28000), syn_elem: CPE, elem_id: 6 } tag 12 = { pos: (null) (3000000000), syn_elem: CPE, elem_id: 5 } tag 13 = { pos: TBC (10000), syn_elem: SCE, elem_id: 4 } tag 14 = { pos: BFC (8000000000), syn_elem: SCE, elem_id: 5 } tag 15 = { pos: (null) (14000000000), syn_elem: CPE, elem_id: 7 } swresample seems to give out the correct channels for 5.1 and stereo downmix (checked with ffmpeg.c by utilizing `-channel_layout` 5.1 and stereo), although the default downmix logic seems to lower the volume somewhat. Fixes #8714 Jan Ekström (5): avutil/channel_layout: add 22.2 layout avcodec/mpeg4audio: add newer channel_coding mappings avcodec/aacdectab: add mapping for 22.2 avcodec/aacdec_template: mark second LFE element as LFE2 avcodec/aacdec_template: add support for 22.2 / channel_config 13 doc/APIchanges | 5 ++ libavcodec/aacdec_template.c | 98 ++++++++++++++++++++++++++++++++---- libavcodec/aacdectab.h | 23 ++++++++- libavcodec/mpeg4audio.c | 17 ++++++- libavcodec/mpeg4audio.h | 2 +- libavutil/channel_layout.c | 6 +++ libavutil/channel_layout.h | 6 +++ libavutil/version.h | 2 +- 8 files changed, 142 insertions(+), 17 deletions(-)