From patchwork Sun Oct 1 22:52:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: "pkv.stream" X-Patchwork-Id: 5363 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.61.8 with SMTP id n8csp894999jan; Sun, 1 Oct 2017 15:53:05 -0700 (PDT) X-Received: by 10.223.144.129 with SMTP id i1mr12154985wri.75.1506898385308; Sun, 01 Oct 2017 15:53:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1506898385; cv=none; d=google.com; s=arc-20160816; b=eun8f75YhHFCixIEIFo2qVhsUtCorbqTUpwO7aezFAJ7/M/56Z5PNfUV+bhsZl1t0r wsHQ3n+2zqqC1oIBobpeR+lrm5go3AzXLwDebIxwvlvcSsJyFQw1E3V1nTZiPQcPF1O/ Os5emQt7oxciT9XvWAEsz5y84TU5pnPxSnANHVzNaEe9fbg8tpsioeBXF86SA04xPS60 RUwSGASw9SRQlfWpIHTtH0IJcQmdi63iKzzmQhXsE2AHs3FBf7JHRpTvKdTe3EDMsK/t PQC3vmK0fNKxm6zSZP0ldVwo0eVfLNs4C9zhjkn0h4mvlMYii3lCnVdUZ1boPaUfTqEF hI/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:to:dkim-signature:delivered-to :arc-authentication-results; bh=xrvtL2CzL+/8hj1Q69ZE/ofU5W8Ye5+YF5brBilyluo=; b=a8oywIXJsYySR8zMQgfcZocDyjEFtjeXkPro+MwblDxQXQq1NM4Q3zFxsnkIW4u7qN HVUhe6YlCMbJMSGmUaMVZhOo9AyHZpfNkNzgOUJu+eTQxjRQtsEX+ZmE88RznxBv/zhF 5u1j6ca5rQb8AGTok4MbfmYRqzJpkgIZSVt394BozZuUMildYgsgz2jCJ3o7P6C4DL+R 1gWtj7neX2IEc+YbgNt0aXdQTVS2IRxowSdEU51g2XiASy1WXTxZQITo6lffCsv0/4/u 6wZlTekKL6ftYr7kOJAAq3o0uPQh3ojzsIynNQEud3NUf6tP9+kLt7kNks0jsj+O0X/C dMLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=bYIOZHXB; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 130si6670643wmo.215.2017.10.01.15.53.04; Sun, 01 Oct 2017 15:53:05 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=bYIOZHXB; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AA410689D37; Mon, 2 Oct 2017 01:52:49 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f46.google.com (mail-wm0-f46.google.com [74.125.82.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 46CA6689CE3 for ; Mon, 2 Oct 2017 01:52:43 +0300 (EEST) Received: by mail-wm0-f46.google.com with SMTP id u138so7428384wmu.5 for ; Sun, 01 Oct 2017 15:52:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language; bh=BDryV4H8+Hto38e9G+NfVbyxHTDFkktwEGuOwLRX6wo=; b=bYIOZHXB+fecL/5hXn0X0yakBxdW+Aknym0ZIBWawCMB+Uq2ptU7pcXn5ip8aPmqT1 cEYZOr+s3IOfx28WiiMuujCxtlg027Ft5s/TiKSk50csMrystVbaVE2C0tCq1FCFShzH ZMzBzYXZBFPDSoo6yZj78xN2KTmY+WWhCnGAn5OgiUDZjbYQ9QMN2KE/cq3iZ590oSTZ 7JAmdJaCf+QB1rI+z7Ir6Cc5krlpEJK00WNZsC+J8u9zO0NJ5NFB/YOAdh78xTxYllpQ SkWrT1MWy2a5WwnujicPQO1tVMwGRaXrDp3kGf6HDoLUw359cBOikF1nvVJ7IXZExNY8 WK7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=BDryV4H8+Hto38e9G+NfVbyxHTDFkktwEGuOwLRX6wo=; b=fVlrubY5SHeLT23G0Mbd63HM9y0ZEghEv6Vn1/h1mOVEi8DabsO5r6PgCVhbsFnJAM EQld1nZZGdTRWXQ/6b1jmXGpTUbTbz+SJ3xYhj6QfdZYfjSCjwflXaGo1UxCtRJp+s4n 1CGyWlqCfBeskNds03oyO9nZeNLdl6WeBb/wMAZDoVF3ph2MKf6Wm18e8rUt7wzYSN56 n/BpnUln/WLzfjgP0S+WXYPIVCnoIEh8sYD2jnzo0QKILjrGQJmE+cD583U9fNjAEBpq wYUWZMD9TJe6yjmzwGfssvoVEoHNk/hT1ShFyL5SToYW93XwjqjCo8ySD4J/q6iwz06x K4vg== X-Gm-Message-State: AHPjjUip2SZbTbVauW4XhcYvB+RcLcoTgLb4tBiI4XOitQEZQMQQ+QSd uZQoCv0rH/p6O8srQTB7a57Flw== X-Google-Smtp-Source: AOwi7QAotzprGXzmR7KpEX4M4RpOsMGUKZvyWD+HwtZCd9BxP5D3+FdwZGsgGo//GeWRAZsYY22ddQ== X-Received: by 10.80.216.66 with SMTP id v2mr18079686edj.121.1506898376821; Sun, 01 Oct 2017 15:52:56 -0700 (PDT) Received: from [192.168.0.2] ([176.159.7.188]) by smtp.googlemail.com with ESMTPSA id w10sm9083417eda.73.2017.10.01.15.52.56 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 01 Oct 2017 15:52:56 -0700 (PDT) To: ffmpeg-devel@ffmpeg.org References: <68150eab-1ce5-49c7-171e-996ef572fb86@gmail.com> From: "pkv.stream" Message-ID: <9bb7d16c-124b-21ef-3006-68f812623145@gmail.com> Date: Mon, 2 Oct 2017 00:52:53 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: Content-Language: fr Subject: Re: [FFmpeg-devel] [PATCH] aacenc: WIP support for PCEs 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" Le 02/10/2017 à 12:43 AM, Carl Eugen Hoyos a écrit : > 2017-10-02 0:40 GMT+02:00 pkv.stream : >> Hi atomnuker, >> >> got your PCE working; > the patch you attached contains tabs, they cannot be committed > to the FFmpeg repository, please remove them. > (Or one tab.) thanks for pointing out. Removed the offending tab. > > Thank you, Carl Eugen > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel From 647fb61708bc1279f9dc17c679052a778dce5fbb Mon Sep 17 00:00:00 2001 From: pkviet Date: Sun, 24 Sep 2017 16:11:17 +0200 Subject: [PATCH] avcodec/aacenc: PCE for all ffmpeg usual layouts PCE for all usual layouts listed in channel_layout_map (channel_layout.c) have been added. All encodes with PCE are decoded correctly by ffmpeg aac decoder (not checked with others). The correctness of the channel positions in the encodes have been checked by splitting the channels to independent audio tracks. Two non standard layouts have been added in the PCE for support of 9 and 10 channels, which are useful for ambisonics. For layouts with LFE, the LFE element has been replaced by a SCE because the encoder always puts the LFE as last channel, irrespective of config_map and reorder_map. This is not optimal but it enables these layouts. --- libavcodec/aacenc.h | 239 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 233 insertions(+), 6 deletions(-) diff --git a/libavcodec/aacenc.h b/libavcodec/aacenc.h index 346d989..31afd04 100644 --- a/libavcodec/aacenc.h +++ b/libavcodec/aacenc.h @@ -99,6 +99,33 @@ typedef struct AACPCEInfo { uint8_t reorder_map[16]; ///< maps channels from lavc to aac order } AACPCEInfo; +/** + *List of PCE (Program Configuration Element) for the channel layouts listed in channel_layout.h + * + *For those wishing in the future to add other layouts: + * - num_ele: number of elements in each group of front, side, back, lfe channels; + * (an element is of type SCE (single channel) , CPE (channel pair) for the first 3 groups; + * and is LFE for LFE group). + * - pairing: 0 for an SCE element or 1 for a CPE; does not apply to LFE group + * - index: there are three independent indices for SCE, CPE and LFE; + * they are incremented irrespective of the group to which the element belongs; + * they are not reset when going from one group to another + * + * Example: for 7.0 channel layout, + * .pairing = { { 1, 0 }, { 1 }, { 1 }, }, (3 CPE and 1 SCE in front group) + * .index = { { 0, 0 }, { 1 }, { 2 }, }, index is 0 for the single SCE + * but goes from 0 to 2 for the CPEs . + * + * The index order impacts the channel ordering. But is otherwise arbitrary + * (the sequence could have been 2, 0, 1 instead of 0, 1, 2). + * Spec allows discontinuous indices, e.g. if one has a total of two SCE, SCE.0 SCE.15 is OK per spec; + * BUT it won't be decoded by ffmpeg aac decoder which at this time requires that indices fully cover some range starting from 0. + * (SCE.1 SCE.0 is OK but not SCE.0 SCE.15). + * + * - config_map: total number of elements and their types. Beware, the way the types are ordered impacts the final channel ordering. + * - reorder_map: reorders the channels. + * + */ static const AACPCEInfo aac_pce_configs[] = { { .layout = AV_CH_LAYOUT_MONO, @@ -117,20 +144,220 @@ static const AACPCEInfo aac_pce_configs[] = { .reorder_map = { 0, 1 }, }, { + .layout = AV_CH_LAYOUT_2POINT1, + .num_ele = { 1, 0, 0, 1 }, + .pairing = { { 1 }, }, + .index = { { 0 },{ 0 },{ 0 },{ 0 } }, + .config_map = { 2, TYPE_CPE, TYPE_LFE }, + .reorder_map = { 0, 1, 2 }, + }, + { + .layout = AV_CH_LAYOUT_2_1, + .num_ele = { 1, 0, 1, 0 }, + .pairing = { { 1 },{ 0 },{ 0 } }, + .index = { { 0 },{ 0 },{ 0 }, }, + .config_map = { 2, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2 }, + }, + { .layout = AV_CH_LAYOUT_SURROUND, .num_ele = { 2, 0, 0, 0 }, .pairing = { { 1, 0 }, }, - .index = { { 0, 1 }, }, - .config_map = { 2, TYPE_SCE, TYPE_CPE }, - .reorder_map = { 2, 0, 1 }, + .index = { { 0, 0 }, }, + .config_map = { 2, TYPE_CPE, TYPE_SCE, }, + .reorder_map = { 0, 1, 2 }, + }, + { + .layout = AV_CH_LAYOUT_3POINT1, + .num_ele = { 2, 0, 0, 1 }, + .pairing = { { 1, 0 }, }, + .index = { { 0, 0 }, { 0 }, { 0 }, { 0 }, }, + .config_map = { 3, TYPE_CPE, TYPE_SCE, TYPE_LFE }, + .reorder_map = { 0, 1, 2, 3 }, }, { .layout = AV_CH_LAYOUT_4POINT0, .num_ele = { 2, 0, 1, 0 }, .pairing = { { 1, 0 }, { 0 }, { 0 }, }, - .index = { { 0, 1 }, { 0 }, { 0 } }, - .config_map = { 3, TYPE_SCE, TYPE_CPE, TYPE_SCE }, - .reorder_map = { 2, 0, 1, 3 }, + .index = { { 0, 0 }, { 0 }, { 1 } }, + .config_map = { 3, TYPE_CPE, TYPE_SCE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3 }, + }, + { + .layout = AV_CH_LAYOUT_4POINT1, + .num_ele = { 2, 1, 1, 0 }, + .pairing = { { 1, 0 }, { 0 }, { 0 }, }, + .index = { { 0, 0 }, { 1 }, { 2 }, { 0 } }, + .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4 }, + }, + { + .layout = AV_CH_LAYOUT_2_2, + .num_ele = { 1, 1, 0, 0 }, + .pairing = { { 1 }, { 1 }, }, + .index = { { 0 }, { 1 }, }, + .config_map = { 2, TYPE_CPE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3 }, + }, + { + .layout = AV_CH_LAYOUT_QUAD, + .num_ele = { 1, 0, 1, 0 }, + .pairing = { { 1 }, { 0 }, { 1 }, }, + .index = { { 0 }, { 0 }, { 1 } }, + .config_map = { 2, TYPE_CPE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3 }, + }, + { + .layout = AV_CH_LAYOUT_5POINT0, + .num_ele = { 2, 1, 0, 0 }, + .pairing = { { 1, 0 }, { 1 }, }, + .index = { { 0, 0 }, { 1 } }, + .config_map = { 3, TYPE_CPE, TYPE_SCE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4 }, + }, + { + .layout = AV_CH_LAYOUT_5POINT1, + .num_ele = { 2, 1, 1, 0 }, + .pairing = { { 1, 0 }, { 0 }, { 1 }, }, + .index = { { 0, 0 }, { 1 }, { 1 } }, + .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4, 5 }, + }, + { + .layout = AV_CH_LAYOUT_5POINT0_BACK, + .num_ele = { 2, 0, 1, 0 }, + .pairing = { { 1, 0 }, { 0 }, { 1 } }, + .index = { { 0, 0 }, { 0 }, { 1 } }, + .config_map = { 3, TYPE_CPE, TYPE_SCE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4 }, + }, + { + .layout = AV_CH_LAYOUT_5POINT1_BACK, + .num_ele = { 2, 1, 1, 0 }, + .pairing = { { 1, 0 }, { 0 }, { 1 }, }, + .index = { { 0, 0 }, { 1 }, { 1 } }, + .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4, 5 }, + }, + { + .layout = AV_CH_LAYOUT_6POINT0, + .num_ele = { 2, 1, 1, 0 }, + .pairing = { { 1, 0 }, { 1 }, { 0 }, }, + .index = { { 0, 0 }, { 1 }, { 1 } }, + .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4, 5 }, + }, + { + .layout = AV_CH_LAYOUT_6POINT0_FRONT, + .num_ele = { 2, 1, 0, 0 }, + .pairing = { { 1, 1 }, { 1 } }, + .index = { { 1, 0 }, { 2 }, }, + .config_map = { 3, TYPE_CPE, TYPE_CPE, TYPE_CPE, }, + .reorder_map = { 0, 1, 2, 3, 4, 5 }, + }, + { + .layout = AV_CH_LAYOUT_HEXAGONAL, + .num_ele = { 2, 0, 2, 0 }, + .pairing = { { 1, 0 },{ 0 },{ 1, 0 }, }, + .index = { { 0, 0 },{ 0 },{ 1, 1 } }, + .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE, }, + .reorder_map = { 0, 1, 2, 3, 4, 5 }, + }, + { + .layout = AV_CH_LAYOUT_6POINT1, + .num_ele = { 2, 1, 2, 0 }, + .pairing = { { 1, 0 },{ 0 },{ 1, 0 }, }, + .index = { { 0, 0 },{ 1 },{ 1, 2 } }, + .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6 }, + }, + { + .layout = AV_CH_LAYOUT_6POINT1_BACK, + .num_ele = { 2, 1, 2, 0 }, + .pairing = { { 1, 0 }, { 0 }, { 1, 0 }, }, + .index = { { 0, 0 }, { 1 }, { 1, 2 } }, + .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6 }, + }, + { + .layout = AV_CH_LAYOUT_6POINT1_FRONT, + .num_ele = { 2, 1, 2, 0 }, + .pairing = { { 1, 0 }, { 0 }, { 1, 0 }, }, + .index = { { 0, 0 }, { 1 }, { 1, 2 } }, + .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6 }, + }, + { + .layout = AV_CH_LAYOUT_7POINT0, + .num_ele = { 2, 1, 1, 0 }, + .pairing = { { 1, 0 }, { 1 }, { 1 }, }, + .index = { { 0, 0 }, { 1 }, { 2 }, }, + .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6 }, + }, + { + .layout = AV_CH_LAYOUT_7POINT0_FRONT, + .num_ele = { 2, 1, 1, 0 }, + .pairing = { { 1, 0 }, { 1 }, { 1 }, }, + .index = { { 0, 0 }, { 1 }, { 2 }, }, + .config_map = { 4, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6 }, + }, + { + .layout = AV_CH_LAYOUT_7POINT1, + .num_ele = { 2, 1, 2, 0 }, + .pairing = { { 1, 0 }, { 0 }, { 1, 1 }, }, + .index = { { 0, 0 }, { 1 }, { 1, 2 }, { 0 } }, + .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7 }, + }, + { + .layout = AV_CH_LAYOUT_7POINT1_WIDE, + .num_ele = { 2, 1, 2, 0 }, + .pairing = { { 1, 0 }, { 0 },{ 1, 1 }, }, + .index = { { 0, 0 }, { 1 }, { 1, 2 }, { 0 } }, + .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7 }, + }, + { + .layout = AV_CH_LAYOUT_7POINT1_WIDE_BACK, + .num_ele = { 2, 1, 2, 0 }, + .pairing = { { 1, 0 }, { 0 }, { 1, 1 }, }, + .index = { { 0, 0 }, { 1 }, { 1, 2 }, { 0 } }, + .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_SCE, TYPE_CPE, TYPE_CPE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7 }, + }, + { + .layout = AV_CH_LAYOUT_OCTAGONAL, + .num_ele = { 2, 1, 2, 0 }, + .pairing = { { 1, 0 }, { 1 }, { 1, 0 }, }, + .index = { { 0, 0 }, { 1 }, { 2, 1 } }, + .config_map = { 5, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7 }, + }, + { + .layout = 0x00000f37, //FL+FR+FC+BL+BR+BC+SL+SR+TC + .num_ele = { 2, 2, 2, 0 }, + .pairing = { { 1, 0 }, { 1, 0 }, { 1, 0 }, }, + .index = { { 0, 0 }, { 1, 1 }, { 2, 2 } }, + .config_map = { 6, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7, 8 }, + }, + { + .layout = 0x00000ff3, //FL+FR+BL+BR+FLC+FRC+BC+SL+SR+TC + .num_ele = { 2, 2, 2, 0 }, + .pairing = { { 1, 1 }, { 1, 0 }, { 1, 0 }, }, + .index = { { 0, 1 }, { 2, 0 }, { 3, 1 } }, + .config_map = { 6, TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, + }, + { + .layout = AV_CH_LAYOUT_HEXADECAGONAL, + .num_ele = { 4, 2, 4, 0 }, + .pairing = { { 1, 0, 1, 0 }, { 1, 1 }, { 1, 0, 1, 0 }, }, + .index = { { 0, 0, 1, 1 }, { 2, 3 }, { 4, 2, 5, 3 } }, + .config_map = { 10, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_CPE, TYPE_CPE, TYPE_SCE, TYPE_CPE, TYPE_SCE }, + .reorder_map = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 }, }, };