From patchwork Mon Feb 12 21:15:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marton Balint X-Patchwork-Id: 46225 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:9002:b0:19e:cdac:8cce with SMTP id d2csp921777pzc; Mon, 12 Feb 2024 13:16:22 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCVtOCFPBxEqQJDwm0gDfprGiOR8oZGT/TXBHloSuhWRUGArzgG9xh1F6Cqj6KSTZ9ow1AXNp5f7vvTKdyQuBfZGlZHJCbsjzgdQCw== X-Google-Smtp-Source: AGHT+IFyJbe3roTl2j4KJsov5ayLgNKjqU88omtVgg6xwJphnqRdC/ARxbwJ5FYlz+1E7D2J3x3t X-Received: by 2002:a05:651c:507:b0:2d0:d336:d144 with SMTP id o7-20020a05651c050700b002d0d336d144mr6277260ljp.14.1707772581977; Mon, 12 Feb 2024 13:16:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1707772581; cv=none; d=google.com; s=arc-20160816; b=n03lFvNqNAmv16bQsfvgcG9/jiUpyZoTaicbVmYebdTbjB+oA1yZiZt6KtIlNpSieN KQZNfFVQBiwReaUtEYPxRfZiOzKiur1aqy8cGHoxxtzZgbwtB3AeU3Gi4K0dNloKG9NX mvWNoKb7uqF8dU5kfLYMYfux4Mw5gpOtPzhgG0fDR0sNz+JCmgH5kmafmE/i/qNHzQv4 abgWhV/bBPR4jR9l7d6kcnA4cdqKWPiRGAZDyf90oi2hbheez4Ys6adbBdrR22fjmCg6 2b+2Ie/tHj1lWDj6EuEUyOXvomOoM+7z5NVeNIemfUPlq+aEJTfoUMiVpJ3rIdPrlnv3 Qh/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=K6NmtLrAe5c87qgN6LtdoTGkEe1JSuKSEDpU7pU8h9E=; fh=GiUIPxNLnOjL9oPJ2DlcKC7AfbHUoE0M9cUANEUGN+4=; b=A0IYQkaxvVaZMiDI7G7dAjKdhU6W1+hxaRZZnxDVFWMBq2FpP1Kbdjk0piAPi2WfVP zmg8bEVuuusDAHerhZ0+ON+2l+IccrL8k36gvcjlIvdqt6Efvfut6BgzBJayO139x/qw IAzqdaCia693IyF92e2veroEb0CFOPeLiACxObt70Xi1/gXXB6DNgjnWBVeWUhWqlyjc yBV72r+5RBCHV2KVolea8+uziMcpQs+z8iCtL8CmSsjExaQ1kA22vFSG3S29UAE/ftcS gI+Bsudv6em3XlQ0w4Yk115KMTjhqHNG4VKOCICpZZ7kSU98FZERQqyUw55NDUYepMRH OgYg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 X-Forwarded-Encrypted: i=1; AJvYcCW+O13bfjJA58w12p1VOTO9HUcWF8U0FF5bhRZqCe5jkWBjuDBSa+KQqPmnI/8WINsLMgY49tYvV8SXvh1SnkxS5XzMghQEufcats+4OYGd2XlIBfUsXWHO1XQSHm4YHJsOTVaKyq0vybUE0tULBRcoR0ZSQMWtjpph/sj4Uc1ObBW5YQIuWV/DGIl4cNbDziHlEXLnueew5CvF64XQnnWWl+1zje/p672uorViWKSTVUqd7g0aQak1Fwhf9dxE1+yD1wn4vUZbtc9zJF2ChlE7Anzi6hamijtUqXZPW6RRHqQYhEC59Z8v9V8i0MJZ0jl8hgEWUePc61uLGavOFceRzYssw6m7kr/8wvcPST+Jn4l+ejI2d6qEfpmngTxx+yL9icYUH5ZjQ/Kx1p0iEqe7nYbajyJwNUycqXZwueLu8kSsbh3iQfC4aHLolyKSXdvKHkL84LwmUKl9slOdCIfFdgEDsdT6YPOWwDqk3H2SviZEwGDZFlZ9qP+DvSbWHRS0Ki+NBVBSULr8HHzBq3au7D/oiepAP8d1sj/WbWobgOILsPyA53L5AeygC91P4CzStEJDJ4/a7wf3AvBoL+cyjulvs4bNhAMnCHlNjhaPFaEYbW2yWpfc01Cy+i5AzDWOfU39tK/hFtK8JGuWh4wvK31tucKAh9s+6Va8y6lT312sBjHB97jofePJEA81kF4CmoSJfhYwgBg5OrYPtivyBWgDobFf99hT85L2gZyntOtLjAhr2Zuez+s5QHSpH2aKZxMUwC9BKVRbwQp5fxhZjaOIIKr3ma/rWmav96S9QB+tqw+zgdJjkyItWWxUDB2Kc4g77sr0FVDED6QKQVm9DL47AXEZ+gbDDJ2long4Jg0cfdF9ihTptGXqcwMzaTVPdnt1xsFkhYvLwyaIO1qOjeqzEbhMVtaiXM1k9HUcmM44Y8L2JU3vbADor9bIqZ+9NL Po1Wwq8Wdndvf2UgnNci2O5YBrDpH26Cw/LPFMrCSOpVs/IN0crIYAkWUnJNlnZg3ywyV5Ac1g9CS3UGePQabud58VDgakyCViqhTX5nK+GX0N5gJld7vi9FzsM2n5sRpyrTRzFv8nV36lSVj0yfB6QpFbX6x8xPZjw+mwfW8/zMVEhCkDvveHDllP6nRArqTm4sJJEcWR/sKRIdQ9c1m7CulXP9iJgwtr8lDKtZUxhMlOPXwOb4kEg/sGThJ5lL6vXhvF3PoHFzXO9xa5DCNaSNMwmnX8sAlPlWdTjKlnrpR/GHDcFYWMomE2x6mS0rIG+6hzP4m/otWIHPQsS0cQliPogPjcm1xx80yVLWwRLLUFJiDiDB5mOOUAAO1U966FWhgmgGr7Tp2DqKS+yAzrVeJzSWAVEFhkbCerGbLHbjwBw1o8oXC2UInviR+RBM5SsFrzIH0ThVRIEWeOOyjBWZ6QHla/0JooyUZUeyfEitqwyQhApZ7BhD/4zJtWf9GVt4HfctZ5jjGW0bUDdxE8/UUdNld56AqR/p+eehjWHjRf6IMyFbSmCmF+A/l5MSRT0ziv3zCbN1ZCJoGiGEcRp73a/CPe8nky Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j21-20020a508a95000000b005601ab7b947si3222826edj.111.2024.02.12.13.16.21; Mon, 12 Feb 2024 13:16:21 -0800 (PST) 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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 66FCF68D150; Mon, 12 Feb 2024 23:16:07 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8DF9268D119 for ; Mon, 12 Feb 2024 23:16:00 +0200 (EET) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 44A28E9F3A; Mon, 12 Feb 2024 22:16:00 +0100 (CET) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id h_hwSHQ6TG2d; Mon, 12 Feb 2024 22:15:57 +0100 (CET) Received: from bluegene.passwd.hu (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 96379E9F6D; Mon, 12 Feb 2024 22:15:57 +0100 (CET) From: Marton Balint To: ffmpeg-devel@ffmpeg.org Date: Mon, 12 Feb 2024 22:15:35 +0100 Message-Id: <20240212211537.18468-3-cus@passwd.hu> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240212211537.18468-1-cus@passwd.hu> References: <20240212211537.18468-1-cus@passwd.hu> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/5] avutil/tests/channel_layout: add tests for av_channel_order_retype X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Cc: Marton Balint Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 7YedaIQDhkmx Signed-off-by: Marton Balint --- libavutil/tests/channel_layout.c | 63 ++++++++++++++++++++++++++++++++ tests/ref/fate/channel_layout | 27 ++++++++++++++ 2 files changed, 90 insertions(+) diff --git a/libavutil/tests/channel_layout.c b/libavutil/tests/channel_layout.c index c537e7e710..d83839700c 100644 --- a/libavutil/tests/channel_layout.c +++ b/libavutil/tests/channel_layout.c @@ -24,6 +24,7 @@ #include "libavutil/bprint.h" #include "libavutil/channel_layout.h" +#include "libavutil/error.h" #include "libavutil/internal.h" #include "libavutil/mem.h" @@ -112,6 +113,53 @@ static void channel_layout_from_string(AVChannelLayout *layout, av_bprintf(bp, "fail"); } +static const char* channel_order_names[AV_CHANNEL_ORDER_NB] = {"UNSPEC", "NATIVE", "CUSTOM", "AMBI"}; + +static void describe_type(AVBPrint *bp, AVChannelLayout *layout) +{ + if (layout->order >= 0 && layout->order < AV_CHANNEL_ORDER_NB) { + av_bprintf(bp, "%-6s (", channel_order_names[layout->order]); + av_channel_layout_describe_bprint(layout, bp); + av_bprintf(bp, ")"); + } else { + av_bprintf(bp, "???"); + } +} + +static const char *channel_layout_retype(AVChannelLayout *layout, AVBPrint *bp, const char *channel_layout) +{ + av_channel_layout_uninit(layout); + av_bprint_clear(bp); + if (!av_channel_layout_from_string(layout, channel_layout) && + av_channel_layout_check(layout)) { + describe_type(bp, layout); + for (int i = 0; i < AV_CHANNEL_ORDER_NB; i++) { + int ret; + AVChannelLayout copy = {0}; + av_bprintf(bp, "\n "); + if (av_channel_layout_copy(©, layout) < 0) + return "nomem"; + ret = av_channel_layout_retype(©, i, 0); + if (ret < 0 && (copy.order != layout->order || av_channel_layout_compare(©, layout))) + av_bprintf(bp, "failed to keep existing layout on failure "); + if (ret >= 0 && copy.order != i) + av_bprintf(bp, "returned success but did not change order "); + if (ret == AVERROR(ENOSYS)) { + av_bprintf(bp, " != %s", channel_order_names[i]); + } else if (ret < 0) { + av_bprintf(bp, "FAIL"); + } else { + av_bprintf(bp, " %s ", ret ? "~~" : "=="); + describe_type(bp, ©); + } + av_channel_layout_uninit(©); + } + } else { + av_bprintf(bp, "fail"); + } + return bp->str; +} + #define CHANNEL_NAME(x) \ channel_name(&bp, (x)); @@ -437,5 +485,20 @@ int main(void) av_channel_layout_uninit(&layout2); av_bprint_finalize(&bp, NULL); + printf("\nTesting av_channel_layout_retype\n"); + { + const char* layouts[] = { + "FL@Boo", + "stereo", + "FR+FL", + "ambisonic 2+stereo", + "2C", + NULL + }; + for (int i = 0; layouts[i]; i++) { + printf("With \"%s\": %s\n", layouts[i], channel_layout_retype(&layout, &bp, layouts[i])); + } + } + return 0; } diff --git a/tests/ref/fate/channel_layout b/tests/ref/fate/channel_layout index ab9bee947b..1d1f1cb082 100644 --- a/tests/ref/fate/channel_layout +++ b/tests/ref/fate/channel_layout @@ -185,3 +185,30 @@ On "ambisonic 2+stereo" layout with 11: -1 Testing av_channel_layout_subset On "ambisonic 2+stereo" layout with AV_CH_LAYOUT_STEREO: 0x3 On "ambisonic 2+stereo" layout with AV_CH_LAYOUT_QUAD: 0x3 + +Testing av_channel_layout_retype +With "FL@Boo": CUSTOM (1 channels (FL@Boo)) + ~~ UNSPEC (1 channels) + ~~ NATIVE (1 channels (FL)) + == CUSTOM (1 channels (FL@Boo)) + != AMBI +With "stereo": NATIVE (stereo) + ~~ UNSPEC (2 channels) + == NATIVE (stereo) + == CUSTOM (2 channels (FL+FR)) + != AMBI +With "FR+FL": CUSTOM (2 channels (FR+FL)) + ~~ UNSPEC (2 channels) + != NATIVE + == CUSTOM (2 channels (FR+FL)) + != AMBI +With "ambisonic 2+stereo": AMBI (ambisonic 2+stereo) + ~~ UNSPEC (11 channels) + != NATIVE + == CUSTOM (ambisonic 2+2 channels (FL+FR)) + == AMBI (ambisonic 2+stereo) +With "2C": UNSPEC (2 channels) + == UNSPEC (2 channels) + != NATIVE + == CUSTOM (2 channels (USR768+USR768)) + != AMBI