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 BC8A2443D6 for ; Thu, 8 Sep 2022 22:47:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DAFA268BAB9; Fri, 9 Sep 2022 01:47:30 +0300 (EEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074052.outbound.protection.outlook.com [40.92.74.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1B41768BA1F for ; Fri, 9 Sep 2022 01:47:24 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KnB1kqmuFR7wo5ReLjUufSP3ZzPikzp09QzmZ1tOS3h16eE+DTv67JU5dZs3RA5Y/3eXQDyPZnLGqdfdRFeSOXxFRwKudr+imfWnQFMHr7Z4Lfdw0f+9zv4Tk1OnX21CEjbIDF9xfvfbsx5DU1HlTAa/u8hl0k0B/0eQutxjOqzjBgkF8ZQW8+pG+pTsRg5anWT1Odzt48CVt1h5D3K86wfF7OXoSs6VV6Cyo/+oD8eseSxFv67YchuMDzeg7D5cdB0bJA0QvSOrWkdG2afd7lbiqZffZkJlsA+/TLkwsiw5+8K+o1JncXY794F6owCPrCQPwWOFNGlpEecK0/WKmQ== 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=VAdTliCLVtze+fIrwL3P5O6fiSw+TUVV2o3zZCG1NWY=; b=d4WmnzBMpiNxfefm1igQU3bIe9VDEkI13AhIP1/a8Zwn8fJFIaWyRuOiX+i9MO77W7LbQANjJC5XzkArTwiSIiejf/B/Xdob+alehVxc83Agg98WoRWLmPu3W503AWdnnwwRlQtXPRfKw7wBBLNUebkYZZ7tEV5Qd3dfY7nUPdFHwY5+p4xACaGQj6O6tN6drXVxRpNTYt1HGUPgJGUy9s3IRRl9J8RUmc7ZOTwMTqogluRjvQL8LnlRCZuexxsYZWWTKRnqyVXqF5QGR4Dpczdqje3rYlWdEPQDt9HJDTNBiZhldTob9qGi2f0H7+Cpc2JpgR/tG894AQoTvDsghQ== 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=VAdTliCLVtze+fIrwL3P5O6fiSw+TUVV2o3zZCG1NWY=; b=YTGmKDkcrRQz2qpPoYFFTWYt/3IfFXveZAYNKrJIwsR2GSyo/a1kHVe5f0iEKjaaB3iFI0LCV4FjHis9Aq5rPxB71iziQZnQKoi1FdVeyYvOHoYeANyGWaalyjf0FkdvFWSAdHI5xplGCgTtuqu+c1XlzVEpGhME08wcDEZuSkX6G78MBPGYieQk1c174bLeNm2W5fFOVTl341zuuLa0evg1+P3/SP+MPs3lLLkDMMa/r+FXtuppl1yaIkpGHuBRl7gPwJxQUCUyZJdcriYT9iF9djhxjEKGX5BPu+cMm1xsgoCTuQkTXtKhDeQCcV/klScZIUzGLr9NTCYTfwD4Hg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AM8P250MB0058.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:3d9::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.14; Thu, 8 Sep 2022 22:47:22 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::c3af:c609:301f:beab]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::c3af:c609:301f:beab%8]) with mapi id 15.20.5588.018; Thu, 8 Sep 2022 22:47:22 +0000 Message-ID: Date: Fri, 9 Sep 2022 00:47:24 +0200 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220908224303.3729-1-jamrial@gmail.com> From: Andreas Rheinhardt In-Reply-To: <20220908224303.3729-1-jamrial@gmail.com> X-TMN: [p08cAduAH8GrBe5vVHYbzypG1cLn9yEvMHFHi3uvBEw=] X-ClientProxiedBy: FR0P281CA0064.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:49::8) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 5af639cc-6573-40ce-4df6-08da91ec17bf X-MS-TrafficTypeDiagnostic: AM8P250MB0058:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cfibv2DSjvKb5MzayfYevvxo3ybKWeNhz7vGtZb1YI0ShBfW8Ra+1Qm6JVLkJzUft7M6m8hAaIZDDmrGa5rOJpYDa6SKKMTV7h7qd8Ux3KrDGmkwrkxSDtZsJ1hM9PWcbw1ZvSFlsaBOHfKngAy7w3ypCbNsKA4Vs2FMU8wW50+NiT0WNU2t0pdSNZU62qQabofW19VfWg6UL+U/w0hD/Z5IpvL0YFa8pP/duDQvsU2abarLrSBVC3FeLSxY4v6kLVjZyFm0vqshYcI2UrLqiL+Fhk8c5WNnm9gmD7IFBoI0E7PKRHWUkhhts/TS8TIzZSEwRw9mgdeywwB4b1clLG5eb0m82tMTK8HrOUvFE9mU/UlnWJGAGsmSYiuXoWwocJl5MLLrpgIwrpmwi/gts1NG2GD41+qaHq/wqtVqnKON1gYrpzl0lf/I2eyy2znWG/WiMSKPhiwf+Idlf8mF/PigiVutx9TzoXxIWlImDoE1K5DQB+6J22cjTyzs+LdzSIRRdMFtyakGY7+2gvyDaTkUECnHbcSsxFflg6jGWuXXv4zVEwtTJGYisSEoZFSimoIZtpc7wxQhBlKJHsuOoCbkowzGPsUIC+8NEGSQ0EfYX/u0fbziupCHFgD33L4XJLg2WVqB4W+uhB/ejhclXC1TZ3g9XYDZBF61LbumSLH0E5/A/27LVQqusaHpdnQm X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?a1piWlFDVTlyS0tvY2ZRbllEVGl2aElkMlY4djJXQURLSFUxVEw0TUR1SVVv?= =?utf-8?B?RVVhYTJCYWM1aXN2cnBqdzdVSTVRekQ1Q1MxL1hOdXgya2hRZzdUYnpJN3JK?= =?utf-8?B?YkFmTDZRVElZVllGQ3dBY2V3NnhFeHdySlNsUmo3V3lyR054dHdzRVQzeS92?= =?utf-8?B?UmJ6ZUw5MlJhSENnNlpGaUgyNzlqVE9mUGttZVQ5ZkdCa0xnR0xnbWVLQWJ5?= =?utf-8?B?TVRVZGFMSURwendpcUpmZTJ1MXNhL2dLZ0RIMzZSTm1KcXVydnZYL29vcllK?= =?utf-8?B?VXViUlVmK3I1Q3ZYTXpyb1RoTG5jWFg0Qks3YzhVa3E3ZGRsMUVlUk9sVFcv?= =?utf-8?B?Y25oKy80THFoU0x5UmJqTnpGVVpMQWExb3lVYnhvZHEvZC9pZHA5RE0zaThn?= =?utf-8?B?UThBaHVSTnduMVVLMDZzaWU4OXNGaW5oZ3JUdXZ2cTkyZTBFb1N6eStzeVFW?= =?utf-8?B?dkVFWGFxQ1lzd1N1TEs5THl2SzhMZHNpbWZuNEI5N2lwVlBRTDQrN3cxRWNF?= =?utf-8?B?U0VRcUluUElRRk4zTkdEdkpxelJnNnk2bFJMTlB6cXN6T1VaNE42SnZGWFdy?= =?utf-8?B?Wm8xNUpUektBWVkxWGNEVndOWjEzem5pQ3VyYTZmakFFeWwyblBoNnFDUmF1?= =?utf-8?B?NWszQ2EvK3dVUFN1dFZYc2ZPRFVray9OYlVucS9JenZiN21rUWFyMDE0ZXZs?= =?utf-8?B?VlRhSmY4Skp0L2l4TTlnQWVyM3BZL1dpTURUWVo1UEliSDFkMzZjNkU4cG1q?= =?utf-8?B?V0NNUDRCSnhNN1hQMWFuV1NrNHNNUkFIanZ5Yy9zREdYQlcwNVJuTjJ4Yk9F?= =?utf-8?B?WG53bXl0aEsxSlFZRC9PSXI2cXcvNElYNjJOUGtCVWQ5M1dVWUMrMkczb3BD?= =?utf-8?B?NjBZcHh5NHI1MWRrdGdJZnlNTE1LM0Y2NGNLckFpM2hBNzJtLzFySmszaGJQ?= =?utf-8?B?bGxXdlpXYmI5aUNxN01Eckp3S3B2K1VYNDJibVc0clJGWGkvLy9majZ3WDJB?= =?utf-8?B?ZXErVVpsY09GMDZJeUZ6aDNXR2J2SXdMbTFFeGpYajRmZ3RacjdmWnJtQzdT?= =?utf-8?B?TjJCWjZ2NGpsRXdzV0ZJZmhtdVJ3elQ1eEtONVdjdE9meGFVcmZjazZ4aHFX?= =?utf-8?B?citycjRBcGJ6U2ZhSGN6Sm96OW9QMmlzSmg3dkp1bmJMUldTNlRqNjVVSUxi?= =?utf-8?B?eFBGMEx2cUh4SWMwODlnRW9UcHQ2d2hzNHdpb2E1THRMaTRlenUzN3NubTQ0?= =?utf-8?B?TVVBL0J2dXFJRlB4Yk9rbzR0dUo2NjcraHE3NGQ5OC94Tm5objRET2hwSkJt?= =?utf-8?B?TmhEZkpEaGZGK3dTek82TGoySXhkWXNGMCsrZ0dKSm9JZ0lSODRTejd1UXF5?= =?utf-8?B?R0ZrWUgyY2tKaHdUYlVKNmNRYXhtejgyUG1UNzdpVVh6czNzQkpicm9wVlBB?= =?utf-8?B?SWNnajFnZ2crYU5GdVRkT25yb24wY1NIUk9SZWlaQ2F1aDdUQ2pvRkt0NE1R?= =?utf-8?B?aDZRTUEycFlpZjVvWkQ5OU43MHVoRDUxYlltZGpTcmN3TFNSRVVUS2xCQmVU?= =?utf-8?B?a2wyN2pNczA2SVlYeWVTSjVNbk9yYVJ1YXNjZUFnNzZ4STlwdnhZUTIvTS9y?= =?utf-8?B?a01PRUpLVFF4b2xlczcybWxxNWlDeU9wbmF3VG1oOCtiVUVtMWN1NnU4ckdG?= =?utf-8?B?UzV1WGRNenRESE5FM0IyeW12enZsZE9yem1EMWRBaXFZNW5Db2pBQW1mRkdE?= =?utf-8?Q?hcvLzkPQDD4Wv2Ly6BtI4LVM7KgxAVE1e7RfQh9?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5af639cc-6573-40ce-4df6-08da91ec17bf X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Sep 2022 22:47:22.4630 (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: AM8P250MB0058 Subject: Re: [FFmpeg-devel] [PATCH] swsresample/swresample: abort on invalid layouts 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 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: James Almer: > If it's unsupported or invalid, then there's no point trying to rebuild it > using a value that may have been derived from the same layout to begin with. > > Move the checks before the attempts at copying the layout while at it. > > Fixes ticket #9908. > > Signed-off-by: James Almer > --- > libswresample/swresample.c | 48 +++++++++++++++++++++++++------------- > 1 file changed, 32 insertions(+), 16 deletions(-) > > diff --git a/libswresample/swresample.c b/libswresample/swresample.c > index 6f04d130d3..5884f8d533 100644 > --- a/libswresample/swresample.c > +++ b/libswresample/swresample.c > @@ -227,7 +227,7 @@ av_cold int swr_init(struct SwrContext *s){ > s->in_ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; > s->in_ch_layout.nb_channels = s->user_in_ch_count; > } > - } else > + } else if (av_channel_layout_check(&s->user_in_chlayout)) > av_channel_layout_copy(&s->in_ch_layout, &s->user_in_chlayout); > > if ((s->user_out_ch_count && s->user_out_ch_count != s->user_out_chlayout.nb_channels) || > @@ -240,17 +240,45 @@ av_cold int swr_init(struct SwrContext *s){ > s->out_ch_layout.order = AV_CHANNEL_ORDER_UNSPEC; > s->out_ch_layout.nb_channels = s->user_out_ch_count; > } > - } else > + } else if (av_channel_layout_check(&s->user_out_chlayout)) > av_channel_layout_copy(&s->out_ch_layout, &s->user_out_chlayout); > > if (!s->out.ch_count && !s->user_out_ch_layout) > s->out.ch_count = s->out_ch_layout.nb_channels; > if (!s-> in.ch_count && !s-> user_in_ch_layout) > s-> in.ch_count = s->in_ch_layout.nb_channels; > + > + if (!(ret = av_channel_layout_check(&s->in_ch_layout)) || s->in_ch_layout.nb_channels > SWR_CH_MAX) { > + if (ret) > + av_channel_layout_describe(&s->in_ch_layout, l1, sizeof(l1)); > + av_log(s, AV_LOG_WARNING, "Input channel layout \"%s\" is invalid or unsupported.\n", ret ? l1 : ""); > + return AVERROR(EINVAL); > + } > + > + if (!(ret = av_channel_layout_check(&s->out_ch_layout)) || s->out_ch_layout.nb_channels > SWR_CH_MAX) { > + if (ret) > + av_channel_layout_describe(&s->out_ch_layout, l2, sizeof(l2)); > + av_log(s, AV_LOG_WARNING, "Output channel layout \"%s\" is invalid or unsupported.\n", ret ? l2 : ""); > + return AVERROR(EINVAL); > + } > #else > s->out.ch_count = s-> user_out_chlayout.nb_channels; > s-> in.ch_count = s-> user_in_chlayout.nb_channels; > > + if (!(ret = av_channel_layout_check(&s->user_in_chlayout)) || s->user_in_chlayout.nb_channels > SWR_CH_MAX) { > + if (ret) > + av_channel_layout_describe(&s->user_in_chlayout, l1, sizeof(l1)); > + av_log(s, AV_LOG_WARNING, "Input channel layout \"%s\" is invalid or unsupported.\n", ret ? l1 : ""); > + return AVERROR(EINVAL); > + } > + > + if (!(ret = av_channel_layout_check(&s->user_out_chlayout)) || s->user_out_chlayout.nb_channels > SWR_CH_MAX) { > + if (ret) > + av_channel_layout_describe(&s->user_out_chlayout, l2, sizeof(l2)); > + av_log(s, AV_LOG_WARNING, "Output channel layout \"%s\" is invalid or unsupported.\n", ret ? l2 : ""); Why are you using AV_LOG_WARNING when you are erroring out? > + return AVERROR(EINVAL); > + } > + > ret = av_channel_layout_copy(&s->in_ch_layout, &s->user_in_chlayout); > ret |= av_channel_layout_copy(&s->out_ch_layout, &s->user_out_chlayout); > if (ret < 0) > @@ -261,18 +289,6 @@ av_cold int swr_init(struct SwrContext *s){ > > s->dither.method = s->user_dither_method; > > - if (!av_channel_layout_check(&s->in_ch_layout) || s->in_ch_layout.nb_channels > SWR_CH_MAX) { > - av_channel_layout_describe(&s->in_ch_layout, l1, sizeof(l1)); > - av_log(s, AV_LOG_WARNING, "Input channel layout \"%s\" is invalid or unsupported.\n", l1); > - av_channel_layout_uninit(&s->in_ch_layout); > - } > - > - if (!av_channel_layout_check(&s->out_ch_layout) || s->out_ch_layout.nb_channels > SWR_CH_MAX) { > - av_channel_layout_describe(&s->out_ch_layout, l2, sizeof(l2)); > - av_log(s, AV_LOG_WARNING, "Output channel layout \"%s\" is invalid or unsupported.\n", l2); > - av_channel_layout_uninit(&s->out_ch_layout); > - } > - > switch(s->engine){ > #if CONFIG_LIBSOXR > case SWR_ENGINE_SOXR: s->resampler = &swri_soxr_resampler; break; > @@ -291,9 +307,9 @@ av_cold int swr_init(struct SwrContext *s){ > av_channel_layout_uninit(&s->in_ch_layout); > } > > - if (!s->in_ch_layout.nb_channels || s->in_ch_layout.order == AV_CHANNEL_ORDER_UNSPEC) > + if (s->in_ch_layout.order == AV_CHANNEL_ORDER_UNSPEC) > av_channel_layout_default(&s->in_ch_layout, s->used_ch_count); > - if (!s->out_ch_layout.nb_channels || s->out_ch_layout.order == AV_CHANNEL_ORDER_UNSPEC) > + if (s->out_ch_layout.order == AV_CHANNEL_ORDER_UNSPEC) > av_channel_layout_default(&s->out_ch_layout, s->out.ch_count); > > s->rematrix = av_channel_layout_compare(&s->out_ch_layout, &s->in_ch_layout) || It seems that you are not aborting; you are instead erroring out. - Andreas _______________________________________________ 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".