1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-13 21:28:01 +02:00

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.
This commit is contained in:
Niklas Haas 2024-11-25 13:35:34 +01:00
parent 28f217780b
commit bf0a6c4111
6 changed files with 471 additions and 319 deletions

View File

@ -2,6 +2,9 @@ The last version increases of all libraries were on 2024-03-07
API changes, most recent first: 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 2024-11-25 - xxxxxxxxxx - lsws 8.12.100 - swscale.h
Allow using sws_frame_scale() dynamically, without first initializing the Allow using sws_frame_scale() dynamically, without first initializing the
SwsContext. Deprecate sws_init_context(). Add sws_frame_setup() instead. SwsContext. Deprecate sws_init_context(). Add sws_frame_setup() instead.

View File

@ -170,16 +170,36 @@ static double trc_bt709(double Lc)
: a * pow(Lc, 0.45) - (a - 1.0); : 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) static double trc_gamma22(double Lc)
{ {
return (0.0 > Lc) ? 0.0 : pow(Lc, 1.0/ 2.2); 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) static double trc_gamma28(double Lc)
{ {
return (0.0 > Lc) ? 0.0 : pow(Lc, 1.0/ 2.8); 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) static double trc_smpte240M(double Lc)
{ {
const double a = 1.1115; const double a = 1.1115;
@ -190,6 +210,16 @@ static double trc_smpte240M(double Lc)
: a * pow(Lc, 0.45) - (a - 1.0); : 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) static double trc_linear(double Lc)
{ {
return 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; 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) static double trc_log_sqrt(double Lc)
{ {
// sqrt(10) / 1000 // sqrt(10) / 1000
return (0.00316227766 > Lc) ? 0.0 : 1.0 + log10(Lc) / 2.5; 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) static double trc_iec61966_2_4(double Lc)
{ {
const double a = BT709_alpha; 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); : 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) static double trc_bt1361(double Lc)
{ {
const double a = BT709_alpha; const double a = BT709_alpha;
@ -226,6 +276,16 @@ static double trc_bt1361(double Lc)
: a * pow( Lc, 0.45) - (a - 1.0); : 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) static double trc_iec61966_2_1(double Lc)
{ {
const double a = 1.055; 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); : 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) static double trc_smpte_st2084(double Lc)
{ {
const double c1 = 3424.0 / 4096.0; // c3-c2 + 1 const double c1 = PQ_c1;
const double c2 = 32.0 * 2413.0 / 4096.0; const double c2 = PQ_c2;
const double c3 = 32.0 * 2392.0 / 4096.0; const double c3 = PQ_c3;
const double m = 128.0 * 2523.0 / 4096.0; const double m = PQ_m;
const double n = 0.25 * 2610.0 / 4096.0; const double n = PQ_n;
const double L = Lc / 10000.0; const double L = Lc / 10000.0;
const double Ln = pow(L, n); const double Ln = pow(L, n);
@ -251,24 +328,56 @@ static double trc_smpte_st2084(double Lc)
} }
static double trc_smpte_st428_1(double Lc) static double trc_smpte_st2084_inv(double E)
{ {
return (0.0 > Lc) ? 0.0 const double c1 = PQ_c1;
: pow(48.0 * Lc / 52.37, 1.0 / 2.6); 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(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) { static double trc_arib_std_b67(double Lc) {
// The function uses the definition from HEVC, which assumes that the peak // 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 // white is input level = 1. (this is equivalent to scaling E = Lc * 12 and
// using the definition from the ARIB STD-B67 spec) // using the definition from the ARIB STD-B67 spec)
const double a = 0.17883277; const double a = HLG_a;
const double b = 0.28466892; const double b = HLG_b;
const double c = 0.55991073; const double c = HLG_c;
return (0.0 > Lc) ? 0.0 : return (0.0 > Lc) ? 0.0 :
(Lc <= 1.0 / 12.0 ? sqrt(3.0 * Lc) : a * log(12.0 * Lc - b) + c); (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] = { static const av_csp_trc_function trc_funcs[AVCOL_TRC_NB] = {
[AVCOL_TRC_BT709] = trc_bt709, [AVCOL_TRC_BT709] = trc_bt709,
[AVCOL_TRC_GAMMA22] = trc_gamma22, [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 NULL;
return trc_funcs[trc]; 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];
}

View File

@ -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); 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);
/** /**
* @} * @}
*/ */

View File

@ -18,7 +18,9 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/ */
#include <math.h>
#include <stdio.h> #include <stdio.h>
#include "libavutil/csp.h" #include "libavutil/csp.h"
#include "libavutil/macros.h" #include "libavutil/macros.h"
#include "libavutil/pixdesc.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++) { 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 = 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); const char *name = av_color_transfer_name(trc);
if (!func) if (!func)
continue; continue;
for (int i = 0; i < FF_ARRAY_ELEMS(test_data); i++) { for (int i = 0; i < FF_ARRAY_ELEMS(test_data); i++) {
double result = func(test_data[i]); double result = func(test_data[i]);
printf("trc=%s calling func(%f) expected=%f\n", double roundtrip = func_inv(result);
name, test_data[i], 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;
}
} }
} }
} }

View File

@ -79,8 +79,8 @@
*/ */
#define LIBAVUTIL_VERSION_MAJOR 59 #define LIBAVUTIL_VERSION_MAJOR 59
#define LIBAVUTIL_VERSION_MINOR 47 #define LIBAVUTIL_VERSION_MINOR 48
#define LIBAVUTIL_VERSION_MICRO 101 #define LIBAVUTIL_VERSION_MICRO 100
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
LIBAVUTIL_VERSION_MINOR, \ LIBAVUTIL_VERSION_MINOR, \

View File

@ -1,304 +1,304 @@
trc=bt709 calling func(-0.100000) expected=0.000000 trc=bt709 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(-0.018054) expected=0.000000 trc=bt709 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(-0.010000) expected=0.000000 trc=bt709 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(-0.004490) expected=0.000000 trc=bt709 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(0.000000) expected=0.000000 trc=bt709 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt709 calling func(0.003162) expected=0.014230 trc=bt709 calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=bt709 calling func(0.005000) expected=0.022500 trc=bt709 calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=bt709 calling func(0.009000) expected=0.040500 trc=bt709 calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=bt709 calling func(0.015000) expected=0.067500 trc=bt709 calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=bt709 calling func(0.100000) expected=0.290748 trc=bt709 calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=bt709 calling func(1.000000) expected=1.000000 trc=bt709 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt709 calling func(52.370000) expected=6.427531 trc=bt709 calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=bt709 calling func(125.098765) expected=9.558517 trc=bt709 calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=bt709 calling func(1999.111230) expected=33.512490 trc=bt709 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=bt709 calling func(6945.443000) expected=58.768794 trc=bt709 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=bt709 calling func(15123.456700) expected=83.452916 trc=bt709 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=bt709 calling func(19845.889230) expected=94.321297 trc=bt709 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=bt709 calling func(98678.423100) expected=194.219568 trc=bt709 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=bt709 calling func(99999.899998) expected=195.386306 trc=bt709 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=bt470m calling func(-0.100000) expected=0.000000 trc=bt470m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(-0.018054) expected=0.000000 trc=bt470m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(-0.010000) expected=0.000000 trc=bt470m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(-0.004490) expected=0.000000 trc=bt470m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(0.000000) expected=0.000000 trc=bt470m calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt470m calling func(0.003162) expected=0.073053 trc=bt470m calling func(0.003162) expected=0.073053 roundtrip=0.003162
trc=bt470m calling func(0.005000) expected=0.089966 trc=bt470m calling func(0.005000) expected=0.089966 roundtrip=0.005000
trc=bt470m calling func(0.009000) expected=0.117520 trc=bt470m calling func(0.009000) expected=0.117520 roundtrip=0.009000
trc=bt470m calling func(0.015000) expected=0.148235 trc=bt470m calling func(0.015000) expected=0.148235 roundtrip=0.015000
trc=bt470m calling func(0.100000) expected=0.351119 trc=bt470m calling func(0.100000) expected=0.351119 roundtrip=0.100000
trc=bt470m calling func(1.000000) expected=1.000000 trc=bt470m calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt470m calling func(52.370000) expected=6.045068 trc=bt470m calling func(52.370000) expected=6.045068 roundtrip=52.370000
trc=bt470m calling func(125.098765) expected=8.980424 trc=bt470m calling func(125.098765) expected=8.980424 roundtrip=125.098765
trc=bt470m calling func(1999.111230) expected=31.650490 trc=bt470m calling func(1999.111230) expected=31.650490 roundtrip=1999.111230
trc=bt470m calling func(6945.443000) expected=55.747738 trc=bt470m calling func(6945.443000) expected=55.747738 roundtrip=6945.443000
trc=bt470m calling func(15123.456700) expected=79.403820 trc=bt470m calling func(15123.456700) expected=79.403820 roundtrip=15123.456700
trc=bt470m calling func(19845.889230) expected=89.843491 trc=bt470m calling func(19845.889230) expected=89.843491 roundtrip=19845.889230
trc=bt470m calling func(98678.423100) expected=186.252024 trc=bt470m calling func(98678.423100) expected=186.252024 roundtrip=98678.423100
trc=bt470m calling func(99999.899998) expected=187.381657 trc=bt470m calling func(99999.899998) expected=187.381657 roundtrip=99999.899998
trc=bt470bg calling func(-0.100000) expected=0.000000 trc=bt470bg calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(-0.018054) expected=0.000000 trc=bt470bg calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(-0.010000) expected=0.000000 trc=bt470bg calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(-0.004490) expected=0.000000 trc=bt470bg calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(0.000000) expected=0.000000 trc=bt470bg calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt470bg calling func(0.003162) expected=0.127980 trc=bt470bg calling func(0.003162) expected=0.127980 roundtrip=0.003162
trc=bt470bg calling func(0.005000) expected=0.150731 trc=bt470bg calling func(0.005000) expected=0.150731 roundtrip=0.005000
trc=bt470bg calling func(0.009000) expected=0.185940 trc=bt470bg calling func(0.009000) expected=0.185940 roundtrip=0.009000
trc=bt470bg calling func(0.015000) expected=0.223154 trc=bt470bg calling func(0.015000) expected=0.223154 roundtrip=0.015000
trc=bt470bg calling func(0.100000) expected=0.439397 trc=bt470bg calling func(0.100000) expected=0.439397 roundtrip=0.100000
trc=bt470bg calling func(1.000000) expected=1.000000 trc=bt470bg calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt470bg calling func(52.370000) expected=4.111100 trc=bt470bg calling func(52.370000) expected=4.111100 roundtrip=52.370000
trc=bt470bg calling func(125.098765) expected=5.610724 trc=bt470bg calling func(125.098765) expected=5.610724 roundtrip=125.098765
trc=bt470bg calling func(1999.111230) expected=15.096294 trc=bt470bg calling func(1999.111230) expected=15.096294 roundtrip=1999.111230
trc=bt470bg calling func(6945.443000) expected=23.552429 trc=bt470bg calling func(6945.443000) expected=23.552429 roundtrip=6945.443000
trc=bt470bg calling func(15123.456700) expected=31.098005 trc=bt470bg calling func(15123.456700) expected=31.098005 roundtrip=15123.456700
trc=bt470bg calling func(19845.889230) expected=34.267494 trc=bt470bg calling func(19845.889230) expected=34.267494 roundtrip=19845.889230
trc=bt470bg calling func(98678.423100) expected=60.764620 trc=bt470bg calling func(98678.423100) expected=60.764620 roundtrip=98678.423100
trc=bt470bg calling func(99999.899998) expected=61.054001 trc=bt470bg calling func(99999.899998) expected=61.054001 roundtrip=99999.899998
trc=smpte170m calling func(-0.100000) expected=0.000000 trc=smpte170m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(-0.018054) expected=0.000000 trc=smpte170m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(-0.010000) expected=0.000000 trc=smpte170m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(-0.004490) expected=0.000000 trc=smpte170m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(0.000000) expected=0.000000 trc=smpte170m calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=smpte170m calling func(0.003162) expected=0.014230 trc=smpte170m calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=smpte170m calling func(0.005000) expected=0.022500 trc=smpte170m calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=smpte170m calling func(0.009000) expected=0.040500 trc=smpte170m calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=smpte170m calling func(0.015000) expected=0.067500 trc=smpte170m calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=smpte170m calling func(0.100000) expected=0.290748 trc=smpte170m calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=smpte170m calling func(1.000000) expected=1.000000 trc=smpte170m calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=smpte170m calling func(52.370000) expected=6.427531 trc=smpte170m calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=smpte170m calling func(125.098765) expected=9.558517 trc=smpte170m calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=smpte170m calling func(1999.111230) expected=33.512490 trc=smpte170m calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=smpte170m calling func(6945.443000) expected=58.768794 trc=smpte170m calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=smpte170m calling func(15123.456700) expected=83.452916 trc=smpte170m calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=smpte170m calling func(19845.889230) expected=94.321297 trc=smpte170m calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=smpte170m calling func(98678.423100) expected=194.219568 trc=smpte170m calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=smpte170m calling func(99999.899998) expected=195.386306 trc=smpte170m calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=smpte240m calling func(-0.100000) expected=0.000000 trc=smpte240m calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(-0.018054) expected=0.000000 trc=smpte240m calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(-0.010000) expected=0.000000 trc=smpte240m calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(-0.004490) expected=0.000000 trc=smpte240m calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(0.000000) expected=0.000000 trc=smpte240m calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=smpte240m calling func(0.003162) expected=0.012649 trc=smpte240m calling func(0.003162) expected=0.012649 roundtrip=0.003162
trc=smpte240m calling func(0.005000) expected=0.020000 trc=smpte240m calling func(0.005000) expected=0.020000 roundtrip=0.005000
trc=smpte240m calling func(0.009000) expected=0.036000 trc=smpte240m calling func(0.009000) expected=0.036000 roundtrip=0.009000
trc=smpte240m calling func(0.015000) expected=0.060000 trc=smpte240m calling func(0.015000) expected=0.060000 roundtrip=0.015000
trc=smpte240m calling func(0.100000) expected=0.282875 trc=smpte240m calling func(0.100000) expected=0.282875 roundtrip=0.100000
trc=smpte240m calling func(1.000000) expected=1.000000 trc=smpte240m calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=smpte240m calling func(52.370000) expected=6.487781 trc=smpte240m calling func(52.370000) expected=6.487781 roundtrip=52.370000
trc=smpte240m calling func(125.098765) expected=9.653524 trc=smpte240m calling func(125.098765) expected=9.653524 roundtrip=125.098765
trc=smpte240m calling func(1999.111230) expected=33.873408 trc=smpte240m calling func(1999.111230) expected=33.873408 roundtrip=1999.111230
trc=smpte240m calling func(6945.443000) expected=59.410079 trc=smpte240m calling func(6945.443000) expected=59.410079 roundtrip=6945.443000
trc=smpte240m calling func(15123.456700) expected=84.368216 trc=smpte240m calling func(15123.456700) expected=84.368216 roundtrip=15123.456700
trc=smpte240m calling func(19845.889230) expected=95.357247 trc=smpte240m calling func(19845.889230) expected=95.357247 roundtrip=19845.889230
trc=smpte240m calling func(98678.423100) expected=196.364477 trc=smpte240m calling func(98678.423100) expected=196.364477 roundtrip=98678.423100
trc=smpte240m calling func(99999.899998) expected=197.544167 trc=smpte240m calling func(99999.899998) expected=197.544167 roundtrip=99999.899998
trc=linear calling func(-0.100000) expected=-0.100000 trc=linear calling func(-0.100000) expected=-0.100000 roundtrip=-0.100000
trc=linear calling func(-0.018054) expected=-0.018054 trc=linear calling func(-0.018054) expected=-0.018054 roundtrip=-0.018054
trc=linear calling func(-0.010000) expected=-0.010000 trc=linear calling func(-0.010000) expected=-0.010000 roundtrip=-0.010000
trc=linear calling func(-0.004490) expected=-0.004490 trc=linear calling func(-0.004490) expected=-0.004490 roundtrip=-0.004490
trc=linear calling func(0.000000) expected=0.000000 trc=linear calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=linear calling func(0.003162) expected=0.003162 trc=linear calling func(0.003162) expected=0.003162 roundtrip=0.003162
trc=linear calling func(0.005000) expected=0.005000 trc=linear calling func(0.005000) expected=0.005000 roundtrip=0.005000
trc=linear calling func(0.009000) expected=0.009000 trc=linear calling func(0.009000) expected=0.009000 roundtrip=0.009000
trc=linear calling func(0.015000) expected=0.015000 trc=linear calling func(0.015000) expected=0.015000 roundtrip=0.015000
trc=linear calling func(0.100000) expected=0.100000 trc=linear calling func(0.100000) expected=0.100000 roundtrip=0.100000
trc=linear calling func(1.000000) expected=1.000000 trc=linear calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=linear calling func(52.370000) expected=52.370000 trc=linear calling func(52.370000) expected=52.370000 roundtrip=52.370000
trc=linear calling func(125.098765) expected=125.098765 trc=linear calling func(125.098765) expected=125.098765 roundtrip=125.098765
trc=linear calling func(1999.111230) expected=1999.111230 trc=linear calling func(1999.111230) expected=1999.111230 roundtrip=1999.111230
trc=linear calling func(6945.443000) expected=6945.443000 trc=linear calling func(6945.443000) expected=6945.443000 roundtrip=6945.443000
trc=linear calling func(15123.456700) expected=15123.456700 trc=linear calling func(15123.456700) expected=15123.456700 roundtrip=15123.456700
trc=linear calling func(19845.889230) expected=19845.889230 trc=linear calling func(19845.889230) expected=19845.889230 roundtrip=19845.889230
trc=linear calling func(98678.423100) expected=98678.423100 trc=linear calling func(98678.423100) expected=98678.423100 roundtrip=98678.423100
trc=linear calling func(99999.899998) expected=99999.899998 trc=linear calling func(99999.899998) expected=99999.899998 roundtrip=99999.899998
trc=log100 calling func(-0.100000) expected=0.000000 trc=log100 calling func(-0.100000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(-0.018054) expected=0.000000 trc=log100 calling func(-0.018054) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(-0.010000) expected=0.000000 trc=log100 calling func(-0.010000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(-0.004490) expected=0.000000 trc=log100 calling func(-0.004490) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.000000) expected=0.000000 trc=log100 calling func(0.000000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.003162) expected=0.000000 trc=log100 calling func(0.003162) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.005000) expected=0.000000 trc=log100 calling func(0.005000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.009000) expected=0.000000 trc=log100 calling func(0.009000) expected=0.000000 roundtrip=0.010000
trc=log100 calling func(0.015000) expected=0.088046 trc=log100 calling func(0.015000) expected=0.088046 roundtrip=0.015000
trc=log100 calling func(0.100000) expected=0.500000 trc=log100 calling func(0.100000) expected=0.500000 roundtrip=0.100000
trc=log100 calling func(1.000000) expected=1.000000 trc=log100 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=log100 calling func(52.370000) expected=1.859541 trc=log100 calling func(52.370000) expected=1.859541 roundtrip=52.370000
trc=log100 calling func(125.098765) expected=2.048627 trc=log100 calling func(125.098765) expected=2.048627 roundtrip=125.098765
trc=log100 calling func(1999.111230) expected=2.650418 trc=log100 calling func(1999.111230) expected=2.650418 roundtrip=1999.111230
trc=log100 calling func(6945.443000) expected=2.920850 trc=log100 calling func(6945.443000) expected=2.920850 roundtrip=6945.443000
trc=log100 calling func(15123.456700) expected=3.089826 trc=log100 calling func(15123.456700) expected=3.089826 roundtrip=15123.456700
trc=log100 calling func(19845.889230) expected=3.148835 trc=log100 calling func(19845.889230) expected=3.148835 roundtrip=19845.889230
trc=log100 calling func(98678.423100) expected=3.497111 trc=log100 calling func(98678.423100) expected=3.497111 roundtrip=98678.423100
trc=log100 calling func(99999.899998) expected=3.500000 trc=log100 calling func(99999.899998) expected=3.500000 roundtrip=99999.899998
trc=log316 calling func(-0.100000) expected=0.000000 trc=log316 calling func(-0.100000) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(-0.018054) expected=0.000000 trc=log316 calling func(-0.018054) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(-0.010000) expected=0.000000 trc=log316 calling func(-0.010000) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(-0.004490) expected=0.000000 trc=log316 calling func(-0.004490) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(0.000000) expected=0.000000 trc=log316 calling func(0.000000) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(0.003162) expected=0.000000 trc=log316 calling func(0.003162) expected=0.000000 roundtrip=0.003162
trc=log316 calling func(0.005000) expected=0.079588 trc=log316 calling func(0.005000) expected=0.079588 roundtrip=0.005000
trc=log316 calling func(0.009000) expected=0.181697 trc=log316 calling func(0.009000) expected=0.181697 roundtrip=0.009000
trc=log316 calling func(0.015000) expected=0.270437 trc=log316 calling func(0.015000) expected=0.270437 roundtrip=0.015000
trc=log316 calling func(0.100000) expected=0.600000 trc=log316 calling func(0.100000) expected=0.600000 roundtrip=0.100000
trc=log316 calling func(1.000000) expected=1.000000 trc=log316 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=log316 calling func(52.370000) expected=1.687633 trc=log316 calling func(52.370000) expected=1.687633 roundtrip=52.370000
trc=log316 calling func(125.098765) expected=1.838901 trc=log316 calling func(125.098765) expected=1.838901 roundtrip=125.098765
trc=log316 calling func(1999.111230) expected=2.320335 trc=log316 calling func(1999.111230) expected=2.320335 roundtrip=1999.111230
trc=log316 calling func(6945.443000) expected=2.536680 trc=log316 calling func(6945.443000) expected=2.536680 roundtrip=6945.443000
trc=log316 calling func(15123.456700) expected=2.671860 trc=log316 calling func(15123.456700) expected=2.671860 roundtrip=15123.456700
trc=log316 calling func(19845.889230) expected=2.719068 trc=log316 calling func(19845.889230) expected=2.719068 roundtrip=19845.889230
trc=log316 calling func(98678.423100) expected=2.997689 trc=log316 calling func(98678.423100) expected=2.997689 roundtrip=98678.423100
trc=log316 calling func(99999.899998) expected=3.000000 trc=log316 calling func(99999.899998) expected=3.000000 roundtrip=99999.899998
trc=iec61966-2-4 calling func(-0.100000) expected=-0.290748 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 trc=iec61966-2-4 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=bt1361e calling func(-0.100000) expected=-0.206787 trc=bt1361e calling func(-0.100000) expected=-0.206787 roundtrip=-0.100000
trc=bt1361e calling func(-0.018054) expected=-0.109049 trc=bt1361e calling func(-0.018054) expected=-0.109049 roundtrip=-0.018054
trc=bt1361e calling func(-0.010000) expected=-0.089387 trc=bt1361e calling func(-0.010000) expected=-0.089387 roundtrip=-0.010000
trc=bt1361e calling func(-0.004490) expected=-0.020205 trc=bt1361e calling func(-0.004490) expected=-0.020205 roundtrip=-0.004490
trc=bt1361e calling func(0.000000) expected=0.000000 trc=bt1361e calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt1361e calling func(0.003162) expected=0.014230 trc=bt1361e calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=bt1361e calling func(0.005000) expected=0.022500 trc=bt1361e calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=bt1361e calling func(0.009000) expected=0.040500 trc=bt1361e calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=bt1361e calling func(0.015000) expected=0.067500 trc=bt1361e calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=bt1361e calling func(0.100000) expected=0.290748 trc=bt1361e calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=bt1361e calling func(1.000000) expected=1.000000 trc=bt1361e calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt1361e calling func(52.370000) expected=6.427531 trc=bt1361e calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=bt1361e calling func(125.098765) expected=9.558517 trc=bt1361e calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=bt1361e calling func(1999.111230) expected=33.512490 trc=bt1361e calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=bt1361e calling func(6945.443000) expected=58.768794 trc=bt1361e calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=bt1361e calling func(15123.456700) expected=83.452916 trc=bt1361e calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=bt1361e calling func(19845.889230) expected=94.321297 trc=bt1361e calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=bt1361e calling func(98678.423100) expected=194.219568 trc=bt1361e calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=bt1361e calling func(99999.899998) expected=195.386306 trc=bt1361e calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=iec61966-2-1 calling func(-0.100000) expected=0.000000 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 trc=iec61966-2-1 calling func(99999.899998) expected=127.761115 roundtrip=99999.899998
trc=bt2020-10 calling func(-0.100000) expected=0.000000 trc=bt2020-10 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt2020-10 calling func(-0.018054) expected=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 trc=bt2020-10 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt2020-10 calling func(-0.004490) expected=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 trc=bt2020-10 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt2020-10 calling func(0.003162) expected=0.014230 trc=bt2020-10 calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=bt2020-10 calling func(0.005000) expected=0.022500 trc=bt2020-10 calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=bt2020-10 calling func(0.009000) expected=0.040500 trc=bt2020-10 calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=bt2020-10 calling func(0.015000) expected=0.067500 trc=bt2020-10 calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=bt2020-10 calling func(0.100000) expected=0.290748 trc=bt2020-10 calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=bt2020-10 calling func(1.000000) expected=1.000000 trc=bt2020-10 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt2020-10 calling func(52.370000) expected=6.427531 trc=bt2020-10 calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=bt2020-10 calling func(125.098765) expected=9.558517 trc=bt2020-10 calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=bt2020-10 calling func(1999.111230) expected=33.512490 trc=bt2020-10 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=bt2020-10 calling func(6945.443000) expected=58.768794 trc=bt2020-10 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=bt2020-10 calling func(15123.456700) expected=83.452916 trc=bt2020-10 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=bt2020-10 calling func(19845.889230) expected=94.321297 trc=bt2020-10 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=bt2020-10 calling func(98678.423100) expected=194.219568 trc=bt2020-10 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=bt2020-10 calling func(99999.899998) expected=195.386306 trc=bt2020-10 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=bt2020-12 calling func(-0.100000) expected=0.000000 trc=bt2020-12 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=bt2020-12 calling func(-0.018054) expected=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 trc=bt2020-12 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=bt2020-12 calling func(-0.004490) expected=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 trc=bt2020-12 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=bt2020-12 calling func(0.003162) expected=0.014230 trc=bt2020-12 calling func(0.003162) expected=0.014230 roundtrip=0.003162
trc=bt2020-12 calling func(0.005000) expected=0.022500 trc=bt2020-12 calling func(0.005000) expected=0.022500 roundtrip=0.005000
trc=bt2020-12 calling func(0.009000) expected=0.040500 trc=bt2020-12 calling func(0.009000) expected=0.040500 roundtrip=0.009000
trc=bt2020-12 calling func(0.015000) expected=0.067500 trc=bt2020-12 calling func(0.015000) expected=0.067500 roundtrip=0.015000
trc=bt2020-12 calling func(0.100000) expected=0.290748 trc=bt2020-12 calling func(0.100000) expected=0.290748 roundtrip=0.100000
trc=bt2020-12 calling func(1.000000) expected=1.000000 trc=bt2020-12 calling func(1.000000) expected=1.000000 roundtrip=1.000000
trc=bt2020-12 calling func(52.370000) expected=6.427531 trc=bt2020-12 calling func(52.370000) expected=6.427531 roundtrip=52.370000
trc=bt2020-12 calling func(125.098765) expected=9.558517 trc=bt2020-12 calling func(125.098765) expected=9.558517 roundtrip=125.098765
trc=bt2020-12 calling func(1999.111230) expected=33.512490 trc=bt2020-12 calling func(1999.111230) expected=33.512490 roundtrip=1999.111230
trc=bt2020-12 calling func(6945.443000) expected=58.768794 trc=bt2020-12 calling func(6945.443000) expected=58.768794 roundtrip=6945.443000
trc=bt2020-12 calling func(15123.456700) expected=83.452916 trc=bt2020-12 calling func(15123.456700) expected=83.452916 roundtrip=15123.456700
trc=bt2020-12 calling func(19845.889230) expected=94.321297 trc=bt2020-12 calling func(19845.889230) expected=94.321297 roundtrip=19845.889230
trc=bt2020-12 calling func(98678.423100) expected=194.219568 trc=bt2020-12 calling func(98678.423100) expected=194.219568 roundtrip=98678.423100
trc=bt2020-12 calling func(99999.899998) expected=195.386306 trc=bt2020-12 calling func(99999.899998) expected=195.386306 roundtrip=99999.899998
trc=smpte2084 calling func(-0.100000) expected=0.000000 trc=smpte2084 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=smpte2084 calling func(-0.018054) expected=0.000000 trc=smpte2084 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=smpte2084 calling func(-0.010000) expected=0.000000 trc=smpte2084 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=smpte2084 calling func(-0.004490) expected=0.000000 trc=smpte2084 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=smpte2084 calling func(0.000000) expected=0.000001 trc=smpte2084 calling func(0.000000) expected=0.000001 roundtrip=0.000000
trc=smpte2084 calling func(0.003162) expected=0.011839 trc=smpte2084 calling func(0.003162) expected=0.011839 roundtrip=0.003162
trc=smpte2084 calling func(0.005000) expected=0.015076 trc=smpte2084 calling func(0.005000) expected=0.015076 roundtrip=0.005000
trc=smpte2084 calling func(0.009000) expected=0.020379 trc=smpte2084 calling func(0.009000) expected=0.020379 roundtrip=0.009000
trc=smpte2084 calling func(0.015000) expected=0.026255 trc=smpte2084 calling func(0.015000) expected=0.026255 roundtrip=0.015000
trc=smpte2084 calling func(0.100000) expected=0.062337 trc=smpte2084 calling func(0.100000) expected=0.062337 roundtrip=0.100000
trc=smpte2084 calling func(1.000000) expected=0.149946 trc=smpte2084 calling func(1.000000) expected=0.149946 roundtrip=1.000000
trc=smpte2084 calling func(52.370000) expected=0.444693 trc=smpte2084 calling func(52.370000) expected=0.444693 roundtrip=52.370000
trc=smpte2084 calling func(125.098765) expected=0.530719 trc=smpte2084 calling func(125.098765) expected=0.530719 roundtrip=125.098765
trc=smpte2084 calling func(1999.111230) expected=0.827376 trc=smpte2084 calling func(1999.111230) expected=0.827376 roundtrip=1999.111230
trc=smpte2084 calling func(6945.443000) expected=0.961586 trc=smpte2084 calling func(6945.443000) expected=0.961586 roundtrip=6945.443000
trc=smpte2084 calling func(15123.456700) expected=1.042921 trc=smpte2084 calling func(15123.456700) expected=1.042921 roundtrip=15123.456700
trc=smpte2084 calling func(19845.889230) expected=1.070677 trc=smpte2084 calling func(19845.889230) expected=1.070677 roundtrip=19845.889230
trc=smpte2084 calling func(98678.423100) expected=1.225908 trc=smpte2084 calling func(98678.423100) expected=1.225908 roundtrip=98678.423100
trc=smpte2084 calling func(99999.899998) expected=1.227127 trc=smpte2084 calling func(99999.899998) expected=1.227127 roundtrip=99999.899998
trc=smpte428 calling func(-0.100000) expected=0.000000 trc=smpte428 calling func(-0.100000) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(-0.018054) expected=0.000000 trc=smpte428 calling func(-0.018054) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(-0.010000) expected=0.000000 trc=smpte428 calling func(-0.010000) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(-0.004490) expected=0.000000 trc=smpte428 calling func(-0.004490) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(0.000000) expected=0.000000 trc=smpte428 calling func(0.000000) expected=0.000000 roundtrip=0.000000
trc=smpte428 calling func(0.003162) expected=0.105659 trc=smpte428 calling func(0.003162) expected=0.105659 roundtrip=0.003162
trc=smpte428 calling func(0.005000) expected=0.126018 trc=smpte428 calling func(0.005000) expected=0.126018 roundtrip=0.005000
trc=smpte428 calling func(0.009000) expected=0.157985 trc=smpte428 calling func(0.009000) expected=0.157985 roundtrip=0.009000
trc=smpte428 calling func(0.015000) expected=0.192284 trc=smpte428 calling func(0.015000) expected=0.192284 roundtrip=0.015000
trc=smpte428 calling func(0.100000) expected=0.398869 trc=smpte428 calling func(0.100000) expected=0.398869 roundtrip=0.100000
trc=smpte428 calling func(1.000000) expected=0.967043 trc=smpte428 calling func(1.000000) expected=0.967043 roundtrip=1.000000
trc=smpte428 calling func(52.370000) expected=4.432321 trc=smpte428 calling func(52.370000) expected=4.432321 roundtrip=52.370000
trc=smpte428 calling func(125.098765) expected=6.195572 trc=smpte428 calling func(125.098765) expected=6.195572 roundtrip=125.098765
trc=smpte428 calling func(1999.111230) expected=17.988639 trc=smpte428 calling func(1999.111230) expected=17.988639 roundtrip=1999.111230
trc=smpte428 calling func(6945.443000) expected=29.041734 trc=smpte428 calling func(6945.443000) expected=29.041734 roundtrip=6945.443000
trc=smpte428 calling func(15123.456700) expected=39.174525 trc=smpte428 calling func(15123.456700) expected=39.174525 roundtrip=15123.456700
trc=smpte428 calling func(19845.889230) expected=43.490646 trc=smpte428 calling func(19845.889230) expected=43.490646 roundtrip=19845.889230
trc=smpte428 calling func(98678.423100) expected=80.593559 trc=smpte428 calling func(98678.423100) expected=80.593559 roundtrip=98678.423100
trc=smpte428 calling func(99999.899998) expected=81.006971 trc=smpte428 calling func(99999.899998) expected=81.006971 roundtrip=99999.899998
trc=arib-std-b67 calling func(-0.100000) expected=0.000000 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 trc=arib-std-b67 calling func(99999.899998) expected=3.063182 roundtrip=99999.899998