On Thu, Jul 21, 2016 at 12:57:36PM +0200, Alexandra Hájková wrote:
> --- a/tests/checkasm/Makefile
> +++ b/tests/checkasm/Makefile
> @@ -9,7 +9,7 @@ AVCODECOBJS-$(CONFIG_VP8DSP)            += vp8dsp.o
>  
>  # decoders/encoders
>  AVCODECOBJS-$(CONFIG_DCA_DECODER)       += dcadsp.o synth_filter.o
> -AVCODECOBJS-$(CONFIG_HEVC_DECODER)      += hevc_mc.o
> +AVCODECOBJS-$(CONFIG_HEVC_DECODER)      += hevc_mc.o hevc_idct.o
>  AVCODECOBJS-$(CONFIG_V210_ENCODER)      += v210enc.o
>  
> --- a/tests/checkasm/checkasm.c
> +++ b/tests/checkasm/checkasm.c
> @@ -85,6 +85,7 @@ static const struct {
>  #endif
>  #if CONFIG_HEVC_DECODER
>      { "hevc_mc", checkasm_check_hevc_mc },
> +    { "hevc_idct", checkasm_check_hevc_idct },
>  #endif
>  #if CONFIG_V210_ENCODER
>      { "v210enc", checkasm_check_v210enc },
> --- a/tests/checkasm/checkasm.h
> +++ b/tests/checkasm/checkasm.h
> @@ -38,6 +38,7 @@ void checkasm_check_h264dsp(void);
>  void checkasm_check_h264qpel(void);
>  void checkasm_check_hevc_mc(void);
> +void checkasm_check_hevc_idct(void);
>  void checkasm_check_synth_filter(void);
>  void checkasm_check_v210enc(void);

Order all of these.

> --- /dev/null
> +++ b/tests/checkasm/hevc_idct.c
> @@ -0,0 +1,75 @@
> +
> +#include <string.h>
> +
> +#include "checkasm.h"
> +
> +#include "libavcodec/avcodec.h"
> +#include "libavcodec/hevcdsp.h"
> +
> +#include "libavutil/common.h"
> +#include "libavutil/intreadwrite.h"

The order of the include blocks is reserved.

I only see hevcdsp.h being required.

> +#define randomize_buffers(buf, size)            \
> +    do {                                        \
> +        int j;                                  \
> +        for (j = 0; j < size; j++) {            \
> +            int16_t r = rnd();                  \
> +            AV_WN16A(buf + j, r);               \
> +        }                                       \
> +    } while (0)
> +
> +static void check_idct_dc(HEVCDSPContext h, int bit_depth)
> +{
> +    int i;
> +    LOCAL_ALIGNED(32, int16_t, coeffs0, [32 * 32]);
> +    LOCAL_ALIGNED(32, int16_t, coeffs1, [32 * 32]);
> +
> +    for (i = 2; i <= 5; i++) {
> +        int block_size = 1 << i;
> +        int size = block_size * block_size;
> +        declare_func_emms(AV_CPU_FLAG_MMXEXT, void, int16_t *coeffs);
> +
> +        randomize_buffers(coeffs0, size);
> +        memcpy(coeffs1, coeffs0, sizeof(*coeffs0) * size);
> +
> +        if (check_func(h.idct_dc[i - 2], "idct_%dx%d_dc_%d", block_size, 
> block_size, bit_depth)) {
> +            call_ref(coeffs0);
> +            call_new(coeffs1);
> +            if (memcmp(coeffs0, coeffs1, sizeof(*coeffs0) * size))
> +                fail();
> +            bench_new(coeffs1);
> +        }
> +    }
> +}

The macro is only used in one place.  It's also unclear to me why you
made it a macro and not a function.

Diego
_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to