On Wed, Mar 02, 2016 at 04:35:08PM -0800, NagaChaitanya Vellanki wrote: > --- > 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 }
this can be simplified, you dont need to list the results explicitly nor the functions or enum values and the testpoints can be the same for all for (i = 0; i<AVCOL_TRC_NB; i++) { avpriv_trc_function func = avpriv_get_trc_function_from_trc(i); for (j = 0; FF_ARRAY_ELEMS(testpoints); j++) { double result = func(testpoints[j]); printf(... } } [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Old school: Use the lowest level language in which you can solve the problem conveniently. New school: Use the highest level language in which the latest supercomputer can solve the problem without the user falling asleep waiting.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel