FFmpeg
checkasm.h
Go to the documentation of this file.
1 /*
2  * Assembly testing and benchmarking tool
3  * Copyright (c) 2015 Henrik Gramner
4  * Copyright (c) 2008 Loren Merritt
5  *
6  * This file is part of FFmpeg.
7  *
8  * FFmpeg is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * FFmpeg is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License along
19  * with FFmpeg; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21  */
22 
23 #ifndef TESTS_CHECKASM_CHECKASM_H
24 #define TESTS_CHECKASM_CHECKASM_H
25 
26 #include <stdint.h>
27 #include <checkasm/test.h>
28 #include <checkasm/utils.h>
29 
30 #include "config.h"
31 #include "libavutil/avstring.h"
32 #include "libavutil/cpu.h"
33 #include "libavutil/emms.h"
34 #include "libavutil/internal.h"
35 #include "libavutil/lfg.h"
36 #include "libavutil/timer.h"
37 
38 void checkasm_check_aacencdsp(void);
39 void checkasm_check_aacpsdsp(void);
40 void checkasm_check_ac3dsp(void);
41 void checkasm_check_aes(void);
42 void checkasm_check_afir(void);
43 void checkasm_check_alacdsp(void);
44 void checkasm_check_apv_dsp(void);
45 void checkasm_check_audiodsp(void);
46 void checkasm_check_av_tx(void);
48 void checkasm_check_blend(void);
49 void checkasm_check_blockdsp(void);
50 void checkasm_check_bswapdsp(void);
51 void checkasm_check_cavsdsp(void);
53 void checkasm_check_colorspace(void);
54 void checkasm_check_crc(void);
55 void checkasm_check_dcadsp(void);
56 void checkasm_check_diracdsp(void);
57 void checkasm_check_exrdsp(void);
58 void checkasm_check_fdctdsp(void);
59 void checkasm_check_fixed_dsp(void);
60 void checkasm_check_flacdsp(void);
61 void checkasm_check_float_dsp(void);
62 void checkasm_check_fmtconvert(void);
63 void checkasm_check_g722dsp(void);
64 void checkasm_check_h263dsp(void);
65 void checkasm_check_h264chroma(void);
66 void checkasm_check_h264dsp(void);
67 void checkasm_check_h264pred(void);
68 void checkasm_check_h264qpel(void);
72 void checkasm_check_hevc_idct(void);
73 void checkasm_check_hevc_pel(void);
74 void checkasm_check_hevc_pred(void);
75 void checkasm_check_hevc_sao(void);
76 void checkasm_check_hpeldsp(void);
77 void checkasm_check_huffyuvdsp(void);
79 void checkasm_check_idctdsp(void);
80 void checkasm_check_idet(void);
82 void checkasm_check_llauddsp(void);
83 void checkasm_check_lls(void);
84 void checkasm_check_llviddsp(void);
86 void checkasm_check_lpc(void);
87 void checkasm_check_motion(void);
91 void checkasm_check_nlmeans(void);
92 void checkasm_check_opusdsp(void);
94 void checkasm_check_pixelutils(void);
95 void checkasm_check_png(void);
96 void checkasm_check_qpeldsp(void);
97 void checkasm_check_sbcdsp(void);
98 void checkasm_check_sbrdsp(void);
99 void checkasm_check_rv34dsp(void);
100 void checkasm_check_rv40dsp(void);
101 void checkasm_check_scene_sad(void);
102 void checkasm_check_snowdsp(void);
103 void checkasm_check_svq1enc(void);
104 void checkasm_check_synth_filter(void);
105 void checkasm_check_sw_gbrp(void);
107 void checkasm_check_sw_rgb(void);
108 void checkasm_check_sw_scale(void);
109 void checkasm_check_sw_xyz2rgb(void);
110 void checkasm_check_sw_yuv2rgb(void);
111 void checkasm_check_sw_yuv2yuv(void);
112 void checkasm_check_sw_ops(void);
113 void checkasm_check_takdsp(void);
114 void checkasm_check_utvideodsp(void);
115 void checkasm_check_v210dec(void);
116 void checkasm_check_v210enc(void);
117 void checkasm_check_vc1dsp(void);
118 void checkasm_check_vf_bwdif(void);
119 void checkasm_check_vf_eq(void);
120 void checkasm_check_vf_fspp(void);
121 void checkasm_check_vf_gblur(void);
122 void checkasm_check_vf_hflip(void);
123 void checkasm_check_vf_pp7(void);
124 void checkasm_check_vf_threshold(void);
125 void checkasm_check_vf_sobel(void);
126 void checkasm_check_vp3dsp(void);
127 void checkasm_check_vp6dsp(void);
128 void checkasm_check_vp8dsp(void);
129 void checkasm_check_vp9dsp(void);
130 void checkasm_check_vp9_ipred(void);
131 void checkasm_check_vp9_itxfm(void);
133 void checkasm_check_vp9_mc(void);
134 void checkasm_check_videodsp(void);
135 void checkasm_check_vorbisdsp(void);
136 void checkasm_check_vvc_alf(void);
137 void checkasm_check_vvc_mc(void);
138 void checkasm_check_vvc_sao(void);
139 
140 #define rnd checkasm_rand
141 #define declare_func_float declare_func
142 #define bench(...) checkasm_bench(__VA_ARGS__)
143 
144 #define randomize_stddev(buf, size, stddev) \
145  checkasm_randomize_distf(buf, size, (CheckasmDist){ 0.0, stddev })
146 #define randomize_stddev_dbl(buf, size, stddev) \
147  checkasm_randomize_dist(buf, size, (CheckasmDist){ 0.0, stddev })
148 
149 #define PIXEL_RECT(name, w, h) \
150  BUF_RECT(uint16_t, name##_16, w, h); \
151  av_unused ptrdiff_t name##_stride = name##_16_stride; \
152  av_unused int name##_buf_h = name##_16_buf_h; \
153  av_unused uint8_t* name##_buf = (uint8_t*)name##_16_buf; \
154  uint8_t* name = (uint8_t*)name##_16
155 
156 #define CLEAR_PIXEL_RECT(name) CLEAR_BUF_RECT(name##_16)
157 
158 /* This assumes that there is a local variable named "bit_depth".
159  * For tests that don't have that and only operate on a single
160  * bitdepth, just call checkasm_check(uint8_t, ...) directly. */
161 #define checkasm_check_pixel2(buf1, stride1, buf2, stride2, ...) \
162  ((bit_depth > 8) ? \
163  checkasm_check2(uint16_t, (const uint16_t*)buf1, stride1, \
164  (const uint16_t*)buf2, stride2, \
165  __VA_ARGS__) : \
166  checkasm_check2(uint8_t, (const uint8_t*) buf1, stride1, \
167  (const uint8_t*) buf2, stride2, \
168  __VA_ARGS__))
169 #define checkasm_check_pixel(...) \
170  checkasm_check_pixel2(__VA_ARGS__, 0, 0, 0)
171 #define checkasm_check_pixel_padded(...) \
172  checkasm_check_pixel2(__VA_ARGS__, 1, 1, 8)
173 #define checkasm_check_pixel_padded_align(...) \
174  checkasm_check_pixel2(__VA_ARGS__, 8)
175 
176 /* This assumes that there is a local variable named "bit_depth"
177  * and that the type-specific buffers obey the name ## _BITDEPTH
178  * convention.
179  * For tests that don't have that and only operate on a single
180  * bitdepth, just call checkasm_check(uint8_t, ...) directly. */
181 #define checkasm_check_dctcoef(buf1, stride1, buf2, stride2, ...) \
182  ((bit_depth > 8) ? \
183  checkasm_check(int32_t, buf1 ## _32, stride1, \
184  buf2 ## _32, stride2, \
185  __VA_ARGS__) : \
186  checkasm_check(int16_t, buf1 ## _16, stride1, \
187  buf2 ## _16, stride2, \
188  __VA_ARGS__))
189 
190 typedef uint8_t pixel;
191 
192 #endif /* TESTS_CHECKASM_CHECKASM_H */
checkasm_check_nlmeans
void checkasm_check_nlmeans(void)
Definition: vf_nlmeans.c:34
checkasm_check_sw_gbrp
void checkasm_check_sw_gbrp(void)
Definition: sw_gbrp.c:398
checkasm_check_vp8dsp
void checkasm_check_vp8dsp(void)
Definition: vp8dsp.c:511
checkasm_check_idet
void checkasm_check_idet(void)
Definition: vf_idet.c:58
checkasm_check_fdctdsp
void checkasm_check_fdctdsp(void)
Definition: fdctdsp.c:67
checkasm_check_sw_xyz2rgb
void checkasm_check_sw_xyz2rgb(void)
Definition: sw_xyz2rgb.c:104
checkasm_check_videodsp
void checkasm_check_videodsp(void)
Definition: videodsp.c:80
checkasm_check_vf_eq
void checkasm_check_vf_eq(void)
Definition: vf_eq.c:76
checkasm_check_dcadsp
void checkasm_check_dcadsp(void)
Definition: dcadsp.c:89
checkasm_check_v210dec
void checkasm_check_v210dec(void)
Definition: v210dec.c:47
checkasm_check_sw_yuv2yuv
void checkasm_check_sw_yuv2yuv(void)
Definition: sw_yuv2yuv.c:130
checkasm_check_png
void checkasm_check_png(void)
Definition: png.c:106
checkasm_check_aacencdsp
void checkasm_check_aacencdsp(void)
Definition: aacencdsp.c:100
checkasm_check_hevc_idct
void checkasm_check_hevc_idct(void)
Definition: hevc_idct.c:108
checkasm_check_sw_scale
void checkasm_check_sw_scale(void)
Definition: sw_scale.c:460
checkasm_check_aes
void checkasm_check_aes(void)
Definition: aes.c:28
checkasm_check_aacpsdsp
void checkasm_check_aacpsdsp(void)
Definition: aacpsdsp.c:234
checkasm_check_vvc_sao
void checkasm_check_vvc_sao(void)
Definition: vvc_sao.c:134
checkasm_check_alacdsp
void checkasm_check_alacdsp(void)
Definition: alacdsp.c:116
checkasm_check_h264dsp
void checkasm_check_h264dsp(void)
Definition: h264dsp.c:503
cpu.h
checkasm_check_vp9_ipred
void checkasm_check_vp9_ipred(void)
Definition: vp9dsp.c:50
checkasm_check_ac3dsp
void checkasm_check_ac3dsp(void)
Definition: ac3dsp.c:193
checkasm_check_motion
void checkasm_check_motion(void)
Definition: motion.c:137
checkasm_check_h263dsp
void checkasm_check_h263dsp(void)
Definition: h263dsp.c:54
checkasm_check_vp9dsp
void checkasm_check_vp9dsp(void)
Definition: vp9dsp.c:627
checkasm_check_vf_threshold
void checkasm_check_vf_threshold(void)
Definition: vf_threshold.c:79
checkasm_check_vf_gblur
void checkasm_check_vf_gblur(void)
Definition: vf_gblur.c:82
checkasm_check_vvc_mc
void checkasm_check_vvc_mc(void)
Definition: vvc_mc.c:471
checkasm_check_sbcdsp
void checkasm_check_sbcdsp(void)
Definition: sbcdsp.c:111
checkasm_check_sw_yuv2rgb
void checkasm_check_sw_yuv2rgb(void)
Definition: sw_yuv2rgb.c:251
checkasm_check_float_dsp
void checkasm_check_float_dsp(void)
Definition: float_dsp.c:285
checkasm_check_hevc_dequant
void checkasm_check_hevc_dequant(void)
Definition: hevc_dequant.c:65
checkasm_check_pixblockdsp
void checkasm_check_pixblockdsp(void)
Definition: pixblockdsp.c:82
checkasm_check_bswapdsp
void checkasm_check_bswapdsp(void)
Definition: bswapdsp.c:60
checkasm_check_vf_bwdif
void checkasm_check_vf_bwdif(void)
Definition: vf_bwdif.c:72
lfg.h
checkasm_check_sw_rgb
void checkasm_check_sw_rgb(void)
Definition: sw_rgb.c:804
checkasm_check_hevc_sao
void checkasm_check_hevc_sao(void)
Definition: hevc_sao.c:136
pixel
uint8_t pixel
Definition: checkasm.h:190
checkasm_check_hevc_pel
void checkasm_check_hevc_pel(void)
Definition: hevc_pel.c:621
checkasm_check_mpeg4videodsp
void checkasm_check_mpeg4videodsp(void)
Definition: mpeg4videodsp.c:146
checkasm_check_takdsp
void checkasm_check_takdsp(void)
Definition: takdsp.c:145
checkasm_check_hevc_pred
void checkasm_check_hevc_pred(void)
Definition: hevc_pred.c:302
checkasm_check_sw_ops
void checkasm_check_sw_ops(void)
Definition: sw_ops.c:768
checkasm_check_fmtconvert
void checkasm_check_fmtconvert(void)
Definition: fmtconvert.c:46
timer.h
checkasm_check_vorbisdsp
void checkasm_check_vorbisdsp(void)
Definition: vorbisdsp.c:65
checkasm_check_hpeldsp
void checkasm_check_hpeldsp(void)
Definition: hpeldsp.c:54
checkasm_check_rv40dsp
void checkasm_check_rv40dsp(void)
Definition: rv40dsp.c:71
checkasm_check_vc1dsp
void checkasm_check_vc1dsp(void)
Definition: vc1dsp.c:476
checkasm_check_h264chroma
void checkasm_check_h264chroma(void)
Definition: h264chroma.c:83
checkasm_check_llauddsp
void checkasm_check_llauddsp(void)
Definition: llauddsp.c:108
checkasm_check_vp9_loopfilter
void checkasm_check_vp9_loopfilter(void)
Definition: vp9dsp.c:452
checkasm_check_llviddsp
void checkasm_check_llviddsp(void)
Definition: llviddsp.c:183
checkasm_check_vp9_mc
void checkasm_check_vp9_mc(void)
Definition: vp9dsp.c:559
test.h
Test writing API for checkasm.
checkasm_check_vp3dsp
void checkasm_check_vp3dsp(void)
Definition: vp3dsp.c:193
checkasm_check_vf_pp7
void checkasm_check_vf_pp7(void)
Definition: vf_pp7.c:58
checkasm_check_diracdsp
void checkasm_check_diracdsp(void)
Definition: diracdsp.c:85
checkasm_check_h264pred
void checkasm_check_h264pred(void)
Definition: h264pred.c:233
checkasm_check_huffyuvdsp
void checkasm_check_huffyuvdsp(void)
Definition: huffyuvdsp.c:95
checkasm_check_fixed_dsp
void checkasm_check_fixed_dsp(void)
Definition: fixed_dsp.c:133
checkasm_check_colorspace
void checkasm_check_colorspace(void)
Definition: vf_colorspace.c:309
checkasm_check_utvideodsp
void checkasm_check_utvideodsp(void)
Definition: utvideodsp.c:90
emms.h
checkasm_check_huffyuvencdsp
void checkasm_check_huffyuvencdsp(void)
Definition: huffyuvencdsp.c:73
checkasm_check_sw_range_convert
void checkasm_check_sw_range_convert(void)
Definition: sw_range_convert.c:224
checkasm_check_mpegvideoencdsp
void checkasm_check_mpegvideoencdsp(void)
Definition: mpegvideoencdsp.c:191
checkasm_check_flacdsp
void checkasm_check_flacdsp(void)
Definition: flacdsp.c:155
internal.h
checkasm_check_idctdsp
void checkasm_check_idctdsp(void)
Definition: idctdsp.c:95
utils.h
Utility functions for checkasm tests.
checkasm_check_synth_filter
void checkasm_check_synth_filter(void)
Definition: synth_filter.c:47
checkasm_check_av_tx
void checkasm_check_av_tx(void)
Definition: av_tx.c:102
checkasm_check_blockdsp
void checkasm_check_blockdsp(void)
Definition: blockdsp.c:78
checkasm_check_lpc
void checkasm_check_lpc(void)
Definition: lpc.c:96
checkasm_check_g722dsp
void checkasm_check_g722dsp(void)
Definition: g722dsp.c:53
checkasm_check_svq1enc
void checkasm_check_svq1enc(void)
Definition: svq1enc.c:63
checkasm_check_vf_hflip
void checkasm_check_vf_hflip(void)
Definition: vf_hflip.c:72
checkasm_check_lls
void checkasm_check_lls(void)
Definition: lls.c:73
checkasm_check_scene_sad
void checkasm_check_scene_sad(void)
Definition: scene_sad.c:66
checkasm_check_blend
void checkasm_check_blend(void)
Definition: vf_blend.c:89
checkasm_check_afir
void checkasm_check_afir(void)
Definition: af_afir.c:132
checkasm_check_vf_fspp
void checkasm_check_vf_fspp(void)
Definition: vf_fspp.c:165
checkasm_check_h264qpel
void checkasm_check_h264qpel(void)
Definition: h264qpel.c:51
checkasm_check_colordetect
void checkasm_check_colordetect(void)
Definition: vf_colordetect.c:135
checkasm_check_mpegvideo_unquantize
void checkasm_check_mpegvideo_unquantize(void)
Definition: mpegvideo_unquantize.c:196
checkasm_check_vf_sobel
void checkasm_check_vf_sobel(void)
Definition: vf_convolution.c:100
checkasm_check_crc
void checkasm_check_crc(void)
Definition: crc.c:73
checkasm_check_vp6dsp
void checkasm_check_vp6dsp(void)
Definition: vp6dsp.c:39
checkasm_check_qpeldsp
void checkasm_check_qpeldsp(void)
Definition: qpeldsp.c:52
checkasm_check_vp9_itxfm
void checkasm_check_vp9_itxfm(void)
Definition: vp9dsp.c:311
checkasm_check_blackdetect
void checkasm_check_blackdetect(void)
Definition: vf_blackdetect.c:62
checkasm_check_v210enc
void checkasm_check_v210enc(void)
Definition: v210enc.c:83
checkasm_check_sbrdsp
void checkasm_check_sbrdsp(void)
Definition: sbrdsp.c:257
checkasm_check_pixelutils
void checkasm_check_pixelutils(void)
Definition: pixelutils.c:95
checkasm_check_hevc_deblock
void checkasm_check_hevc_deblock(void)
Definition: hevc_deblock.c:264
checkasm_check_snowdsp
void checkasm_check_snowdsp(void)
Definition: snowdsp.c:136
checkasm_check_apv_dsp
void checkasm_check_apv_dsp(void)
Definition: apv_dsp.c:61
checkasm_check_jpeg2000dsp
void checkasm_check_jpeg2000dsp(void)
Definition: jpeg2000dsp.c:92
checkasm_check_hevc_add_res
void checkasm_check_hevc_add_res(void)
Definition: hevc_add_res.c:87
checkasm_check_rv34dsp
void checkasm_check_rv34dsp(void)
Definition: rv34dsp.c:129
checkasm_check_cavsdsp
void checkasm_check_cavsdsp(void)
Definition: cavsdsp.c:116
avstring.h
checkasm_check_audiodsp
void checkasm_check_audiodsp(void)
Definition: audiodsp.c:52
checkasm_check_vvc_alf
void checkasm_check_vvc_alf(void)
Definition: vvc_alf.c:178
checkasm_check_exrdsp
void checkasm_check_exrdsp(void)
Definition: exrdsp.c:77
checkasm_check_llvidencdsp
void checkasm_check_llvidencdsp(void)
Definition: llvidencdsp.c:134
checkasm_check_opusdsp
void checkasm_check_opusdsp(void)
Definition: opusdsp.c:86