This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit bf9cb9f396c3f2afa4a1538e822495a7dae43217
Author:     James Almer <[email protected]>
AuthorDate: Thu Sep 24 11:10:18 2026 -0300
Commit:     James Almer <[email protected]>
CommitDate: Thu Sep 24 11:19:35 2026 -0300

    swscale/tests: move rational64 test from avutil
    
    Signed-off-by: James Almer <[email protected]>
---
 libavutil/tests/rational.c    | 123 ---------------------------------
 libswscale/Makefile           |   1 +
 libswscale/tests/rational64.c | 155 ++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 156 insertions(+), 123 deletions(-)

diff --git a/libavutil/tests/rational.c b/libavutil/tests/rational.c
index 69a8e896f7..2c9ca947fc 100644
--- a/libavutil/tests/rational.c
+++ b/libavutil/tests/rational.c
@@ -20,14 +20,12 @@
  */
 
 #include "libavutil/rational.c"
-#include "libswscale/rational64.c"
 #include "libavutil/integer.h"
 #include "libavutil/intfloat.h"
 
 int main(void)
 {
     AVRational a,b,r;
-    AVRational64 a64,b64,r64;
     int i,j,k;
     static const int64_t numlist[] = {
         INT64_MIN, INT64_MIN+1, INT64_MAX, INT32_MIN, INT32_MAX, 1,0,-1,
@@ -55,69 +53,6 @@ int main(void)
         }
     }
 
-    for (a64.num = -2; a64.num <= 2; a64.num++) {
-        for (a64.den = -2; a64.den <= 2; a64.den++) {
-            for (b64.num = -2; b64.num <= 2; b64.num++) {
-                for (b64.den = -2; b64.den <= 2; b64.den++) {
-                    const double adbl = av_q2d_64(a64);
-                    const double bdbl = av_q2d_64(b64);
-                    const int c = av_cmp_q64(a64,b64);
-                    const int d = adbl == bdbl ?  0 :
-                                  adbl >  bdbl ?  1 :
-                                  adbl <  bdbl ? -1 : INT_MIN;
-
-                    if (c != d)
-                        av_log(NULL, AV_LOG_ERROR, "%lld/%lld %lld/%lld, %d != 
%d\n",
-                               (long long) a64.num, (long long) a64.den,
-                               (long long) b64.num, (long long) b64.den, c,d);
-
-                    // Check arithmetic result
-                    if (a64.den && b64.den) {
-                        double rdbl;
-
-                        r64 = av_add_q64(a64, b64);
-                        rdbl = av_q2d_64(r64);
-                        if (rdbl != adbl + bdbl) {
-                            av_log(NULL, AV_LOG_ERROR, "%f + %f = %f != %f\n",
-                                   adbl, bdbl, rdbl, adbl + bdbl);
-                        }
-
-                        r64 = av_mul_q64(a64, b64);
-                        rdbl = av_q2d_64(r64);
-                        if (rdbl != adbl * bdbl) {
-                            av_log(NULL, AV_LOG_ERROR, "%f * %f = %f != %f\n",
-                                   adbl, bdbl, rdbl, adbl * bdbl);
-                        }
-                    }
-
-                    // Check addition round-trip
-                    r64 = av_sub_q64(av_add_q64(a64, b64), b64);
-                    if (b64.den && (r64.num*a64.den != a64.num*r64.den ||
-                        !r64.num != !a64.num ||
-                        !r64.den != !a64.den))
-                    {
-                        av_log(NULL, AV_LOG_ERROR, "%lld/%lld != %lld/%lld\n",
-                               (long long) a64.num, (long long) a64.den,
-                               (long long) r64.num, (long long) r64.den);
-                    }
-
-                    if (b64.num) {
-                        // Check multiplication round-trip
-                        r64 = av_div_q64(av_mul_q64(a64, b64), b64);
-                        if (b64.den && (r64.num*a64.den != a64.num*r64.den ||
-                            !r64.num != !a64.num ||
-                            !r64.den != !a64.den))
-                        {
-                            av_log(NULL, AV_LOG_ERROR, "%lld/%lld != 
%lld/%lld\n",
-                                   (long long) a64.num, (long long) a64.den,
-                                   (long long) r64.num, (long long) r64.den);
-                        }
-                    }
-                }
-            }
-        }
-    }
-
     /* Check overflow behavior and edge cases */
     static const AVRational unit_mul_q[][3] = {
         {{INT_MAX, 2},      { 2, 1},            { INT_MAX, 1}},
@@ -171,64 +106,6 @@ int main(void)
         }
     }
 
-    static const AVRational64 unit_mul_q64[][3] = {
-        {{INT64_MAX, 2},      { 2, 1},              { INT64_MAX, 1}},
-        {{INT64_MAX, 2},      {-2, 1},              {-INT64_MAX, 1}},
-        {{INT64_MAX, 2},      { 0, 1},              {0, 1}},
-        {{INT64_MIN, 2},      { 2, 1},              {-INT64_MAX, 1}}, /* not 
INT64_MIN */
-        {{INT64_MIN, 2},      {-2, 1},              { INT64_MAX, 1}},
-        {{INT64_MIN, 2},      { 0, 1},              {0, 1}},
-        {{INT64_MAX >> 8, 1}, {INT64_MAX >> 8, 1},  {INT64_MAX, 1}},
-        {{1, INT64_MAX >> 8}, {1, INT64_MAX >> 8},  {0, 1}},
-        {{1, 1},              {0, 0},               {0, 0}},
-        {{0, 1},              {0, 0},               {0, 0}},
-    };
-
-    for (i = 0; i < FF_ARRAY_ELEMS(unit_mul_q64); i++) {
-        for (int c = 0; c < 2; c++) { /* test commutativity */
-            AVRational64 a = unit_mul_q64[i][c ? 1 : 0];
-            AVRational64 b = unit_mul_q64[i][c ? 0 : 1];
-            AVRational64 c = unit_mul_q64[i][2];
-            AVRational64 r = av_mul_q64(a, b);
-            if (r.num != c.num || r.den != c.den) {
-                av_log(NULL, AV_LOG_ERROR, "%lld/%lld * %lld/%lld = %lld/%lld, 
expected %lld/%lld\n",
-                       (long long) a.num, (long long) a.den,
-                       (long long) b.num, (long long) b.den,
-                       (long long) r.num, (long long) r.den,
-                       (long long) c.num, (long long) c.den);
-            }
-        }
-    }
-
-    static const AVRational64 unit_add_q64[][3] = {
-        {{INT64_MAX, 1},      { 2, 2},            { INT64_MAX, 1}},
-        {{INT64_MAX, 1},      {-2, 2},            { INT64_MAX - 1, 1}},
-        {{INT64_MAX, 1},      { 0, 2},            { INT64_MAX, 1}},
-        {{INT64_MIN, 1},      { 2, 2},            {-INT64_MAX, 1}},
-        {{INT64_MIN, 1},      {-2, 2},            {-INT64_MAX, 1}},
-        {{INT64_MIN, 1},      { 0, 2},            {-INT64_MAX, 1}},
-        {{INT64_MAX - 10, 1}, {20, 1},            { INT64_MAX, 1}},
-        {{2, INT64_MAX},      {2, INT64_MAX},     {4, INT64_MAX}},
-        {{1, 1},              {0, 0},             {0, 0}},
-        {{0, 1},              {0, 0},             {0, 0}},
-    };
-
-    for (i = 0; i < FF_ARRAY_ELEMS(unit_add_q64); i++) {
-        for (int c = 0; c < 2; c++) { /* test commutativity */
-            AVRational64 a = unit_add_q64[i][c ? 1 : 0];
-            AVRational64 b = unit_add_q64[i][c ? 0 : 1];
-            AVRational64 c = unit_add_q64[i][2];
-            AVRational64 r = av_add_q64(a, b);
-            if (r.num != c.num || r.den != c.den) {
-                av_log(NULL, AV_LOG_ERROR, "%lld/%lld + %lld/%lld = %lld/%lld, 
expected %lld/%lld\n",
-                       (long long) a.num, (long long) a.den,
-                       (long long) b.num, (long long) b.den,
-                       (long long) r.num, (long long) r.den,
-                       (long long) c.num, (long long) c.den);
-            }
-        }
-    }
-
     for (i = 0; i < FF_ARRAY_ELEMS(numlist); i++) {
         int64_t a = numlist[i];
 
diff --git a/libswscale/Makefile b/libswscale/Makefile
index b53b815309..f6dbed3c08 100644
--- a/libswscale/Makefile
+++ b/libswscale/Makefile
@@ -56,5 +56,6 @@ TESTPROGS = colorspace                                        
          \
 
 TESTPROGS-$(CONFIG_UNSTABLE) = sws_ops                                  \
                                sws_ops_aarch64                          \
+                               rational64                               \
 
 DEVPROGS-$(CONFIG_UNSTABLE)  = uops_macros_gen                          \
diff --git a/libswscale/tests/rational64.c b/libswscale/tests/rational64.c
new file mode 100644
index 0000000000..ed24b97094
--- /dev/null
+++ b/libswscale/tests/rational64.c
@@ -0,0 +1,155 @@
+/*
+ * rational numbers
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "libswscale/rational64.c"
+#include "libavutil/integer.h"
+#include "libavutil/intfloat.h"
+#include "libavutil/log.h"
+#include "libavutil/macros.h"
+
+int main(void)
+{
+    AVRational64 a64,b64,r64;
+    int i;
+
+    for (a64.num = -2; a64.num <= 2; a64.num++) {
+        for (a64.den = -2; a64.den <= 2; a64.den++) {
+            for (b64.num = -2; b64.num <= 2; b64.num++) {
+                for (b64.den = -2; b64.den <= 2; b64.den++) {
+                    const double adbl = ff_q2d_64(a64);
+                    const double bdbl = ff_q2d_64(b64);
+                    const int c = ff_cmp_q64(a64,b64);
+                    const int d = adbl == bdbl ?  0 :
+                                  adbl >  bdbl ?  1 :
+                                  adbl <  bdbl ? -1 : INT_MIN;
+
+                    if (c != d)
+                        av_log(NULL, AV_LOG_ERROR, "%lld/%lld %lld/%lld, %d != 
%d\n",
+                               (long long) a64.num, (long long) a64.den,
+                               (long long) b64.num, (long long) b64.den, c,d);
+
+                    // Check arithmetic result
+                    if (a64.den && b64.den) {
+                        double rdbl;
+
+                        r64 = ff_add_q64(a64, b64);
+                        rdbl = ff_q2d_64(r64);
+                        if (rdbl != adbl + bdbl) {
+                            av_log(NULL, AV_LOG_ERROR, "%f + %f = %f != %f\n",
+                                   adbl, bdbl, rdbl, adbl + bdbl);
+                        }
+
+                        r64 = ff_mul_q64(a64, b64);
+                        rdbl = ff_q2d_64(r64);
+                        if (rdbl != adbl * bdbl) {
+                            av_log(NULL, AV_LOG_ERROR, "%f * %f = %f != %f\n",
+                                   adbl, bdbl, rdbl, adbl * bdbl);
+                        }
+                    }
+
+                    // Check addition round-trip
+                    r64 = ff_sub_q64(ff_add_q64(a64, b64), b64);
+                    if (b64.den && (r64.num*a64.den != a64.num*r64.den ||
+                        !r64.num != !a64.num ||
+                        !r64.den != !a64.den))
+                    {
+                        av_log(NULL, AV_LOG_ERROR, "%lld/%lld != %lld/%lld\n",
+                               (long long) a64.num, (long long) a64.den,
+                               (long long) r64.num, (long long) r64.den);
+                    }
+
+                    if (b64.num) {
+                        // Check multiplication round-trip
+                        r64 = ff_div_q64(ff_mul_q64(a64, b64), b64);
+                        if (b64.den && (r64.num*a64.den != a64.num*r64.den ||
+                            !r64.num != !a64.num ||
+                            !r64.den != !a64.den))
+                        {
+                            av_log(NULL, AV_LOG_ERROR, "%lld/%lld != 
%lld/%lld\n",
+                                   (long long) a64.num, (long long) a64.den,
+                                   (long long) r64.num, (long long) r64.den);
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /* Check overflow behavior and edge cases */
+    static const AVRational64 unit_mul_q64[][3] = {
+        {{INT64_MAX, 2},      { 2, 1},              { INT64_MAX, 1}},
+        {{INT64_MAX, 2},      {-2, 1},              {-INT64_MAX, 1}},
+        {{INT64_MAX, 2},      { 0, 1},              {0, 1}},
+        {{INT64_MIN, 2},      { 2, 1},              {-INT64_MAX, 1}}, /* not 
INT64_MIN */
+        {{INT64_MIN, 2},      {-2, 1},              { INT64_MAX, 1}},
+        {{INT64_MIN, 2},      { 0, 1},              {0, 1}},
+        {{INT64_MAX >> 8, 1}, {INT64_MAX >> 8, 1},  {INT64_MAX, 1}},
+        {{1, INT64_MAX >> 8}, {1, INT64_MAX >> 8},  {0, 1}},
+        {{1, 1},              {0, 0},               {0, 0}},
+        {{0, 1},              {0, 0},               {0, 0}},
+    };
+
+    for (i = 0; i < FF_ARRAY_ELEMS(unit_mul_q64); i++) {
+        for (int c = 0; c < 2; c++) { /* test commutativity */
+            AVRational64 a = unit_mul_q64[i][c ? 1 : 0];
+            AVRational64 b = unit_mul_q64[i][c ? 0 : 1];
+            AVRational64 c = unit_mul_q64[i][2];
+            AVRational64 r = ff_mul_q64(a, b);
+            if (r.num != c.num || r.den != c.den) {
+                av_log(NULL, AV_LOG_ERROR, "%lld/%lld * %lld/%lld = %lld/%lld, 
expected %lld/%lld\n",
+                       (long long) a.num, (long long) a.den,
+                       (long long) b.num, (long long) b.den,
+                       (long long) r.num, (long long) r.den,
+                       (long long) c.num, (long long) c.den);
+            }
+        }
+    }
+
+    static const AVRational64 unit_add_q64[][3] = {
+        {{INT64_MAX, 1},      { 2, 2},            { INT64_MAX, 1}},
+        {{INT64_MAX, 1},      {-2, 2},            { INT64_MAX - 1, 1}},
+        {{INT64_MAX, 1},      { 0, 2},            { INT64_MAX, 1}},
+        {{INT64_MIN, 1},      { 2, 2},            {-INT64_MAX, 1}},
+        {{INT64_MIN, 1},      {-2, 2},            {-INT64_MAX, 1}},
+        {{INT64_MIN, 1},      { 0, 2},            {-INT64_MAX, 1}},
+        {{INT64_MAX - 10, 1}, {20, 1},            { INT64_MAX, 1}},
+        {{2, INT64_MAX},      {2, INT64_MAX},     {4, INT64_MAX}},
+        {{1, 1},              {0, 0},             {0, 0}},
+        {{0, 1},              {0, 0},             {0, 0}},
+    };
+
+    for (i = 0; i < FF_ARRAY_ELEMS(unit_add_q64); i++) {
+        for (int c = 0; c < 2; c++) { /* test commutativity */
+            AVRational64 a = unit_add_q64[i][c ? 1 : 0];
+            AVRational64 b = unit_add_q64[i][c ? 0 : 1];
+            AVRational64 c = unit_add_q64[i][2];
+            AVRational64 r = ff_add_q64(a, b);
+            if (r.num != c.num || r.den != c.den) {
+                av_log(NULL, AV_LOG_ERROR, "%lld/%lld + %lld/%lld = %lld/%lld, 
expected %lld/%lld\n",
+                       (long long) a.num, (long long) a.den,
+                       (long long) b.num, (long long) b.den,
+                       (long long) r.num, (long long) r.den,
+                       (long long) c.num, (long long) c.den);
+            }
+        }
+    }
+
+    return 0;
+}

-- 
To stop receiving notification emails like this one, please contact
[email protected].
_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to