[FFmpeg-devel] [PATCH v2 4/6] avutil/csp: add av_csp_trc_inv_from_id()

Niklas Haas ffmpeg at haasn.xyz
Sat Nov 30 16:23:49 EET 2024


From: Niklas Haas <git at haasn.dev>

Mathematical inverse of av_csp_trc_from_id(), plus testing to make sure it
roundtrips correctly with the corresponding TRC.
---
 doc/APIchanges                |   3 +
 libavutil/csp.c               | 155 ++++++++-
 libavutil/csp.h               |   5 +
 libavutil/tests/color_utils.c |  13 +-
 libavutil/version.h           |   4 +-
 tests/ref/fate/color_utils    | 608 +++++++++++++++++-----------------
 6 files changed, 470 insertions(+), 318 deletions(-)

diff --git a/doc/APIchanges b/doc/APIchanges
index fac0fff8ea..db72121a61 100644
--- a/doc/APIchanges
+++ b/doc/APIchanges
@@ -2,6 +2,9 @@ The last version increases of all libraries were on 2024-03-07
 
 API changes, most recent first:
 
+2024-11-25 - xxxxxxxxxx - lavu 59.48.100 - csp.h
+  Add av_csp_trc_func_inv_from_id().
+
 2024-11-25 - xxxxxxxxxx - lsws 8.12.100 - swscale.h
   Allow using sws_frame_scale() dynamically, without first initializing the
   SwsContext. Deprecate sws_init_context(). Add sws_frame_setup() instead.
diff --git a/libavutil/csp.c b/libavutil/csp.c
index 3dd7bc2562..fe45c611dd 100644
--- a/libavutil/csp.c
+++ b/libavutil/csp.c
@@ -170,16 +170,36 @@ static double trc_bt709(double Lc)
          :              a * pow(Lc, 0.45) - (a - 1.0);
 }
 
+static double trc_bt709_inv(double E)
+{
+    const double a = BT709_alpha;
+    const double b = 4.500 * BT709_beta;
+
+    return (0.0 > E) ? 0.0
+         : (  b > E) ? E / 4.500
+         :             pow((E + (a - 1.0)) / a, 1.0 / 0.45);
+}
+
 static double trc_gamma22(double Lc)
 {
     return (0.0 > Lc) ? 0.0 : pow(Lc, 1.0/ 2.2);
 }
 
+static double trc_gamma22_inv(double E)
+{
+    return (0.0 > E) ? 0.0 : pow(E, 2.2);
+}
+
 static double trc_gamma28(double Lc)
 {
     return (0.0 > Lc) ? 0.0 : pow(Lc, 1.0/ 2.8);
 }
 
+static double trc_gamma28_inv(double E)
+{
+    return (0.0 > E) ? 0.0 : pow(E, 2.8);
+}
+
 static double trc_smpte240M(double Lc)
 {
     const double a = 1.1115;
@@ -190,6 +210,16 @@ static double trc_smpte240M(double Lc)
          :              a * pow(Lc, 0.45) - (a - 1.0);
 }
 
+static double trc_smpte240M_inv(double E)
+{
+    const double a = 1.1115;
+    const double b = 4.000 * 0.0228;
+
+    return (0.0 > E) ? 0.0
+         : (  b > E) ? E / 4.000
+         :             pow((E + (a - 1.0)) / a, 1.0 / 0.45);
+}
+
 static double trc_linear(double Lc)
 {
     return Lc;
@@ -200,12 +230,22 @@ static double trc_log(double Lc)
     return (0.01 > Lc) ? 0.0 : 1.0 + log10(Lc) / 2.0;
 }
 
+static double trc_log_inv(double E)
+{
+    return (0.0 > E) ? 0.01 : pow(10.0, 2.0 * (E - 1.0));
+}
+
 static double trc_log_sqrt(double Lc)
 {
     // sqrt(10) / 1000
     return (0.00316227766 > Lc) ? 0.0 : 1.0 + log10(Lc) / 2.5;
 }
 
+static double trc_log_sqrt_inv(double E)
+{
+    return (0.0 > E) ? 0.00316227766 : pow(10.0, 2.5 * (E - 1.0));
+}
+
 static double trc_iec61966_2_4(double Lc)
 {
     const double a = BT709_alpha;
@@ -216,6 +256,16 @@ static double trc_iec61966_2_4(double Lc)
          :               a * pow( Lc, 0.45) - (a - 1.0);
 }
 
+static double trc_iec61966_2_4_inv(double E)
+{
+    const double a = BT709_alpha;
+    const double b = 4.500 * BT709_beta;
+
+    return (-b >= E) ? -pow((-E + (a - 1.0)) / a, 1.0 / 0.45)
+         : ( b >  E) ? E / 4.500
+         :              pow(( E + (a - 1.0)) / a, 1.0 / 0.45);
+}
+
 static double trc_bt1361(double Lc)
 {
     const double a = BT709_alpha;
@@ -226,6 +276,16 @@ static double trc_bt1361(double Lc)
          :               a * pow( Lc, 0.45) - (a - 1.0);
 }
 
+static double trc_bt1361_inv(double E)
+{
+    const double a = BT709_alpha;
+    const double b = 4.500 * BT709_beta;
+
+    return (-0.02025 >= E) ? -pow((-4.0 * E - (a - 1.0)) / a, 1.0 / 0.45) / 4.0
+         : ( b       >  E) ? E / 4.500
+         :                    pow(( E + (a - 1.0)) / a, 1.0 / 0.45);
+}
+
 static double trc_iec61966_2_1(double Lc)
 {
     const double a = 1.055;
@@ -236,13 +296,30 @@ static double trc_iec61966_2_1(double Lc)
          :              a * pow(Lc, 1.0  / 2.4) - (a - 1.0);
 }
 
+static double trc_iec61966_2_1_inv(double E)
+{
+    const double a = 1.055;
+    const double b = 12.92 * 0.0031308;
+
+    return (0.0 > E) ? 0.0
+         : (  b > E) ? E / 12.92
+                     : pow((E + (a - 1.0)) / a, 2.4);
+    return E;
+}
+
+#define PQ_c1 (        3424.0 / 4096.0) /* c3-c2 + 1 */
+#define PQ_c2 ( 32.0 * 2413.0 / 4096.0)
+#define PQ_c3 ( 32.0 * 2392.0 / 4096.0)
+#define PQ_m  (128.0 * 2523.0 / 4096.0)
+#define PQ_n  ( 0.25 * 2610.0 / 4096.0)
+
 static double trc_smpte_st2084(double Lc)
 {
-    const double c1 =         3424.0 / 4096.0; // c3-c2 + 1
-    const double c2 =  32.0 * 2413.0 / 4096.0;
-    const double c3 =  32.0 * 2392.0 / 4096.0;
-    const double m  = 128.0 * 2523.0 / 4096.0;
-    const double n  =  0.25 * 2610.0 / 4096.0;
+    const double c1 = PQ_c1;
+    const double c2 = PQ_c2;
+    const double c3 = PQ_c3;
+    const double m  = PQ_m;
+    const double n  = PQ_n;
     const double L  = Lc / 10000.0;
     const double Ln = pow(L, n);
 
@@ -251,24 +328,56 @@ static double trc_smpte_st2084(double Lc)
 
 }
 
+static double trc_smpte_st2084_inv(double E)
+{
+    const double c1 = PQ_c1;
+    const double c2 = PQ_c2;
+    const double c3 = PQ_c3;
+    const double m  = PQ_m;
+    const double n  = PQ_n;
+    const double Em = pow(E, 1.0 / m);
+
+    return (c1 > Em) ? 0.0
+                     : 10000.0 * pow((Em - c1) / (c2 - c3 * Em), 1.0 / n);
+}
+
+#define DCI_L 48.00
+#define DCI_P 52.37
+
 static double trc_smpte_st428_1(double Lc)
 {
-    return (0.0 > Lc) ? 0.0
-         :              pow(48.0 * Lc / 52.37, 1.0 / 2.6);
+    return (0.0 > Lc) ? 0.0 : pow(DCI_L / DCI_P * Lc, 1.0 / 2.6);
 }
 
+static double trc_smpte_st428_1_inv(double E)
+{
+    return (0.0 > E) ? 0.0 : DCI_P / DCI_L * pow(E, 2.6);
+}
+
+#define HLG_a 0.17883277
+#define HLG_b 0.28466892
+#define HLG_c 0.55991073
 
 static double trc_arib_std_b67(double Lc) {
     // The function uses the definition from HEVC, which assumes that the peak
     // white is input level = 1. (this is equivalent to scaling E = Lc * 12 and
     // using the definition from the ARIB STD-B67 spec)
-    const double a = 0.17883277;
-    const double b = 0.28466892;
-    const double c = 0.55991073;
+    const double a = HLG_a;
+    const double b = HLG_b;
+    const double c = HLG_c;
     return (0.0 > Lc) ? 0.0 :
         (Lc <= 1.0 / 12.0 ? sqrt(3.0 * Lc) : a * log(12.0 * Lc - b) + c);
 }
 
+static double trc_arib_std_b67_inv(double E)
+{
+    const double a = HLG_a;
+    const double b = HLG_b;
+    const double c = HLG_c;
+    return (0.0 > E) ? 0.0 :
+        (E <= 0.5 ? E * E / 3.0 : (exp((E - c) / a) + b) / 12.0);
+}
+
 static const av_csp_trc_function trc_funcs[AVCOL_TRC_NB] = {
     [AVCOL_TRC_BT709] = trc_bt709,
     [AVCOL_TRC_GAMMA22] = trc_gamma22,
@@ -294,3 +403,29 @@ av_csp_trc_function av_csp_trc_func_from_id(enum AVColorTransferCharacteristic t
         return NULL;
     return trc_funcs[trc];
 }
+
+static const av_csp_trc_function trc_inv_funcs[AVCOL_TRC_NB] = {
+    [AVCOL_TRC_BT709] = trc_bt709_inv,
+    [AVCOL_TRC_GAMMA22] = trc_gamma22_inv,
+    [AVCOL_TRC_GAMMA28] = trc_gamma28_inv,
+    [AVCOL_TRC_SMPTE170M] = trc_bt709_inv,
+    [AVCOL_TRC_SMPTE240M] = trc_smpte240M_inv,
+    [AVCOL_TRC_LINEAR] = trc_linear,
+    [AVCOL_TRC_LOG] = trc_log_inv,
+    [AVCOL_TRC_LOG_SQRT] = trc_log_sqrt_inv,
+    [AVCOL_TRC_IEC61966_2_4] = trc_iec61966_2_4_inv,
+    [AVCOL_TRC_BT1361_ECG] = trc_bt1361_inv,
+    [AVCOL_TRC_IEC61966_2_1] = trc_iec61966_2_1_inv,
+    [AVCOL_TRC_BT2020_10] = trc_bt709_inv,
+    [AVCOL_TRC_BT2020_12] = trc_bt709_inv,
+    [AVCOL_TRC_SMPTE2084] = trc_smpte_st2084_inv,
+    [AVCOL_TRC_SMPTE428] = trc_smpte_st428_1_inv,
+    [AVCOL_TRC_ARIB_STD_B67] = trc_arib_std_b67_inv,
+};
+
+av_csp_trc_function av_csp_trc_func_inv_from_id(enum AVColorTransferCharacteristic trc)
+{
+    if (trc >= AVCOL_TRC_NB)
+        return NULL;
+    return trc_inv_funcs[trc];
+}
diff --git a/libavutil/csp.h b/libavutil/csp.h
index bc8f3dc9f6..58deebcb44 100644
--- a/libavutil/csp.h
+++ b/libavutil/csp.h
@@ -147,6 +147,11 @@ double av_csp_approximate_trc_gamma(enum AVColorTransferCharacteristic trc);
  */
 av_csp_trc_function av_csp_trc_func_from_id(enum AVColorTransferCharacteristic trc);
 
+/**
+ * Returns the mathematical inverse of the corresponding TRC function.
+ */
+av_csp_trc_function av_csp_trc_func_inv_from_id(enum AVColorTransferCharacteristic trc);
+
 /**
  * @}
  */
diff --git a/libavutil/tests/color_utils.c b/libavutil/tests/color_utils.c
index e1754f3603..9881cd2489 100644
--- a/libavutil/tests/color_utils.c
+++ b/libavutil/tests/color_utils.c
@@ -18,7 +18,9 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include <math.h>
 #include <stdio.h>
+
 #include "libavutil/csp.h"
 #include "libavutil/macros.h"
 #include "libavutil/pixdesc.h"
@@ -34,14 +36,21 @@ int main(int argc, char *argv[])
 
     for (enum AVColorTransferCharacteristic trc = 0; trc < AVCOL_TRC_NB; trc++) {
         av_csp_trc_function func = av_csp_trc_func_from_id(trc);
+        av_csp_trc_function func_inv = av_csp_trc_func_inv_from_id(trc);
         const char *name = av_color_transfer_name(trc);
         if (!func)
             continue;
 
         for (int i = 0; i < FF_ARRAY_ELEMS(test_data); i++) {
             double result = func(test_data[i]);
-            printf("trc=%s calling func(%f) expected=%f\n",
-                    name, test_data[i], result);
+            double roundtrip = func_inv(result);
+            printf("trc=%s calling func(%f) expected=%f roundtrip=%f\n",
+                    name, test_data[i], result, roundtrip);
+
+            if (result > 0.0 && fabs(roundtrip - test_data[i]) > 1e-8) {
+                printf("  FAIL\n");
+                return 1;
+            }
         }
     }
 }
diff --git a/libavutil/version.h b/libavutil/version.h
index 6a4abcf7f5..efc569e090 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -79,8 +79,8 @@
  */
 
 #define LIBAVUTIL_VERSION_MAJOR  59
-#define LIBAVUTIL_VERSION_MINOR  47
-#define LIBAVUTIL_VERSION_MICRO 101
+#define LIBAVUTIL_VERSION_MINOR  48
+#define LIBAVUTIL_VERSION_MICRO 100
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
                                                LIBAVUTIL_VERSION_MINOR, \
diff --git a/tests/ref/fate/color_utils b/tests/ref/fate/color_utils
index 34f97d53b6..09fbbd60d6 100644
--- a/tests/ref/fate/color_utils
+++ b/tests/ref/fate/color_utils
@@ -1,304 +1,304 @@
-trc=bt709 calling func(-0.100000) expected=0.000000
-trc=bt709 calling func(-0.018054) expected=0.000000
-trc=bt709 calling func(-0.010000) expected=0.000000
-trc=bt709 calling func(-0.004490) expected=0.000000
-trc=bt709 calling func(0.000000) expected=0.000000
-trc=bt709 calling func(0.003162) expected=0.014230
-trc=bt709 calling func(0.005000) expected=0.022500
-trc=bt709 calling func(0.009000) expected=0.040500
-trc=bt709 calling func(0.015000) expected=0.067500
-trc=bt709 calling func(0.100000) expected=0.290748
-trc=bt709 calling func(1.000000) expected=1.000000
-trc=bt709 calling func(52.370000) expected=6.427531
-trc=bt709 calling func(125.098765) expected=9.558517
-trc=bt709 calling func(1999.111230) expected=33.512490
-trc=bt709 calling func(6945.443000) expected=58.768794
-trc=bt709 calling func(15123.456700) expected=83.452916
-trc=bt709 calling func(19845.889230) expected=94.321297
-trc=bt709 calling func(98678.423100) expected=194.219568
-trc=bt709 calling func(99999.899998) expected=195.386306
-trc=bt470m calling func(-0.100000) expected=0.000000
-trc=bt470m calling func(-0.018054) expected=0.000000
-trc=bt470m calling func(-0.010000) expected=0.000000
-trc=bt470m calling func(-0.004490) expected=0.000000
-trc=bt470m calling func(0.000000) expected=0.000000
-trc=bt470m calling func(0.003162) expected=0.073053
-trc=bt470m calling func(0.005000) expected=0.089966
-trc=bt470m calling func(0.009000) expected=0.117520
-trc=bt470m calling func(0.015000) expected=0.148235
-trc=bt470m calling func(0.100000) expected=0.351119
-trc=bt470m calling func(1.000000) expected=1.000000
-trc=bt470m calling func(52.370000) expected=6.045068
-trc=bt470m calling func(125.098765) expected=8.980424
-trc=bt470m calling func(1999.111230) expected=31.650490
-trc=bt470m calling func(6945.443000) expected=55.747738
-trc=bt470m calling func(15123.456700) expected=79.403820
-trc=bt470m calling func(19845.889230) expected=89.843491
-trc=bt470m calling func(98678.423100) expected=186.252024
-trc=bt470m calling func(99999.899998) expected=187.381657
-trc=bt470bg calling func(-0.100000) expected=0.000000
-trc=bt470bg calling func(-0.018054) expected=0.000000
-trc=bt470bg calling func(-0.010000) expected=0.000000
-trc=bt470bg calling func(-0.004490) expected=0.000000
-trc=bt470bg calling func(0.000000) expected=0.000000
-trc=bt470bg calling func(0.003162) expected=0.127980
-trc=bt470bg calling func(0.005000) expected=0.150731
-trc=bt470bg calling func(0.009000) expected=0.185940
-trc=bt470bg calling func(0.015000) expected=0.223154
-trc=bt470bg calling func(0.100000) expected=0.439397
-trc=bt470bg calling func(1.000000) expected=1.000000
-trc=bt470bg calling func(52.370000) expected=4.111100
-trc=bt470bg calling func(125.098765) expected=5.610724
-trc=bt470bg calling func(1999.111230) expected=15.096294
-trc=bt470bg calling func(6945.443000) expected=23.552429
-trc=bt470bg calling func(15123.456700) expected=31.098005
-trc=bt470bg calling func(19845.889230) expected=34.267494
-trc=bt470bg calling func(98678.423100) expected=60.764620
-trc=bt470bg calling func(99999.899998) expected=61.054001
-trc=smpte170m calling func(-0.100000) expected=0.000000
-trc=smpte170m calling func(-0.018054) expected=0.000000
-trc=smpte170m calling func(-0.010000) expected=0.000000
-trc=smpte170m calling func(-0.004490) expected=0.000000
-trc=smpte170m calling func(0.000000) expected=0.000000
-trc=smpte170m calling func(0.003162) expected=0.014230
-trc=smpte170m calling func(0.005000) expected=0.022500
-trc=smpte170m calling func(0.009000) expected=0.040500
-trc=smpte170m calling func(0.015000) expected=0.067500
-trc=smpte170m calling func(0.100000) expected=0.290748
-trc=smpte170m calling func(1.000000) expected=1.000000
-trc=smpte170m calling func(52.370000) expected=6.427531
-trc=smpte170m calling func(125.098765) expected=9.558517
-trc=smpte170m calling func(1999.111230) expected=33.512490
-trc=smpte170m calling func(6945.443000) expected=58.768794
-trc=smpte170m calling func(15123.456700) expected=83.452916
-trc=smpte170m calling func(19845.889230) expected=94.321297
-trc=smpte170m calling func(98678.423100) expected=194.219568
-trc=smpte170m calling func(99999.899998) expected=195.386306
-trc=smpte240m calling func(-0.100000) expected=0.000000
-trc=smpte240m calling func(-0.018054) expected=0.000000
-trc=smpte240m calling func(-0.010000) expected=0.000000
-trc=smpte240m calling func(-0.004490) expected=0.000000
-trc=smpte240m calling func(0.000000) expected=0.000000
-trc=smpte240m calling func(0.003162) expected=0.012649
-trc=smpte240m calling func(0.005000) expected=0.020000
-trc=smpte240m calling func(0.009000) expected=0.036000
-trc=smpte240m calling func(0.015000) expected=0.060000
-trc=smpte240m calling func(0.100000) expected=0.282875
-trc=smpte240m calling func(1.000000) expected=1.000000
-trc=smpte240m calling func(52.370000) expected=6.487781
-trc=smpte240m calling func(125.098765) expected=9.653524
-trc=smpte240m calling func(1999.111230) expected=33.873408
-trc=smpte240m calling func(6945.443000) expected=59.410079
-trc=smpte240m calling func(15123.456700) expected=84.368216
-trc=smpte240m calling func(19845.889230) expected=95.357247
-trc=smpte240m calling func(98678.423100) expected=196.364477
-trc=smpte240m calling func(99999.899998) expected=197.544167
-trc=linear calling func(-0.100000) expected=-0.100000
-trc=linear calling func(-0.018054) expected=-0.018054
-trc=linear calling func(-0.010000) expected=-0.010000
-trc=linear calling func(-0.004490) expected=-0.004490
-trc=linear calling func(0.000000) expected=0.000000
-trc=linear calling func(0.003162) expected=0.003162
-trc=linear calling func(0.005000) expected=0.005000
-trc=linear calling func(0.009000) expected=0.009000
-trc=linear calling func(0.015000) expected=0.015000
-trc=linear calling func(0.100000) expected=0.100000
-trc=linear calling func(1.000000) expected=1.000000
-trc=linear calling func(52.370000) expected=52.370000
-trc=linear calling func(125.098765) expected=125.098765
-trc=linear calling func(1999.111230) expected=1999.111230
-trc=linear calling func(6945.443000) expected=6945.443000
-trc=linear calling func(15123.456700) expected=15123.456700
-trc=linear calling func(19845.889230) expected=19845.889230
-trc=linear calling func(98678.423100) expected=98678.423100
-trc=linear calling func(99999.899998) expected=99999.899998
-trc=log100 calling func(-0.100000) expected=0.000000
-trc=log100 calling func(-0.018054) expected=0.000000
-trc=log100 calling func(-0.010000) expected=0.000000
-trc=log100 calling func(-0.004490) expected=0.000000
-trc=log100 calling func(0.000000) expected=0.000000
-trc=log100 calling func(0.003162) expected=0.000000
-trc=log100 calling func(0.005000) expected=0.000000
-trc=log100 calling func(0.009000) expected=0.000000
-trc=log100 calling func(0.015000) expected=0.088046
-trc=log100 calling func(0.100000) expected=0.500000
-trc=log100 calling func(1.000000) expected=1.000000
-trc=log100 calling func(52.370000) expected=1.859541
-trc=log100 calling func(125.098765) expected=2.048627
-trc=log100 calling func(1999.111230) expected=2.650418
-trc=log100 calling func(6945.443000) expected=2.920850
-trc=log100 calling func(15123.456700) expected=3.089826
-trc=log100 calling func(19845.889230) expected=3.148835
-trc=log100 calling func(98678.423100) expected=3.497111
-trc=log100 calling func(99999.899998) expected=3.500000
-trc=log316 calling func(-0.100000) expected=0.000000
-trc=log316 calling func(-0.018054) expected=0.000000
-trc=log316 calling func(-0.010000) expected=0.000000
-trc=log316 calling func(-0.004490) expected=0.000000
-trc=log316 calling func(0.000000) expected=0.000000
-trc=log316 calling func(0.003162) expected=0.000000
-trc=log316 calling func(0.005000) expected=0.079588
-trc=log316 calling func(0.009000) expected=0.181697
-trc=log316 calling func(0.015000) expected=0.270437
-trc=log316 calling func(0.100000) expected=0.600000
-trc=log316 calling func(1.000000) expected=1.000000
-trc=log316 calling func(52.370000) expected=1.687633
-trc=log316 calling func(125.098765) expected=1.838901
-trc=log316 calling func(1999.111230) expected=2.320335
-trc=log316 calling func(6945.443000) expected=2.536680
-trc=log316 calling func(15123.456700) expected=2.671860
-trc=log316 calling func(19845.889230) expected=2.719068
-trc=log316 calling func(98678.423100) expected=2.997689
-trc=log316 calling func(99999.899998) expected=3.000000
-trc=iec61966-2-4 calling func(-0.100000) expected=-0.290748
-trc=iec61966-2-4 calling func(-0.018054) expected=-0.081243
-trc=iec61966-2-4 calling func(-0.010000) expected=-0.045000
-trc=iec61966-2-4 calling func(-0.004490) expected=-0.020205
-trc=iec61966-2-4 calling func(0.000000) expected=0.000000
-trc=iec61966-2-4 calling func(0.003162) expected=0.014230
-trc=iec61966-2-4 calling func(0.005000) expected=0.022500
-trc=iec61966-2-4 calling func(0.009000) expected=0.040500
-trc=iec61966-2-4 calling func(0.015000) expected=0.067500
-trc=iec61966-2-4 calling func(0.100000) expected=0.290748
-trc=iec61966-2-4 calling func(1.000000) expected=1.000000
-trc=iec61966-2-4 calling func(52.370000) expected=6.427531
-trc=iec61966-2-4 calling func(125.098765) expected=9.558517
-trc=iec61966-2-4 calling func(1999.111230) expected=33.512490
-trc=iec61966-2-4 calling func(6945.443000) expected=58.768794
-trc=iec61966-2-4 calling func(15123.456700) expected=83.452916
-trc=iec61966-2-4 calling func(19845.889230) expected=94.321297
-trc=iec61966-2-4 calling func(98678.423100) expected=194.219568
-trc=iec61966-2-4 calling func(99999.899998) expected=195.386306
-trc=bt1361e calling func(-0.100000) expected=-0.206787
-trc=bt1361e calling func(-0.018054) expected=-0.109049
-trc=bt1361e calling func(-0.010000) expected=-0.089387
-trc=bt1361e calling func(-0.004490) expected=-0.020205
-trc=bt1361e calling func(0.000000) expected=0.000000
-trc=bt1361e calling func(0.003162) expected=0.014230
-trc=bt1361e calling func(0.005000) expected=0.022500
-trc=bt1361e calling func(0.009000) expected=0.040500
-trc=bt1361e calling func(0.015000) expected=0.067500
-trc=bt1361e calling func(0.100000) expected=0.290748
-trc=bt1361e calling func(1.000000) expected=1.000000
-trc=bt1361e calling func(52.370000) expected=6.427531
-trc=bt1361e calling func(125.098765) expected=9.558517
-trc=bt1361e calling func(1999.111230) expected=33.512490
-trc=bt1361e calling func(6945.443000) expected=58.768794
-trc=bt1361e calling func(15123.456700) expected=83.452916
-trc=bt1361e calling func(19845.889230) expected=94.321297
-trc=bt1361e calling func(98678.423100) expected=194.219568
-trc=bt1361e calling func(99999.899998) expected=195.386306
-trc=iec61966-2-1 calling func(-0.100000) expected=0.000000
-trc=iec61966-2-1 calling func(-0.018054) expected=0.000000
-trc=iec61966-2-1 calling func(-0.010000) expected=0.000000
-trc=iec61966-2-1 calling func(-0.004490) expected=0.000000
-trc=iec61966-2-1 calling func(0.000000) expected=0.000000
-trc=iec61966-2-1 calling func(0.003162) expected=0.040849
-trc=iec61966-2-1 calling func(0.005000) expected=0.061009
-trc=iec61966-2-1 calling func(0.009000) expected=0.093202
-trc=iec61966-2-1 calling func(0.015000) expected=0.128354
-trc=iec61966-2-1 calling func(0.100000) expected=0.349190
-trc=iec61966-2-1 calling func(1.000000) expected=1.000000
-trc=iec61966-2-1 calling func(52.370000) expected=5.434552
-trc=iec61966-2-1 calling func(125.098765) expected=7.835561
-trc=iec61966-2-1 calling func(1999.111230) expected=24.983090
-trc=iec61966-2-1 calling func(6945.443000) expected=42.013863
-trc=iec61966-2-1 calling func(15123.456700) expected=58.125003
-trc=iec61966-2-1 calling func(19845.889230) expected=65.100117
-trc=iec61966-2-1 calling func(98678.423100) expected=127.054607
-trc=iec61966-2-1 calling func(99999.899998) expected=127.761115
-trc=bt2020-10 calling func(-0.100000) expected=0.000000
-trc=bt2020-10 calling func(-0.018054) expected=0.000000
-trc=bt2020-10 calling func(-0.010000) expected=0.000000
-trc=bt2020-10 calling func(-0.004490) expected=0.000000
-trc=bt2020-10 calling func(0.000000) expected=0.000000
-trc=bt2020-10 calling func(0.003162) expected=0.014230
-trc=bt2020-10 calling func(0.005000) expected=0.022500
-trc=bt2020-10 calling func(0.009000) expected=0.040500
-trc=bt2020-10 calling func(0.015000) expected=0.067500
-trc=bt2020-10 calling func(0.100000) expected=0.290748
-trc=bt2020-10 calling func(1.000000) expected=1.000000
-trc=bt2020-10 calling func(52.370000) expected=6.427531
-trc=bt2020-10 calling func(125.098765) expected=9.558517
-trc=bt2020-10 calling func(1999.111230) expected=33.512490
-trc=bt2020-10 calling func(6945.443000) expected=58.768794
-trc=bt2020-10 calling func(15123.456700) expected=83.452916
-trc=bt2020-10 calling func(19845.889230) expected=94.321297
-trc=bt2020-10 calling func(98678.423100) expected=194.219568
-trc=bt2020-10 calling func(99999.899998) expected=195.386306
-trc=bt2020-12 calling func(-0.100000) expected=0.000000
-trc=bt2020-12 calling func(-0.018054) expected=0.000000
-trc=bt2020-12 calling func(-0.010000) expected=0.000000
-trc=bt2020-12 calling func(-0.004490) expected=0.000000
-trc=bt2020-12 calling func(0.000000) expected=0.000000
-trc=bt2020-12 calling func(0.003162) expected=0.014230
-trc=bt2020-12 calling func(0.005000) expected=0.022500
-trc=bt2020-12 calling func(0.009000) expected=0.040500
-trc=bt2020-12 calling func(0.015000) expected=0.067500
-trc=bt2020-12 calling func(0.100000) expected=0.290748
-trc=bt2020-12 calling func(1.000000) expected=1.000000
-trc=bt2020-12 calling func(52.370000) expected=6.427531
-trc=bt2020-12 calling func(125.098765) expected=9.558517
-trc=bt2020-12 calling func(1999.111230) expected=33.512490
-trc=bt2020-12 calling func(6945.443000) expected=58.768794
-trc=bt2020-12 calling func(15123.456700) expected=83.452916
-trc=bt2020-12 calling func(19845.889230) expected=94.321297
-trc=bt2020-12 calling func(98678.423100) expected=194.219568
-trc=bt2020-12 calling func(99999.899998) expected=195.386306
-trc=smpte2084 calling func(-0.100000) expected=0.000000
-trc=smpte2084 calling func(-0.018054) expected=0.000000
-trc=smpte2084 calling func(-0.010000) expected=0.000000
-trc=smpte2084 calling func(-0.004490) expected=0.000000
-trc=smpte2084 calling func(0.000000) expected=0.000001
-trc=smpte2084 calling func(0.003162) expected=0.011839
-trc=smpte2084 calling func(0.005000) expected=0.015076
-trc=smpte2084 calling func(0.009000) expected=0.020379
-trc=smpte2084 calling func(0.015000) expected=0.026255
-trc=smpte2084 calling func(0.100000) expected=0.062337
-trc=smpte2084 calling func(1.000000) expected=0.149946
-trc=smpte2084 calling func(52.370000) expected=0.444693
-trc=smpte2084 calling func(125.098765) expected=0.530719
-trc=smpte2084 calling func(1999.111230) expected=0.827376
-trc=smpte2084 calling func(6945.443000) expected=0.961586
-trc=smpte2084 calling func(15123.456700) expected=1.042921
-trc=smpte2084 calling func(19845.889230) expected=1.070677
-trc=smpte2084 calling func(98678.423100) expected=1.225908
-trc=smpte2084 calling func(99999.899998) expected=1.227127
-trc=smpte428 calling func(-0.100000) expected=0.000000
-trc=smpte428 calling func(-0.018054) expected=0.000000
-trc=smpte428 calling func(-0.010000) expected=0.000000
-trc=smpte428 calling func(-0.004490) expected=0.000000
-trc=smpte428 calling func(0.000000) expected=0.000000
-trc=smpte428 calling func(0.003162) expected=0.105659
-trc=smpte428 calling func(0.005000) expected=0.126018
-trc=smpte428 calling func(0.009000) expected=0.157985
-trc=smpte428 calling func(0.015000) expected=0.192284
-trc=smpte428 calling func(0.100000) expected=0.398869
-trc=smpte428 calling func(1.000000) expected=0.967043
-trc=smpte428 calling func(52.370000) expected=4.432321
-trc=smpte428 calling func(125.098765) expected=6.195572
-trc=smpte428 calling func(1999.111230) expected=17.988639
-trc=smpte428 calling func(6945.443000) expected=29.041734
-trc=smpte428 calling func(15123.456700) expected=39.174525
-trc=smpte428 calling func(19845.889230) expected=43.490646
-trc=smpte428 calling func(98678.423100) expected=80.593559
-trc=smpte428 calling func(99999.899998) expected=81.006971
-trc=arib-std-b67 calling func(-0.100000) expected=0.000000
-trc=arib-std-b67 calling func(-0.018054) expected=0.000000
-trc=arib-std-b67 calling func(-0.010000) expected=0.000000
-trc=arib-std-b67 calling func(-0.004490) expected=0.000000
-trc=arib-std-b67 calling func(0.000000) expected=0.000000
-trc=arib-std-b67 calling func(0.003162) expected=0.097400
-trc=arib-std-b67 calling func(0.005000) expected=0.122474
-trc=arib-std-b67 calling func(0.009000) expected=0.164317
-trc=arib-std-b67 calling func(0.015000) expected=0.212132
-trc=arib-std-b67 calling func(0.100000) expected=0.544089
-trc=arib-std-b67 calling func(1.000000) expected=1.000000
-trc=arib-std-b67 calling func(52.370000) expected=1.712092
-trc=arib-std-b67 calling func(125.098765) expected=1.867862
-trc=arib-std-b67 calling func(1999.111230) expected=2.363502
-trc=arib-std-b67 calling func(6945.443000) expected=2.586219
-trc=arib-std-b67 calling func(15123.456700) expected=2.725380
-trc=arib-std-b67 calling func(19845.889230) expected=2.773978
-trc=arib-std-b67 calling func(98678.423100) expected=3.060803
-trc=arib-std-b67 calling func(99999.899998) expected=3.063182
+trc=bt709 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=bt709 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=bt709 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=bt709 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=bt709 calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=bt709 calling func(0.003162) expected=0.014230 roundtrip=0.003162
+trc=bt709 calling func(0.005000) expected=0.022500 roundtrip=0.005000
+trc=bt709 calling func(0.009000) expected=0.040500 roundtrip=0.009000
+trc=bt709 calling func(0.015000) expected=0.067500 roundtrip=0.015000
+trc=bt709 calling func(0.100000) expected=0.290748 roundtrip=0.100000
+trc=bt709 calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=bt709 calling func(52.370000) expected=6.427531 roundtrip=52.370000
+trc=bt709 calling func(125.098765) expected=9.558517 roundtrip=125.098765
+trc=bt709 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
+trc=bt709 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
+trc=bt709 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
+trc=bt709 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
+trc=bt709 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
+trc=bt709 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
+trc=bt470m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=bt470m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=bt470m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=bt470m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=bt470m calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=bt470m calling func(0.003162) expected=0.073053 roundtrip=0.003162
+trc=bt470m calling func(0.005000) expected=0.089966 roundtrip=0.005000
+trc=bt470m calling func(0.009000) expected=0.117520 roundtrip=0.009000
+trc=bt470m calling func(0.015000) expected=0.148235 roundtrip=0.015000
+trc=bt470m calling func(0.100000) expected=0.351119 roundtrip=0.100000
+trc=bt470m calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=bt470m calling func(52.370000) expected=6.045068 roundtrip=52.370000
+trc=bt470m calling func(125.098765) expected=8.980424 roundtrip=125.098765
+trc=bt470m calling func(1999.111230) expected=31.650490 roundtrip=1999.111230
+trc=bt470m calling func(6945.443000) expected=55.747738 roundtrip=6945.443000
+trc=bt470m calling func(15123.456700) expected=79.403820 roundtrip=15123.456700
+trc=bt470m calling func(19845.889230) expected=89.843491 roundtrip=19845.889230
+trc=bt470m calling func(98678.423100) expected=186.252024 roundtrip=98678.423100
+trc=bt470m calling func(99999.899998) expected=187.381657 roundtrip=99999.899998
+trc=bt470bg calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=bt470bg calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=bt470bg calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=bt470bg calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=bt470bg calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=bt470bg calling func(0.003162) expected=0.127980 roundtrip=0.003162
+trc=bt470bg calling func(0.005000) expected=0.150731 roundtrip=0.005000
+trc=bt470bg calling func(0.009000) expected=0.185940 roundtrip=0.009000
+trc=bt470bg calling func(0.015000) expected=0.223154 roundtrip=0.015000
+trc=bt470bg calling func(0.100000) expected=0.439397 roundtrip=0.100000
+trc=bt470bg calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=bt470bg calling func(52.370000) expected=4.111100 roundtrip=52.370000
+trc=bt470bg calling func(125.098765) expected=5.610724 roundtrip=125.098765
+trc=bt470bg calling func(1999.111230) expected=15.096294 roundtrip=1999.111230
+trc=bt470bg calling func(6945.443000) expected=23.552429 roundtrip=6945.443000
+trc=bt470bg calling func(15123.456700) expected=31.098005 roundtrip=15123.456700
+trc=bt470bg calling func(19845.889230) expected=34.267494 roundtrip=19845.889230
+trc=bt470bg calling func(98678.423100) expected=60.764620 roundtrip=98678.423100
+trc=bt470bg calling func(99999.899998) expected=61.054001 roundtrip=99999.899998
+trc=smpte170m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=smpte170m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=smpte170m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=smpte170m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=smpte170m calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=smpte170m calling func(0.003162) expected=0.014230 roundtrip=0.003162
+trc=smpte170m calling func(0.005000) expected=0.022500 roundtrip=0.005000
+trc=smpte170m calling func(0.009000) expected=0.040500 roundtrip=0.009000
+trc=smpte170m calling func(0.015000) expected=0.067500 roundtrip=0.015000
+trc=smpte170m calling func(0.100000) expected=0.290748 roundtrip=0.100000
+trc=smpte170m calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=smpte170m calling func(52.370000) expected=6.427531 roundtrip=52.370000
+trc=smpte170m calling func(125.098765) expected=9.558517 roundtrip=125.098765
+trc=smpte170m calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
+trc=smpte170m calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
+trc=smpte170m calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
+trc=smpte170m calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
+trc=smpte170m calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
+trc=smpte170m calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
+trc=smpte240m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=smpte240m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=smpte240m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=smpte240m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=smpte240m calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=smpte240m calling func(0.003162) expected=0.012649 roundtrip=0.003162
+trc=smpte240m calling func(0.005000) expected=0.020000 roundtrip=0.005000
+trc=smpte240m calling func(0.009000) expected=0.036000 roundtrip=0.009000
+trc=smpte240m calling func(0.015000) expected=0.060000 roundtrip=0.015000
+trc=smpte240m calling func(0.100000) expected=0.282875 roundtrip=0.100000
+trc=smpte240m calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=smpte240m calling func(52.370000) expected=6.487781 roundtrip=52.370000
+trc=smpte240m calling func(125.098765) expected=9.653524 roundtrip=125.098765
+trc=smpte240m calling func(1999.111230) expected=33.873408 roundtrip=1999.111230
+trc=smpte240m calling func(6945.443000) expected=59.410079 roundtrip=6945.443000
+trc=smpte240m calling func(15123.456700) expected=84.368216 roundtrip=15123.456700
+trc=smpte240m calling func(19845.889230) expected=95.357247 roundtrip=19845.889230
+trc=smpte240m calling func(98678.423100) expected=196.364477 roundtrip=98678.423100
+trc=smpte240m calling func(99999.899998) expected=197.544167 roundtrip=99999.899998
+trc=linear calling func(-0.100000) expected=-0.100000 roundtrip=-0.100000
+trc=linear calling func(-0.018054) expected=-0.018054 roundtrip=-0.018054
+trc=linear calling func(-0.010000) expected=-0.010000 roundtrip=-0.010000
+trc=linear calling func(-0.004490) expected=-0.004490 roundtrip=-0.004490
+trc=linear calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=linear calling func(0.003162) expected=0.003162 roundtrip=0.003162
+trc=linear calling func(0.005000) expected=0.005000 roundtrip=0.005000
+trc=linear calling func(0.009000) expected=0.009000 roundtrip=0.009000
+trc=linear calling func(0.015000) expected=0.015000 roundtrip=0.015000
+trc=linear calling func(0.100000) expected=0.100000 roundtrip=0.100000
+trc=linear calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=linear calling func(52.370000) expected=52.370000 roundtrip=52.370000
+trc=linear calling func(125.098765) expected=125.098765 roundtrip=125.098765
+trc=linear calling func(1999.111230) expected=1999.111230 roundtrip=1999.111230
+trc=linear calling func(6945.443000) expected=6945.443000 roundtrip=6945.443000
+trc=linear calling func(15123.456700) expected=15123.456700 roundtrip=15123.456700
+trc=linear calling func(19845.889230) expected=19845.889230 roundtrip=19845.889230
+trc=linear calling func(98678.423100) expected=98678.423100 roundtrip=98678.423100
+trc=linear calling func(99999.899998) expected=99999.899998 roundtrip=99999.899998
+trc=log100 calling func(-0.100000) expected=0.000000 roundtrip=0.010000
+trc=log100 calling func(-0.018054) expected=0.000000 roundtrip=0.010000
+trc=log100 calling func(-0.010000) expected=0.000000 roundtrip=0.010000
+trc=log100 calling func(-0.004490) expected=0.000000 roundtrip=0.010000
+trc=log100 calling func(0.000000) expected=0.000000 roundtrip=0.010000
+trc=log100 calling func(0.003162) expected=0.000000 roundtrip=0.010000
+trc=log100 calling func(0.005000) expected=0.000000 roundtrip=0.010000
+trc=log100 calling func(0.009000) expected=0.000000 roundtrip=0.010000
+trc=log100 calling func(0.015000) expected=0.088046 roundtrip=0.015000
+trc=log100 calling func(0.100000) expected=0.500000 roundtrip=0.100000
+trc=log100 calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=log100 calling func(52.370000) expected=1.859541 roundtrip=52.370000
+trc=log100 calling func(125.098765) expected=2.048627 roundtrip=125.098765
+trc=log100 calling func(1999.111230) expected=2.650418 roundtrip=1999.111230
+trc=log100 calling func(6945.443000) expected=2.920850 roundtrip=6945.443000
+trc=log100 calling func(15123.456700) expected=3.089826 roundtrip=15123.456700
+trc=log100 calling func(19845.889230) expected=3.148835 roundtrip=19845.889230
+trc=log100 calling func(98678.423100) expected=3.497111 roundtrip=98678.423100
+trc=log100 calling func(99999.899998) expected=3.500000 roundtrip=99999.899998
+trc=log316 calling func(-0.100000) expected=0.000000 roundtrip=0.003162
+trc=log316 calling func(-0.018054) expected=0.000000 roundtrip=0.003162
+trc=log316 calling func(-0.010000) expected=0.000000 roundtrip=0.003162
+trc=log316 calling func(-0.004490) expected=0.000000 roundtrip=0.003162
+trc=log316 calling func(0.000000) expected=0.000000 roundtrip=0.003162
+trc=log316 calling func(0.003162) expected=0.000000 roundtrip=0.003162
+trc=log316 calling func(0.005000) expected=0.079588 roundtrip=0.005000
+trc=log316 calling func(0.009000) expected=0.181697 roundtrip=0.009000
+trc=log316 calling func(0.015000) expected=0.270437 roundtrip=0.015000
+trc=log316 calling func(0.100000) expected=0.600000 roundtrip=0.100000
+trc=log316 calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=log316 calling func(52.370000) expected=1.687633 roundtrip=52.370000
+trc=log316 calling func(125.098765) expected=1.838901 roundtrip=125.098765
+trc=log316 calling func(1999.111230) expected=2.320335 roundtrip=1999.111230
+trc=log316 calling func(6945.443000) expected=2.536680 roundtrip=6945.443000
+trc=log316 calling func(15123.456700) expected=2.671860 roundtrip=15123.456700
+trc=log316 calling func(19845.889230) expected=2.719068 roundtrip=19845.889230
+trc=log316 calling func(98678.423100) expected=2.997689 roundtrip=98678.423100
+trc=log316 calling func(99999.899998) expected=3.000000 roundtrip=99999.899998
+trc=iec61966-2-4 calling func(-0.100000) expected=-0.290748 roundtrip=-0.100000
+trc=iec61966-2-4 calling func(-0.018054) expected=-0.081243 roundtrip=-0.018054
+trc=iec61966-2-4 calling func(-0.010000) expected=-0.045000 roundtrip=-0.010000
+trc=iec61966-2-4 calling func(-0.004490) expected=-0.020205 roundtrip=-0.004490
+trc=iec61966-2-4 calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=iec61966-2-4 calling func(0.003162) expected=0.014230 roundtrip=0.003162
+trc=iec61966-2-4 calling func(0.005000) expected=0.022500 roundtrip=0.005000
+trc=iec61966-2-4 calling func(0.009000) expected=0.040500 roundtrip=0.009000
+trc=iec61966-2-4 calling func(0.015000) expected=0.067500 roundtrip=0.015000
+trc=iec61966-2-4 calling func(0.100000) expected=0.290748 roundtrip=0.100000
+trc=iec61966-2-4 calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=iec61966-2-4 calling func(52.370000) expected=6.427531 roundtrip=52.370000
+trc=iec61966-2-4 calling func(125.098765) expected=9.558517 roundtrip=125.098765
+trc=iec61966-2-4 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
+trc=iec61966-2-4 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
+trc=iec61966-2-4 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
+trc=iec61966-2-4 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
+trc=iec61966-2-4 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
+trc=iec61966-2-4 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
+trc=bt1361e calling func(-0.100000) expected=-0.206787 roundtrip=-0.100000
+trc=bt1361e calling func(-0.018054) expected=-0.109049 roundtrip=-0.018054
+trc=bt1361e calling func(-0.010000) expected=-0.089387 roundtrip=-0.010000
+trc=bt1361e calling func(-0.004490) expected=-0.020205 roundtrip=-0.004490
+trc=bt1361e calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=bt1361e calling func(0.003162) expected=0.014230 roundtrip=0.003162
+trc=bt1361e calling func(0.005000) expected=0.022500 roundtrip=0.005000
+trc=bt1361e calling func(0.009000) expected=0.040500 roundtrip=0.009000
+trc=bt1361e calling func(0.015000) expected=0.067500 roundtrip=0.015000
+trc=bt1361e calling func(0.100000) expected=0.290748 roundtrip=0.100000
+trc=bt1361e calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=bt1361e calling func(52.370000) expected=6.427531 roundtrip=52.370000
+trc=bt1361e calling func(125.098765) expected=9.558517 roundtrip=125.098765
+trc=bt1361e calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
+trc=bt1361e calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
+trc=bt1361e calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
+trc=bt1361e calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
+trc=bt1361e calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
+trc=bt1361e calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
+trc=iec61966-2-1 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=iec61966-2-1 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=iec61966-2-1 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=iec61966-2-1 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=iec61966-2-1 calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=iec61966-2-1 calling func(0.003162) expected=0.040849 roundtrip=0.003162
+trc=iec61966-2-1 calling func(0.005000) expected=0.061009 roundtrip=0.005000
+trc=iec61966-2-1 calling func(0.009000) expected=0.093202 roundtrip=0.009000
+trc=iec61966-2-1 calling func(0.015000) expected=0.128354 roundtrip=0.015000
+trc=iec61966-2-1 calling func(0.100000) expected=0.349190 roundtrip=0.100000
+trc=iec61966-2-1 calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=iec61966-2-1 calling func(52.370000) expected=5.434552 roundtrip=52.370000
+trc=iec61966-2-1 calling func(125.098765) expected=7.835561 roundtrip=125.098765
+trc=iec61966-2-1 calling func(1999.111230) expected=24.983090 roundtrip=1999.111230
+trc=iec61966-2-1 calling func(6945.443000) expected=42.013863 roundtrip=6945.443000
+trc=iec61966-2-1 calling func(15123.456700) expected=58.125003 roundtrip=15123.456700
+trc=iec61966-2-1 calling func(19845.889230) expected=65.100117 roundtrip=19845.889230
+trc=iec61966-2-1 calling func(98678.423100) expected=127.054607 roundtrip=98678.423100
+trc=iec61966-2-1 calling func(99999.899998) expected=127.761115 roundtrip=99999.899998
+trc=bt2020-10 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=bt2020-10 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=bt2020-10 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=bt2020-10 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=bt2020-10 calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=bt2020-10 calling func(0.003162) expected=0.014230 roundtrip=0.003162
+trc=bt2020-10 calling func(0.005000) expected=0.022500 roundtrip=0.005000
+trc=bt2020-10 calling func(0.009000) expected=0.040500 roundtrip=0.009000
+trc=bt2020-10 calling func(0.015000) expected=0.067500 roundtrip=0.015000
+trc=bt2020-10 calling func(0.100000) expected=0.290748 roundtrip=0.100000
+trc=bt2020-10 calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=bt2020-10 calling func(52.370000) expected=6.427531 roundtrip=52.370000
+trc=bt2020-10 calling func(125.098765) expected=9.558517 roundtrip=125.098765
+trc=bt2020-10 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
+trc=bt2020-10 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
+trc=bt2020-10 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
+trc=bt2020-10 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
+trc=bt2020-10 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
+trc=bt2020-10 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
+trc=bt2020-12 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=bt2020-12 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=bt2020-12 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=bt2020-12 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=bt2020-12 calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=bt2020-12 calling func(0.003162) expected=0.014230 roundtrip=0.003162
+trc=bt2020-12 calling func(0.005000) expected=0.022500 roundtrip=0.005000
+trc=bt2020-12 calling func(0.009000) expected=0.040500 roundtrip=0.009000
+trc=bt2020-12 calling func(0.015000) expected=0.067500 roundtrip=0.015000
+trc=bt2020-12 calling func(0.100000) expected=0.290748 roundtrip=0.100000
+trc=bt2020-12 calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=bt2020-12 calling func(52.370000) expected=6.427531 roundtrip=52.370000
+trc=bt2020-12 calling func(125.098765) expected=9.558517 roundtrip=125.098765
+trc=bt2020-12 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
+trc=bt2020-12 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
+trc=bt2020-12 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
+trc=bt2020-12 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
+trc=bt2020-12 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
+trc=bt2020-12 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
+trc=smpte2084 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=smpte2084 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=smpte2084 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=smpte2084 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=smpte2084 calling func(0.000000) expected=0.000001 roundtrip=0.000000
+trc=smpte2084 calling func(0.003162) expected=0.011839 roundtrip=0.003162
+trc=smpte2084 calling func(0.005000) expected=0.015076 roundtrip=0.005000
+trc=smpte2084 calling func(0.009000) expected=0.020379 roundtrip=0.009000
+trc=smpte2084 calling func(0.015000) expected=0.026255 roundtrip=0.015000
+trc=smpte2084 calling func(0.100000) expected=0.062337 roundtrip=0.100000
+trc=smpte2084 calling func(1.000000) expected=0.149946 roundtrip=1.000000
+trc=smpte2084 calling func(52.370000) expected=0.444693 roundtrip=52.370000
+trc=smpte2084 calling func(125.098765) expected=0.530719 roundtrip=125.098765
+trc=smpte2084 calling func(1999.111230) expected=0.827376 roundtrip=1999.111230
+trc=smpte2084 calling func(6945.443000) expected=0.961586 roundtrip=6945.443000
+trc=smpte2084 calling func(15123.456700) expected=1.042921 roundtrip=15123.456700
+trc=smpte2084 calling func(19845.889230) expected=1.070677 roundtrip=19845.889230
+trc=smpte2084 calling func(98678.423100) expected=1.225908 roundtrip=98678.423100
+trc=smpte2084 calling func(99999.899998) expected=1.227127 roundtrip=99999.899998
+trc=smpte428 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=smpte428 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=smpte428 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=smpte428 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=smpte428 calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=smpte428 calling func(0.003162) expected=0.105659 roundtrip=0.003162
+trc=smpte428 calling func(0.005000) expected=0.126018 roundtrip=0.005000
+trc=smpte428 calling func(0.009000) expected=0.157985 roundtrip=0.009000
+trc=smpte428 calling func(0.015000) expected=0.192284 roundtrip=0.015000
+trc=smpte428 calling func(0.100000) expected=0.398869 roundtrip=0.100000
+trc=smpte428 calling func(1.000000) expected=0.967043 roundtrip=1.000000
+trc=smpte428 calling func(52.370000) expected=4.432321 roundtrip=52.370000
+trc=smpte428 calling func(125.098765) expected=6.195572 roundtrip=125.098765
+trc=smpte428 calling func(1999.111230) expected=17.988639 roundtrip=1999.111230
+trc=smpte428 calling func(6945.443000) expected=29.041734 roundtrip=6945.443000
+trc=smpte428 calling func(15123.456700) expected=39.174525 roundtrip=15123.456700
+trc=smpte428 calling func(19845.889230) expected=43.490646 roundtrip=19845.889230
+trc=smpte428 calling func(98678.423100) expected=80.593559 roundtrip=98678.423100
+trc=smpte428 calling func(99999.899998) expected=81.006971 roundtrip=99999.899998
+trc=arib-std-b67 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
+trc=arib-std-b67 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
+trc=arib-std-b67 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
+trc=arib-std-b67 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
+trc=arib-std-b67 calling func(0.000000) expected=0.000000 roundtrip=0.000000
+trc=arib-std-b67 calling func(0.003162) expected=0.097400 roundtrip=0.003162
+trc=arib-std-b67 calling func(0.005000) expected=0.122474 roundtrip=0.005000
+trc=arib-std-b67 calling func(0.009000) expected=0.164317 roundtrip=0.009000
+trc=arib-std-b67 calling func(0.015000) expected=0.212132 roundtrip=0.015000
+trc=arib-std-b67 calling func(0.100000) expected=0.544089 roundtrip=0.100000
+trc=arib-std-b67 calling func(1.000000) expected=1.000000 roundtrip=1.000000
+trc=arib-std-b67 calling func(52.370000) expected=1.712092 roundtrip=52.370000
+trc=arib-std-b67 calling func(125.098765) expected=1.867862 roundtrip=125.098765
+trc=arib-std-b67 calling func(1999.111230) expected=2.363502 roundtrip=1999.111230
+trc=arib-std-b67 calling func(6945.443000) expected=2.586219 roundtrip=6945.443000
+trc=arib-std-b67 calling func(15123.456700) expected=2.725380 roundtrip=15123.456700
+trc=arib-std-b67 calling func(19845.889230) expected=2.773978 roundtrip=19845.889230
+trc=arib-std-b67 calling func(98678.423100) expected=3.060803 roundtrip=98678.423100
+trc=arib-std-b67 calling func(99999.899998) expected=3.063182 roundtrip=99999.899998
-- 
2.47.0



More information about the ffmpeg-devel mailing list