From patchwork Thu Jun 30 07:57:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 36546 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8b27:b0:88:1bbf:7fd2 with SMTP id l39csp137010pzh; Thu, 30 Jun 2022 00:57:53 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vzpKQlPyxkN52GtkYBEZCat61UV3DNhZkqcWSA5HifYezy1xwLtITu/gwsva5EKDIvMtfT X-Received: by 2002:aa7:c9cf:0:b0:435:de3b:c499 with SMTP id i15-20020aa7c9cf000000b00435de3bc499mr9671568edt.321.1656575873050; Thu, 30 Jun 2022 00:57:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1656575873; cv=none; d=google.com; s=arc-20160816; b=zApioPyNh3qzcfRKsmrbRdsydq+4hqKshJ1GaxFEJjboTOPJuOC8rk9wc/D9aY9KwQ nP1DBueKhOw90RfX5vuwuX7oQKDBHFTw4oTanNKoAExdxhQeq/bA6BwTLdMS53XwmwUa jmGy47VNzfGTJVgpGxUIMCs77Hdx0SSwxztHRYt9ZPjv1qCi5cV5THFinkuJIgB6wU6K BBm6ejEscGyjdF0CTPG7Iht3HTQVr/P2owxjF/eCy/MGQ95I7ryJ+VNEVEuOitM+8IWh fjuOopocZrbUPEi0bfEOwA4yPSFXFsMxewNzXriJemCtNjS+vX5W5jR9sKf98PCwXt1U ZOmA== 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=9pBfuAJ4HCotXBd3ATRVHB5OsqcKaxsLXD88iS0cJlY=; b=hjuQWDFk4U15USEXLUw3zqwG65+JE3sRRCTwhwDB3Y78KpOxCA0ApeXMyjZJgqY6/G /UoTRP3oQ79WrahiAnVZXGew9nlfVhAzrMN7jl2DGfEzaD3XFBqaK2IPjnnTnNNVS3UJ 2gPgXalPwmM42FNSrdaSrXnMa/JNUArSt+5Pgx7oDTD7gb7eGAQM2MFbSaA2f8ydcBuw EjNlmXs8wFltd3Ur8zCL9mmpmowRRPLVGS3YngRrDHPfLSgsZufOk5qcMA71aENvP3x6 t9bBUocU8H1J0MDlS78B7FkcaPzpho9LyeTOO4uqlSIA34hkeYj0E/1mc2uVHqqW2Bsp hVIQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=fGTUtHvg; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r11-20020a05640251cb00b004356a07ed0dsi6922507edd.286.2022.06.30.00.57.52; Thu, 30 Jun 2022 00:57:53 -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=@foxmail.com header.s=s201512 header.b=fGTUtHvg; 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 BE86968B74E; Thu, 30 Jun 2022 10:57:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-72.mail.qq.com (out203-205-251-72.mail.qq.com [203.205.251.72]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2C85268B5F7 for ; Thu, 30 Jun 2022 10:57:39 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1656575855; bh=2TLeQ6Tn7QyqT5+CIeF+cteaGFmBIJbgo3zNqOVvs3k=; h=From:To:Cc:Subject:Date; b=fGTUtHvg3VGiKmMx7mMyfobCbNNnGhiyVjylBPxqATGgD0Q3QsY9LuD/gMnPr4EIC if5dc83vwnPr+H7gdGDQVIGUSj8FwLP9YW83nxH+5hqDhzHP3S946SwzSm2I6QQiC5 g2Z6yxZZfmh32MnKaWHGeK0l65rs8ht6ezdVCOsA= Received: from ZHILIZHAO-MB2.tencent.com ([113.108.77.63]) by newxmesmtplogicsvrszc13.qq.com (NewEsmtp) with SMTP id E612C0F0; Thu, 30 Jun 2022 15:57:33 +0800 X-QQ-mid: xmsmtpt1656575853toencyz3f Message-ID: X-QQ-XMAILINFO: MyIXMys/8kCtwOW2JHsyc1UZMjgTdRnhLncD9uM23kVXaPgHQA1slhPEgI1tQi +KraRIiU93tzavl8tfse4VR2fZ5xr7Jabded+HIZQwEAIk38fUoxpt1p1izg5jIMzHCyvFXnE2B5 oCpUllqO6pamQD1nZF0ZtI54ycrCk3rP0WZP5qvwaWmUdDmYOQdWIs43yBFvp2phdHuR4940gRnI JwzwWQskYMWJJbsT+U6S0OpeJAG12NOe+MHBe8xUpZYEL4ql6Rt0Uz82S81F2wNxx0ylNV7G+nai meupngc+UAL7C/0YDEAtv8eWTob+06tkDL1oE8Gz+E2ybchvyKHxNQwX3AqBGwPg82bZuSmzyYWn 5qtLRwgGLFzzQKjaS9SU/p/K7OswSJgLid62WayIqITFY/N9gqbE59UnpJKIKxlDaL2pZ+fxEP1K CRH9sKbmcrN2zAL4+K1tHBFjZfeFfWzFoISa2kVQQbe7o+2jM6hGoGFy5BdMqaJxE+Sn4CM13fiA oX5sb79aICKjQW2NaSIWEjuvK+2KERjwnNLCCJ4DXstAQvHm1a9yBWgaocjZNj2KpShE7wyZDCMX o1ne6pX+VAjIIBjSt3FVF4+enJDNz+r+aUhuLNgGBrRdafh5UnKmAqxN/wLwqpoS+6R1X4v4kT76 GTQWntQkRdTkb6cBUFzfdXITwPEfEWaUtxzaGQCVhLruqQweWCT9LNzJRE9x56ABjFi4ZsYQl00+ 6Ko3kGegCnFl8kOikY6YJLDvP5frIuDGOblMxg0aGXEU7dayrvb/1/Mfbta0iYx5lyChMieA9PvY b9Agt9cRL/asecPv2qlq8UZY/jTx1rofaYMgV/zlmxz6N5OJN+m3XftrNZBe8Gm/JkYMrQaHYbRz +NCuSV37Ic6KoVA153YjhVTdmLe4yVeFuxTQ9NjmwpibpOuPnRz8dp1ymusp3jBg== From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Thu, 30 Jun 2022 15:57:31 +0800 X-OQ-MSGID: <20220630075731.75003-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avcodec/apedec: fix prediction 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: NbzsRx9Ikmgi From: Zhao Zhili Fixes ticket #9816. Regression since ed0001482a74b60f3d5bc5. Prediction value larger than INT32_MAX should be treated as negative. The code already depends on undefined right shift behavior before the patch, which doesn't get fixed by the patch. Signed-off-by: Zhao Zhili --- libavcodec/apedec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/apedec.c b/libavcodec/apedec.c index a7c38bce1b..5f2af2e147 100644 --- a/libavcodec/apedec.c +++ b/libavcodec/apedec.c @@ -1198,7 +1198,7 @@ static av_always_inline int predictor_update_filter(APEPredictor64 *p, p->buf[delayB - 3] * p->coeffsB[filter][3] + p->buf[delayB - 4] * p->coeffsB[filter][4]; - p->lastA[filter] = decoded + ((int64_t)((uint64_t)predictionA + (predictionB >> 1)) >> 10); + p->lastA[filter] = decoded + ((int32_t)((uint64_t)predictionA + (predictionB >> 1)) >> 10); p->filterA[filter] = p->lastA[filter] + ((int64_t)(p->filterA[filter] * 31ULL) >> 5); sign = APESIGN(decoded);