From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id DA33740EAF for ; Sun, 6 Aug 2023 10:12:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 54C6068C691; Sun, 6 Aug 2023 13:12:42 +0300 (EEST) Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2043.outbound.protection.outlook.com [40.92.59.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 604A968C69A for ; Sun, 6 Aug 2023 13:12:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rn2iYWfJWsGGzVztBiSBuFInsMo5F3lAnguSmX+Kg+tc/YNMgTXlYZazoxlbsuNdtU0WzAEz+X8TE6PRS0ugOELyd2162v+gPB70SHV8/4q2BeEwi6n+X+GGFOAP707c3BBNvGTjaqZmRGfBAh5lmF/JffKXRr+zJLKJOlsuYgkGi1SOJStZDAW3b7fmmsNmHeBUmceRdpxBtz8cvbEqfgF8mzWZ44k7Ybys6nQPNBw1kz6Ff9CueLuMnHYSUBVjtQwFRCbzencOvGjUnVbWu1xXIi3D9gXbdORcGUVZiOZHWNX4Due+WgThSs40NVuh/PhEtZBVxLnBADldG2a4oQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=XM7cxWzeFnlU+WmB785B5P/gu2I6E0TkiiyWVdoXSGg=; b=NheG7eMwPRV3+grXd4Nfb8wdJ15SADtlKVHCx6Ai59GYLnR1A2nDfeAy7xl856LWnBybGpD8I9sBTGmtVBDsUo0AcSNo6ox5M1bPPunngprnl17NrKG6+z/vcbMQmyl7yYLhneukl8IylyUWjuQMA+0fsedD+clswRayAQTV8Qu+mjCy+r2eZhWRnFCDXgRTDD8lF31hcbA95vbm/nzPvUyH7sZyzVsCIOn5YgmSYdxOHq8q+vVBFMipV+kqq8odk1ZNS5V9KQg4crSbZdwCE+gOpzFB1KjAmuEF683AFtPbYBDjiJM+QcieL+AAVffjJ2dhpC53NmluxSYBL6ojWQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=XM7cxWzeFnlU+WmB785B5P/gu2I6E0TkiiyWVdoXSGg=; b=Y3d3+dsPsKLtoUS7c/fGPB/mxVvHS34bVMhMJlo7CMtk2awBgtuwHafZgIyJaTrSWuBVV/ur9Wach2uYxaCzawA2a0jKL7ZrpPmSXQovYmO+Uu34/GS+LU60fU58SN1i7mUhql1DSY8OkWBB8zrMeLDeizM6jxK9aSExNlLKwJurWecTI/+XFxU0gfFU5pBuUOH6VjZuEBvRUUzhBwt5RCNjY1gMDcZpDAy2DzH1mFBxJ32oU2WvP1VIvCbiGczCq12jrCseoPVE4b4mFheusbs/WUt10pgEFpSfGC1YlAyF7hn4Bci+1f8nEpNQ3scXfjJNiQ3LVDpkW+a3C+G7Pg== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DU2P250MB0222.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:277::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6652.25; Sun, 6 Aug 2023 10:12:38 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::5e01:aea5:d3a8:cafa%3]) with mapi id 15.20.6652.021; Sun, 6 Aug 2023 10:12:38 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 6 Aug 2023 12:13:20 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [/HLtn5rCigdHJk0kvObFHEQ+9wZY+qYocKPZxWTENLs=] X-ClientProxiedBy: ZR2P278CA0013.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:50::17) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20230806101323.2828419-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DU2P250MB0222:EE_ X-MS-Office365-Filtering-Correlation-Id: db4793ec-24d5-4249-051e-08db9665a96d X-MS-Exchange-SLBlob-MailProps: AZnQBsB9Xmre2cOvxteVHTfiuSrHMX7oNypDEKwzdlrJFagnwC4rceWgT8Xb2Cu/PqdDkV4M/K4HHxJgpF4QgqaOIwhgqCyqgeL/eTTcUdqjd8S/LpgvzqcJ0sSqPP5ZeZe6kvNfJsLZYXySRS2LiHiJo/3b6INfBZT8Cn3rXFDS7z1sqTpvQrssdDIdQ+FS6JKi3B9nihCko7Om7PcS3y5olV4JIhn4RlTW5KgKow30xIbr7EcrrlVnG1ndDKALPJi5a07gxwH0SC7LujJLL3C957FVN36iL/EVGAR5KYu7AdLI5fax78SKpoUU806G7geBo+RUu4lp4nO5VthMXLUVYDlY6gWhB/FcdstmWUFw9zYQ53URLXx+TlXWd3e0hyYETh7wifnjudmiaM9NjB/LPVNntOsscZ2Z/gFUz09xi6e1a6TuS+DE/HEFEnx+IlirhG2G+A3N2UdiBKid6wsTLl+/iYMau5dhhgWPlonp6BA+9cndFG0DhugeFduOS3VA7s2KZ7zntYzmgH8a/pHxhnOmsWKnXguRIphiCiInMNct5O6o7NrqryEKRlcjtbgQhHnxldMDo0bq4IhZYOM2p99reoldGUFGika7znQzTiQFPBuHabbjLDuM2r2SmMsQvrKXXsituOYkKKY07yNaJ8HFt7wvuLDMcUeoUNavBOuE+weEJkTzAYReZJrTF4LNQ0zIFsX9F5GOa90r8N8KEsWPiPWjrV8IR+dG9DI/SwpPXCIm0m02rvG0HpNKo8u/9UT0XaM= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GY2JqW5FgXxdItOtDw6+GgspX61VaLK/19OfKFy/EEeLvy9wBF0YAJuDOE6O7bc6Kfpom7f9NNTgPqbFUhcZodjQXWe49+oGsb+WhBtkJV+VTlqJz8SUC8ljcgE+h7yvZtAitfFbdjd34jG58pAGQCvVKDAFaE6RvgOhZPz0Y6ICKqgcG2nIkk/zT1rYaLXHpeCvnb2ea81XM287J4f5fZsAIpIdZVu3sCBGGT/2Cyu8c/cvV64j8HY4xit7nOGZsArOTKytAiDm2KwHNGEQq1s7vnVrrHpervV/ObjHw98eya7SjWRsa2te4NB8rLF1SjkmhGx/XJUH3v0KGP5yRhZK1VqijTum6WUydUWcTFdILaaQB7qIrHYjGGnxejSPJH1niRzTNhG0GU1Mo2WPcGY+WEScr7h6fY0jRBy5anHj0wW9QXYZcdg1iWsX+copC5t8IlBPNRr4YybWdmznu5KqB14+TsNt6sPQu4hypZEMVEYU9VtRllZwWGJ57VJzW7HacXZHZyBIvwWaNCOlIGDRN0c3WLlh2SUi6fn12taqj3+D636p5IAazjNTMxLojjPAFMtlaP9xW4lnuKKevpcNBjix8a0lwkYBHqIQB1Q= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?0IvEAsZ5CL/SkEe1+f8QEJyjBWouZ7dYbUGKMHJ70pfrsEk1AG5qLDerSbpi?= =?us-ascii?Q?uZWP4c/hGiW2H5iu9ZUEwRxn0fJq+xfbzaVWtCVHd73PC44caAugSJ2RXnMv?= =?us-ascii?Q?LhP5iapBNLDf8jLOEJb5oyyts/g3LI65NvAbgWxEmomaqNsSg4Umi+S8GEoE?= =?us-ascii?Q?WRZwtmvg+eFLv230ijUSSTgHKfn4X/8xQ7R/UTKaIR+ZVnzkNKT1TRNnXN3I?= =?us-ascii?Q?/zJzQNOvSiePdfi6S1O34w0XqITfNqN0n5ozJzlXNOr2AxgDuI2+/ohutN+Y?= =?us-ascii?Q?WX0ycnUCQgsJOpt5oK3JYY7EVdjP66GuXeqJ388eXLR3PXWIXwJtcI6gLf1d?= =?us-ascii?Q?rh0cDKlyPKiJVWAD+WMZNnyF5PFZJgd1I/OZYUGETTTM57fs4A39NPxnYT8v?= =?us-ascii?Q?qNmeS3jXSjluDo0UhrunjHUX3Kxh5OgW0yWgGqOKAqDOdS/edDKCQGySgM4b?= =?us-ascii?Q?dXIwcL0TsduXhmMA4h6hxAjGzN+QoaHVhDyBQnUPykdvOKWtU5zeIn8yfkJj?= =?us-ascii?Q?gu5DjxkewSuIvrnWUxqf8QX8lTdAe3HNUsJSkyZqC3mSoYt5IgwDYQ3/hDQ7?= =?us-ascii?Q?24nDUwjA//tzz1zy2Uiev+QfCNkHZR4tMm1lQb+tkz6bE2I0h/v0y/K+eZFA?= =?us-ascii?Q?U56V+086wr2OY9lOpMCOZrZgdfckaLuHYioHH9V0tuiQVc6+YvyjhzjHTQ5U?= =?us-ascii?Q?JlkP9LECEdM+FRIBNABgarBSmiM1RG29F6G4ZaMYE362Vqnn+LGsee6RPq21?= =?us-ascii?Q?p+bCb+ifbKDO/OSUPy61UM7pcDlezEcVZ2bFHi8c24YC1e+E57ZP+jXSewNb?= =?us-ascii?Q?mSq3WP3fReTpcJHL12Glv94izQNDKiu+PC94InSoTm5NHrj0u/YTxIS72RdX?= =?us-ascii?Q?w0vmdOYYrX9Shl1XgYo3JAftPN8EsCSd2nOCBw9zOENVIz8QK5b7m902oh+U?= =?us-ascii?Q?GAXTnYDJbkKVMIFuK0xLJK60E+j0L+nWio/a2r1BdIp12ikdurdF5rD4UT5K?= =?us-ascii?Q?EutR2Xf/1kcVu6vK66tO5ev243QxEe7Zk6YFqcM9rXuYgVlBAh3BZcwIGqNt?= =?us-ascii?Q?PIAejfel6vH/iIvE3fKfHP7446dgu+oWlJRsSsoCkurz1eAOGI1pNQhIm5aP?= =?us-ascii?Q?akPdGu30ysQHJliNc0d6YdvYSgA+tyqCoebVP43pWG98Lb1XvNyEx/Ky2d5C?= =?us-ascii?Q?HEsgX6xeGFiTrTUNc3WYApfH8e0ifntnAmat+qeFV+maGj4MXx+LGg2AxOdF?= =?us-ascii?Q?YP0O42B5KukEnZIsWE+x?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: db4793ec-24d5-4249-051e-08db9665a96d X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Aug 2023 10:12:38.3544 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0222 Subject: [FFmpeg-devel] [PATCH 4/7] avutil/tests/channel_layout: Also test non-AVBPrint variants 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: Andreas Rheinhardt Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: Signed-off-by: Andreas Rheinhardt --- libavutil/tests/channel_layout.c | 108 +++++++++++++++++++++++++------ 1 file changed, 90 insertions(+), 18 deletions(-) diff --git a/libavutil/tests/channel_layout.c b/libavutil/tests/channel_layout.c index 5516db0904..665ae6e277 100644 --- a/libavutil/tests/channel_layout.c +++ b/libavutil/tests/channel_layout.c @@ -19,32 +19,104 @@ */ #include "libavutil/channel_layout.c" +#include "libavutil/mem.h" + +#define BPRINT_ARGS1(bp, ...) (bp), __VA_ARGS__ +#define BPRINT_ARGS0(bp, ...) __VA_ARGS__, (bp) +#define ORD_ARGS1(str, size, ...) (str), (size), __VA_ARGS__ +#define ORD_ARGS0(str, size, ...) __VA_ARGS__, (str), (size) + +// This macro presumes the AVBPrint to have been cleared before usage. +#define CMP_BPRINT_AND_NONBPRINT(bp, func_name, ARG_ORDER, ...) do { \ + char *str; \ + int size; \ + func_name ## _bprint(BPRINT_ARGS ## ARG_ORDER((bp), __VA_ARGS__)); \ + if (strlen((bp)->str) != (bp)->len) { \ + printf("strlen of AVBPrint-string returned by "#func_name"_bprint" \ + " differs from AVBPrint.len: %"SIZE_SPECIFIER" vs. %u\n", \ + strlen((bp)->str), (bp)->len); \ + break; \ + } \ + size = func_name(ORD_ARGS ## ARG_ORDER(NULL, 0, __VA_ARGS__)); \ + if (size <= 0) { \ + printf(#func_name " returned %d\n", size); \ + break; \ + } \ + if ((bp)->len != size - 1) { \ + printf("Return value %d of " #func_name " inconsistent with length"\ + " %u obtained from corresponding bprint version\n", \ + size, (bp)->len); \ + break; \ + } \ + str = av_malloc(size); \ + if (!str) { \ + printf("string of size %d could not be allocated.\n", size); \ + break; \ + } \ + size = func_name(ORD_ARGS ## ARG_ORDER(str, size, __VA_ARGS__)); \ + if (size <= 0 || (bp)->len != size - 1) { \ + printf("Return value %d of " #func_name " inconsistent with length"\ + " %d obtained in first pass.\n", size, (bp)->len); \ + av_free(str); \ + break; \ + } \ + if (strcmp(str, (bp)->str)) { \ + printf("Ordinary and _bprint versions of "#func_name" disagree: " \ + "'%s' vs. '%s'\n", str, (bp)->str); \ + av_free(str); \ + break; \ + } \ + av_free(str); \ + } while (0) + + +static void channel_name(AVBPrint *bp, enum AVChannel channel) +{ + av_bprint_clear(bp); + CMP_BPRINT_AND_NONBPRINT(bp, av_channel_name, 1, channel); +} + +static void channel_description(AVBPrint *bp, enum AVChannel channel) +{ + av_bprint_clear(bp); + CMP_BPRINT_AND_NONBPRINT(bp, av_channel_description, 1, channel); +} + +static void channel_layout_from_mask(AVChannelLayout *layout, + AVBPrint *bp, uint64_t channel_layout) +{ + av_channel_layout_uninit(layout); + av_bprint_clear(bp); + if (!av_channel_layout_from_mask(layout, channel_layout) && + av_channel_layout_check(layout)) + CMP_BPRINT_AND_NONBPRINT(bp, av_channel_layout_describe, 0, layout); + else + av_bprintf(bp, "fail"); +} + +static void channel_layout_from_string(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)) + CMP_BPRINT_AND_NONBPRINT(bp, av_channel_layout_describe, 0, layout); + else + av_bprintf(bp, "fail"); +} #define CHANNEL_NAME(x) \ - av_bprint_clear(&bp); \ - av_channel_name_bprint(&bp, x); + channel_name(&bp, (x)); #define CHANNEL_DESCRIPTION(x) \ - av_bprint_clear(&bp); \ - av_channel_description_bprint(&bp, x); + channel_description(&bp, (x)); #define CHANNEL_LAYOUT_FROM_MASK(x) \ - av_channel_layout_uninit(&layout); \ - av_bprint_clear(&bp); \ - if (!av_channel_layout_from_mask(&layout, x) && \ - av_channel_layout_check(&layout)) \ - av_channel_layout_describe_bprint(&layout, &bp); \ - else \ - av_bprintf(&bp, "fail"); + channel_layout_from_mask(&layout, &bp, (x)); #define CHANNEL_LAYOUT_FROM_STRING(x) \ - av_channel_layout_uninit(&layout); \ - av_bprint_clear(&bp); \ - if (!av_channel_layout_from_string(&layout, x) && \ - av_channel_layout_check(&layout)) \ - av_channel_layout_describe_bprint(&layout, &bp); \ - else \ - av_bprintf(&bp, "fail"); + channel_layout_from_string(&layout, &bp, (x)); #define CHANNEL_LAYOUT_CHANNEL_FROM_INDEX(x) \ ret = av_channel_layout_channel_from_index(&layout, x); \ -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".