From patchwork Wed Jul 29 11:39:48 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: 21357 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 79AB744B092 for ; Wed, 29 Jul 2020 14:45:11 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 58FBC68B9BA; Wed, 29 Jul 2020 14:45:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f176.google.com (mail-lj1-f176.google.com [209.85.208.176]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 25DF968B97F for ; Wed, 29 Jul 2020 14:45:05 +0300 (EEST) Received: by mail-lj1-f176.google.com with SMTP id 185so14460686ljj.7 for ; Wed, 29 Jul 2020 04:45:05 -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=TsL8ppJc0Sm+q7PnWaKMWadfxgSvHd+kbkUeOcuuNjtgKjWyPBXD07rD8Os7ZtX1pw tX7sZD6TINkP30JyxUPXuRZVA+iGrhBzONe5y/dCJzjgkGxJaP9fyCOQy+yikXg/Y1dN 9eDT7slR1hj9fVS8SbzxlRlgzAtPHjCNUtMURsxDPQsUXVcR1yDyJNMtRe7GaTu8tKWY hCCw8ubVty91VT1izfVewTHDUkgFWvUzS+TxvIbwFl6rjMnIcfHOi/ZoK3bIHriZ3Obe Q24vkZHhFgriyFAYXgfpTp8JPdWKMqyHi/fM/AZjv4gFwvdO/G33S6EDEAxPdlNaCIji Sjiw== 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=SOw1AcJF2+EQ4mNHnAnv/07Zxs2xHFaQE1rjbE/1VHPv3XOXEdtY81CHJsN5zmK+Ha bJ83L7YL2eq0fk4867GRNMpLC32MLxZSyN23WMQ5HJHYX0ohe7E3e9GnZpzxSLK6NL18 RVMuNUbyjh76lxpC/0WMbnJctDyiq7kt6IJYZ29/APH9X7jivR2wAjx0IQf99bCYDKo+ eZQUzUK5mH5DimUcIUrFr5rAsTMheHAXes5w/lQNKeT2jD25L5KyrBQuOg54BIsjDm28 PKO6+xCoPDA4O5+oNLu7gEfPOBkv27JfdRoPt8Vpsn0tluud3eHwQd083IMgW1FQlgsO INlw== X-Gm-Message-State: AOAM532yAgatzpt7/nIs/ZrkHsNhIwIEmoI6IQ0B9qd+WCGL293FTCBP 6NO8GjhMLtl7fCZI5RrD2yLNy7e9 X-Google-Smtp-Source: ABdhPJwQNCM04jZDclyJu04rO8WMZvHs7UYQrGIncVxMLvScwM8xyuVr/7rsji8fEug+6hjYYeTTYA== X-Received: by 2002:a2e:8144:: with SMTP id t4mr15276683ljg.226.1596022794606; Wed, 29 Jul 2020 04:39:54 -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.53 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2020 04:39:53 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Jul 2020 14:39:48 +0300 Message-Id: <20200729113952.14574-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200729113952.14574-1-jeebjp@gmail.com> References: <20200616210253.7169-1-jeebjp@gmail.com> <20200729113952.14574-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/5] 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 Wed Jul 29 11:39:49 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: 21364 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 1B5E544B0CF for ; Wed, 29 Jul 2020 15:08:44 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E1C7D68BA47; Wed, 29 Jul 2020 15:08:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f49.google.com (mail-wr1-f49.google.com [209.85.221.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CB1C068BA1F for ; Wed, 29 Jul 2020 15:08:37 +0300 (EEST) Received: by mail-wr1-f49.google.com with SMTP id f7so21423233wrw.1 for ; Wed, 29 Jul 2020 05:08: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=c5fsJJHpQBL8285Nv/kewIMqUX4bbJWzfjqTaoHB1MM=; b=ndAtXVZpq/F9EDYOr3QN+RRIG0g05t4KI9thf38sFK1JOLKEB3aI+R+lphOmysNgPm L5J6SfxkwH5fZhLxkMdu5TB8gca9+w/vqet6st/Rf/GScyfNobIB1emOxBVZmbjRmwZQ IlytUlZj3enIbOIvbv3BoEaQ3wDPVhdaf35TErlcaGJgZ5m45b3NlJawKaVPW4/VvGvX JkGTiR2aO8yY4vceoOCUmXzvl2KNhnqgflB/FwK45kIgObxyjrAknIEW44VHDVNda+wy 2JSnHyFL9qpJ/TWdjPjX2w/snBbcGsAzNpoHLZ8yOGUBCXcIFORVMDGPUe4ZcEeAzJIR tBsQ== 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=KDv2fO9G+3sZnCv9PIWE/+507kNyeOSHzGY2tPojApt4AW/oJZPa5Ko6fCzL2qycfb IhjOTQL1U3QaTrsboKEvb5ZrVhag1k2qvzfzuqupTx4GqgKwPOVHe9bvHQsnaKJJWiAj wcrRPbfn+oA0HAlFiPoYamDWTMq6TWWClpjrRoQZfwv+n7BmNzYdulUxSOclYKlvksD2 UCk4wLuoPv8JUJwnnLKHgV9uqE/FN3jzz62uhdskyvk/VTFq1945DzUAlj4rClpU9AMx Cfcv8bncxL9iPgikNPXjxFHd27nXpiQRDfNPX576+dITXKvyJwaN5kNku3oC9K+OQOFP yoNQ== X-Gm-Message-State: AOAM530tQbm0lRjwwUQtWFZkw/0tlke8poX9KsLWAGp3UBA2iWucxA97 /wYGEufE6YVMfPY3bFyH07v78y/h X-Google-Smtp-Source: ABdhPJxxWLXLIVNrwOzpJFIv4n3JLgSIYq39zopZNQoH9Eb8PogkTDHLUYvhIZbwxoxvJF+xqCaS5A== X-Received: by 2002:a05:6512:36cf:: with SMTP id e15mr17310872lfs.149.1596022795547; Wed, 29 Jul 2020 04:39:55 -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.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2020 04:39:54 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Jul 2020 14:39:49 +0300 Message-Id: <20200729113952.14574-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200729113952.14574-1-jeebjp@gmail.com> References: <20200616210253.7169-1-jeebjp@gmail.com> <20200729113952.14574-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/5] 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 Wed Jul 29 11:39:50 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: 21358 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 9018344B092 for ; Wed, 29 Jul 2020 14:45:27 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6DDA068BA3C; Wed, 29 Jul 2020 14:45:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f44.google.com (mail-wr1-f44.google.com [209.85.221.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E68F968B97F for ; Wed, 29 Jul 2020 14:45:20 +0300 (EEST) Received: by mail-wr1-f44.google.com with SMTP id f7so21353200wrw.1 for ; Wed, 29 Jul 2020 04:45: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=MPwjpnkh9oaCUNeq4za/dJgIemq9IpafXt3vfCfU7Fw=; b=LxwAbnFJdw2ZPf11pbksGnlhK+CBMIHQCDYxMMdkGfDSKjB/hXz2gy+5t4joHw4PR4 sXpoXbr8Aqq6dAVgaJsGP6UmdXwO9QWvnlH1m4HxB7ZkeV+UmFRxRL+d1fXLIUaMRY3E 6t7S1ctKMXcIzhcpMqXngYo08I05sbm2G3rNaAQkNDha7Pn8wEtQcF/BATXUsI78Ec9o QRoDgOgHNNZ4xceMmsRdMaRAnv9abBlcgZjZ8oM/Zj35TdAiEEwaEkfAFD4HC58xjT5q bKrxvSOVcKj8maIOGUju3AgjziKVxVCOOEV8B2cgPjOmSi4icsXjJ5KfNd4c1d13NeYe Wb6A== 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=Mn+QNGdFCVYqXDg+QiXTVQgdyLxwJ0jYsuR42tDJEec/2lBpLhM9QCkIPNl1RkkYR/ 6EfoYaXKtw0RHRPicoAboZVfxqVQKY/OnW/i0Wy2HWwQWTkYARNhLyfGajxO1fibW4wh hSm+9AJ7ojVLZKpaKkzjPi7v+WIzXqiU6ZOunIfUo8zSWZkMvu1Br0+O+1EqIcEh/zQS hj2jT6YdbLSz5R4ryF4e8SHrea/6r07qyu47jOZzFGqK83T1YTSY3mkmzcTjzV+AkFLD Hyih3DoKfCe594WxqOjng2RYW8GKG8jqFarfacK2nZkLpN//o29d9jvH/2eajPE0dHWa bzOQ== X-Gm-Message-State: AOAM5328lzD0tam1Cjhh7dJZv/EeR9IdRBeCI62mwn3z7cDBN9aBkudM OZhAcrI4d1uVs9FRs9YZapIIGqpW X-Google-Smtp-Source: ABdhPJyknL+tU8QFz1wz3yVUxS3yxFXtxEqf7r/GaFCobqgo2R47gYuuzY7pSbqSihYi75VaY3c2mw== X-Received: by 2002:a2e:97cb:: with SMTP id m11mr14119151ljj.14.1596022796568; Wed, 29 Jul 2020 04:39:56 -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.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2020 04:39:55 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Jul 2020 14:39:50 +0300 Message-Id: <20200729113952.14574-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200729113952.14574-1-jeebjp@gmail.com> References: <20200616210253.7169-1-jeebjp@gmail.com> <20200729113952.14574-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/5] 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 Wed Jul 29 11:39:51 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: 21361 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 EA91644B97E for ; Wed, 29 Jul 2020 14:48:08 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D28D168BA2C; Wed, 29 Jul 2020 14:48:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f193.google.com (mail-lj1-f193.google.com [209.85.208.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 91BF568BA1F for ; Wed, 29 Jul 2020 14:48:02 +0300 (EEST) Received: by mail-lj1-f193.google.com with SMTP id x9so24701918ljc.5 for ; Wed, 29 Jul 2020 04:48:02 -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=lUZv2s85Ljz+l61IWaeMAPpG4QIz6DFw3JjMsxF092efq3ALuVhi90mULafUvKAdGC j0flzb38po71kWNgTgR0FkCIDA2wQh5KkSyo7B0dFBrfDWJ8dU0HEu6KGZdF1lfBitBY eM5bUHdEZJ7S6SDgVmcb/UWcdu9CdhMVAPFFmvnngw2aQL4epz8n8Cwngs5jFCXEYaqO h5DZa921PsP/J1coKPs10npJIxFvrSo1yiLYI9EE6GGMu6AE3YBVRF3fUUY+UcvZ4lIy sLKRyksfp7ZyoEsjo+auwjsJc/lfZyws/1vTBUoZkLbnDIe6/0chMzBsSnd0QhCjHi04 oVBA== 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=TG5DTkHinHqlbq9jnzYtIGS38i67hFXKzbjcvg/itufIkZWdAVUxZmiHd8w3qF/Ec3 4DDqhrGS1B2XpJ6YIA62bYRe1ZJa7Rafda7nca7VvWEBAzqVIkMdBFOV2v25Twd8B0Od 5Bkov/5yM8SQmrbrt7PRK9vZ6H8o+r08sxgYsZTjyM6j3Jo8iWL/MSs9wqyXjpV1oAxx HRKy74nbocqgIvoGlj9KZoCmZd2r+u+foM4z7kc5PDTY0cqbw1x7NgTBWJYyabr2viOs YU91ojrTxOCc3r2OcJs9jMff75TrtYvxfxzOjOi0vbmwZ6GGVxj1O0HsgMUN9UboE2No Sg4Q== X-Gm-Message-State: AOAM533zqOazNw1S9uRVCXVi8BJUIoJXGjmE3PrU69NOgYqVWyGVxpzx gB/ToX5I49Xf0/aXjGQLrCBCDcLa X-Google-Smtp-Source: ABdhPJzdpBC1pBzDp7zJAf3lofPHsr2/HEdAZ4aMkPpnUlwl6uRmUjZWV67zWMEERh+pNqYoz/OIKA== X-Received: by 2002:a19:2388:: with SMTP id j130mr16812192lfj.190.1596022797548; Wed, 29 Jul 2020 04:39:57 -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.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2020 04:39:56 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Jul 2020 14:39:51 +0300 Message-Id: <20200729113952.14574-5-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200729113952.14574-1-jeebjp@gmail.com> References: <20200616210253.7169-1-jeebjp@gmail.com> <20200729113952.14574-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/5] 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 Wed Jul 29 11:39:52 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: 21360 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 9C4D244B18F for ; Wed, 29 Jul 2020 14:46:56 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8164968BA21; Wed, 29 Jul 2020 14:46:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f45.google.com (mail-ed1-f45.google.com [209.85.208.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0DB0668B93D for ; Wed, 29 Jul 2020 14:46:50 +0300 (EEST) Received: by mail-ed1-f45.google.com with SMTP id o10so7489057edh.6 for ; Wed, 29 Jul 2020 04:46:50 -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=XgrmhzQ3ieLQTePNNoUllw6zhvIYOHSFmyIyivZQUXudOcq8GBVf9kOdRdhf3mAN8+ gqWb9V2+mBSmwDkvT6cf3YkQsF+KfMv2hz50Vp99SjdQ3mEVwRLMEDG1lCQf7AlL5nIT Kb+gW5yTsCgRQGflYiTgNd8b6DNjwmUgYQ5xdcC1boHRAhuf4QXIqkbA703sZZYMRq1s Wt+grF0OBuslxkOwcP4rS7qqznVD1GnzSK47lBl3XdcmCkM7Wyepj4jyF4/Qixr1oxV6 12CgM0DVk+e7nmQcKsfP9fEoNmZE521kDcXOI0LBTvPeOVXw1xnPMtccaIQTRUhRJU7i 8OsA== 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=I1e0DHgbDbdiEmc2WPNNw+KxOZ3h2xWbKLB6uYSTEhK+QJP1z9DwQdNOSw3KbZf4d7 CDfDY4Q5GjdL6b/Bri/e/Fwg8NP9ef3ZTDgZeo+D652wuBNkGGwQGKcohY/zUvenCz4u VvJd7QzFR5wnZ9b0CLEkwfUorlTNFyKtD5tX3vQWo22JyQPhlJhuQ3nMjTOHeKxSa0rZ +3/t48Ky+d4Eh3GRG2JQu8COmadK/ZaJfx/T7XFOJ2wB3UpGhAS52s8iIJJti+SgWvNd 2DHCkqkoAO/eFphZ5RCqS+7I4ZUYLDmiVw/rhLjT4/1w4OJvisYi6POXPNkf+GPa8XwE 5pwQ== X-Gm-Message-State: AOAM530h8xu21+qOUdNii5z+LQ3nYULubRlw3jDt2un9IXq6SsFqCc1T JgEDSs0YvVrMaaYDiS1vYj7w/dP8 X-Google-Smtp-Source: ABdhPJxM/MfPjyhceT+culHPVZ6AG1APOGUxdpX0r54r1v+i0EIFDQDh3XzshEtZJGZHiHrqO6FpAw== X-Received: by 2002:a2e:9207:: with SMTP id k7mr14672922ljg.120.1596022798522; Wed, 29 Jul 2020 04:39:58 -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.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Jul 2020 04:39:57 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Wed, 29 Jul 2020 14:39:52 +0300 Message-Id: <20200729113952.14574-6-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200729113952.14574-1-jeebjp@gmail.com> References: <20200616210253.7169-1-jeebjp@gmail.com> <20200729113952.14574-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 5/5] 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) {