From patchwork Fri Aug 21 21:57:58 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: 21807 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 D42D644B5D9 for ; Sat, 22 Aug 2020 01:06:19 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BD1E368B6CB; Sat, 22 Aug 2020 01:06:19 +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 3740E68AE29 for ; Sat, 22 Aug 2020 01:06:13 +0300 (EEST) Received: by mail-ej1-f66.google.com with SMTP id o18so4245169eje.7 for ; Fri, 21 Aug 2020 15:06:13 -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=e1kjCiEkrl5uO3oGBHDdqSrv3FHOLTD6OAYd9WLLPf0=; b=louNforZ/kj6pDwVsxSFPd2xdOFgrtE81aBIWCmmiqK4qIPCXDaY4ibOZcBhdI6bNn ZxtJKVHg3+plhHqMx27G0HjghmS4AVpOSad3jmkusvohYvUliCvGVJqrLBq0JZ+uOJrT 0BiDQWKnntbSmkO5PoI1jutoGclB1sLly9Sk+PKitrdjUgy9804FS0l7yk24AUOUsnB9 u8DZw6ZxQIv/AihnKJeX4yfJh+xd923tpOZeCZxYgck20/73/nrQ4C54NkqBUUUHIZSl /fh9MFyjkACJ+8n9fQvLuL+B3icJ0ARMK0Sb7epsmw/UgSYv7DCe+f04TriOHbthYZo6 EYgg== 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=e1kjCiEkrl5uO3oGBHDdqSrv3FHOLTD6OAYd9WLLPf0=; b=lVturBop7QighxkJKT6JDK7CySFhXVSN2g2vsKGRk6WnWsN5sJ/53Tni8yfJl5Y8Bt AaxaQf/zSUScYhc3v6XHlDDmSPlWRYe/NEDM5NqoAGxI6TjsVbkPX9LGbcPI/VQeIjkG Fg854Tl36H6C77OakdS8hHSd/bSb2PyPnlCYOCU0e78KgVkAw2dPUIKMpCsQgPaLmu8Q qXK/NhYEna8TU5Cve8C25Ab41g/+y8fmGajyai3HfP3yI3RGJ7u/9bDqK+mppEEhUB45 a+Y7D3YVvl31CjQ7x+34EL96UkQmrEbmMs8bpKTBFABFrk0CpPYkEQfdJeivlvF1dTCK 8QgA== X-Gm-Message-State: AOAM532AW9uouE/miSvIuMFgVTCvfwQG4gvxHjx698LJVKzO1CyEUKZm oiR/I4JrFN8PEHrLQUz22ZtPsF3C1Jk= X-Google-Smtp-Source: ABdhPJzT/TR84oWmOpdO9lEjU0d9CdPSNpIigFdUqyIPo0PDJPuXzLNIkVposJquGA7Pk6jyL923+g== X-Received: by 2002:a19:8015:: with SMTP id b21mr2248317lfd.206.1598047084665; Fri, 21 Aug 2020 14:58:04 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id v10sm629134lfo.11.2020.08.21.14.58.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 14:58:03 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 22 Aug 2020 00:57:58 +0300 Message-Id: <20200821215800.27162-2-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821215800.27162-1-jeebjp@gmail.com> References: <20200818192538.35023-1-jeebjp@gmail.com> <20200821215800.27162-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/3 v2] avcodec/aacdec_template: keep tabs on layout in sniff_channel_order 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" This way the layout set at various points can be checked instead of only having the layout at the end. --- libavcodec/aacdec_template.c | 56 ++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 8c5048cc13..9f7016790e 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -198,7 +198,7 @@ struct elem_to_channel { static int assign_pair(struct elem_to_channel e2c_vec[MAX_ELEM_ID], uint8_t (*layout_map)[3], int offset, uint64_t left, - uint64_t right, int pos) + uint64_t right, int pos, uint64_t *layout) { if (layout_map[offset][0] == TYPE_CPE) { e2c_vec[offset] = (struct elem_to_channel) { @@ -207,6 +207,9 @@ static int assign_pair(struct elem_to_channel e2c_vec[MAX_ELEM_ID], .elem_id = layout_map[offset][1], .aac_position = pos }; + if (e2c_vec[offset].av_position != UINT64_MAX) + *layout |= e2c_vec[offset].av_position; + return 1; } else { e2c_vec[offset] = (struct elem_to_channel) { @@ -221,6 +224,12 @@ static int assign_pair(struct elem_to_channel e2c_vec[MAX_ELEM_ID], .elem_id = layout_map[offset + 1][1], .aac_position = pos }; + if (left != UINT64_MAX) + *layout |= left; + + if (right != UINT64_MAX) + *layout |= right; + return 2; } } @@ -262,7 +271,7 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) int i, n, total_non_cc_elements; struct elem_to_channel e2c_vec[4 * MAX_ELEM_ID] = { { 0 } }; int num_front_channels, num_side_channels, num_back_channels; - uint64_t layout; + uint64_t layout = 0; if (FF_ARRAY_ELEMS(e2c_vec) < tags) return 0; @@ -294,6 +303,7 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) .elem_id = layout_map[i][1], .aac_position = AAC_CHANNEL_FRONT }; + layout |= e2c_vec[i].av_position; i++; num_front_channels--; } @@ -301,21 +311,21 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) i += assign_pair(e2c_vec, layout_map, i, AV_CH_FRONT_LEFT_OF_CENTER, AV_CH_FRONT_RIGHT_OF_CENTER, - AAC_CHANNEL_FRONT); + AAC_CHANNEL_FRONT, &layout); num_front_channels -= 2; } if (num_front_channels >= 2) { i += assign_pair(e2c_vec, layout_map, i, AV_CH_FRONT_LEFT, AV_CH_FRONT_RIGHT, - AAC_CHANNEL_FRONT); + AAC_CHANNEL_FRONT, &layout); num_front_channels -= 2; } while (num_front_channels >= 2) { i += assign_pair(e2c_vec, layout_map, i, UINT64_MAX, UINT64_MAX, - AAC_CHANNEL_FRONT); + AAC_CHANNEL_FRONT, &layout); num_front_channels -= 2; } @@ -323,14 +333,14 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) i += assign_pair(e2c_vec, layout_map, i, AV_CH_SIDE_LEFT, AV_CH_SIDE_RIGHT, - AAC_CHANNEL_FRONT); + AAC_CHANNEL_FRONT, &layout); num_side_channels -= 2; } while (num_side_channels >= 2) { i += assign_pair(e2c_vec, layout_map, i, UINT64_MAX, UINT64_MAX, - AAC_CHANNEL_SIDE); + AAC_CHANNEL_SIDE, &layout); num_side_channels -= 2; } @@ -338,14 +348,14 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) i += assign_pair(e2c_vec, layout_map, i, UINT64_MAX, UINT64_MAX, - AAC_CHANNEL_BACK); + AAC_CHANNEL_BACK, &layout); num_back_channels -= 2; } if (num_back_channels >= 2) { i += assign_pair(e2c_vec, layout_map, i, AV_CH_BACK_LEFT, AV_CH_BACK_RIGHT, - AAC_CHANNEL_BACK); + AAC_CHANNEL_BACK, &layout); num_back_channels -= 2; } if (num_back_channels) { @@ -355,6 +365,7 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) .elem_id = layout_map[i][1], .aac_position = AAC_CHANNEL_BACK }; + layout |= e2c_vec[i].av_position; i++; num_back_channels--; } @@ -366,6 +377,7 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) .elem_id = layout_map[i][1], .aac_position = AAC_CHANNEL_LFE }; + layout |= e2c_vec[i].av_position; i++; } if (i < tags && layout_map[i][2] == AAC_CHANNEL_LFE) { @@ -375,6 +387,7 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) .elem_id = layout_map[i][1], .aac_position = AAC_CHANNEL_LFE }; + layout |= e2c_vec[i].av_position; i++; } while (i < tags && layout_map[i][2] == AAC_CHANNEL_LFE) { @@ -384,6 +397,7 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) .elem_id = layout_map[i][1], .aac_position = AAC_CHANNEL_LFE }; + layout |= e2c_vec[i].av_position; i++; } @@ -394,41 +408,45 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) .syn_ele = layout_map[i][0], .elem_id = layout_map[i][1], .aac_position = layout_map[i][2] - }; i++; + }; layout |= e2c_vec[i].av_position; i++; i += assign_pair(e2c_vec, layout_map, i, AV_CH_TOP_FRONT_LEFT, AV_CH_TOP_FRONT_RIGHT, - AAC_CHANNEL_FRONT); + AAC_CHANNEL_FRONT, + &layout); i += assign_pair(e2c_vec, layout_map, i, AV_CH_TOP_SIDE_LEFT, AV_CH_TOP_SIDE_RIGHT, - AAC_CHANNEL_SIDE); + AAC_CHANNEL_SIDE, + &layout); 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++; + }; layout |= e2c_vec[i].av_position; i++; i += assign_pair(e2c_vec, layout_map, i, AV_CH_TOP_BACK_LEFT, AV_CH_TOP_BACK_RIGHT, - AAC_CHANNEL_BACK); + AAC_CHANNEL_BACK, + &layout); 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++; + }; layout |= e2c_vec[i].av_position; 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++; + }; layout |= e2c_vec[i].av_position; i++; i += assign_pair(e2c_vec, layout_map, i, AV_CH_BOTTOM_FRONT_LEFT, AV_CH_BOTTOM_FRONT_RIGHT, - AAC_CHANNEL_FRONT); + AAC_CHANNEL_FRONT, + &layout); } total_non_cc_elements = n = i; @@ -459,14 +477,10 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) } - layout = 0; for (i = 0; i < total_non_cc_elements; i++) { layout_map[i][0] = e2c_vec[i].syn_ele; layout_map[i][1] = e2c_vec[i].elem_id; layout_map[i][2] = e2c_vec[i].aac_position; - if (e2c_vec[i].av_position != UINT64_MAX) { - layout |= e2c_vec[i].av_position; - } } return layout; From patchwork Fri Aug 21 21:57:59 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: 21808 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 5463044BB0B for ; Sat, 22 Aug 2020 01:21:47 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 366A268B6C5; Sat, 22 Aug 2020 01:21:47 +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 5696568A552 for ; Sat, 22 Aug 2020 01:21:40 +0300 (EEST) Received: by mail-ej1-f66.google.com with SMTP id d6so4302750ejr.5 for ; Fri, 21 Aug 2020 15:21:40 -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=Ej9jGWIjItulAB5FbMgs9MgRey56S03b/Ak8TrdWDAY=; b=n3OzoF4coT/GgT2RPOKM7CxNHaEX5ReZlVLQc48ZGrOhgxg2/wmApFsrd5IiobkVHS Ca/8VY7W3XBhz66flJ/p/CwjU93MsVJOjJx/XCHLqVZNQzfqejYG2DK9xSqdm0YIufXJ C8yT2iunaPNp+Y+B6+Y1DOrOyWrIuWsHDOPWbU/hdHyXO0MDzx+6xX2o+UnvUxhlEyqm r8hzrq94qYGc0pjP+B9f4irExfi869tL/IzqH76H3KDGRzu9ucMEp5YO13sfkv3jTFvV TIeXQx81VeF2h96030pad8F80BvcStiHFI3V1NBD/0yX96Q4EeWwmrW2mBHZV1Oz+WMP oE7g== 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=Ej9jGWIjItulAB5FbMgs9MgRey56S03b/Ak8TrdWDAY=; b=X1Inq/vheq/orOJ6EBqbnd0qYUmbROTU68oB5YkRpTi/q1Kh3ba51vajMQ+kVEg0+f QBG3wvIM8Ix5NT0HTq97x8DRI2xURGpsCbU7p4orLCU8Vi3Z/gjaNnn3Nh5J96O29TPD JTNe0PpRhjR35Yng4ZB6L3bi/OHeStRtZ49HSZpOHvqvoiaRzgfVF1IqDbJuMwz+Q+dl Q2CfLz8hPBoRoFkP8ih5/CPktScvh1odOCx7QXI3alOkrt4T5ukbKFx9R0O/3YJpj7Jc Uq0iJ1Bv4nhz8PeO8Cz3pXh4qGnYuO2BKTBjTGBnQHI8qbIUUUF6O8CiuvhDCkRJ3wmR R4Hg== X-Gm-Message-State: AOAM532qjQPr+tzXYMPRDxS8IsYfVZ5vkYONo2ix3TApGGkWH6iVwwzh Mc6x+5ZhxzorejcreQARZOIdI9NcqWA= X-Google-Smtp-Source: ABdhPJwonxNlYd3jMTcy/zY/HQ2tt2wnqnvR9b/Cqe69WBRm80SO+IfsLZOmrMsbqh+C4fWPvtLocQ== X-Received: by 2002:a2e:9a93:: with SMTP id p19mr2354216lji.67.1598047086256; Fri, 21 Aug 2020 14:58:06 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id v10sm629134lfo.11.2020.08.21.14.58.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 14:58:05 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 22 Aug 2020 00:57:59 +0300 Message-Id: <20200821215800.27162-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821215800.27162-1-jeebjp@gmail.com> References: <20200818192538.35023-1-jeebjp@gmail.com> <20200821215800.27162-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/3 v2] avcodec/aacdec_template: add more checks to make sure only 22.2 gets to 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" This way we can check that we have exactly the required things for 22.2. Fixes #8845 --- libavcodec/aacdec_template.c | 47 ++++++++++++++++++++++++++++++++++-- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 9f7016790e..63604d39fd 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -266,6 +266,7 @@ static int count_paired_channels(uint8_t (*layout_map)[3], int tags, int pos, return num_pos_channels; } +#define PREFIX_FOR_22POINT2 (AV_CH_LAYOUT_7POINT1_WIDE_BACK|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_LOW_FREQUENCY_2) static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) { int i, n, total_non_cc_elements; @@ -402,46 +403,86 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) } // The previous checks would end up at 8 at this point for 22.2 - if (tags == 16 && i == 8) { + if (layout == PREFIX_FOR_22POINT2 && tags == 16 && i == 8) { + if (layout_map[i][0] != TYPE_SCE || + layout_map[i][2] != AAC_CHANNEL_FRONT) + goto end_of_layout_definition; + 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] }; layout |= e2c_vec[i].av_position; i++; + + if (layout_map[i][0] != TYPE_CPE || + layout_map[i][2] != AAC_CHANNEL_FRONT) + goto end_of_layout_definition; + i += assign_pair(e2c_vec, layout_map, i, AV_CH_TOP_FRONT_LEFT, AV_CH_TOP_FRONT_RIGHT, AAC_CHANNEL_FRONT, &layout); + + if (layout_map[i][0] != TYPE_CPE || + layout_map[i][2] != AAC_CHANNEL_SIDE) + goto end_of_layout_definition; + i += assign_pair(e2c_vec, layout_map, i, AV_CH_TOP_SIDE_LEFT, AV_CH_TOP_SIDE_RIGHT, AAC_CHANNEL_SIDE, &layout); + + if (layout_map[i][0] != TYPE_SCE || + layout_map[i][2] != AAC_CHANNEL_FRONT) + goto end_of_layout_definition; + 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] }; layout |= e2c_vec[i].av_position; i++; + + if (layout_map[i][0] != TYPE_CPE || + layout_map[i][2] != AAC_CHANNEL_BACK) + goto end_of_layout_definition; + i += assign_pair(e2c_vec, layout_map, i, AV_CH_TOP_BACK_LEFT, AV_CH_TOP_BACK_RIGHT, AAC_CHANNEL_BACK, &layout); + + if (layout_map[i][0] != TYPE_SCE || + layout_map[i][2] != AAC_CHANNEL_BACK) + goto end_of_layout_definition; + 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] }; layout |= e2c_vec[i].av_position; i++; + + + if (layout_map[i][0] != TYPE_SCE || + layout_map[i][2] != AAC_CHANNEL_FRONT) + goto end_of_layout_definition; + 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] }; layout |= e2c_vec[i].av_position; i++; + + if (layout_map[i][0] != TYPE_CPE || + layout_map[i][2] != AAC_CHANNEL_FRONT) + goto end_of_layout_definition; + i += assign_pair(e2c_vec, layout_map, i, AV_CH_BOTTOM_FRONT_LEFT, AV_CH_BOTTOM_FRONT_RIGHT, @@ -449,9 +490,11 @@ static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) &layout); } +end_of_layout_definition: + total_non_cc_elements = n = i; - if (tags == 16 && total_non_cc_elements == 16) { + if (layout == AV_CH_LAYOUT_22POINT2) { // 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 From patchwork Fri Aug 21 21:58:00 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: 21809 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 972A844BB15 for ; Sat, 22 Aug 2020 01:25:15 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7358F68B6CB; Sat, 22 Aug 2020 01:25:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1FD4168B4A9 for ; Sat, 22 Aug 2020 01:25:09 +0300 (EEST) Received: by mail-ej1-f42.google.com with SMTP id o23so4331106ejr.1 for ; Fri, 21 Aug 2020 15:25:09 -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=G3KedyouCwh6K3avCQ1Z/7V/GGC4vtzJpf7GkI24s1w=; b=VTlCiRlYsWxPzeWnFU4cmhikBJJnF4/o/+0pKSlBXvVWPb4I+XZF5zFeKYxKLjoodg 49fkLKcQN1ftRGyA8Qsz+mroz4Vp8sW2ibfhgfo7s3p8DQeJoz2XqZLml42kP4/3f9pT qAsdbQnPGLCQTrsmPqQ/b4vsF+OVDIbDpXqkvmj1JJYc1+/bxR+5FbKi57x80zz5YoHw lNFGiBuZpbatsnl0eoeYY+wzJKw2lBjpzTRtholGtksLzEzOKWLuw2Vlf1DeCeDWSNUR pZVm2reuAbwSIe+tWE76wKbOVumbVPDgwUAxxLE8iRLlJ8dmnqKgCeklChOv+++kFyvi 3uyQ== 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=G3KedyouCwh6K3avCQ1Z/7V/GGC4vtzJpf7GkI24s1w=; b=oB1Mc7gdePA9NVGFtBiETRzAMv35bJDw9drcapJfJD4Ek2JBBv3JidHfhluivNagpQ lZCRYX1bu/gwTbPuE8uxCeoNDhc8jHPJhnPo65OA5n4qCoE2vNxeInb1zVOq/S/hWd66 Qb0PgtWnWBFzjf/uuCAyvm+y6TII12IjNioNdmUUxxvl2rPFJ+yHrkf3xEVnvURqyAI6 jasL5CMFr9+/EjHyP1/0FACYZm8X2IIC+nlzmU47r4Cvt3WopcnjAPHz3xRxre6mK6kH 3lLn4gNkI7xRX5qyEz7SA1z73rwkFIzTk/Kz0yzo7X07SyRRjkKjtGm997JmlPBWXzB3 KkfA== X-Gm-Message-State: AOAM533hMKbr7APglw178LkUb+MvHc0xq9hmQQpwgdHxks1hKdOjHwEm lDxAWmCEpAILKlrbDMC10+D6S0Tu0Mw= X-Google-Smtp-Source: ABdhPJyt5ltHz5PK8DfZpU4hkkFjSyonz5LkpaJDrc70ig9Pv7X8Zz4TrUTLJWvOuMxbUI5PqSQkgQ== X-Received: by 2002:a05:651c:d5:: with SMTP id 21mr2179951ljr.276.1598047088023; Fri, 21 Aug 2020 14:58:08 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id v10sm629134lfo.11.2020.08.21.14.58.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 21 Aug 2020 14:58:06 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 22 Aug 2020 00:58:00 +0300 Message-Id: <20200821215800.27162-4-jeebjp@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200821215800.27162-1-jeebjp@gmail.com> References: <20200818192538.35023-1-jeebjp@gmail.com> <20200821215800.27162-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/3] avcodec/aacdec_template: log the element order before/after reordering 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" This was quite useful to verify that 22.2 got properly handled, among other things. --- libavcodec/aacdec_template.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index 63604d39fd..b9b9ae5324 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -266,6 +266,22 @@ static int count_paired_channels(uint8_t (*layout_map)[3], int tags, int pos, return num_pos_channels; } +static void log_e2c(int num, struct elem_to_channel e2c) { + char buf[128] = { 0 }; + + av_get_channel_layout_string(buf, sizeof(buf), -1, e2c.av_position); + + av_log(NULL, AV_LOG_DEBUG, + "tag %d = { position(s): %s (0x%"PRIx64"), syn_elem: %s, elem_id: %"PRIu8" }\n", + num, + e2c.av_position == UINT64_MAX ? "Unset/Ignored" : buf, + e2c.av_position, + e2c.syn_ele == TYPE_SCE ? "SCE" : + e2c.syn_ele == TYPE_CPE ? "CPE" : + e2c.syn_ele == TYPE_LFE ? "LFE" : "", + e2c.elem_id); +} + #define PREFIX_FOR_22POINT2 (AV_CH_LAYOUT_7POINT1_WIDE_BACK|AV_CH_BACK_CENTER|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT|AV_CH_LOW_FREQUENCY_2) static uint64_t sniff_channel_order(uint8_t (*layout_map)[3], int tags) { @@ -494,6 +510,11 @@ end_of_layout_definition: total_non_cc_elements = n = i; + av_log(NULL, AV_LOG_DEBUG, "Element order before reorder:\n"); + for (i = 0; i < n; i++) { + log_e2c(i, e2c_vec[i]); + } + if (layout == AV_CH_LAYOUT_22POINT2) { // 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 @@ -520,6 +541,11 @@ end_of_layout_definition: } + av_log(NULL, AV_LOG_DEBUG, "Element order after reorder:\n"); + for (i = 0; i < total_non_cc_elements; i++) { + log_e2c(i, e2c_vec[i]); + } + for (i = 0; i < total_non_cc_elements; i++) { layout_map[i][0] = e2c_vec[i].syn_ele; layout_map[i][1] = e2c_vec[i].elem_id;