[FFmpeg-devel] [PATCH] Add test foravpriv_get_trc_function_from_trc function

NagaChaitanya Vellanki nagachaitanya.vellanki at gmail.com
Thu Mar 3 03:36:22 CET 2016


Sending in the new patch :-).

On Wed, Mar 2, 2016 at 5:20 PM, Michael Niedermayer <michael at niedermayer.cc>
wrote:

> 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.
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>


More information about the ffmpeg-devel mailing list