From patchwork Mon Feb 5 12:02:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 46040 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:7b08:b0:19e:8a94:b663 with SMTP id s8csp700647pzh; Mon, 5 Feb 2024 04:02:52 -0800 (PST) X-Google-Smtp-Source: AGHT+IFOjLjMgWpjqkCWkR9jXgvA4V4ncArATZ9IuZOA55KN8VIiT7Y9bgfM84w2YCAURsH+HdMB X-Received: by 2002:a05:6402:184c:b0:55f:bbfb:fbf9 with SMTP id v12-20020a056402184c00b0055fbbfbfbf9mr4483999edy.26.1707134572596; Mon, 05 Feb 2024 04:02:52 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1707134572; cv=none; d=google.com; s=arc-20160816; b=eDeqH62625HvgMjQWS7aIMPFOXPxn+nlxIYr+xozz5/qNL97RfqA+dneXbyC+f9o0y ZvmNCcdEe7EBihLtRWUF/iE2Vva16w8NnhVRUoeB1SyV/+T0e7pCDQDE9mfGwBclkA4n 0MIn6L6Ri3r0HBEXYjjlcNwUwJuTGi2FnEssqNvn1YY8t9JEdCJW07wq6ba+jsVhOceH PYQwIK6MNEZqqltBPWHsfqfAOhvRAAc8sCub8jO+a7g2gkto/4mvPHxu8Np3YsJyGKX7 n455YLTqWogTCCN74BRjhWC0jcYUgfaREZ3k0TmNrlGRSqzpxqwTmQz26e8CH25uPpV4 n6mQ== 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:date:to:from:message-id :dkim-signature:delivered-to; bh=cBhFoMF4bdvWF2ta0/d0MflDC47aqhtrTymgPxkQ4B0=; fh=zRU+3LzUK649GeV9/7j6TkbrgbbUYpTx3m/NINZWoBU=; b=UI92WA8Kn0FfzNkQGp/OYynHrcEDjOv12knAzC68oQaGeVSlqk40VMnq/ceDE5OOur vKW1CrtBdJhr5RXsBigTRVeXbpJfOy+nf5QgMjBDsgz5iWeo511egGezRSfOhWRi1B1T yla8TLLmHhPdwBSD4xHFtPvE9NKVsujSQNYmpwhLHZDAMb26sLA7aWsYypZT5EhsfiiG VShxXTK6uCGlFY6S2We3birii4knof06WrNlbMquZ9HOa/yjwCKzft3JbRaTqjl3ScF6 9BHNxToLVWnxby2Xfa/l+HM+m2aESiDezSIDpr+sTrcHtS6uQ7ZBVtgMvB2D+gGU1Unf 8onA==; 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=ivdW01L7; 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; AJvYcCUeyU41l0Hy9Lckq/aN/W4Zs/fTD99H6MlW8rxsRd9rGtdhjaJcr3I3TOc/Kz/Drhe6Ffl19qqYbyPAxVkjaO5ze/LOePzgU+kYvgewracrRd/XcsxDURhdMKo/p5s3pBO2ZTSFYNXtTPW72BnUKcb6tcrbf/8DmnuFge6xHTK2vWeeiOQJebKl9lKLS0K223kW7CvaOoLFG9fZNgkAOePorjmW4OkeQOo3iP9lenEIHhWUDCCWaFfKQA1UhNbVRF3KQc91s8laHHeAh60u0KCq+GHVKQeCE12ztaECBPKqLItLYkKoCXcLgyfCgQELTD2AGANFVL4r2n/2es3Kif0kPot8HeiSdOwLo/1Fvk4pn5SyGE4h4VAa2CesVzRxUjJAXV7+rMKM28Yr3mHV+8ehms8CzZlcxGT14HLuRNUe/t6U54S6h9TeH94Bp4tfJwRDhKQsuWnM9WtaX6GqbSLUT7eu4vcLgLwjHzrXRuiInU6SSVXXO8thzgFwdRfoOKin+gWHzOuU5s0bdBzSRaEYA7BsXhYp71QXGHF8dLRro66cv9SN0KOqNCAMwI75lrmPsLfkO5R5hXWNra5PqgXAR+n0tBh2QpK088woR7V6+RZouQbtVCn9TQl25oWYJbNWTwSYoPch6yB/VFtIB7aSJpfiKBvQoTpPtLQDoj+c6mH9uzBSN49zLUpfquSEUtOPHouPcr5BG4cJQ3eszoHKBSVyOl7CnqaBamJ/lfIGKYgAmX4jjntv0ctGvAfKQZLIWdVMvTnuU6VIrBed4KevOxMcgXXZb+LHG0pJhMvX2FJdgyauacHYZ7E9VqRPTVzJl31TmuBGAkeBd/AifqWL7H1aiCJo4hwlzRZ2AAB7U9WkQG6mvjVPyy3Fv3/9oi7/EvYA1rbRRBW6oAucGpawXQF8OduhGqU7XdFBKtRsSIizpQn9pViM3UAkxn8FrIuDVi MjiKInVjhHhM9oDdLmY/1g5bJQMvxjyUI7+GF4McKkzVGwT2p+TYd7uGmHHfWcsXER5j03M13ipPsqc1XJ+UNHpoYqKCjnMjItHeunmtBLu2rO4uH7198KGEplZsepqqaGPZucMlsNzqQ6EHPoM1wKuA+xTV2K6TA2FWE3luVvX6Fa+uoPfZ0msQz1yzk1vaBvV2oz06lTkm5vUFa73MAbuRQXQTSF47/HO4KuvEzLi+jrSdauyixXWP24KI4szfcWYG2wv0TG3izH+CGWybC1IX9bfCvY4KPbqROkvR0picZDmYAE5Ei8aVz2upwt6bPo9r2q9Apl+AdhisC8r1jhD0F7iygfd44QGvTaWIH8+fqIPtC7RvfaQSWwMr4vv6qN8wmywDj1LAtmyEDjHWuRGY2jhptnBaYy7PToP9kNolKh95Q3Abg+9NBkepxZswChNJSzos3S5jDuClQRQZbuXLcpX29DeigpzsVg5VP+XKXrcazcH2IT7YYVb89NKOHwnXS/dx3d3LBNb3Bowz/FPtnTxS911fDrZbDTSLUtiYQ5VQIG+ohzK0c4g1ynmaiOnVUzAuMHFNTSRS4zrk4UNPoMOo4fRDdVNuv5Bqx+A7LTxnwla9oq8HNt6HGvZmI= Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id c35-20020a509fa6000000b00560686b0b4csi997604edf.299.2024.02.05.04.02.52; Mon, 05 Feb 2024 04:02:52 -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=ivdW01L7; 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 4C47168D14E; Mon, 5 Feb 2024 14:02:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-80.mail.qq.com (out203-205-251-80.mail.qq.com [203.205.251.80]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E308768CE0F for ; Mon, 5 Feb 2024 14:02:40 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1707134553; bh=+/z1XMdqPP4OD82NUyY3bfTNqRuVT1LfARuBC26hq3c=; h=From:To:Cc:Subject:Date; b=ivdW01L7cLMeO3wUWiOpIddwR3aITsZ7u1OiCjYAMZLjpftiFMe9KK5OO4SJrqnUm qtVF75l8Kr96KkqrG1BmSoVeeRWd53htitgWCPHg4nuchEUyheVObzFRjVVw71SlCk n1PPVRJu1m3EM/kfXuJmsZyrCOmj8hV+xajmG2lI= Received: from ZHILIZHAO-MB1.tencent.com ([119.147.10.187]) by newxmesmtplogicsvrszc5-1.qq.com (NewEsmtp) with SMTP id A0122D1; Mon, 05 Feb 2024 20:02:32 +0800 X-QQ-mid: xmsmtpt1707134552tmljqokib Message-ID: X-QQ-XMAILINFO: M1rD3f8svNznlW4+X+gvvQrxtgih41SvTF1L5wMzsIXLbJkuiqpy3vFzLIriyZ Ohv9c8sVWN8CtqsByWnXQ3ZS+kV5QEnWmbpiWXUWGi+gJDwd6N+jgrStdBMLJ2vr/lc64RpqttDh wbcMUhQsRqjvjKIZ4qdXKMBV1nGq7Ik24C0tG9uHicMqxorAHLHMK/woWdclYUT4fSYN3DJ214CD gbqrDvYJDoiXhEnruvJFdyjMLuaI+GQfv9L/pYBmfJeSqVThIFDPzasJdk+Gz0aThG7FPwu5LIRV huX8AHeGSc3r01e+yo8VVHUXr34um1a0x2t1fx/I+3Mrddjo8p5GObuBtuu00E2M87Ec9XhvxfQw uU+dOcDnDE5RJiqf/Ydukq3P/FloytqqJYRx2UdBSWeo2CpSVpep9K8c86WLPd6tYaOTJ+TKV4Ih 8va/RfMMFMx3t8ZIK3J3BjT0/sMicQ/1VmWs3mJKFs9s5SXKS8KD3t5wDGzVm5+kvmKkpLdYSkg0 5wmkfyfCtMy1OJq49GzQdeMDzJCINCj5biaJNZjghjpZB/COrBHwfkt08EODJLr+c3JVfcuK0kf+ JkuElFDGafXvK/fya/DFBLqJ0XFVzTUSNuMNi3nFqDHIPTTKWqvrfLf+oar8GhC+PzdzAjARcmC3 oaXbr9IZN8XJxt3vGvYGqdqeOZ/0gFjMO9d0n3+sMX9xxtNZyX0Q0TiK0bGjB2D7LiiPU6TQYht6 MRIiBShaJVAR0VUE1IQeXpSLo8jw4iBo7YpIxGE6wZRTsjiO0SNsNsDQMryj9l9guYX8+N/Ow97E q3/DbaCWya9NKABJWV7XYW77QZ68o1UHpkleUX62XhfoV0qQPo+sdQhVSYWMwF5mkwYQAXoSeWX2 HZakKcy2cxC9IIlAC5fzlefdB7kXx9OK4blMigWae0ApNwXJZuArF7S2Es+Wix13bNsnlTrnef/0 Z69rYl3m+4loFlpbOb4urTBOfGS6pr4upfXYc4znzc+LnzF/sozYCfoSqJKgrYCblvqs2UQopEq4 hS28YDv64MOZPWVJWQ X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Mon, 5 Feb 2024 20:02:30 +0800 X-OQ-MSGID: <20240205120230.58495-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.42.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 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: MsmOgcYMKCul From: Zhao Zhili --- libavcodec/audiotoolboxenc.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/libavcodec/audiotoolboxenc.c b/libavcodec/audiotoolboxenc.c index 35dd4c553d..392e3fa11a 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,23 @@ 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 { + /* The doc on mFramesPerPacket says: + * For formats with a variable number of frames per packet, such as + * Ogg Vorbis, set this field to 0. + * 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 +143,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 +251,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 +448,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) {