FFmpeg
tests
checkasm
vorbisdsp.c
Go to the documentation of this file.
1
/*
2
* This file is part of FFmpeg.
3
*
4
* FFmpeg is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
8
*
9
* FFmpeg is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with FFmpeg; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
*/
18
19
#include <
float.h
>
20
21
#include "
libavutil/mem_internal.h
"
22
23
#include "
libavcodec/vorbisdsp.h
"
24
25
#include "
checkasm.h
"
26
27
#define LEN 512
28
29
#define randomize_buffer(buf) \
30
do { \
31
double bmg[2], stddev = 10.0, mean = 0.0; \
32
\
33
for (int i = 0; i < LEN; i += 2) { \
34
av_bmg_get(&checkasm_lfg, bmg); \
35
buf[i] = bmg[0] * stddev + mean; \
36
buf[i + 1] = bmg[1] * stddev + mean; \
37
} \
38
} while(0);
39
40
static
void
test_inverse_coupling
(
void
)
41
{
42
LOCAL_ALIGNED_16
(
float
,
src0
, [
LEN
]);
43
LOCAL_ALIGNED_16
(
float
,
src1
, [
LEN
]);
44
LOCAL_ALIGNED_16
(
float
, cdst, [
LEN
]);
45
LOCAL_ALIGNED_16
(
float
, odst, [
LEN
]);
46
LOCAL_ALIGNED_16
(
float
, cdst1, [
LEN
]);
47
LOCAL_ALIGNED_16
(
float
, odst1, [
LEN
]);
48
49
declare_func
(
void
,
float
*restrict mag,
float
*restrict ang,
50
ptrdiff_t blocksize);
51
52
randomize_buffer
(
src0
);
53
randomize_buffer
(
src1
);
54
55
memcpy(cdst,
src0
,
LEN
*
sizeof
(*
src0
));
56
memcpy(cdst1,
src1
,
LEN
*
sizeof
(*
src1
));
57
memcpy(odst,
src0
,
LEN
*
sizeof
(*
src0
));
58
memcpy(odst1,
src1
,
LEN
*
sizeof
(*
src1
));
59
60
call_ref
(cdst, cdst1,
LEN
);
61
call_new
(odst, odst1,
LEN
);
62
for
(
int
i
= 0;
i
<
LEN
;
i
++) {
63
if
(!
float_near_abs_eps
(cdst[
i
], odst[
i
], FLT_EPSILON) ||
64
!
float_near_abs_eps
(cdst1[
i
], odst1[
i
], FLT_EPSILON)) {
65
fprintf(stderr,
"%d: %- .12f - %- .12f = % .12g\n"
,
66
i
, cdst[
i
], odst[
i
], cdst[
i
] - odst[
i
]);
67
fprintf(stderr,
"%d: %- .12f - %- .12f = % .12g\n"
,
68
i
, cdst1[
i
], odst1[
i
], cdst1[
i
] - odst1[
i
]);
69
fail
();
70
break
;
71
}
72
}
73
bench_new
(
src0
,
src1
,
LEN
);
74
}
75
76
void
checkasm_check_vorbisdsp
(
void
)
77
{
78
VorbisDSPContext
dsp;
79
80
ff_vorbisdsp_init
(&dsp);
81
82
if
(
check_func
(dsp.
vorbis_inverse_coupling
,
"inverse_coupling"
))
83
test_inverse_coupling
();
84
report
(
"inverse_coupling"
);
85
}
checkasm_check_vorbisdsp
void checkasm_check_vorbisdsp(void)
Definition:
vorbisdsp.c:76
mem_internal.h
src1
const pixel * src1
Definition:
h264pred_template.c:421
float_near_abs_eps
int float_near_abs_eps(float a, float b, float eps)
Definition:
checkasm.c:451
check_func
#define check_func(func,...)
Definition:
checkasm.h:184
float.h
call_ref
#define call_ref(...)
Definition:
checkasm.h:199
fail
#define fail()
Definition:
checkasm.h:193
checkasm.h
VorbisDSPContext
Definition:
vorbisdsp.h:24
LEN
#define LEN
Definition:
vorbisdsp.c:27
LOCAL_ALIGNED_16
#define LOCAL_ALIGNED_16(t, v,...)
Definition:
mem_internal.h:130
call_new
#define call_new(...)
Definition:
checkasm.h:302
VorbisDSPContext::vorbis_inverse_coupling
void(* vorbis_inverse_coupling)(float *mag, float *ang, ptrdiff_t blocksize)
Definition:
vorbisdsp.h:26
vorbisdsp.h
randomize_buffer
#define randomize_buffer(buf)
Definition:
vorbisdsp.c:29
report
#define report
Definition:
checkasm.h:196
bench_new
#define bench_new(...)
Definition:
checkasm.h:373
i
#define i(width, name, range_min, range_max)
Definition:
cbs_h2645.c:256
test_inverse_coupling
static void test_inverse_coupling(void)
Definition:
vorbisdsp.c:40
ff_vorbisdsp_init
av_cold void ff_vorbisdsp_init(VorbisDSPContext *dsp)
Definition:
vorbisdsp.c:46
src0
const pixel *const src0
Definition:
h264pred_template.c:420
declare_func
#define declare_func(ret,...)
Definition:
checkasm.h:188
Generated on Fri Dec 20 2024 19:22:10 for FFmpeg by
1.8.17