--- libavutil/Makefile | 1 + libavutil/color_utils.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++ tests/fate/libavutil.mak | 4 +++ tests/ref/fate/color_utils | 38 +++++++++++++++++++++++++++ 4 files changed, 108 insertions(+) create mode 100644 tests/ref/fate/color_utils
diff --git a/libavutil/Makefile b/libavutil/Makefile index a4d79cd..934564f 100644 --- a/libavutil/Makefile +++ b/libavutil/Makefile @@ -176,6 +176,7 @@ TESTPROGS = adler32 \ bprint \ cast5 \ camellia \ + color_utils \ cpu \ crc \ des \ diff --git a/libavutil/color_utils.c b/libavutil/color_utils.c index b68b402..e53f408 100644 --- a/libavutil/color_utils.c +++ b/libavutil/color_utils.c @@ -21,6 +21,7 @@ #include <stddef.h> #include <math.h> +#include "common.h" #include "libavutil/color_utils.h" #include "libavutil/pixfmt.h" @@ -216,3 +217,67 @@ avpriv_trc_function avpriv_get_trc_function_from_trc(enum AVColorTransferCharact } return func; } + +#ifdef TEST +// LCOV_EXCL_START + +int main(int argc, char *argv[]) +{ + int i; + struct test { + enum AVColorTransferCharacteristic trc; + const char* func_name; + double arg; + double result; + } tests[] = { + { AVCOL_TRC_BT709, "avpriv_trc_bt709", -0.01, 0.0 }, + { AVCOL_TRC_SMPTE170M, "avpriv_trc_bt709", 0.005, 0.022500 }, + { AVCOL_TRC_BT2020_10, "avpriv_trc_bt709", 0.015, 0.067500 }, + { AVCOL_TRC_BT2020_12, "avpriv_trc_bt709", 1.0, 1.0 }, + { AVCOL_TRC_BT2020_12, "avpriv_trc_bt709", 15123.4567, 83.452916 }, + { AVCOL_TRC_GAMMA22, "avpriv_trc_gamma22", -0.01, 0.0 }, + { AVCOL_TRC_GAMMA22, "avpriv_trc_gamma22", 1.0, 1.0 }, + { AVCOL_TRC_GAMMA22, "avpriv_trc_gamma22", 125.098765, 8.980424 }, + { AVCOL_TRC_GAMMA28, "avpriv_trc_gamma28", -0.01, 0.0 }, + { AVCOL_TRC_GAMMA28, "avpriv_trc_gamma28", 1.0, 1.0 }, + { AVCOL_TRC_GAMMA28, "avpriv_trc_gamma28", 99999.899998, 61.054001 }, + { AVCOL_TRC_SMPTE240M, "avpriv_trc_smpte240M", -0.01, 0.0 }, + { AVCOL_TRC_SMPTE240M, "avpriv_trc_smpte240M", 0.015, 0.060000 }, + { AVCOL_TRC_LINEAR, "avpriv_trc_linear", 0.0, 0.0 }, + { AVCOL_TRC_LINEAR, "avpriv_trc_linear", 0.1, 0.1 }, + { AVCOL_TRC_LINEAR, "avpriv_trc_linear", -0.1, -0.1 }, + { AVCOL_TRC_LOG, "avpriv_trc_log", 0.009, 0.0 }, + { AVCOL_TRC_LOG, "avpriv_trc_log", 1.0, 1.0 }, + { AVCOL_TRC_LOG, "avpriv_trc_log", 98678.4231, 3.497111 }, + { AVCOL_TRC_LOG_SQRT, "avpriv_trc_log_sqrt", 0.00316227760, 0.0 }, + { AVCOL_TRC_LOG_SQRT, "avpriv_trc_log_sqrt", 1.0, 1.0 }, + { AVCOL_TRC_LOG_SQRT, "avpriv_trc_log_sqrt", 19845.88923, 2.719068 }, + { AVCOL_TRC_IEC61966_2_4, "avpriv_trc_iec61966_2_4", 0.0, 0.0 }, + { AVCOL_TRC_IEC61966_2_4, "avpriv_trc_iec61966_2_4", -0.018053968510807, -0.081243 }, + { AVCOL_TRC_IEC61966_2_4, "avpriv_trc_iec61966_2_4", 0.015, 0.067500 }, + { AVCOL_TRC_IEC61966_2_4, "avpriv_trc_iec61966_2_4", 98245.76983, 193.835711 }, + { AVCOL_TRC_BT1361_ECG, "avpriv_trc_bt1361", 0.0, 0.0 }, + { AVCOL_TRC_BT1361_ECG, "avpriv_trc_bt1361", -0.0045, -0.069898 }, + { AVCOL_TRC_BT1361_ECG, "avpriv_trc_bt1361", 0.015, 0.067500 }, + { AVCOL_TRC_BT1361_ECG, "avpriv_trc_bt1361", 1999.11123, 33.512490 }, + { AVCOL_TRC_IEC61966_2_1, "avpriv_trc_iec61966_2_1", 0.0, 0.0 }, + { AVCOL_TRC_IEC61966_2_1, "avpriv_trc_iec61966_2_1", 0.015, 0.128354 }, + { AVCOL_TRC_IEC61966_2_1, "avpriv_trc_iec61966_2_1", 6945.443, 42.013863 }, + { AVCOL_TRC_SMPTEST2084, "avpriv_trc_smpte_st2084", -0.01, 0.0 }, + { AVCOL_TRC_SMPTEST2084, "avpriv_trc_smpte_st2084", 0.0, 0.000001 }, + { AVCOL_TRC_SMPTEST428_1, "avpriv_trc_smpte_st428_1", -0.01, 0.0 }, + { AVCOL_TRC_SMPTEST428_1, "avpriv_trc_smpte_st428_1", 52.37, 4.432321 }, + { AVCOL_TRC_SMPTEST428_1, "avpriv_trc_smpte_st428_1", 0.0, 0.0 } + }; + + for(i = 0; i < FF_ARRAY_ELEMS(tests); i++) { + avpriv_trc_function func = avpriv_get_trc_function_from_trc(tests[i].trc); + double result = func(tests[i].arg); + printf("AVColorTransferCharacteristic=%d calling %s(%f) expected=%f got=%f\n", + tests[i].trc, tests[i].func_name, tests[i].arg, + tests[i].result, result); + } +} + +// LCOV_EXCL_STOP +#endif diff --git a/tests/fate/libavutil.mak b/tests/fate/libavutil.mak index 022ae6a..a89bc1d 100644 --- a/tests/fate/libavutil.mak +++ b/tests/fate/libavutil.mak @@ -48,6 +48,10 @@ FATE_LIBAVUTIL += fate-crc fate-crc: libavutil/crc-test$(EXESUF) fate-crc: CMD = run libavutil/crc-test +FATE_LIBAVUTIL += fate-color_utils +fate-color_utils: libavutil/color_utils-test$(EXESUF) +fate-color_utils: CMD = run libavutil/color_utils-test + FATE_LIBAVUTIL += fate-des fate-des: libavutil/des-test$(EXESUF) fate-des: CMD = run libavutil/des-test diff --git a/tests/ref/fate/color_utils b/tests/ref/fate/color_utils new file mode 100644 index 0000000..bc88288 --- /dev/null +++ b/tests/ref/fate/color_utils @@ -0,0 +1,38 @@ +AVColorTransferCharacteristic=1 calling avpriv_trc_bt709(-0.010000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=6 calling avpriv_trc_bt709(0.005000) expected=0.022500 got=0.022500 +AVColorTransferCharacteristic=14 calling avpriv_trc_bt709(0.015000) expected=0.067500 got=0.067500 +AVColorTransferCharacteristic=15 calling avpriv_trc_bt709(1.000000) expected=1.000000 got=1.000000 +AVColorTransferCharacteristic=15 calling avpriv_trc_bt709(15123.456700) expected=83.452916 got=83.452916 +AVColorTransferCharacteristic=4 calling avpriv_trc_gamma22(-0.010000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=4 calling avpriv_trc_gamma22(1.000000) expected=1.000000 got=1.000000 +AVColorTransferCharacteristic=4 calling avpriv_trc_gamma22(125.098765) expected=8.980424 got=8.980424 +AVColorTransferCharacteristic=5 calling avpriv_trc_gamma28(-0.010000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=5 calling avpriv_trc_gamma28(1.000000) expected=1.000000 got=1.000000 +AVColorTransferCharacteristic=5 calling avpriv_trc_gamma28(99999.899998) expected=61.054001 got=61.054001 +AVColorTransferCharacteristic=7 calling avpriv_trc_smpte240M(-0.010000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=7 calling avpriv_trc_smpte240M(0.015000) expected=0.060000 got=0.060000 +AVColorTransferCharacteristic=8 calling avpriv_trc_linear(0.000000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=8 calling avpriv_trc_linear(0.100000) expected=0.100000 got=0.100000 +AVColorTransferCharacteristic=8 calling avpriv_trc_linear(-0.100000) expected=-0.100000 got=-0.100000 +AVColorTransferCharacteristic=9 calling avpriv_trc_log(0.009000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=9 calling avpriv_trc_log(1.000000) expected=1.000000 got=1.000000 +AVColorTransferCharacteristic=9 calling avpriv_trc_log(98678.423100) expected=3.497111 got=3.497111 +AVColorTransferCharacteristic=10 calling avpriv_trc_log_sqrt(0.003162) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=10 calling avpriv_trc_log_sqrt(1.000000) expected=1.000000 got=1.000000 +AVColorTransferCharacteristic=10 calling avpriv_trc_log_sqrt(19845.889230) expected=2.719068 got=2.719068 +AVColorTransferCharacteristic=11 calling avpriv_trc_iec61966_2_4(0.000000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=11 calling avpriv_trc_iec61966_2_4(-0.018054) expected=-0.081243 got=-0.081243 +AVColorTransferCharacteristic=11 calling avpriv_trc_iec61966_2_4(0.015000) expected=0.067500 got=0.067500 +AVColorTransferCharacteristic=11 calling avpriv_trc_iec61966_2_4(98245.769830) expected=193.835711 got=193.835711 +AVColorTransferCharacteristic=12 calling avpriv_trc_bt1361(0.000000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=12 calling avpriv_trc_bt1361(-0.004500) expected=-0.069898 got=-0.069898 +AVColorTransferCharacteristic=12 calling avpriv_trc_bt1361(0.015000) expected=0.067500 got=0.067500 +AVColorTransferCharacteristic=12 calling avpriv_trc_bt1361(1999.111230) expected=33.512490 got=33.512490 +AVColorTransferCharacteristic=13 calling avpriv_trc_iec61966_2_1(0.000000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=13 calling avpriv_trc_iec61966_2_1(0.015000) expected=0.128354 got=0.128354 +AVColorTransferCharacteristic=13 calling avpriv_trc_iec61966_2_1(6945.443000) expected=42.013863 got=42.013863 +AVColorTransferCharacteristic=16 calling avpriv_trc_smpte_st2084(-0.010000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=16 calling avpriv_trc_smpte_st2084(0.000000) expected=0.000001 got=0.000001 +AVColorTransferCharacteristic=17 calling avpriv_trc_smpte_st428_1(-0.010000) expected=0.000000 got=0.000000 +AVColorTransferCharacteristic=17 calling avpriv_trc_smpte_st428_1(52.370000) expected=4.432321 got=4.432321 +AVColorTransferCharacteristic=17 calling avpriv_trc_smpte_st428_1(0.000000) expected=0.000000 got=0.000000 -- 2.7.2 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel