From patchwork Sat Aug 1 11:07:24 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: 21415 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 56B1844930D for ; Sat, 1 Aug 2020 14:14:14 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3D394689734; Sat, 1 Aug 2020 14:14:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f41.google.com (mail-ed1-f41.google.com [209.85.208.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C3535689734 for ; Sat, 1 Aug 2020 14:14:07 +0300 (EEST) Received: by mail-ed1-f41.google.com with SMTP id bs17so5295149edb.1 for ; Sat, 01 Aug 2020 04:14:07 -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=jQ37SjFs5JtKSBCNwV4Xk+PbRmAi+krmRWJsq9yQ5K4=; b=Jst51QXDCusdtpHY2lp4ydMa6EpjCMr4yOPd5enaFKeAuvncxhYHk8HmWzYWff3jW6 F+pDsf+b8eh6BWEY//aUaN7WiLp7UV9Lkvheih7rvh56n+QLR2BcQsf5VmnJsT3ViGjv WB+fODL3KaToh6+SRhMCWHa1OAe42YmzZ3eMGtLlYccTE5GH9Qt5MWVefg9cHVViHDm0 M1mtI3pUy7Cxg2PJzZEIvHvsiE2K3fYGpbIJJFkgyE6YAADQRTFiheMJ8Wq2BydVztZS szlbOG4UH0K8q1nkB12y1uGIzgwREAB38hddYzsIqOs0L+5XAGpry80BeEmGfTri8PGz ZNxA== 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=jQ37SjFs5JtKSBCNwV4Xk+PbRmAi+krmRWJsq9yQ5K4=; b=kgQZdnA9idhN8H8J1m3TnL23mHRfS3GCy6IvoYg0x/odxsaQK2YDd/Qga/Llqefjux 5jCcdKu9vZq7ZFKspCh7tvX0J0vwB9GtK+YvF9YV5aD/6GUQcW6yEWVU+P2s5OtZH/P3 nECa/lm/KwBI6a3qk3mGtebTFjxaQo1I8twnGVvWjipkTGBsAjfx6fhmajkDMafEniAy Et3R2pJXkzfe9yLhKKZ8kzlEr2uDNZ8NVCa+L+8Nll7+kqTWPI/2mOxzoFmfTlIsC4be nT3saVJP3UtWWc2RFNe6sXlUFi/MJB/L8u85KPvIh8Kceyg+FgWTG4uBo3MKShQ7F1H3 NqqA== X-Gm-Message-State: AOAM532GAhRCirjqnoTuF2raTfHDtvqmWq46YGyxUf/1QmNE2SwosLDa 4s5HKbGchPIX4vRLR2NKnxqQd569 X-Google-Smtp-Source: ABdhPJwW3M6/qE/mvF38cr5n3OscIu2zMhVT6VUmcyo4nVnY84P18vIrprVntYeCf+N9w7fU7eYAeQ== X-Received: by 2002:a2e:9156:: with SMTP id q22mr3992739ljg.348.1596280053812; Sat, 01 Aug 2020 04:07:33 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id f24sm2694045ljc.99.2020.08.01.04.07.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2020 04:07:32 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Aug 2020 14:07:24 +0300 Message-Id: <20200801110730.30642-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200801110730.30642-1-jeebjp@gmail.com> References: <20200729113952.14574-1-jeebjp@gmail.com> <20200801110730.30642-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/7] avutil/channel_layout: add 22.2 layout 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" Requires some extraneous top side and bottom front channels to be defined. According to STD-B59v2, the defined channel layout is: - FL - FR - FC - LFE1 - BL - BR - FLc - FRc - BC - LFE2 - SiL - SiR - TpFL - TpFR - TpFC - TpC - TpBL - TpBR - TpSiL - TpSiR - TpBC - BtFC - BtFL - BtFR --- doc/APIchanges | 5 +++++ libavutil/channel_layout.c | 6 ++++++ libavutil/channel_layout.h | 6 ++++++ libavutil/version.h | 2 +- 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 72a4833fbc..d839b2c413 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,11 @@ libavutil: 2017-10-21 API changes, most recent first: +2020-06-16 - xxxxxxxxxx - lavu 56.58.100 - channel_layout.h + Add AV_CH_LAYOUT_22POINT2 together with its newly required pieces: + AV_CH_TOP_SIDE_LEFT, AV_CH_TOP_SIDE_RIGHT, AV_CH_BOTTOM_FRONT_LEFT, + AV_CH_BOTTOM_FRONT_CENTER, AV_CH_BOTTOM_FRONT_RIGHT. + 2020-07-xx - xxxxxxxxxx - lavu 56.57.100 - cpu.h Add AV_CPU_FLAG_MMI and AV_CPU_FLAG_MSA. diff --git a/libavutil/channel_layout.c b/libavutil/channel_layout.c index 3bd5ee29b7..d6bfc74927 100644 --- a/libavutil/channel_layout.c +++ b/libavutil/channel_layout.c @@ -62,6 +62,11 @@ static const struct channel_name channel_names[] = { [33] = { "SDL", "surround direct left" }, [34] = { "SDR", "surround direct right" }, [35] = { "LFE2", "low frequency 2" }, + [36] = { "TSL", "top side left" }, + [37] = { "TSR", "top side right" }, + [38] = { "BFL", "bottom front left" }, + [39] = { "BFC", "bottom front center" }, + [40] = { "BFR", "bottom front right" }, }; static const char *get_channel_name(int channel_id) @@ -104,6 +109,7 @@ static const struct { { "octagonal", 8, AV_CH_LAYOUT_OCTAGONAL }, { "hexadecagonal", 16, AV_CH_LAYOUT_HEXADECAGONAL }, { "downmix", 2, AV_CH_LAYOUT_STEREO_DOWNMIX, }, + { "22.2", 24, AV_CH_LAYOUT_22POINT2, }, }; static uint64_t get_channel_layout_single(const char *name, int name_len) diff --git a/libavutil/channel_layout.h b/libavutil/channel_layout.h index 50bb8f03c5..43297505cb 100644 --- a/libavutil/channel_layout.h +++ b/libavutil/channel_layout.h @@ -71,6 +71,11 @@ #define AV_CH_SURROUND_DIRECT_LEFT 0x0000000200000000ULL #define AV_CH_SURROUND_DIRECT_RIGHT 0x0000000400000000ULL #define AV_CH_LOW_FREQUENCY_2 0x0000000800000000ULL +#define AV_CH_TOP_SIDE_LEFT 0x0000001000000000ULL +#define AV_CH_TOP_SIDE_RIGHT 0x0000002000000000ULL +#define AV_CH_BOTTOM_FRONT_LEFT 0x0000004000000000ULL +#define AV_CH_BOTTOM_FRONT_CENTER 0x0000008000000000ULL +#define AV_CH_BOTTOM_FRONT_RIGHT 0x0000010000000000ULL /** Channel mask value used for AVCodecContext.request_channel_layout to indicate that the user requests the channel order of the decoder output @@ -110,6 +115,7 @@ #define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT) #define AV_CH_LAYOUT_HEXADECAGONAL (AV_CH_LAYOUT_OCTAGONAL|AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT) #define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT) +#define AV_CH_LAYOUT_22POINT2 (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER|AV_CH_BACK_CENTER|AV_CH_LOW_FREQUENCY_2|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_CENTER|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_SIDE_LEFT|AV_CH_TOP_SIDE_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_BOTTOM_FRONT_CENTER|AV_CH_BOTTOM_FRONT_LEFT|AV_CH_BOTTOM_FRONT_RIGHT) enum AVMatrixEncoding { AV_MATRIX_ENCODING_NONE, diff --git a/libavutil/version.h b/libavutil/version.h index 975fb87f31..3e7e1f410b 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 56 -#define LIBAVUTIL_VERSION_MINOR 57 +#define LIBAVUTIL_VERSION_MINOR 58 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ From patchwork Sat Aug 1 11:07:25 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: 21413 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 2003D44B8AF for ; Sat, 1 Aug 2020 14:13:11 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DEF2968B875; Sat, 1 Aug 2020 14:13:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f178.google.com (mail-lj1-f178.google.com [209.85.208.178]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 142DB68B50F for ; Sat, 1 Aug 2020 14:13:04 +0300 (EEST) Received: by mail-lj1-f178.google.com with SMTP id v9so456678ljk.6 for ; Sat, 01 Aug 2020 04:13:04 -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=bK0KC/lSElVJxMZ89A+B4YA+g95Ahz72S5QKweRLp7M=; b=TDLZ58NP9NonoEruZROyKcfhsge8VjpVGmJt+Rr24y/4XJUeSXeHVe9IoWhelDe3HG H9w6rZOI6Hbzjb3RkRz54HVZ6Z7lSSwUBMX+4wIU+Z0n67hcOMODrFIVnrf/wxFIBmiw KhZj2JaqocRmsTAfbnSl68Az+4L6KOJBSxr7JRj3OAS1IWeUophPHpPHWFCahseCGoRk uZWGHtDhuTSXxqGXcfIgXAnkj15l4rBoieKimH7h6EJvPkaspUfH/TyW9Nxnb9WB7oSt D2eE2Kmswn9/k3f3iiZRMe9BjvDLB0E/dZqXdGot4amsJIkQRU9gLrv+BJVQ7CzBpvcs +COQ== 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=bK0KC/lSElVJxMZ89A+B4YA+g95Ahz72S5QKweRLp7M=; b=Qy0qB2r3FmBAQFywHtpgrLUCzASZ2VNQ86Hv0ZscE9THrNmYa4t0b6Zp+Z/RLUr4zC 17yqQ0R6xL/naqZSnLNL2yGgFhScasB0TgHXMQmE7jisXkEfbiVyTIJraSg0yoZDGxoX dggDxKDm14DmS6B+1trlk6SfgKsHcLWdN0eiQJVogHl9JT1KHsQfb3BZ7SVnaqzJ2R8Q 3Ro1tKqZ7Z4h63k0GMMpPZ+dENokl0aHjX688baDwUUsMC7VuNQiJ9gLt565wgdS9pDl mPGi6C8gL+nP398w6DDHTNtyzhHnv8tT4cqi01iwzf2jeN8AG9psL2sn8qmbiveo6IBq 46ZA== X-Gm-Message-State: AOAM532AJZhHIAZGYOoP+xrBqkUVkXumv4NHsAEdYLdxhzPqSKFpl3SF 2qKVWemR5Q/BnfZjJFyp+BvRx0bq X-Google-Smtp-Source: ABdhPJwqoscxCDhZKYRe1VkSz8w+zSsx9ws26GrZH8lRiTlFu+PpRnAJWxTMPE9GuToEtlclF+uw+Q== X-Received: by 2002:a2e:8804:: with SMTP id x4mr3743120ljh.328.1596280055225; Sat, 01 Aug 2020 04:07:35 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id f24sm2694045ljc.99.2020.08.01.04.07.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2020 04:07:34 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Aug 2020 14:07:25 +0300 Message-Id: <20200801110730.30642-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200801110730.30642-1-jeebjp@gmail.com> References: <20200729113952.14574-1-jeebjp@gmail.com> <20200801110730.30642-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/7] swresample/matrix: switch internal clean_layout function to not drop high bits 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" These bits are utilized by channel layouts such as 22.2. If those are dropped, the returned channel layout is no longer a match against the AV_CH_LAYOUT define when returned from this function. --- libswresample/rematrix.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c index 6b5feaa07b..983355ba36 100644 --- a/libswresample/rematrix.c +++ b/libswresample/rematrix.c @@ -88,7 +88,7 @@ static int even(int64_t layout){ return 0; } -static int clean_layout(void *s, int64_t layout){ +static int64_t clean_layout(void *s, int64_t layout){ if(layout && layout != AV_CH_FRONT_CENTER && !(layout&(layout-1))) { char buf[128]; av_get_channel_layout_string(buf, sizeof(buf), -1, layout); From patchwork Sat Aug 1 11:07:26 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: 21414 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 467EA44B8AF for ; Sat, 1 Aug 2020 14:13:14 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2FB6568B8DE; Sat, 1 Aug 2020 14:13:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f65.google.com (mail-ed1-f65.google.com [209.85.208.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 41BEB68B8DE for ; Sat, 1 Aug 2020 14:13:07 +0300 (EEST) Received: by mail-ed1-f65.google.com with SMTP id o18so9636037eds.10 for ; Sat, 01 Aug 2020 04:13:07 -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=Hh/qa18+FFMpjCnVwkx37RXBE3nAvYZtqGa68Y+NnSY=; b=UGv2zQW7y/zSEJx+Jp6mQ0SiBCxljD7E1b1+w+qI8WKFSR7fc9vVCuXD9/nUeJGmfO sUYv2pRQb+x2N+mTzJluYTYTKXWv3kAcmTXfa41RndzKHiHqvaLz86vqDH5uzAYChuJB qyfFL/VlpZJEfkN+hH/Oa79CBGkUAXIyFBksX3wgq3t8OIKohsU1LHmcVBoXbK6jyxHv fgmJnTf7pRK+LUfO89B4bDAQFdllK/WmNSSN42jcVSL1T90aGV1d+iQcQoKu4ZhTxBrJ dkLOhI4uIx1o5ibFCe6CppxrY2DSVlJDqQ1/cmWWte3x9Btfop6qGzvsPv/BT3II+9af p+Aw== 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=Hh/qa18+FFMpjCnVwkx37RXBE3nAvYZtqGa68Y+NnSY=; b=AfSsbIV2zbDLhil70H8ONs1ksDzSD7TQ3LMXSaTCoJsx9fawM+Tt73oW2cOsTe2swM 79w1h+/eZ2RalPn3Osl84RUdMDRjk9W1MrpWRsOaz9H527A7Cnp5172AURPp85dOGAdr 3veqhlnxgl7UMshaiuXcnLcS0eqbUqUdqBjvp32QQ1SC4nrbtX/8w7XhvgED4+N5L5m6 6n2TOnXmfKt1TcqJyZpaDmV0aCXWa2tCFTdt62I93QOTejfD0EEvqFknPEyMnEsbUX3I KI0j9gkmUhA7anvqRYJis+xb3++Vx+TbgCNBXTwYR2hVko7PKX8PzJ/0RLeEFzD/JTjC UTyw== X-Gm-Message-State: AOAM531m/KJS8ym9KAsRTcmRJatXlybBPF3UryjM132UZ5/6eO0bfIV4 DsQTjlnq6JlDLN4ViedPYG8B0T7v X-Google-Smtp-Source: ABdhPJwRfQ2b9QGxoT3Tw9mX520ECJ3hyrXyKwczuA/WBi22jTbfS0krbZ0lohPPuCkvr13LnRGx6w== X-Received: by 2002:a2e:810c:: with SMTP id d12mr3629024ljg.34.1596280056456; Sat, 01 Aug 2020 04:07:36 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id f24sm2694045ljc.99.2020.08.01.04.07.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2020 04:07:35 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Aug 2020 14:07:26 +0300 Message-Id: <20200801110730.30642-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200801110730.30642-1-jeebjp@gmail.com> References: <20200729113952.14574-1-jeebjp@gmail.com> <20200801110730.30642-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/7] swresample/rematrix: treat 22.2 as 5.1 (back) when mixing 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" Only this sub-set of channels actually follows the bit mask order in the official 22.2 channel mapping. Additionally, the 5.1 channels are there for backwards compatibility with the previous system. This enables the utilization of 22.2 content until a proper down/up matrix is added into swresample. --- libswresample/rematrix.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/libswresample/rematrix.c b/libswresample/rematrix.c index 983355ba36..d0c4a212b3 100644 --- a/libswresample/rematrix.c +++ b/libswresample/rematrix.c @@ -141,6 +141,16 @@ av_cold int swr_build_matrix(uint64_t in_ch_layout_param, uint64_t out_ch_layout ) in_ch_layout = AV_CH_LAYOUT_STEREO; + if (in_ch_layout == AV_CH_LAYOUT_22POINT2 && + out_ch_layout != AV_CH_LAYOUT_22POINT2) { + in_ch_layout = AV_CH_LAYOUT_5POINT1_BACK; + av_get_channel_layout_string(buf, sizeof(buf), -1, in_ch_layout); + av_log(log_context, AV_LOG_WARNING, + "Full-on remixing from 22.2 has not yet been implemented! " + "Processing the input as '%s'\n", + buf); + } + if(!sane_layout(in_ch_layout)){ av_get_channel_layout_string(buf, sizeof(buf), -1, in_ch_layout_param); av_log(log_context, AV_LOG_ERROR, "Input channel layout '%s' is not supported\n", buf); From patchwork Sat Aug 1 11:07:27 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: 21419 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 24DFD449EA5 for ; Sat, 1 Aug 2020 14:15:42 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0A869689734; Sat, 1 Aug 2020 14:15:42 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f65.google.com (mail-ed1-f65.google.com [209.85.208.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5113B68004C for ; Sat, 1 Aug 2020 14:15:36 +0300 (EEST) Received: by mail-ed1-f65.google.com with SMTP id n2so24054992edr.5 for ; Sat, 01 Aug 2020 04:15:36 -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=c5fsJJHpQBL8285Nv/kewIMqUX4bbJWzfjqTaoHB1MM=; b=aEmpVhmTB/gAk5TRXda+naZGHqlIXxJSrIwXQfYxZ9E9WG6IN9Hx7f0VsaCX6AlURs wFS6IZ2CPp2mP8aTwo9fQVDpGheqozH8mxBUHR2BO7SkSFx/k/mpW9sTAKWvxMzdlHFy +SQwL9pLFBlHJFYa5ar8WFuuwe9LEVoQWQm2APn5bwEmmXBahNhKDOgWhNd7Ylgnxsoq j+9e31asJoSOPRkTvbZI3jUaj/cggaZ9bmzbccb8/cFqr1UkvL7LSgxYdHoDrfv8G8mf FefV5Nh6AEP3SFNTxqWPZrLnrg/yjUTfYo8j5VvvG5pdRHYP2EvpoVmDBBT2taZA8Yi6 ZUdg== 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=c5fsJJHpQBL8285Nv/kewIMqUX4bbJWzfjqTaoHB1MM=; b=fg/Dkw8yzpQNxuGmJ3rwMrR/Ep2F835vwzRZhXWsnnVhZm15t53fX+Atlus6T1vcx8 OQ64g4QJ8ibG6XXoo6JFVcpiwY6WmNl673Cy42c4wS/m3v6zerMTFVtN+YQFMNsf1UWu tVWYysU8MjqxXQTdZgGcJfJIC7MhJuPibfuBKACzzwV8dUf5gAxPIBPNpGH15RprELoY bwAUEvWniTJ0/sHghvzMVvXrZKbBi3BPcAk75KZFyHp1oqjOEzIAY5h52RbA1b7rUgap 83r/5Pl888X2B083zBnEtlMW3tuwJmnQz8bF4gMRq4kMXhmEliguY5tZdcmA+cDwAuvW ctSg== X-Gm-Message-State: AOAM532zrNU87dQFTl2eDIu5zJ128KTYJ8F4ag8Xy6KU8A903xIyA6np TLYr9R02s6OO4M64ZET/93ORcIFp X-Google-Smtp-Source: ABdhPJw+xlHGFXGUy5glwgovaWQ9sDi2POhxjN5il3HI9y0thSnHZQj5yErt1X3SSaJtR4XvQaNOUw== X-Received: by 2002:a2e:9009:: with SMTP id h9mr3497937ljg.295.1596280057872; Sat, 01 Aug 2020 04:07:37 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id f24sm2694045ljc.99.2020.08.01.04.07.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2020 04:07:36 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Aug 2020 14:07:27 +0300 Message-Id: <20200801110730.30642-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200801110730.30642-1-jeebjp@gmail.com> References: <20200729113952.14574-1-jeebjp@gmail.com> <20200801110730.30642-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/7] avcodec/mpeg4audio: add newer channel_coding mappings 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" Additionally, add comments regarding their definitions. Based on ARIB STD-B32, which bases on 14496-3:2009 and 14496-3:2009/AMD4. --- libavcodec/mpeg4audio.c | 17 +++++++++++++++-- libavcodec/mpeg4audio.h | 2 +- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/libavcodec/mpeg4audio.c b/libavcodec/mpeg4audio.c index 0d83fb8d25..77cf2fb61c 100644 --- a/libavcodec/mpeg4audio.c +++ b/libavcodec/mpeg4audio.c @@ -64,8 +64,21 @@ const int avpriv_mpeg4audio_sample_rates[16] = { 24000, 22050, 16000, 12000, 11025, 8000, 7350 }; -const uint8_t ff_mpeg4audio_channels[8] = { - 0, 1, 2, 3, 4, 5, 6, 8 +const uint8_t ff_mpeg4audio_channels[14] = { + 0, + 1, // mono (1/0) + 2, // stereo (2/0) + 3, // 3/0 + 4, // 3/1 + 5, // 3/2 + 6, // 3/2.1 + 8, // 5/2.1 + 0, + 0, + 0, + 7, // 3/3.1 + 8, // 3/2/2.1 + 24 // 3/3/3 - 5/2/3 - 3/0/0.2 }; static inline int get_object_type(GetBitContext *gb) diff --git a/libavcodec/mpeg4audio.h b/libavcodec/mpeg4audio.h index 4b390e0f42..c4cdc1508c 100644 --- a/libavcodec/mpeg4audio.h +++ b/libavcodec/mpeg4audio.h @@ -46,7 +46,7 @@ typedef struct MPEG4AudioConfig { } MPEG4AudioConfig; extern av_export_avcodec const int avpriv_mpeg4audio_sample_rates[16]; -extern const uint8_t ff_mpeg4audio_channels[8]; +extern const uint8_t ff_mpeg4audio_channels[14]; /** * Parse MPEG-4 systems extradata from a potentially unaligned GetBitContext to retrieve audio configuration. From patchwork Sat Aug 1 11:07: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: 21418 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 237D544930D for ; Sat, 1 Aug 2020 14:14:39 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0779768B948; Sat, 1 Aug 2020 14:14:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f171.google.com (mail-lj1-f171.google.com [209.85.208.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9B3B468B937 for ; Sat, 1 Aug 2020 14:14:37 +0300 (EEST) Received: by mail-lj1-f171.google.com with SMTP id v9so458835ljk.6 for ; Sat, 01 Aug 2020 04:14:37 -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=MPwjpnkh9oaCUNeq4za/dJgIemq9IpafXt3vfCfU7Fw=; b=kDT5i083SQ4lVm2h1jvGhywMPQYYnbUUzPQQ/j/Q9mOry7ZfqYDWBcLQqJ2pBAd9xt KRAahoiDHAY1uH+rDl1QNI+AlPzvimAer219BGmM8/tz2akppocJr5dSh4Lu4nrH2Fcu rAMX0oWjUL+jqVcWuFqxUvPgKmG43rLblcxXV8m64yJ3HRj2i6ivbgO4hxaQR8/HWRr9 y27EsEAgjUsuOj2trVqeeaM0I7iLuKgfAmWYfWfucni9L9zU7sHaGo6c3F8GXpgx0iYI qbluPSzlqLVF5ifgFilq6JLmylsneuN3t91OptmZHNj7cTaTGkFfFvk2lgmbDwhv7j5r TyJQ== 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=MPwjpnkh9oaCUNeq4za/dJgIemq9IpafXt3vfCfU7Fw=; b=TrvEdOdmbWqtvFQWYKO8hCfZ7rGY5KZWgSSgfkSAkjp9nRJlxB8xTXfZlSOFFYbgEr mDSHD16kHMkoQHJB4Rzh0TI0Bze/t6gpysIt6xFNDy3D9H4w6lCid6rqO1iZIXaWbp7T 3LXjlX8a/PoeCwnEMWNJnaDZBYs7D/4AxjFVsta112Te5BE8bY/0gIvj6y91utVfYL5T GYYKNWd5UBkoBsPdZRNKhlQ/MA14d4cgrp7APAriMRmCG4STJhVPOCqrVR2f1+XE0QFu mo61/gQaBq6x3AJrHpwbeKz2iiPOo+RPSPJM4vsUOo/G3PTu/8hX6ZBo1vwvQXwvp2Yc 01bA== X-Gm-Message-State: AOAM532DSAXoux3OYe/0WJW+pcsU3/GKgKd/cgL+oZJbbe7CUv95Vab9 T73GKTMcSQ5WSkVz6xaMAU/4yAYn X-Google-Smtp-Source: ABdhPJwiJpGwJdeVYh3wknZNz1Iu6wb4Fb4/JYV49itBncroteHE40Wr/4CT9sDTv83OwkgerbV90g== X-Received: by 2002:a2e:8684:: with SMTP id l4mr3928623lji.75.1596280059210; Sat, 01 Aug 2020 04:07:39 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id f24sm2694045ljc.99.2020.08.01.04.07.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2020 04:07:38 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Aug 2020 14:07:28 +0300 Message-Id: <20200801110730.30642-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200801110730.30642-1-jeebjp@gmail.com> References: <20200729113952.14574-1-jeebjp@gmail.com> <20200801110730.30642-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/7] avcodec/aacdectab: add mapping for 22.2 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" Utilizes the newly added 22.2 channel layout for channel_layout 13. --- libavcodec/aacdectab.h | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/libavcodec/aacdectab.h b/libavcodec/aacdectab.h index baf51a74bf..c54a3eb943 100644 --- a/libavcodec/aacdectab.h +++ b/libavcodec/aacdectab.h @@ -35,9 +35,9 @@ #include -static const int8_t tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 4, 5, 0, 5, 0 }; +static const int8_t tags_per_config[16] = { 0, 1, 1, 2, 3, 3, 4, 5, 0, 0, 0, 4, 5, 16, 5, 0 }; -static const uint8_t aac_channel_layout_map[16][5][3] = { +static const uint8_t aac_channel_layout_map[16][16][3] = { { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, }, { { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, }, { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, }, @@ -50,6 +50,24 @@ static const uint8_t aac_channel_layout_map[16][5][3] = { { { 0, } }, { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_BACK }, { TYPE_SCE, 1, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, { { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, { TYPE_CPE, 1, AAC_CHANNEL_SIDE }, { TYPE_CPE, 2, AAC_CHANNEL_BACK }, { TYPE_LFE, 0, AAC_CHANNEL_LFE }, }, + { + { TYPE_SCE, 0, AAC_CHANNEL_FRONT }, // SCE1 = FC, + { TYPE_CPE, 0, AAC_CHANNEL_FRONT }, // CPE1 = FLc and FRc, + { TYPE_CPE, 1, AAC_CHANNEL_FRONT }, // CPE2 = FL and FR, + { TYPE_CPE, 2, AAC_CHANNEL_SIDE }, // CPE3 = SiL and SiR, + { TYPE_CPE, 3, AAC_CHANNEL_BACK }, // CPE4 = BL and BR, + { TYPE_SCE, 1, AAC_CHANNEL_BACK }, // SCE2 = BC, + { TYPE_LFE, 0, AAC_CHANNEL_LFE }, // LFE1 = LFE1, + { TYPE_LFE, 1, AAC_CHANNEL_LFE }, // LFE2 = LFE2, + { TYPE_SCE, 2, AAC_CHANNEL_FRONT }, // SCE3 = TpFC, + { TYPE_CPE, 4, AAC_CHANNEL_FRONT }, // CPE5 = TpFL and TpFR, + { TYPE_CPE, 5, AAC_CHANNEL_SIDE }, // CPE6 = TpSiL and TpSiR, + { TYPE_SCE, 3, AAC_CHANNEL_FRONT }, // SCE4 = TpC, + { TYPE_CPE, 6, AAC_CHANNEL_BACK }, // CPE7 = TpBL and TpBR, + { TYPE_SCE, 4, AAC_CHANNEL_BACK }, // SCE5 = TpBC, + { TYPE_SCE, 5, AAC_CHANNEL_FRONT }, // SCE6 = BtFC, + { TYPE_CPE, 7, AAC_CHANNEL_FRONT }, // CPE8 = BtFL and BtFR + }, { { 0, } }, /* TODO: Add 7+1 TOP configuration */ }; @@ -67,6 +85,7 @@ static const uint64_t aac_channel_layout[16] = { 0, AV_CH_LAYOUT_6POINT1, AV_CH_LAYOUT_7POINT1, + AV_CH_LAYOUT_22POINT2, 0, /* AV_CH_LAYOUT_7POINT1_TOP, */ }; From patchwork Sat Aug 1 11:07:29 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: 21422 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 A0CA244B0E2 for ; Sat, 1 Aug 2020 14:30:48 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8C0CF68B99E; Sat, 1 Aug 2020 14:30:48 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f66.google.com (mail-ej1-f66.google.com [209.85.218.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 03A18687F9E for ; Sat, 1 Aug 2020 14:30:42 +0300 (EEST) Received: by mail-ej1-f66.google.com with SMTP id o18so33924614eje.7 for ; Sat, 01 Aug 2020 04:30:41 -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=T2fhNcqrWVCEjs1T4hfHcYHW89hJ/Up5DhBLZnri9ZA=; b=Il2z4GZP8rMfi3q3WJCWLLKAkoaa09BVBpShX2xQ6U6d7mk50N59GTxz0vxzZ/YWsz I5Y26XEIfQ+9sDGNQrV1nlHhPKgvvphkAR21xNj9ETF22vcakk7WACLNP/kfYvtbRAya XWRzgTfNAT4+hoEJESY1k+6Q+J8MymdhvX8nmS5XUIE3/w/75aM1fNsDag02tYTaCBo/ QOTQHx4GRHn7SmnVY0nc2rCz+VeYKGs9szM5JDr/r2CDzmKtjusulEoJCRihyJhOjsZL 0d556UTc1VpBeR0YVkcx7WsXavSIidS+nuNy7Zsv5bsKDyQq2HD9tbmqxDd2DCJ2okbG h5YQ== 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=T2fhNcqrWVCEjs1T4hfHcYHW89hJ/Up5DhBLZnri9ZA=; b=WCxaFnDK9+BLXJiW+aWRFcXTQiW5cTqpseEvHCyL8FaNc4+7Yr8+dkxnLwtWcEvVIN tEDHu6CmbJmtA7Z3eZbpm9H1M4JGYplOSoknS1wkg4lYgbfc0IgfKKUK0r05Ce0KkGUB vEU3zYTPxKD2Rl5TizCUre1n/sGMKCHfdjbuNEfbulL4fGzRRe7s5Q3kHKII9/ucbVu/ i7K/ftCvBTeh7q+wzusu1TeJOvonB+rheZFw6NV3ugM9lj3yEkJnXP6n5+Q5NkXigAkP WVrz1gwADqduqkUWRC8Le5cp1+gsGXFIU1e/TCmqQvakgfJFHCfNJgLybncg7BxQOFLq IEfw== X-Gm-Message-State: AOAM532N1DVeQq7LTQTWjg/8JT20KjY2O5X1BPLbV8E1Rol+iYX3AxX3 ym96Ea2cEdmUslUFGyGi+ayfZ+w9 X-Google-Smtp-Source: ABdhPJyq2GVyl66HXorOwF8skNfURzdt2HnAJnlluHsy4I8BnEQ2daMhuTw1sHkFRtTQ8xzvNAFKNg== X-Received: by 2002:a2e:6119:: with SMTP id v25mr2493456ljb.119.1596280060417; Sat, 01 Aug 2020 04:07:40 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id f24sm2694045ljc.99.2020.08.01.04.07.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2020 04:07:39 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Aug 2020 14:07:29 +0300 Message-Id: <20200801110730.30642-7-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200801110730.30642-1-jeebjp@gmail.com> References: <20200729113952.14574-1-jeebjp@gmail.com> <20200801110730.30642-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/7] avcodec/aacdec_template: mark second LFE element as LFE2 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" We now have the capability to do this. --- libavcodec/aacdec_template.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index a473e1bad7..21db12fdab 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -368,6 +368,15 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) }; i++; } + if (i < tags && layout_map[i][2] == AAC_CHANNEL_LFE) { + e2c_vec[i] = (struct elem_to_channel) { + .av_position = AV_CH_LOW_FREQUENCY_2, + .syn_ele = TYPE_LFE, + .elem_id = layout_map[i][1], + .aac_position = AAC_CHANNEL_LFE + }; + i++; + } while (i < tags && layout_map[i][2] == AAC_CHANNEL_LFE) { e2c_vec[i] = (struct elem_to_channel) { .av_position = UINT64_MAX, From patchwork Sat Aug 1 11:07:30 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: 21417 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 30D8D44930D for ; Sat, 1 Aug 2020 14:14:26 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 14A8268004C; Sat, 1 Aug 2020 14:14:26 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f49.google.com (mail-ej1-f49.google.com [209.85.218.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0EBD268B936 for ; Sat, 1 Aug 2020 14:14:20 +0300 (EEST) Received: by mail-ej1-f49.google.com with SMTP id g19so20106226ejc.9 for ; Sat, 01 Aug 2020 04:14:20 -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=1Dgk1UE5RiTah5dzOqfe0wAlqsasZDJPA2uTwj3+Qr4=; b=GF76fsfTIbQV+OkYeZP9ciN9h/YX/vTsq+oAoRcfPNFBa/HLeeVqiHi4QPGWbffCEG Ufw9+pmj7Bo81tCZGkhpyfOLv9JbOeRpEZegOG2+Dr7pAA3+UClOVQKFQwaWxlVuX+jm 1jx0Fzj+7QbRrm5uq+tER8d68aliB8ppkci8DdTDPOCAT/wt52OXH9/+1LsXB9iYQCMK 3vB8H4WW0yE+WC8+t9Hvyytrp5ha9FEKx85hl9yPOxnWhbZzEeeBz2BamxpRMnpKdIrg SOaWVWfaE4VtixA+TXqHxFOg7DRnEu7E98IElmk28t+Ze26QLlbTItxKSGoYGcyL6h/h guoQ== 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=1Dgk1UE5RiTah5dzOqfe0wAlqsasZDJPA2uTwj3+Qr4=; b=luegjT7j6Ha0GQCmGT91TUUkRke4k4ym3zW+LcGfyjB7gqpne6eDBImXmFZv6r226a 03sorCzevilA+gOtciSFgb4xdpxuSkRj6dPSRcaFIm1c4Y197U9DIM1LBCE+dW13NCxO Hhe6uU1ozec85cdV/8MfvZ+CLzxMvk8jOTl/4h8kudE+np8pDu4x3urRvA7PzBZ31+zU dHPsSPTYC/KzCRaLWLhCVMhXfXTVdbrURZWp7qYWunJaAKjbKCKgke/R1tQILevOdBYm yRqabVP/l39s44ahi+PBgHhv01VwBojxBgXmW7dblyVSwX4luzJb8urTfgmYF1JPX/gD 9iiw== X-Gm-Message-State: AOAM5321x0lliHHjRTFsBnoGjrrbGvKxrflNV+SEoQv/cdnu7TSXmSf+ 9cJXRHu6ziZqLSNNRDLi8Xo/L5aC X-Google-Smtp-Source: ABdhPJztAx7Z2eXJlVUcvvMNixEtcLN0qzRknp1EQb5T66Q72uvPXjcSksdrXuWfEOmN+yat8xBfxw== X-Received: by 2002:a2e:8084:: with SMTP id i4mr4058051ljg.447.1596280061492; Sat, 01 Aug 2020 04:07:41 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id f24sm2694045ljc.99.2020.08.01.04.07.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 01 Aug 2020 04:07:40 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 1 Aug 2020 14:07:30 +0300 Message-Id: <20200801110730.30642-8-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200801110730.30642-1-jeebjp@gmail.com> References: <20200729113952.14574-1-jeebjp@gmail.com> <20200801110730.30642-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 7/7] avcodec/aacdec_template: add support for 22.2 / channel_config 13 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" --- libavcodec/aacdec_template.c | 89 +++++++++++++++++++++++++++++++----- 1 file changed, 78 insertions(+), 11 deletions(-) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 21db12fdab..8c5048cc13 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -387,17 +387,77 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) i++; } - // Must choose a stable sort + // The previous checks would end up at 8 at this point for 22.2 + if (tags == 16 && i == 8) { + e2c_vec[i] = (struct elem_to_channel) { + .av_position = AV_CH_TOP_FRONT_CENTER, + .syn_ele = layout_map[i][0], + .elem_id = layout_map[i][1], + .aac_position = layout_map[i][2] + }; i++; + i += assign_pair(e2c_vec, layout_map, i, + AV_CH_TOP_FRONT_LEFT, + AV_CH_TOP_FRONT_RIGHT, + AAC_CHANNEL_FRONT); + i += assign_pair(e2c_vec, layout_map, i, + AV_CH_TOP_SIDE_LEFT, + AV_CH_TOP_SIDE_RIGHT, + AAC_CHANNEL_SIDE); + e2c_vec[i] = (struct elem_to_channel) { + .av_position = AV_CH_TOP_CENTER, + .syn_ele = layout_map[i][0], + .elem_id = layout_map[i][1], + .aac_position = layout_map[i][2] + }; i++; + i += assign_pair(e2c_vec, layout_map, i, + AV_CH_TOP_BACK_LEFT, + AV_CH_TOP_BACK_RIGHT, + AAC_CHANNEL_BACK); + e2c_vec[i] = (struct elem_to_channel) { + .av_position = AV_CH_TOP_BACK_CENTER, + .syn_ele = layout_map[i][0], + .elem_id = layout_map[i][1], + .aac_position = layout_map[i][2] + }; i++; + e2c_vec[i] = (struct elem_to_channel) { + .av_position = AV_CH_BOTTOM_FRONT_CENTER, + .syn_ele = layout_map[i][0], + .elem_id = layout_map[i][1], + .aac_position = layout_map[i][2] + }; i++; + i += assign_pair(e2c_vec, layout_map, i, + AV_CH_BOTTOM_FRONT_LEFT, + AV_CH_BOTTOM_FRONT_RIGHT, + AAC_CHANNEL_FRONT); + } + total_non_cc_elements = n = i; - do { - int next_n = 0; - for (i = 1; i < n; i++) - if (e2c_vec[i - 1].av_position > e2c_vec[i].av_position) { - FFSWAP(struct elem_to_channel, e2c_vec[i - 1], e2c_vec[i]); - next_n = i; - } - n = next_n; - } while (n > 0); + + if (tags == 16 && total_non_cc_elements == 16) { + // For 22.2 reorder the result as needed + FFSWAP(struct elem_to_channel, e2c_vec[2], e2c_vec[0]); // FL & FR first (final), FC third + FFSWAP(struct elem_to_channel, e2c_vec[2], e2c_vec[1]); // FC second (final), FLc & FRc third + FFSWAP(struct elem_to_channel, e2c_vec[6], e2c_vec[2]); // LFE1 third (final), FLc & FRc seventh + FFSWAP(struct elem_to_channel, e2c_vec[4], e2c_vec[3]); // BL & BR fourth (final), SiL & SiR fifth + FFSWAP(struct elem_to_channel, e2c_vec[6], e2c_vec[4]); // FLc & FRc fifth (final), SiL & SiR seventh + FFSWAP(struct elem_to_channel, e2c_vec[7], e2c_vec[6]); // LFE2 seventh (final), SiL & SiR eight (final) + FFSWAP(struct elem_to_channel, e2c_vec[9], e2c_vec[8]); // TpFL & TpFR ninth (final), TFC tenth (final) + FFSWAP(struct elem_to_channel, e2c_vec[11], e2c_vec[10]); // TC eleventh (final), TpSiL & TpSiR twelth + FFSWAP(struct elem_to_channel, e2c_vec[12], e2c_vec[11]); // TpBL & TpBR twelth (final), TpSiL & TpSiR thirteenth (final) + } else { + // For everything else, utilize the AV channel position define as a + // stable sort. + do { + int next_n = 0; + for (i = 1; i < n; i++) + if (e2c_vec[i - 1].av_position > e2c_vec[i].av_position) { + FFSWAP(struct elem_to_channel, e2c_vec[i - 1], e2c_vec[i]); + next_n = i; + } + n = next_n; + } while (n > 0); + + } layout = 0; for (i = 0; i < total_non_cc_elements; i++) { @@ -535,7 +595,7 @@ static int set_default_channel_config(AACContext *ac, AVCodecContext *avctx, int channel_config) { if (channel_config < 1 || (channel_config > 7 && channel_config < 11) || - channel_config > 12) { + channel_config > 13) { av_log(avctx, AV_LOG_ERROR, "invalid default channel configuration (%d)\n", channel_config); @@ -615,6 +675,13 @@ static ChannelElement *get_che(AACContext *ac, int type, int elem_id) /* For indexed channel configurations map the channels solely based * on position. */ switch (ac->oc[1].m4ac.chan_config) { + case 13: + if (ac->tags_mapped > 3 && ((type == TYPE_CPE && elem_id < 8) || + (type == TYPE_SCE && elem_id < 6) || + (type == TYPE_LFE && elem_id < 2))) { + ac->tags_mapped++; + return ac->tag_che_map[type][elem_id] = ac->che[type][elem_id]; + } case 12: case 7: if (ac->tags_mapped == 3 && type == TYPE_CPE) {