Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Libretro
tyrquake
Commits
4a65bd11
Commit
4a65bd11
authored
Apr 09, 2021
by
Libretro-Admin
Browse files
Cleanups
parent
c9af3376
Pipeline
#19682
passed with stages
in 1 minute and 41 seconds
Changes
6
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Makefile.common
View file @
4a65bd11
...
...
@@ -167,7 +167,6 @@ SOURCES_C += \
$(LIBVORBIS_DIR)
/lib/floor0.c
\
$(LIBVORBIS_DIR)
/lib/floor1.c
\
$(LIBVORBIS_DIR)
/lib/info.c
\
$(LIBVORBIS_DIR)
/lib/lookup.c
\
$(LIBVORBIS_DIR)
/lib/lpc.c
\
$(LIBVORBIS_DIR)
/lib/lsp.c
\
$(LIBVORBIS_DIR)
/lib/mapping0.c
\
...
...
deps/libvorbis/lib/lookup.c
deleted
100644 → 0
View file @
c9af3376
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation http://www.xiph.org/ *
* *
********************************************************************
function: lookup based functions
last mod: $Id: lookup.c 16227 2009-07-08 06:58:46Z xiphmont $
********************************************************************/
#include <math.h>
#include "lookup.h"
#include "lookup_data.h"
#include "os.h"
#include "misc.h"
#ifdef FLOAT_LOOKUP
/* interpolated lookup based cos function, domain 0 to PI only */
float
vorbis_coslook
(
float
a
){
double
d
=
a
*
(.
31830989
*
(
float
)
COS_LOOKUP_SZ
);
int
i
=
vorbis_ftoi
(
d
-
.
5
);
return
COS_LOOKUP
[
i
]
+
(
d
-
i
)
*
(
COS_LOOKUP
[
i
+
1
]
-
COS_LOOKUP
[
i
]);
}
/* interpolated 1./sqrt(p) where .5 <= p < 1. */
float
vorbis_invsqlook
(
float
a
){
double
d
=
a
*
(
2
.
f
*
(
float
)
INVSQ_LOOKUP_SZ
)
-
(
float
)
INVSQ_LOOKUP_SZ
;
int
i
=
vorbis_ftoi
(
d
-
.
5
f
);
return
INVSQ_LOOKUP
[
i
]
+
(
d
-
i
)
*
(
INVSQ_LOOKUP
[
i
+
1
]
-
INVSQ_LOOKUP
[
i
]);
}
/* interpolated 1./sqrt(p) where .5 <= p < 1. */
float
vorbis_invsq2explook
(
int
a
){
return
INVSQ2EXP_LOOKUP
[
a
-
INVSQ2EXP_LOOKUP_MIN
];
}
#include <stdio.h>
/* interpolated lookup based fromdB function, domain -140dB to 0dB only */
float
vorbis_fromdBlook
(
float
a
){
int
i
=
vorbis_ftoi
(
a
*
((
float
)(
-
(
1
<<
FROMdB2_SHIFT
)))
-
.
5
f
);
return
(
i
<
0
)
?
1
.
f
:
((
i
>=
(
FROMdB_LOOKUP_SZ
<<
FROMdB_SHIFT
))
?
0
.
f
:
FROMdB_LOOKUP
[
i
>>
FROMdB_SHIFT
]
*
FROMdB2_LOOKUP
[
i
&
FROMdB2_MASK
]);
}
#endif
#ifdef INT_LOOKUP
/* interpolated 1./sqrt(p) where .5 <= a < 1. (.100000... to .111111...) in
16.16 format
returns in m.8 format */
long
vorbis_invsqlook_i
(
long
a
,
long
e
){
long
i
=
(
a
&
0x7fff
)
>>
(
INVSQ_LOOKUP_I_SHIFT
-
1
);
long
d
=
(
a
&
INVSQ_LOOKUP_I_MASK
)
<<
(
16
-
INVSQ_LOOKUP_I_SHIFT
);
/* 0.16 */
long
val
=
INVSQ_LOOKUP_I
[
i
]
-
/* 1.16 */
(((
INVSQ_LOOKUP_I
[
i
]
-
INVSQ_LOOKUP_I
[
i
+
1
])
*
/* 0.16 */
d
)
>>
16
);
/* result 1.16 */
e
+=
32
;
if
(
e
&
1
)
val
=
(
val
*
5792
)
>>
13
;
/* multiply val by 1/sqrt(2) */
e
=
(
e
>>
1
)
-
8
;
return
(
val
>>
e
);
}
/* interpolated lookup based fromdB function, domain -140dB to 0dB only */
/* a is in n.12 format */
float
vorbis_fromdBlook_i
(
long
a
){
int
i
=
(
-
a
)
>>
(
12
-
FROMdB2_SHIFT
);
return
(
i
<
0
)
?
1
.
f
:
((
i
>=
(
FROMdB_LOOKUP_SZ
<<
FROMdB_SHIFT
))
?
0
.
f
:
FROMdB_LOOKUP
[
i
>>
FROMdB_SHIFT
]
*
FROMdB2_LOOKUP
[
i
&
FROMdB2_MASK
]);
}
/* interpolated lookup based cos function, domain 0 to PI only */
/* a is in 0.16 format, where 0==0, 2^^16-1==PI, return 0.14 */
long
vorbis_coslook_i
(
long
a
){
int
i
=
a
>>
COS_LOOKUP_I_SHIFT
;
int
d
=
a
&
COS_LOOKUP_I_MASK
;
return
COS_LOOKUP_I
[
i
]
-
((
d
*
(
COS_LOOKUP_I
[
i
]
-
COS_LOOKUP_I
[
i
+
1
]))
>>
COS_LOOKUP_I_SHIFT
);
}
#endif
deps/libvorbis/lib/lookup.h
deleted
100644 → 0
View file @
c9af3376
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2009 *
* by the Xiph.Org Foundation http://www.xiph.org/ *
* *
********************************************************************
function: lookup based functions
last mod: $Id: lookup.h 16227 2009-07-08 06:58:46Z xiphmont $
********************************************************************/
#ifndef _V_LOOKUP_H_
#ifdef FLOAT_LOOKUP
extern
float
vorbis_coslook
(
float
a
);
extern
float
vorbis_invsqlook
(
float
a
);
extern
float
vorbis_invsq2explook
(
int
a
);
extern
float
vorbis_fromdBlook
(
float
a
);
#endif
#ifdef INT_LOOKUP
extern
long
vorbis_invsqlook_i
(
long
a
,
long
e
);
extern
long
vorbis_coslook_i
(
long
a
);
extern
float
vorbis_fromdBlook_i
(
long
a
);
#endif
#endif
deps/libvorbis/lib/lookup_data.h
deleted
100644 → 0
View file @
c9af3376
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation http://www.xiph.org/ *
* *
********************************************************************
function: lookup data; generated by lookups.pl; edit there
last mod: $Id: lookup_data.h 16037 2009-05-26 21:10:58Z xiphmont $
********************************************************************/
#ifndef _V_LOOKUP_DATA_H_
#ifdef FLOAT_LOOKUP
#define COS_LOOKUP_SZ 128
static
const
float
COS_LOOKUP
[
COS_LOOKUP_SZ
+
1
]
=
{
+
1
.
0000000000000
f
,
+
0
.
9996988186962
f
,
+
0
.
9987954562052
f
,
+
0
.
9972904566787
f
,
+
0
.
9951847266722
f
,
+
0
.
9924795345987
f
,
+
0
.
9891765099648
f
,
+
0
.
9852776423889
f
,
+
0
.
9807852804032
f
,
+
0
.
9757021300385
f
,
+
0
.
9700312531945
f
,
+
0
.
9637760657954
f
,
+
0
.
9569403357322
f
,
+
0
.
9495281805930
f
,
+
0
.
9415440651830
f
,
+
0
.
9329927988347
f
,
+
0
.
9238795325113
f
,
+
0
.
9142097557035
f
,
+
0
.
9039892931234
f
,
+
0
.
8932243011955
f
,
+
0
.
8819212643484
f
,
+
0
.
8700869911087
f
,
+
0
.
8577286100003
f
,
+
0
.
8448535652497
f
,
+
0
.
8314696123025
f
,
+
0
.
8175848131516
f
,
+
0
.
8032075314806
f
,
+
0
.
7883464276266
f
,
+
0
.
7730104533627
f
,
+
0
.
7572088465065
f
,
+
0
.
7409511253550
f
,
+
0
.
7242470829515
f
,
+
0
.
7071067811865
f
,
+
0
.
6895405447371
f
,
+
0
.
6715589548470
f
,
+
0
.
6531728429538
f
,
+
0
.
6343932841636
f
,
+
0
.
6152315905806
f
,
+
0
.
5956993044924
f
,
+
0
.
5758081914178
f
,
+
0
.
5555702330196
f
,
+
0
.
5349976198871
f
,
+
0
.
5141027441932
f
,
+
0
.
4928981922298
f
,
+
0
.
4713967368260
f
,
+
0
.
4496113296546
f
,
+
0
.
4275550934303
f
,
+
0
.
4052413140050
f
,
+
0
.
3826834323651
f
,
+
0
.
3598950365350
f
,
+
0
.
3368898533922
f
,
+
0
.
3136817403989
f
,
+
0
.
2902846772545
f
,
+
0
.
2667127574749
f
,
+
0
.
2429801799033
f
,
+
0
.
2191012401569
f
,
+
0
.
1950903220161
f
,
+
0
.
1709618887603
f
,
+
0
.
1467304744554
f
,
+
0
.
1224106751992
f
,
+
0
.
0980171403296
f
,
+
0
.
0735645635
997
f
,
+
0
.
04
90676743274
f
,
+
0
.
02454122
85229
f
,
+
0
.
0000000000000
f
,
-
0
.
02454122
85229
f
,
-
0
.
04
90676743274
f
,
-
0
.
0735645635
997
f
,
-
0
.
0980171403296
f
,
-
0
.
1224106751992
f
,
-
0
.
1467304744554
f
,
-
0
.
1709618887603
f
,
-
0
.
1950903220161
f
,
-
0
.
2191012401569
f
,
-
0
.
2429801799033
f
,
-
0
.
2667127574749
f
,
-
0
.
2902846772545
f
,
-
0
.
3136817403989
f
,
-
0
.
3368898533922
f
,
-
0
.
3598950365350
f
,
-
0
.
3826834323651
f
,
-
0
.
4052413140050
f
,
-
0
.
4275550934303
f
,
-
0
.
4496113296546
f
,
-
0
.
4713967368260
f
,
-
0
.
4928981922298
f
,
-
0
.
5141027441932
f
,
-
0
.
5349976198871
f
,
-
0
.
5555702330196
f
,
-
0
.
5758081914178
f
,
-
0
.
5956993044924
f
,
-
0
.
6152315905806
f
,
-
0
.
6343932841636
f
,
-
0
.
6531728429538
f
,
-
0
.
6715589548470
f
,
-
0
.
6895405447371
f
,
-
0
.
7071067811865
f
,
-
0
.
7242470829515
f
,
-
0
.
7409511253550
f
,
-
0
.
7572088465065
f
,
-
0
.
7730104533627
f
,
-
0
.
7883464276266
f
,
-
0
.
8032075314806
f
,
-
0
.
8175848131516
f
,
-
0
.
8314696123025
f
,
-
0
.
8448535652497
f
,
-
0
.
8577286100003
f
,
-
0
.
8700869911087
f
,
-
0
.
8819212643484
f
,
-
0
.
8932243011955
f
,
-
0
.
9039892931234
f
,
-
0
.
9142097557035
f
,
-
0
.
9238795325113
f
,
-
0
.
9329927988347
f
,
-
0
.
9415440651830
f
,
-
0
.
9495281805930
f
,
-
0
.
9569403357322
f
,
-
0
.
9637760657954
f
,
-
0
.
9700312531945
f
,
-
0
.
9757021300385
f
,
-
0
.
9807852804032
f
,
-
0
.
9852776423889
f
,
-
0
.
9891765099648
f
,
-
0
.
9924795345987
f
,
-
0
.
9951847266722
f
,
-
0
.
9972904566787
f
,
-
0
.
9987954562052
f
,
-
0
.
9996988186962
f
,
-
1
.
0000000000000
f
,
};
#define INVSQ_LOOKUP_SZ 32
static
const
float
INVSQ_LOOKUP
[
INVSQ_LOOKUP_SZ
+
1
]
=
{
1
.
414213562373
f
,
1
.
392621247646
f
,
1
.
371988681140
f
,
1
.
352246807566
f
,
1
.
333333333333
f
,
1
.
315191898443
f
,
1
.
297771369046
f
,
1
.
281025230441
f
,
1
.
264911064067
f
,
1
.
249390095109
f
,
1
.
234426799697
f
,
1
.
219988562661
f
,
1
.
206045378311
f
,
1
.
192569588000
f
,
1
.
179535649239
f
,
1
.
166919931983
f
,
1
.
154700538379
f
,
1
.
142857142857
f
,
1
.
131370849898
f
,
1
.
120224067222
f
,
1
.
109400392450
f
,
1
.
098884511590
f
,
1
.
088662107904
f
,
1
.
07
8719779941
f
,
1
.
06
9044967650
f
,
1
.
05
9625885652
f
,
1
.
050451462
878
f
,
1
.
0415112
87847
f
,
1
.
0327
95558989
f
,
1
.
0242
95039463
f
,
1
.
016001016002
f
,
1
.
007
905261358
f
,
1
.
000000000000
f
,
};
#define INVSQ2EXP_LOOKUP_MIN (-32)
#define INVSQ2EXP_LOOKUP_MAX 32
static
const
float
INVSQ2EXP_LOOKUP
[
INVSQ2EXP_LOOKUP_MAX
-
\
INVSQ2EXP_LOOKUP_MIN
+
1
]
=
{
65536
.
f
,
46340
.
95001
f
,
32768
.
f
,
23170
.
47501
f
,
16384
.
f
,
11585
.
2375
f
,
8192
.
f
,
5792
.
618751
f
,
4096
.
f
,
2896
.
309376
f
,
2048
.
f
,
1448
.
154688
f
,
1024
.
f
,
724
.
077343
9
f
,
512
.
f
,
362
.
03
8672
f
,
256
.
f
,
181
.
01
9336
f
,
128
.
f
,
90
.
50966799
f
,
64
.
f
,
45
.
254834
f
,
32
.
f
,
22
.
627417
f
,
16
.
f
,
11
.
3137085
f
,
8
.
f
,
5
.
656854249
f
,
4
.
f
,
2
.
828427125
f
,
2
.
f
,
1
.
414213562
f
,
1
.
f
,
0
.
7071067812
f
,
0
.
5
f
,
0
.
3535533906
f
,
0
.
25
f
,
0
.
1767766953
f
,
0
.
125
f
,
0
.
08838834765
f
,
0
.
0625
f
,
0
.
0441
9417382
f
,
0
.
03125
f
,
0
.
0220
9708691
f
,
0
.
015625
f
,
0
.
01104
854346
f
,
0
.
007
8125
f
,
0
.
00552427172
8
f
,
0
.
003
90625
f
,
0
.
002762135
864
f
,
0
.
001
953125
f
,
0
.
0013
81067932
f
,
0
.
000
9765625
f
,
0
.
0006
90533966
f
,
0
.
0004
8828125
f
,
0
.
000345266
983
f
,
0
.
000244140625
f
,
0
.
0001726334
915
f
,
0
.
0001220703125
f
,
8.631674575e-05
f
,
6.103515625e-05
f
,
4.315837288e-05
f
,
3.051757812e-05
f
,
2.157918644e-05
f
,
1.525878906e-05
f
,
};
#endif
#define FROMdB_LOOKUP_SZ 35
#define FROMdB2_LOOKUP_SZ 32
#define FROMdB_SHIFT 5
#define FROMdB2_SHIFT 3
#define FROMdB2_MASK 31
#ifdef FLOAT_LOOKUP
static
const
float
FROMdB_LOOKUP
[
FROMdB_LOOKUP_SZ
]
=
{
1
.
f
,
0
.
6309573445
f
,
0
.
3981071706
f
,
0
.
2511886432
f
,
0
.
1584893192
f
,
0
.
1
f
,
0
.
0630
9573445
f
,
0
.
03
981071706
f
,
0
.
02511
886432
f
,
0
.
015
84893192
f
,
0
.
01
f
,
0
.
00630
9573445
f
,
0
.
003
981071706
f
,
0
.
002511
886432
f
,
0
.
0015
84893192
f
,
0
.
001
f
,
0
.
000630
9573445
f
,
0
.
0003
981071706
f
,
0
.
0002511
886432
f
,
0
.
00015
84893192
f
,
0
.
0001
f
,
6.309573445e-05
f
,
3.981071706e-05
f
,
2.511886432e-05
f
,
1.584893192e-05
f
,
1e-05
f
,
6.309573445e-06
f
,
3.981071706e-06
f
,
2.511886432e-06
f
,
1.584893192e-06
f
,
1e-06
f
,
6.309573445e-07
f
,
3.981071706e-07
f
,
2.511886432e-07
f
,
1.584893192e-07
f
,
};
static
const
float
FROMdB2_LOOKUP
[
FROMdB2_LOOKUP_SZ
]
=
{
0
.
9928302478
f
,
0
.
9786445908
f
,
0
.
9646616199
f
,
0
.
9508784391
f
,
0
.
9372921937
f
,
0
.
92390007
f
,
0
.
9106992942
f
,
0
.
8976871324
f
,
0
.
8848608897
f
,
0
.
8722179097
f
,
0
.
8597555737
f
,
0
.
8474713009
f
,
0
.
835362547
f
,
0
.
8234268041
f
,
0
.
8116616003
f
,
0
.
8000644989
f
,
0
.
7886330981
f
,
0
.
7773650302
f
,
0
.
7662579617
f
,
0
.
755309592
f
,
0
.
7445176537
f
,
0
.
7338799116
f
,
0
.
7233941627
f
,
0
.
7130582353
f
,
0
.
7028699885
f
,
0
.
6928273125
f
,
0
.
6829281272
f
,
0
.
6731703824
f
,
0
.
6635520573
f
,
0
.
6540711597
f
,
0
.
6447257262
f
,
0
.
6355138211
f
,
};
#endif
#ifdef INT_LOOKUP
#define INVSQ_LOOKUP_I_SHIFT 10
#define INVSQ_LOOKUP_I_MASK 1023
static
const
long
INVSQ_LOOKUP_I
[
64
+
1
]
=
{
92682l
,
91966l
,
91267l
,
90583l
,
89915l
,
89261l
,
88621l
,
87995l
,
87381l
,
86781l
,
86192l
,
85616l
,
85051l
,
84497l
,
83953l
,
83420l
,
82897l
,
82384l
,
81880l
,
81385l
,
80899l
,
80422l
,
79953l
,
79492l
,
79039l
,
78594l
,
78156l
,
77726l
,
77302l
,
76885l
,
76475l
,
76072l
,
75674l
,
75283l
,
74898l
,
74519l
,
74146l
,
73778l
,
73415l
,
73058l
,
72706l
,
72359l
,
72016l
,
71679l
,
71347l
,
71019l
,
70695l
,
70376l
,
70061l
,
69750l
,
69444l
,
69141l
,
68842l
,
68548l
,
68256l
,
67969l
,
67685l
,
67405l
,
67128l
,
66855l
,
66585l
,
66318l
,
66054l
,
65794l
,
65536l
,
};
#define COS_LOOKUP_I_SHIFT 9
#define COS_LOOKUP_I_MASK 511
#define COS_LOOKUP_I_SZ 128
static
const
long
COS_LOOKUP_I
[
COS_LOOKUP_I_SZ
+
1
]
=
{
16384l
,
16379l
,
16364l
,
16340l
,
16305l
,
16261l
,
16207l
,
16143l
,
16069l
,
15986l
,
15893l
,
15791l
,
15679l
,
15557l
,
15426l
,
15286l
,
15137l
,
14978l
,
14811l
,
14635l
,
14449l
,
14256l
,
14053l
,
13842l
,
13623l
,
13395l
,
13160l
,
12916l
,
12665l
,
12406l
,
12140l
,
11866l
,
11585l
,
11297l
,
11003l
,
10702l
,
10394l
,
10080l
,
9760l
,
9434l
,
9102l
,
8765l
,
8423l
,
8076l
,
7723l
,
7366l
,
7005l
,
6639l
,
6270l
,
5897l
,
5520l
,
5139l
,
4756l
,
4370l
,
3981l
,
3590l
,
3196l
,
2801l
,
2404l
,
2006l
,
1606l
,
1205l
,
804l
,
402l
,
0l
,
-
401l
,
-
803l
,
-
1204l
,
-
1605l
,
-
2005l
,
-
2403l
,
-
2800l
,
-
3195l
,
-
3589l
,
-
3980l
,
-
4369l
,
-
4755l
,
-
5138l
,
-
5519l
,
-
5896l
,
-
6269l
,
-
6638l
,
-
7004l
,
-
7365l
,
-
7722l
,
-
8075l
,
-
8422l
,
-
8764l
,
-
9101l
,
-
9433l
,
-
9759l
,
-
10079l
,
-
10393l
,
-
10701l
,
-
11002l
,
-
11296l
,
-
11584l
,
-
11865l
,
-
12139l
,
-
12405l
,
-
12664l
,
-
12915l
,
-
13159l
,
-
13394l
,
-
13622l
,
-
13841l
,
-
14052l
,
-
14255l
,
-
14448l
,
-
14634l
,
-
14810l
,
-
14977l
,
-
15136l
,
-
15285l
,
-
15425l
,
-
15556l
,
-
15678l
,
-
15790l
,
-
15892l
,
-
15985l
,
-
16068l
,
-
16142l
,
-
16206l
,
-
16260l
,
-
16304l
,
-
16339l
,
-
16363l
,
-
16378l
,
-
16383l
,
};
#endif
#endif
deps/libvorbis/lib/lookups.pl
deleted
100644 → 0
View file @
c9af3376
#!/usr/bin/perl
print
<<'EOD';
/********************************************************************
* *
* THIS FILE IS PART OF THE OggVorbis SOFTWARE CODEC SOURCE CODE. *
* USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS *
* GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE *
* IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. *
* *
* THE OggVorbis SOURCE CODE IS (C) COPYRIGHT 1994-2007 *
* by the Xiph.Org Foundation http://www.xiph.org/ *
* *
********************************************************************
function: lookup data; generated by lookups.pl; edit there
last mod: $Id: lookups.pl 13293 2007-07-24 00:09:47Z xiphmont $
********************************************************************/
#ifndef _V_LOOKUP_DATA_H_
#ifdef FLOAT_LOOKUP
EOD
$cos_sz
=
128
;
$invsq_sz
=
32
;
$invsq2exp_min
=-
32
;
$invsq2exp_max
=
32
;
$fromdB_sz
=
35
;
$fromdB_shift
=
5
;
$fromdB2_shift
=
3
;
$invsq_i_shift
=
10
;
$cos_i_shift
=
9
;
$delta_shift
=
6
;
print
"
#define COS_LOOKUP_SZ
$cos_sz
\n
";
print
"
static float COS_LOOKUP[COS_LOOKUP_SZ+1]={
\n
";
for
(
$i
=
0
;
$i
<=
$cos_sz
;){
print
"
\t
";
for
(
$j
=
0
;
$j
<
4
&&
$i
<=
$cos_sz
;
$j
++
){
printf
"
%+.13f,
",
cos
(
3.14159265358979323846
*
(
$i
++
)
/
$cos_sz
)
;
}
print
"
\n
";
}
print
"
};
\n\n
";
print
"
#define INVSQ_LOOKUP_SZ
$invsq_sz
\n
";
print
"
static float INVSQ_LOOKUP[INVSQ_LOOKUP_SZ+1]={
\n
";
for
(
$i
=
0
;
$i
<=
$invsq_sz
;){
print
"
\t
";
for
(
$j
=
0
;
$j
<
4
&&
$i
<=
$invsq_sz
;
$j
++
){
my
$indexmap
=
$i
++/
$invsq_sz
*
.5
+
.5
;
printf
"
%.12f,
",
1
./
sqrt
(
$indexmap
);
}
print
"
\n
";
}
print
"
};
\n\n
";
print
"
#define INVSQ2EXP_LOOKUP_MIN
$invsq2exp_min
\n
";
print
"
#define INVSQ2EXP_LOOKUP_MAX
$invsq2exp_max
\n
";
print
"
static float INVSQ2EXP_LOOKUP[INVSQ2EXP_LOOKUP_MAX-
\\\n
"
.
"
INVSQ2EXP_LOOKUP_MIN+1]={
\n
";
for
(
$i
=
$invsq2exp_min
;
$i
<=
$invsq2exp_max
;){
print
"
\t
";
for
(
$j
=
0
;
$j
<
4
&&
$i
<=
$invsq2exp_max
;
$j
++
){
printf
"
%15.10g,
",
2
**
(
$i
++*-
.5
);
}
print
"
\n
";
}
print
"
};
\n\n
#endif
\n\n
";
# 0 to -140 dB
$fromdB2_sz
=
1
<<
$fromdB_shift
;
$fromdB_gran
=
1
<<
(
$fromdB_shift
-
$fromdB2_shift
);
print
"
#define FROMdB_LOOKUP_SZ
$fromdB_sz
\n
";
print
"
#define FROMdB2_LOOKUP_SZ
$fromdB2_sz
\n
";
print
"
#define FROMdB_SHIFT
$fromdB_shift
\n
";
print
"
#define FROMdB2_SHIFT
$fromdB2_shift
\n
";
print
"
#define FROMdB2_MASK
"
.
((
1
<<
$fromdB_shift
)
-
1
)
.
"
\n
";
print
"
static float FROMdB_LOOKUP[FROMdB_LOOKUP_SZ]={
\n
";
for
(
$i
=
0
;
$i
<
$fromdB_sz
;){
print
"
\t
";
for
(
$j
=
0
;
$j
<
4
&&
$i
<
$fromdB_sz
;
$j
++
){
printf
"
%15.10g,
",
10
**
(
.05
*
(
-
$fromdB_gran*$i
++
));
}
print
"
\n
";
}
print
"
};
\n\n
";
print
"
static float FROMdB2_LOOKUP[FROMdB2_LOOKUP_SZ]={
\n
";
for
(
$i
=
0
;
$i
<
$fromdB2_sz
;){
print
"
\t
";
for
(
$j
=
0
;
$j
<
4
&&
$i
<
$fromdB_sz
;
$j
++
){
printf
"
%15.10g,
",
10
**
(
.05
*
(
-
$fromdB_gran
/
$fromdB2_sz
*
(
.5
+
$i
++
)));
}
print
"
\n
";
}
print
"
};
\n\n
#ifdef INT_LOOKUP
\n\n
";
$iisz
=
0x10000
>>
$invsq_i_shift
;
print
"
#define INVSQ_LOOKUP_I_SHIFT
$invsq_i_shift
\n
";
print
"
#define INVSQ_LOOKUP_I_MASK
"
.
(
0x0ffff
>>
(
16
-
$invsq_i_shift
))
.
"
\n
";
print
"
static long INVSQ_LOOKUP_I[
$iisz
+1]={
\n
";
for
(
$i
=
0
;
$i
<=
$iisz
;){
print
"
\t
";
for
(
$j
=
0
;
$j
<
4
&&
$i
<=
$iisz
;
$j
++
){
my
$indexmap
=
$i
++/
$iisz
*
.5
+
.5
;
printf
"
%8d,
",
int
(
1
./
sqrt
(
$indexmap
)
*
65536
.+
.5
);
}
print
"
\n
";
}
print
"
};
\n\n
";
$cisz
=
0x10000
>>
$cos_i_shift
;
print
"
#define COS_LOOKUP_I_SHIFT
$cos_i_shift
\n
";
print
"
#define COS_LOOKUP_I_MASK
"
.
(
0x0ffff
>>
(
16
-
$cos_i_shift
))
.
"
\n
";
print
"
#define COS_LOOKUP_I_SZ
$cisz
\n
";
print
"
static long COS_LOOKUP_I[COS_LOOKUP_I_SZ+1]={
\n
";
for
(
$i
=
0
;
$i
<=
$cisz
;){
print
"
\t
";
for
(
$j
=
0
;
$j
<
4
&&
$i
<=
$cisz
;
$j
++
){
printf
"
%8d,
",
int
(
cos
(
3.14159265358979323846
*
(
$i
++
)
/
$cos_sz
)
*
16384
.+
.5
)
;
}
print
"
\n
";
}
print
"
};
\n\n
";
print
"
#endif
\n\n
#endif
\n
";
deps/libvorbis/lib/lsp.c
View file @
4a65bd11
...
...
@@ -38,7 +38,6 @@
#include "lsp.h"
#include "os.h"
#include "misc.h"
#include "lookup.h"
#include "scales.h"
/* three possible LSP to f curve functions; the exact computation
...
...
@@ -51,195 +50,6 @@
work on a fully fixed point implementation for processors like the
ARM family. */
/* define either of these (preferably FLOAT_LOOKUP) to have faster
but less precise implementation. */
#undef FLOAT_LOOKUP
#undef INT_LOOKUP
#ifdef FLOAT_LOOKUP
#include "lookup.c"
/* catch this in the build system; we #include for
compilers (like gcc) that can't inline across
modules */
/* side effect: changes *lsp to cosines of lsp */
void
vorbis_lsp_to_curve
(
float
*
curve
,
int
*
map
,
int
n
,
int
ln
,
float
*
lsp
,
int
m
,
float
amp
,
float
ampoffset
){
int
i
;
float
wdel
=
M_PI
/
ln
;
vorbis_fpu_control
fpu
;
vorbis_fpu_setround
(
&
fpu
);
for
(
i
=
0
;
i
<
m
;
i
++
)
lsp
[
i
]
=
vorbis_coslook
(
lsp
[
i
]);
i
=
0
;
while
(
i
<
n
){
int
k
=
map
[
i
];
int
qexp
;
float
p
=
.
7071067812
f
;
float
q
=
.
7071067812
f
;
float
w
=
vorbis_coslook
(
wdel
*
k
);
float
*
ftmp
=
lsp
;
int
c
=
m
>>
1
;
while
(
c
--
){
q
*=
ftmp
[
0
]
-
w
;
p
*=
ftmp
[
1
]
-
w
;
ftmp
+=
2
;
}
if
(
m
&
1
){
/* odd order filter; slightly assymetric */
/* the last coefficient */
q
*=
ftmp
[
0
]
-
w
;
q
*=
q
;
p
*=
p
*
(
1
.
f
-
w
*
w
);
}
else
{
/* even order filter; still symmetric */
q
*=
q
*
(
1
.
f
+
w
);
p
*=
p
*
(
1
.
f
-
w
);
}
q
=
frexp
(
p
+
q
,
&
qexp
);
q
=
vorbis_fromdBlook
(
amp
*
vorbis_invsqlook
(
q
)
*
vorbis_invsq2explook
(
qexp
+
m
)
-
ampoffset
);
do
{
curve
[
i
++
]
*=
q
;
}
while
(
map
[
i
]
==
k
);
}
vorbis_fpu_restore
(
fpu
);
}
#else
#ifdef INT_LOOKUP
#include "lookup.c"
/* catch this in the build system; we #include for
compilers (like gcc) that can't inline across
modules */
static
const
int
MLOOP_1
[
64
]
=
{
0
,
10
,
11
,
11
,
12
,
12
,
12
,
12
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
13
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
14
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
15
,
};
static
const
int
MLOOP_2
[
64
]
=
{
0
,
4
,
5
,
5
,
6
,
6
,
6
,
6
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
7
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
8
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
9
,
};
static
const
int
MLOOP_3
[
8
]
=
{
0
,
1
,
2
,
2
,
3
,
3
,
3
,
3
};
/* side effect: changes *lsp to cosines of lsp */
void
vorbis_lsp_to_curve
(
float
*
curve
,
int
*
map
,
int
n
,
int
ln
,
float
*
lsp
,
int
m
,
float
amp
,
float
ampoffset
){
/* 0 <= m < 256 */
/* set up for using all int later */
int
i
;
int
ampoffseti
=
rint
(
ampoffset
*
4096
.
f
);
int
ampi
=
rint
(
amp
*
16
.
f
);
long
*
ilsp
=
alloca
(
m
*
sizeof
(
*
ilsp
));
for
(
i
=
0
;
i
<
m
;
i
++
)
ilsp
[
i
]
=
vorbis_coslook_i
(
lsp
[
i
]
/
M_PI
*
65536
.
f
+
.
5
f
);
i
=
0
;
while
(
i
<
n
){
int
j
,
k
=
map
[
i
];
unsigned
long
pi
=
46341
;
/* 2**-.5 in 0.16 */
unsigned
long
qi
=
46341
;
int
qexp
=
0
,
shift
;