From bf0a6c4111184ffab9f157db7ee7c8a0f59df077 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Mon, 25 Nov 2024 13:35:34 +0100 Subject: [PATCH] avutil/csp: add av_csp_trc_inv_from_id() 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..cdd2afb851 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-12-05 - 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 #include + #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