From patchwork Sun Sep 18 20:27:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 38022 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp858555pzh; Sun, 18 Sep 2022 13:28:23 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6Q0Lb5s9kvI0Uf6Mr0kSxPujRtVpJeeSuZOFpzzEyiduUgzBz/jnfw2aNtnZ+hDgSdh0iZ X-Received: by 2002:a17:907:8a15:b0:781:5bfd:2c40 with SMTP id sc21-20020a1709078a1500b007815bfd2c40mr1165199ejc.189.1663532903292; Sun, 18 Sep 2022 13:28:23 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id wy8-20020a170906fe0800b0077ea290986fsi21342722ejb.584.2022.09.18.13.28.22; Sun, 18 Sep 2022 13:28:23 -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=@outlook.com header.s=selector1 header.b=ZgUZZB1l; arc=fail (body hash mismatch); 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=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F308168BBC7; Sun, 18 Sep 2022 23:28:15 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2078.outbound.protection.outlook.com [40.92.91.78]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1AEE068BB01 for ; Sun, 18 Sep 2022 23:28:10 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VvQwrmiBm+jPak0zf8fBegcMMgrz8T+bGly8CoxbrYWKGPHHCJBNuGoqixyxAp2/CQVNRPHQ9kFz6WTHurZ/FE0FBA/KzP4iKy4Dqyu9l8NVn/pq/hv+2J2fvdNL6bzR91WwmLZtEtUskS/hNDUIv2wcyCGwzhAbwyj2M21+VSCi0IialCYwlPYyiVzUhSV38l4rHc5iMXULKDbl2EY8j+tYOsqDD+Bl4G1qZsZGceD3X0TTVKUgRU81uDzlqC+V+ZyF2/pDX1+OxHj81Q+KeISnGOtGZ0rNqoFocUfkpjOOpnV3N7LWwMXJscvfuD8UTvw9yfsKpXIEtdWx+iuefw== 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=DAizWXXibcluE03ybnF5jzHSihK+DnGn4jc08HSD0lM=; b=AlqH9O54juiFxxDhjXwMzmSn9cw1pGrvs3kcpwWxz4EybVJGFLZ8m5jHWXVbhXOqiMT01VclmVIn9z9KnXt164k7Mo1ZiSFKuAxPclid0v2++0gmFgE3iu4MptSCwfRabjLCOdWw6CgdzJYcxs5kyD2yq1NpjKz/fek6pd22tDQdQTJOpgbFxoQRUIsFVy5cID2213FY7K5NVgtY/AHZ5avLcOLKUZ4oKMMsMt5hayW0PGoNihVsF7nrSi0eso1gk0+u1fgv7g4ESPub97rl8q1gJWKGAAaGI9dIEkLBaL1aZaFnO0BNVwVh+zlKAyxSRZ/6roA0YxJgluZ3y83j7g== 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=DAizWXXibcluE03ybnF5jzHSihK+DnGn4jc08HSD0lM=; b=ZgUZZB1lk6L4WN8MiASXhth4s4xd0xeW5cbnczWghR+s8kipuW7uM/8Yvn6sXJ2jwAuvYI2syHBhmus0hSA/IhzAMe1/6dFAGfV4iCwYHTdJVDzinENggL74+oRRck15bUs3exF//KthpT2WwfDjHgYjtjt8JelCdqC/v0Wr5MQTMHfMjlaKx1hu5ewa+o2kA0gXTnIucbHaxGqHAc6EFmKSni/TqiujFDKbPYt9aztLizPz5oQniaCDz93h0bV8nxxY/ib5Xl6dSZHl7qWf4ssEkVz9UEDgbufPBh/ETLHfAKC4VK0l6TazpMWqdXJ7F1xvPpxDCDjsutu+zh/dew== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU0P250MB0484.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:34c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.19; Sun, 18 Sep 2022 20:28:05 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::f3f2:4362:56:4785]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::f3f2:4362:56:4785%7]) with mapi id 15.20.5632.019; Sun, 18 Sep 2022 20:28:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 18 Sep 2022 22:27:43 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [4gxarH+OtygIVpcmCeSxAz6lSoP3ncOPYpEYUr76eL0=] X-ClientProxiedBy: ZR0P278CA0109.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20220918202757.2345415-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU0P250MB0484:EE_ X-MS-Office365-Filtering-Correlation-Id: b1a71edc-78fb-4d14-b48e-08da99b44ad0 X-MS-Exchange-SLBlob-MailProps: EgT5Wr3QDKxCM1OeU4RWKrdQhmMVsaYvtPduTZrmDYjGznXiNWxUE6W3i/LkHXskHp7yxYgFo+o23cjG8LPVoMPHQdViTdbX9q2Y/yXMS65yqQuSfDnejUPB7XzWOKARJEwMS2cn7dZr8P/PrAx+jAXXh4/i+ULGOltw32jk8fNgDBLtxfiNDkgCb9QMLZJDOliqnwK22WiJ8Nscj/9vE9lq2Ae+wc8TeaDeyvpLtXTjsJkZo9DZ+bDKuYCq8lkc/KksW6J2BrXBmwMkbvlxlYMZU2Bryvb67sAsfQetrbwtMApwI+hqezGBQ5JiT5M9rO891tcMDiIzHpZcLLcFMIlnRZ+P2hd9rNUfNsT/txN4n1etkFknXG2yIDd8JKIoUFXZ2DIal0CjoBjNdmfuiBVUaUSWNxMIkqMsE9tAcPPQTB/PjJiKh570E97g1qBxlgbAGj7pBqK956BLzJXh6mKJqzxNzzw6HCRz8/o5b3f/oVIHjFGVVb1Yo3u/MB3ulmiIFyET3ti8MlVYUMhAKYiCBOejnhcRynhPnWZKYceY8JCuNoHGbfgC5RiV3caPDYnIt1egeb62rPU5rdYI65ilI7oRjFcjN8qq2O7tCSAamD+3w85GlZXeDxmB9mA6w6z0B9qn3c0IaTF19r5Utp1oie3uD2+5qWTjVVsWfHbuTy6hudeExniXeszGqeWgT3H1tN0p7W/f3RjjrMj61RouZJkmQy99ekH3Kszc6V0= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T2WURHdmEmMoiMkfDPKQCu3HKYEFztc/QjMbKd1YGyntpRHNAbkM4tLI7Dam1KlnWus3CtpfOL1z4axdSCmbxXjaovXVg5U+V/FgA+1Td98M1wsObBwyY8AzWhuZLxxPFWc46B6xT6HFEgnt3uW/M7hdTG0zYTC85PWIhUP0BEa5psDq9Be05IuEt7pwM714WuuHBrPb/s8gIYzygBRpuCXSBtG8cc/WkWqIiwYWS3NmPJMy8MKdlp+SnsMTsWenXosCoQFEBLw0596llGfrWTbr96Q6kZsqcryHqoMphzn4eU2pnnLc8EV5xgiSc7pjUSm2EeE3VBPqr+rIBa/i10b/2RzPTkt/nWZH+jdjy9lbhKJZ3o1GZGKciisCgww612NgcnWRuKLS4GMVgVXWk2sOZqJWmw1exktWRL+9QpZnzSLdBcZQ+snEHkJkwhV9lvQKsWzuB2U8i8n4NAtaSfJPd91CHoXokm3fdPD8beUwRE+ywa3219mAo1hUjTnwLHUTpBq8pDMSKWS1YSWhGohmMF07l8x9luc/ra4DJ4oITaSnapT46/otPn7tyZMHBcLcv6WwPoy3DRHj41gIYc6JkKhumeeYvGpKmCsaQho/STIL5MUsxKyVaXZCgvjmIHneUBxvI+7N9gKbxNfZNQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JFqspK2eIdAkAb9ZJ6n5e5EMBNWBbJKxiHER7aqJjyQFDeE/l8aeCBg3uzMVY6QFps+eWlhOowsbLvFWSgXoMdxazCphrF4yCA9zMZSfHsYxQMJQM+/wymDaT2V5HLvlGpEDZ5t+CZ0FEn7ypGzQeMn84dqyvObGFZ27qO7/odROdrafOn3QJyetul/wsbeEYpCO+KukWbnRIwruTvEvXteYMjaEv/+q34/BJ1MMb8S3GxaXYXGVOZzDA+6SAHGMQuKFokWzB+Yja9jvvvLbhttIFvCpLvoVKlPlOm4OrztXJ7DGNZ6EGA0GpeKe00mnoJ+ZGJrYzgpWrrgsmmEn5HDvQ+RY5NkZfCPaqR2GOZOfI2y6Djo7qHjObmxR2pc40G0kfzsdb6e+eudioMZj9z1QvR+uDGeG4scnBi8zUhjzapbEwOpnUzQStLnladz6sGBpZnpd0S/JnyunvjAKArUtm/jB1XX8exMMCBBYUXX70k/34I1J4cK1Xk7fxycaJ0DoNI4AjhFEKm59tphwtIKdtmcHSJivWlv4l09rGXoADsktjt8yDs2jyQXo/wGRi/SNc2Ej0CzTde7hHO8oTZlnuFTyCjkK+CyAm5FOZVjaM8jAmohmJ/+bxCrCZnKLoR3uSHzbX7DNvPlRl/Y9wYUjiiGTrZWv2awWucR2oym0tOf/U0uFsnhXDEQWvTx/5NU6etpyyXJimCIBqSABSR+9Hmmlzw72Rp2xdzuAIUbqB8t9ubKzJj005lzKX8fK8PbyKD3xbUgRT076J2VXiGRKLUDbhbPDWNoNVaFfCYOJr1cBBYy8StodicsYjvzk6RTEDCY/CE09yVrId46/IqfZrhAWrzz3TfAezOBmYzdwtox3iU605DiXvyhg/Z3sVPvE5qNrQHq05pUER3qJcYsBdMsmLdIvBIIfzWtnzzN+1bYQ3VP3NWASUv6bm0aPYaaO50FpgA1YJEI7egco3HLVF/MWvg6YtUjKlvFe6INcPoZFalwz17r+53yXTwLDk5Gxnh6U2vVSzR3DOLgsXofs+o2vRfGXn8H3oVVraOi2xj7YeyJZgsktHypQuw07jd2rG7uHF+k3xL4fUS8a25yavJLhoHZeEFFm0DuVHe9Yq+/oBfEK1iR/cgjnkZN/VnVOx9x4rt3dGfzzBIETA4YuEdW2mCB7JUsDn5QnoJx7xAeBiQZ0VPFLezjrY8WHoOxbO0lcTAPDFUbYE11txF3vt5pXFquHTpO//YzCmMpQ7WGIgUMR0eiafjihW8Z6GCQs+eybO6soT7E3QOi5fTWbULmWMYOAiCqnrDCM7jA= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b1a71edc-78fb-4d14-b48e-08da99b44ad0 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2022 20:28:05.6419 (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: DU0P250MB0484 Subject: [FFmpeg-devel] [PATCH 03/17] avcodec/avcodec: Check for more invalid channel 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: H4w2AkjeuMW3 In particular, check the provided channel layout for encoders without AVCodec.ch_layouts set. This fixes an infinite loop in the WavPack encoder (and maybe other issues in other encoders as well) in case the channel count is zero. Signed-off-by: Andreas Rheinhardt --- libavcodec/avcodec.c | 11 +++++++++++ libavcodec/decode.c | 5 ----- libavcodec/encode.c | 5 ----- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/libavcodec/avcodec.c b/libavcodec/avcodec.c index a165cdea95..96b69e0a17 100644 --- a/libavcodec/avcodec.c +++ b/libavcodec/avcodec.c @@ -246,6 +246,17 @@ FF_DISABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS #endif + if (avctx->codec_type == AVMEDIA_TYPE_AUDIO && !avctx->ch_layout.nb_channels + && !(codec->capabilities & AV_CODEC_CAP_CHANNEL_CONF)) { + av_log(avctx, AV_LOG_ERROR, "Codec requires channel layout to be set\n"); + ret = AVERROR(EINVAL); + goto free_and_end; + } + if (avctx->ch_layout.nb_channels && !av_channel_layout_check(&avctx->ch_layout)) { + av_log(avctx, AV_LOG_ERROR, "Invalid channel layout\n"); + ret = AVERROR(EINVAL); + goto free_and_end; + } if (avctx->ch_layout.nb_channels > FF_SANE_NB_CHANNELS) { av_log(avctx, AV_LOG_ERROR, "Too many channels: %d\n", avctx->ch_layout.nb_channels); ret = AVERROR(EINVAL); diff --git a/libavcodec/decode.c b/libavcodec/decode.c index 2961705c9d..6be2d3d6ed 100644 --- a/libavcodec/decode.c +++ b/libavcodec/decode.c @@ -1595,11 +1595,6 @@ FF_DISABLE_DEPRECATION_WARNINGS FF_ENABLE_DEPRECATION_WARNINGS #endif - if (avctx->codec_type == AVMEDIA_TYPE_AUDIO && avctx->ch_layout.nb_channels == 0 && - !(avctx->codec->capabilities & AV_CODEC_CAP_CHANNEL_CONF)) { - av_log(avctx, AV_LOG_ERROR, "Decoder requires channel count but channels not set\n"); - return AVERROR(EINVAL); - } if (avctx->codec->max_lowres < avctx->lowres || avctx->lowres < 0) { av_log(avctx, AV_LOG_WARNING, "The maximum value for lowres supported by the decoder is %d\n", avctx->codec->max_lowres); diff --git a/libavcodec/encode.c b/libavcodec/encode.c index 2168b88ea8..92e8337227 100644 --- a/libavcodec/encode.c +++ b/libavcodec/encode.c @@ -600,11 +600,6 @@ static int encode_preinit_audio(AVCodecContext *avctx) return AVERROR(EINVAL); } if (avctx->codec->ch_layouts) { - if (!av_channel_layout_check(&avctx->ch_layout)) { - av_log(avctx, AV_LOG_WARNING, "Channel layout not specified correctly\n"); - return AVERROR(EINVAL); - } - for (i = 0; avctx->codec->ch_layouts[i].nb_channels; i++) { if (!av_channel_layout_compare(&avctx->ch_layout, &avctx->codec->ch_layouts[i])) break;