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