2 * Copyright (c) 2015 James Almer
4 * This file is part of FFmpeg.
6 * FFmpeg is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
11 * FFmpeg is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along
17 * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
22 #include "libavcodec/jpeg2000dsp.h"
23 #include "libavutil/common.h"
24 #include "libavutil/internal.h"
25 #include "libavutil/intreadwrite.h"
29 #define randomize_buffers() \
32 for (i = 0; i < BUF_SIZE; i += 4) { \
34 AV_WN32A(ref0 + i, r); \
35 AV_WN32A(new0 + i, r); \
37 AV_WN32A(ref1 + i, r); \
38 AV_WN32A(new1 + i, r); \
40 AV_WN32A(ref2 + i, r); \
41 AV_WN32A(new2 + i, r); \
45 static void check_mct(uint8_t *ref0, uint8_t *ref1, uint8_t *ref2,
46 uint8_t *new0, uint8_t *new1, uint8_t *new2) {
47 declare_func(void, void *src0, void *src1, void *src2, int csize);
50 call_ref(ref0, ref1, ref2, BUF_SIZE / sizeof(int32_t));
51 call_new(new0, new1, new2, BUF_SIZE / sizeof(int32_t));
52 if (memcmp(ref0, new0, BUF_SIZE) || memcmp(ref1, new1, BUF_SIZE) ||
53 memcmp(ref2, new2, BUF_SIZE))
55 bench_new(new0, new1, new2, BUF_SIZE / sizeof(int32_t));
58 void checkasm_check_jpeg2000dsp(void)
60 LOCAL_ALIGNED_32(uint8_t, ref, [BUF_SIZE*3]);
61 LOCAL_ALIGNED_32(uint8_t, new, [BUF_SIZE*3]);
64 ff_jpeg2000dsp_init(&h);
66 if (check_func(h.mct_decode[FF_DWT53], "jpeg2000_rct_int"))
67 check_mct(&ref[BUF_SIZE*0], &ref[BUF_SIZE*1], &ref[BUF_SIZE*2],
68 &new[BUF_SIZE*0], &new[BUF_SIZE*1], &new[BUF_SIZE*2]);