From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 6924E4DA4E for ; Wed, 17 Dec 2025 03:50:29 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'QKsJMeQzBQLB96rFnP59SGNiQO1eZlG11j9zcDw6/Ns=', expected b'RdCFxAwN5LUqNTU3fKkbIltzDWNkvCAIjtChCVOU7q8=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1765936336; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=QKsJMeQzBQLB96rFnP59SGNiQO1eZlG11j9zcDw6/Ns=; b=X0gUZSwqK1N4S2rfuvgRcH+/dgi77zoyOBYOLvNzErM0qJHXQsgjGGX9Hin6vPEp8LL3Q Fe0DS8JBLXgLv0HsSK5xBq4YpLpnhsN/FqkzvHZTr9OCPyw8oM8BRsl7yBh1d0pxd20Xjl+ nuajny7k2Gx+109wGpRYdHertk0rxsk5vyiR5dRz75NfnIHknFsfLDHBCZRPkONOK973vqC pBXEq1PG+o8gX/wIfGApG0qFeEoDh/wtps54R2bPT4hvHHNTdVU1exLqCFY4sEyFAn6sXjg PVvkaToK478j7FBcP3hqfYsJPXRKZGGwEWJXBNwGq1gyb8ZGtQkt0B6Ci/uA== Received: from [172.20.0.2] (unknown [172.19.0.4]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 3F9BD6908CE; Wed, 17 Dec 2025 03:52:16 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1765936328; b=B5+9l/4OT4yDblpx5QxoqS+8XOic6peAtYlSIv328ev55wBNe3LtnJzovgmdIWzdTCOJS aq5Eo8YhGcMud1tQkBwknIKU+D/wwcdWhj1q6VONzKl9qE9SpiXv7Y6xOB3CD+EcP6snECZ smtE7V1LS6iR9elNSNRs/Lu11WzOSxy5DH/bRagp6RZaVlEgMvK5Q6W8R+Zol16bCFcFISA Rkxo62sSAwQLOVKQIe8YK+ezE08LDfX+qCQ9wLCjK+Vcmtwbzsh86g36dVsK5XMMJdPF2+Z CMc7OYK9YiZoRD37Fb49bdOCbbq0iV6iTvwyp5sQOMuQ3J6LUFJwugiWQq8A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1765936328; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=OEMxRe79HJuKwuY62AoHsuiSbQ6F6qVB2GzWciTbOFM=; b=H7hYZwxcXVLL2RJ8CRX9Xm/6NyT2mVXc9FrjNW6LibQ6P4TvM5a+g9kpGPfAhUS52nlAm 4LRsxy/UzeeJu3FddDY0kkpOqGeUdAEU3Uxh9j2Cdc9cmgKO5m/mFhi/5s9wTgCTORnOEyg uENncWL0I7i4Ou7Nj5/H6yxFnDwQ5NQeO3CijsngJd594YW5cLNLKHzcfcOFW31k9Qu/Wvy r0ZbGWJDkStx/dhJc07kxnRCj2kJ9pqulhM1Ru5iHe/DZ1ozFsnodJRz64gLXt72kuT6vF7 VJH68eKtZHS39JhKMV42oWYuXghxuaRDx5o9lnmpO8HxuZ6e0JXNyBjEDNxA== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1765936320; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=RdCFxAwN5LUqNTU3fKkbIltzDWNkvCAIjtChCVOU7q8=; b=NMuin/s0ejET6lnE2l83MY/Huh6qsJYNPRx8ZtEHRjZnHksUEgLNCo5il15PJMFKMziI/ 8W5yoNsb6ufT2rBTau70yT7DGZmhydHCgVkHdHS8dIIisTdKuLVSBPpFxueTW0RHucBuNGC U8WDKpHDa4+UgpWSllgq+ae3caIf1XeGt7JE5GCyQ6X77clpWqAYlUlclk/w2c1vfbIW+4p D5z1gQUXxWYIpKGlgBSp8LHeb5zbqfu2AwmmJoQco6zdqjZHGrcUgwB+JkICMCHaY320J6H OfC49bMo1fuG8iZtH2pfeLp5rEo1CLaJQBCK4SBYXiYvnXy0mCrt7u8mA0Bg== Received: from 55ca25703178 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 5AAB16908A0 for ; Wed, 17 Dec 2025 03:52:00 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Wed, 17 Dec 2025 01:52:00 -0000 Message-ID: <176593632052.60.4259764624763111882@2cb04c0e5124> Message-ID-Hash: BNF2T7O6KZIEWJHPCDYATWADFPRQ3JEF X-Message-ID-Hash: BNF2T7O6KZIEWJHPCDYATWADFPRQ3JEF X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Hits: nonmember-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avutil/integer: Add av_abs_i() and signed division (PR #21226) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: michaelni via ffmpeg-devel Cc: michaelni Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #21226 opened by michaelni URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21226 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/21226.patch Signed-off-by: Michael Niedermayer >>From 1c27203d1dc59900a98f9618f7bde442f1425845 Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Wed, 17 Dec 2025 02:10:55 +0100 Subject: [PATCH] avutil/integer: Add av_abs_i() and signed division Signed-off-by: Michael Niedermayer --- libavutil/integer.c | 24 ++++++++++++++++++++++++ libavutil/integer.h | 10 ++++++++++ libavutil/tests/integer.c | 8 ++++++++ 3 files changed, 42 insertions(+) diff --git a/libavutil/integer.c b/libavutil/integer.c index ae87c467b2..3f8a5f5cd3 100644 --- a/libavutil/integer.c +++ b/libavutil/integer.c @@ -53,6 +53,21 @@ AVInteger av_sub_i(AVInteger a, AVInteger b){ return a; } +static AVInteger neg_i(AVInteger a) { + int i, carry=0; + for(i=0; i>16) - a.v[i]; + a.v[i]= carry; + } + return a; +} + +AVInteger av_abs_i(AVInteger a){ + if ((int16_t)a.v[AV_INTEGER_SIZE-1] < 0) + a = neg_i(a); + return a; +} + int av_log2_i(AVInteger a){ int i; @@ -146,6 +161,15 @@ AVInteger av_div_i(AVInteger a, AVInteger b){ return quot; } +AVInteger av_idiv_i(AVInteger a, AVInteger b){ + int flip = (int16_t)(a.v[AV_INTEGER_SIZE-1]^b.v[AV_INTEGER_SIZE-1]) < 0; + a = av_div_i(av_abs_i(a), av_abs_i(b)); + if (flip) + a = neg_i(a); + + return a; +} + AVInteger av_int2i(int64_t a){ AVInteger out; int i; diff --git a/libavutil/integer.h b/libavutil/integer.h index 2d9b5bb10f..9ec21e1869 100644 --- a/libavutil/integer.h +++ b/libavutil/integer.h @@ -83,4 +83,14 @@ AVInteger av_int2i(int64_t a) av_const; */ int64_t av_i2int(AVInteger a) av_const; +/** + * returns |a| + */ +AVInteger av_abs_i(AVInteger a) av_const; + +/** + * signed division + */ +AVInteger av_idiv_i(AVInteger a, AVInteger b) av_const; + #endif /* AVUTIL_INTEGER_H */ diff --git a/libavutil/tests/integer.c b/libavutil/tests/integer.c index d2c8f2a903..96027c927e 100644 --- a/libavutil/tests/integer.c +++ b/libavutil/tests/integer.c @@ -31,6 +31,8 @@ int main(void){ for(b=3; b<256*256*256; b+=27118){ AVInteger ai= av_int2i(a); AVInteger bi= av_int2i(b); + AVInteger nai= av_int2i(-a); + AVInteger nbi= av_int2i(-b); av_assert0(av_i2int(ai) == a); av_assert0(av_i2int(bi) == b); @@ -43,6 +45,12 @@ int main(void){ av_assert0(av_i2int(av_shr_i(ai,-17)) == a<<17); av_assert0(av_log2_i(ai) == av_log2(a)); av_assert0(av_i2int(av_div_i(ai,bi)) == a/b); + av_assert0(av_i2int(av_idiv_i(ai , bi)) == a/b); + av_assert0(av_i2int(av_idiv_i(nai, bi)) == -a/b); + av_assert0(av_i2int(av_idiv_i(ai ,nbi)) == -a/b); + av_assert0(av_i2int(av_idiv_i(nai,nbi)) == a/b); + av_assert0(av_i2int(av_abs_i( ai)) == a); + av_assert0(av_i2int(av_abs_i(nai)) == a); } } return 0; -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org