From patchwork Mon Feb 5 11:57:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 46037 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:7b08:b0:19e:8a94:b663 with SMTP id s8csp697708pzh; Mon, 5 Feb 2024 03:57:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IH3pQ9BYahANoXF7K7AmA99eT/FYaLTEVb6MZwgIco5+RvHsRFMlFyg0UbrSJIBIjUycKTT X-Received: by 2002:a17:906:3b0c:b0:a37:a356:ff2f with SMTP id g12-20020a1709063b0c00b00a37a356ff2fmr2551093ejf.14.1707134270190; Mon, 05 Feb 2024 03:57:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1707134270; cv=none; d=google.com; s=arc-20160816; b=y7hIL+tocRrJ3B/7lUPJYd4CDCTNiPilA+O5whaLasjYs5EH5gQrNhP5xY6bQUUGNp 4R/nH17WzmR/ZSfGIxmI9m1mIN/NzyOmHPJmDIts9mVLjvbpsWEo/0PhF9KSBH0UU76+ nVNUyZ3733JuOQ7TpSboFscxSxAUBGoax8o6ZheV2ZW1OjAuHIHr1JdOGSv7N33nJixl QKPL/oAxmk7SYC0QFNGrRe69vWAaNBCv3Grjno7CX96b+iKgbvgidjtTgFhpZRajK3R5 +TB4Hpor1eT7ss38qHfzwOcTHXJUgexq01J6J90NKZpFxbX6r6dyQoR7rHt4yaW9gtX6 DgCw== 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:date :to:from:message-id:dkim-signature:delivered-to; bh=2B6PWfzEXIME+CZjVIeLN5WFoIV9ZcVojy8e+ckLniI=; fh=/hWMbDS3biOtfp86PZ0EC6drfjQR3xA1heQC4PTjOtA=; b=aBREIB0kqHPy3TQSfPP4cHt4JNwAI8EjONFoTBB/wtkFceW1FX6AjrEQKLXmfp6/pQ 11eekMTiRfHH5p2ej71Fg6XNFLfYO3+8IGsFEyoP44lS8R7JOe8wMQYh7+40FdT5MMMS gW+a797ElFezboQUoC/mtZ70WNEe3vZz/sUg5/w2egsFPUBixdSKzrfM/r203lCLhugL E/8vT9G8UguIq5lRhRPjcdUqv/TiE+P9wr9VNVG688cGrKdErMPCxjwvdsYXhZO0wLLR O3TpxERYVpIiUl2qIlepYSec0156vktUdl7MrSjpfqx88sHCIjuDClu8fhh/sQZiyJsw 5JqQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=RSu7uueE; 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=NONE dis=NONE) header.from=foxmail.com X-Forwarded-Encrypted: i=0; AJvYcCXAFeqRoI0W7gBKKxe5027pHuzU05bFeQL3MzDfogLHRoUF6XhnC5hUhacBHXhnOVGYmUWZCvL8MzA9nnbA59VHdp0Z7ScIU2YbJRsW7w6AZChXKcWkYtx50cGDRt79SIIp4yAXwq1xhAUNNrq9BVVi35dUTihKDK5b8TekBBEfq8FUhezDZWdfb4fZRHvryGA9s/ikvlz3dupZgR4waZZDWetcNIZn+0Zl4UmMPys3Zp3vZMq1kHvdatfcHhAvwXPRwA5/cFc4EXvm2Afu/cAaD874KZrQFLAxr6u4KGaGjQUbFNcGVKvXPTqjlo7Zclw9XA1lIO7KLzQypSwOLpwTn8lrsZuYLfo966k3BDKcivwXV11tQPLplNCrkB3gJfpMMdV/XmcYnZkhkDEA+eISPjApgewVNlT0/zo2d/R7BKK3fWclYp8D4q2blAWdtxKAAru3HKT9JssXIcKeJ0lLzs32Kmuc1eb+LPlz2r6q/5EUfYUSZ487YKeCQAVKPYeuF3EgId1aJiXwTulABUps3bQD3ohl2FyHxnv6ZewriX8kzwj3Oh80f+xJhTVpmnIjf0nMB9o4+GJi7ABh/jqXxFT494QI1+1NyDOUeFSA7+pvBpERPOvFfal/rjuU9f1ax1fqU/EqCU+PUfv44pwl5PJ9SfxW9CN5pfJ2q2jlxF6bHOLvd5gbm/xzzPHV6mpcBvKVC9zh22VDOS7UbrMaXZw2bsDY7/mtkc5aLDwxWe3/rSSlRADDT/rbWP4anWPJb6yxjZmRlwv6iymqDniqnD2yY77RDgbzMokrSLZoA2LAKJgydnZLMZLlj3T0hBRJAVxeHwe7Vac6h+a9FBS7S9BcsCk8xlw/GPLQdChbcZqqIoOLMLMf+pYxSIQV3GQ1Y8e788+IWWPkdLcc5IpppGXU1JCPhEHLA9g+ZGDvKUgT9ICxKXboB2IOfegIPZjKnW kG4thb/LpuDnU+zXBroIpql5g2BvcBJjLYK+2GLdXSsYTDSOGGGxHLwQynvyMEie9DamnVmCTSPDugaAdWvh9m3q5hBYiJuV9D8A6L/Z9wKH+DfktcsgzvdNGTDUbpbkewVxsuinfIgMCxDKQFJhl88yvmoufBFCHy0tKP0zuWK4TUOgYA/cOfISz9qTFjkq4u2vxkGopGmGoIEdcqlBcww5UGMqtYfR6njbwwcvVK8/GL0JAtMrwovEu59uC1nMEvlpBp4Yllvg9NX0Qg8BfO0pRuNswSAzLk9qjd5vaMOLWrmUeaxkq5C/ApHWbcBCdzAdWxbZIEjurpkS6m+hlDtD25EOU+VsKts9VoSSen6FY8IDyuoU2dFkeIkt2FpBudlKD7cl6T4URJoXXHwrDBxOVdeD479XQTlRtsCkzcEVDGibDhSg/lTtLjAKG0hJe/1MWjy8BZilGFvMV580OU5ZALHuAonp6ZINikQNFedOd6jGONX7jq8HqnWp3HYs7VXa8UV1kWwiwCHpL92kTELZxGZ90t3//lNUthZQ1Ec9Wb5Yd0pxt7mDCUWLjqvdr6k5rHLFLja4U/pDg3KWFR9u2mXhlLN/2ooB5s Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w15-20020a17090652cf00b00a35341252e6si3721868ejn.1037.2024.02.05.03.57.49; Mon, 05 Feb 2024 03:57:50 -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; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=RSu7uueE; 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=NONE dis=NONE) header.from=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 961A868CE0F; Mon, 5 Feb 2024 13:57:46 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-221-209.mail.qq.com (out203-205-221-209.mail.qq.com [203.205.221.209]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 86F6B68CA05 for ; Mon, 5 Feb 2024 13:57:38 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1707134249; bh=CnnScXO6nwmNKfg+wv8Pk5Jf+RCWUf1tb2FGLUBjmw0=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=RSu7uueEDKHEOU6wt+DzgetRLxoN1gT0ty76EFP/LfSdOqeR5F11XEQ+Fm92aPcG0 O32Y7fuBJlBskzo2m35KLS6PSSslocK3u1fMag/jxGoxFl9f+AYMZk6IAK2cYjDo9K G9egpd4646486njCfhTkWQUs6+HgbRe0ORRMviM0= Received: from ZHILIZHAO-MB1.tencent.com ([119.147.10.187]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id E5C2763C; Mon, 05 Feb 2024 19:57:28 +0800 X-QQ-mid: xmsmtpt1707134249t3dl6u5ou Message-ID: X-QQ-XMAILINFO: OQhZ3T0tjf0aYaulWQeaLCcGcwDzqnCn1QBRFx46jkTkeU2GlkdJvLpaq0hPoW p/SgoJUMfFFHtWgh2V35yIQExu57GJAznneHpYpjwimoCjX8CBEDZ8dpWUbIeRZhdMkwtoVYf8xg l4MENXib5l0zP/7ZjErU++POj1lEmQ42HyRTNeSiV66xifQ0uVG9s2UhBZSyexdIubjs7jOs4t5y 96LbsIZO4AdKS56EjPY5xhyuo/tqbpBDE+5TQRf48sij17cJIKukPO6hHKB0HaHZ2AnQfsdpBgOv JuXSEF+HFs6fzFvdsKarW4kWRe2Ta+0KRh/hbuCA+NZsL7EgQuuFcLnacVvrMfYdVbUK3ZgHppLM kRi2jhBQHmoL4My96dt56bTEpRwd2DBDnOvXtBOCm3j873SwdO4oBIuK0CKb8CJEUsEXCoCkexFM wTY80KE3254wYArIsGaS2as4LemwKSOIOkS1/MBgqOgSFcRqbieEbG8pnqlNxeJ0soUeLj1IBz51 bGzsv73+i8wW/KHvD+LcZXdtUrk7BRRS/nYylPOhcQQAlp3Zf6L1d24nVNST+zW+TdewE1lA0Qzl r7iNmoXfeVUZ/5TbBGozD1VbGs50cG/rMJ/mUU47poW2NZhutDmoGqfbn5tiw0TsrA0F7xhklxEl 3ev1FA6BLNpSQI64WuRBtc7RER1/7lRbsKs7/BoD9ZatitTK5EtlkExPGmkkZt0C9l4h5cqqXn+T m+an68/y1oJyFfkqipylhrSckPrxJIg1PmaZQmnhUIIvpj6H3p0UkMwIKdtyOw3ktHq8em5PxtEe 3mEPrzbto4ZfEU8DPadfmburrOQ+VHcU2R8M6BKx/lalaQeJwePoQ1P83AFvWK+Cj/8n9nlWpDo3 fB9BlLfBBkEwqZPX7rTllY6DUvkGkdORB83OjxdLeUYXFzv4EFld8M53sgAZIWaPrAIFVZ8zgxH4 9J8fb4QaquOTGqsSx1c2hka9bTXCV1YAsU4/REvFA= X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Feb 2024 19:57:26 +0800 X-OQ-MSGID: <20240205115726.56459-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240205115726.56459-1-quinkblack@foxmail.com> References: <20240205115726.56459-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/audiotoolboxenc: Ensure frame_size isn't zero 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 62zYEXd6tSAN From: Zhao Zhili --- libavcodec/audiotoolboxenc.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/libavcodec/audiotoolboxenc.c b/libavcodec/audiotoolboxenc.c index 35dd4c553d..08cd3d5d27 100644 --- a/libavcodec/audiotoolboxenc.c +++ b/libavcodec/audiotoolboxenc.c @@ -92,7 +92,7 @@ static UInt32 ffat_get_format_id(enum AVCodecID codec, int profile) } } -static void ffat_update_ctx(AVCodecContext *avctx) +static int ffat_update_ctx(AVCodecContext *avctx) { ATDecodeContext *at = avctx->priv_data; UInt32 size = sizeof(unsigned); @@ -118,10 +118,20 @@ static void ffat_update_ctx(AVCodecContext *avctx) if (!AudioConverterGetProperty(at->converter, kAudioConverterCurrentOutputStreamDescription, &size, &out_format)) { - if (out_format.mFramesPerPacket) + if (out_format.mFramesPerPacket) { avctx->frame_size = out_format.mFramesPerPacket; + } else { + // Looks like it means for decoding. There is no known case that + // mFramesPerPacket is zero for encoding. Use a default value for + // safety. + avctx->frame_size = 1024; + av_log(avctx, AV_LOG_WARNING, "Missing mFramesPerPacket\n"); + } if (out_format.mBytesPerPacket && avctx->codec_id == AV_CODEC_ID_ILBC) avctx->block_align = out_format.mBytesPerPacket; + } else { + av_log(avctx, AV_LOG_ERROR, "Get OutputStreamDescription failed\n"); + return AVERROR_EXTERNAL; } at->frame_size = avctx->frame_size; @@ -130,6 +140,8 @@ static void ffat_update_ctx(AVCodecContext *avctx) at->pkt_size *= 1024; avctx->frame_size *= 1024; } + + return 0; } static int read_descr(GetByteContext *gb, int *tag) @@ -236,6 +248,7 @@ static av_cold int ffat_init_encoder(AVCodecContext *avctx) { ATDecodeContext *at = avctx->priv_data; OSStatus status; + int ret; AudioStreamBasicDescription in_format = { .mSampleRate = avctx->sample_rate, @@ -432,7 +445,9 @@ static av_cold int ffat_init_encoder(AVCodecContext *avctx) } } - ffat_update_ctx(avctx); + ret = ffat_update_ctx(avctx); + if (ret < 0) + return ret; #if !TARGET_OS_IPHONE && defined(__MAC_10_9) if (at->mode == kAudioCodecBitRateControlMode_Variable && avctx->rc_max_rate) {