summaryrefslogtreecommitdiff
path: root/externals/opus
diff options
context:
space:
mode:
authorGravatar Lioncash2019-10-23 19:18:40 -0400
committerGravatar Lioncash2019-10-23 20:58:54 -0400
commit611236c8835a9ab2f0ee69f3ef8848d640c267a9 (patch)
tree2bb147c3de0817b503afa6341f7077fb1c053406 /externals/opus
parentMerge pull request #3022 from DarkLordZach/azure-folder-rename (diff)
downloadyuzu-611236c8835a9ab2f0ee69f3ef8848d640c267a9.tar.gz
yuzu-611236c8835a9ab2f0ee69f3ef8848d640c267a9.tar.xz
yuzu-611236c8835a9ab2f0ee69f3ef8848d640c267a9.zip
externals: Track upstream opus
Tracks upstream opus, allowing the library to be easily updated. While we're at it, we incorporate the CMakeLists.txt so that we have easy control over the requirements of the build.
Diffstat (limited to 'externals/opus')
m---------externals/opus0
-rw-r--r--externals/opus/CMakeLists.txt250
m---------externals/opus/opus0
3 files changed, 250 insertions, 0 deletions
diff --git a/externals/opus b/externals/opus
deleted file mode 160000
Subproject 562f8ba555c4181e1b57e82e496e4a959b9c019
diff --git a/externals/opus/CMakeLists.txt b/externals/opus/CMakeLists.txt
new file mode 100644
index 000000000..cbb393272
--- /dev/null
+++ b/externals/opus/CMakeLists.txt
@@ -0,0 +1,250 @@
1cmake_minimum_required(VERSION 3.8)
2
3project(opus)
4
5option(OPUS_STACK_PROTECTOR "Use stack protection" OFF)
6option(OPUS_USE_ALLOCA "Use alloca for stack arrays (on non-C99 compilers)" OFF)
7option(OPUS_CUSTOM_MODES "Enable non-Opus modes, e.g. 44.1 kHz & 2^n frames" OFF)
8option(OPUS_FIXED_POINT "Compile as fixed-point (for machines without a fast enough FPU)" OFF)
9option(OPUS_ENABLE_FLOAT_API "Compile with the floating point API (for machines with float library" ON)
10
11include(opus/opus_functions.cmake)
12
13if(OPUS_STACK_PROTECTOR)
14 if(NOT MSVC) # GC on by default on MSVC
15 check_and_set_flag(STACK_PROTECTION_STRONG -fstack-protector-strong)
16 endif()
17else()
18 if(MSVC)
19 check_and_set_flag(BUFFER_SECURITY_CHECK /GS-)
20 endif()
21endif()
22
23add_library(opus STATIC
24 # CELT sources
25 opus/celt/bands.c
26 opus/celt/celt.c
27 opus/celt/celt_decoder.c
28 opus/celt/celt_encoder.c
29 opus/celt/celt_lpc.c
30 opus/celt/cwrs.c
31 opus/celt/entcode.c
32 opus/celt/entdec.c
33 opus/celt/entenc.c
34 opus/celt/kiss_fft.c
35 opus/celt/laplace.c
36 opus/celt/mathops.c
37 opus/celt/mdct.c
38 opus/celt/modes.c
39 opus/celt/pitch.c
40 opus/celt/quant_bands.c
41 opus/celt/rate.c
42 opus/celt/vq.c
43
44 # SILK sources
45 opus/silk/A2NLSF.c
46 opus/silk/CNG.c
47 opus/silk/HP_variable_cutoff.c
48 opus/silk/LPC_analysis_filter.c
49 opus/silk/LPC_fit.c
50 opus/silk/LPC_inv_pred_gain.c
51 opus/silk/LP_variable_cutoff.c
52 opus/silk/NLSF2A.c
53 opus/silk/NLSF_VQ.c
54 opus/silk/NLSF_VQ_weights_laroia.c
55 opus/silk/NLSF_decode.c
56 opus/silk/NLSF_del_dec_quant.c
57 opus/silk/NLSF_encode.c
58 opus/silk/NLSF_stabilize.c
59 opus/silk/NLSF_unpack.c
60 opus/silk/NSQ.c
61 opus/silk/NSQ_del_dec.c
62 opus/silk/PLC.c
63 opus/silk/VAD.c
64 opus/silk/VQ_WMat_EC.c
65 opus/silk/ana_filt_bank_1.c
66 opus/silk/biquad_alt.c
67 opus/silk/bwexpander.c
68 opus/silk/bwexpander_32.c
69 opus/silk/check_control_input.c
70 opus/silk/code_signs.c
71 opus/silk/control_SNR.c
72 opus/silk/control_audio_bandwidth.c
73 opus/silk/control_codec.c
74 opus/silk/dec_API.c
75 opus/silk/decode_core.c
76 opus/silk/decode_frame.c
77 opus/silk/decode_indices.c
78 opus/silk/decode_parameters.c
79 opus/silk/decode_pitch.c
80 opus/silk/decode_pulses.c
81 opus/silk/decoder_set_fs.c
82 opus/silk/enc_API.c
83 opus/silk/encode_indices.c
84 opus/silk/encode_pulses.c
85 opus/silk/gain_quant.c
86 opus/silk/init_decoder.c
87 opus/silk/init_encoder.c
88 opus/silk/inner_prod_aligned.c
89 opus/silk/interpolate.c
90 opus/silk/lin2log.c
91 opus/silk/log2lin.c
92 opus/silk/pitch_est_tables.c
93 opus/silk/process_NLSFs.c
94 opus/silk/quant_LTP_gains.c
95 opus/silk/resampler.c
96 opus/silk/resampler_down2.c
97 opus/silk/resampler_down2_3.c
98 opus/silk/resampler_private_AR2.c
99 opus/silk/resampler_private_IIR_FIR.c
100 opus/silk/resampler_private_down_FIR.c
101 opus/silk/resampler_private_up2_HQ.c
102 opus/silk/resampler_rom.c
103 opus/silk/shell_coder.c
104 opus/silk/sigm_Q15.c
105 opus/silk/sort.c
106 opus/silk/stereo_LR_to_MS.c
107 opus/silk/stereo_MS_to_LR.c
108 opus/silk/stereo_decode_pred.c
109 opus/silk/stereo_encode_pred.c
110 opus/silk/stereo_find_predictor.c
111 opus/silk/stereo_quant_pred.c
112 opus/silk/sum_sqr_shift.c
113 opus/silk/table_LSF_cos.c
114 opus/silk/tables_LTP.c
115 opus/silk/tables_NLSF_CB_NB_MB.c
116 opus/silk/tables_NLSF_CB_WB.c
117 opus/silk/tables_gain.c
118 opus/silk/tables_other.c
119 opus/silk/tables_pitch_lag.c
120 opus/silk/tables_pulses_per_block.c
121
122 # Opus sources
123 opus/src/analysis.c
124 opus/src/mapping_matrix.c
125 opus/src/mlp.c
126 opus/src/mlp_data.c
127 opus/src/opus.c
128 opus/src/opus_decoder.c
129 opus/src/opus_encoder.c
130 opus/src/opus_multistream.c
131 opus/src/opus_multistream_decoder.c
132 opus/src/opus_multistream_encoder.c
133 opus/src/opus_projection_decoder.c
134 opus/src/opus_projection_encoder.c
135 opus/src/repacketizer.c
136)
137
138if (DEBUG)
139 target_sources(opus PRIVATE opus/silk/debug.c)
140endif()
141
142if (OPUS_FIXED_POINT)
143 target_sources(opus PRIVATE
144 opus/silk/fixed/LTP_analysis_filter_FIX.c
145 opus/silk/fixed/LTP_scale_ctrl_FIX.c
146 opus/silk/fixed/apply_sine_window_FIX.c
147 opus/silk/fixed/autocorr_FIX.c
148 opus/silk/fixed/burg_modified_FIX.c
149 opus/silk/fixed/corrMatrix_FIX.c
150 opus/silk/fixed/encode_frame_FIX.c
151 opus/silk/fixed/find_LPC_FIX.c
152 opus/silk/fixed/find_LTP_FIX.c
153 opus/silk/fixed/find_pitch_lags_FIX.c
154 opus/silk/fixed/find_pred_coefs_FIX.c
155 opus/silk/fixed/k2a_FIX.c
156 opus/silk/fixed/k2a_Q16_FIX.c
157 opus/silk/fixed/noise_shape_analysis_FIX.c
158 opus/silk/fixed/pitch_analysis_core_FIX.c
159 opus/silk/fixed/prefilter_FIX.c
160 opus/silk/fixed/process_gains_FIX.c
161 opus/silk/fixed/regularize_correlations_FIX.c
162 opus/silk/fixed/residual_energy16_FIX.c
163 opus/silk/fixed/residual_energy_FIX.c
164 opus/silk/fixed/schur64_FIX.c
165 opus/silk/fixed/schur_FIX.c
166 opus/silk/fixed/solve_LS_FIX.c
167 opus/silk/fixed/vector_ops_FIX.c
168 opus/silk/fixed/warped_autocorrelation_FIX.c
169 )
170else()
171 target_sources(opus PRIVATE
172 opus/silk/float/LPC_analysis_filter_FLP.c
173 opus/silk/float/LPC_inv_pred_gain_FLP.c
174 opus/silk/float/LTP_analysis_filter_FLP.c
175 opus/silk/float/LTP_scale_ctrl_FLP.c
176 opus/silk/float/apply_sine_window_FLP.c
177 opus/silk/float/autocorrelation_FLP.c
178 opus/silk/float/burg_modified_FLP.c
179 opus/silk/float/bwexpander_FLP.c
180 opus/silk/float/corrMatrix_FLP.c
181 opus/silk/float/encode_frame_FLP.c
182 opus/silk/float/energy_FLP.c
183 opus/silk/float/find_LPC_FLP.c
184 opus/silk/float/find_LTP_FLP.c
185 opus/silk/float/find_pitch_lags_FLP.c
186 opus/silk/float/find_pred_coefs_FLP.c
187 opus/silk/float/inner_product_FLP.c
188 opus/silk/float/k2a_FLP.c
189 opus/silk/float/noise_shape_analysis_FLP.c
190 opus/silk/float/pitch_analysis_core_FLP.c
191 opus/silk/float/process_gains_FLP.c
192 opus/silk/float/regularize_correlations_FLP.c
193 opus/silk/float/residual_energy_FLP.c
194 opus/silk/float/scale_copy_vector_FLP.c
195 opus/silk/float/scale_vector_FLP.c
196 opus/silk/float/schur_FLP.c
197 opus/silk/float/sort_FLP.c
198 opus/silk/float/warped_autocorrelation_FLP.c
199 opus/silk/float/wrappers_FLP.c
200 )
201endif()
202
203target_compile_definitions(opus PRIVATE OPUS_BUILD ENABLE_HARDENING)
204
205if(NOT MSVC)
206 target_compile_definitions(opus PRIVATE _FORTIFY_SOURCE=2)
207endif()
208
209# It is strongly recommended to uncomment one of these VAR_ARRAYS: Use C99
210# variable-length arrays for stack allocation USE_ALLOCA: Use alloca() for stack
211# allocation If none is defined, then the fallback is a non-threadsafe global
212# array
213if(OPUS_USE_ALLOCA OR MSVC)
214 target_compile_definitions(opus PRIVATE USE_ALLOCA)
215else()
216 target_compile_definitions(opus PRIVATE VAR_ARRAYS)
217endif()
218
219if(OPUS_CUSTOM_MODES)
220 target_compile_definitions(opus PRIVATE CUSTOM_MODES)
221endif()
222
223if(NOT OPUS_ENABLE_FLOAT_API)
224 target_compile_definitions(opus PRIVATE DISABLE_FLOAT_API)
225endif()
226
227target_compile_definitions(opus
228PUBLIC
229 -DOPUS_VERSION="\\"1.3.1\\""
230
231PRIVATE
232 # Use C99 intrinsics to speed up float-to-int conversion
233 HAVE_LRINTF
234)
235
236if (FIXED_POINT)
237 target_compile_definitions(opus PRIVATE -DFIXED_POINT=1 -DDISABLE_FLOAT_API)
238endif()
239
240target_include_directories(opus
241PUBLIC
242 opus/include
243
244PRIVATE
245 opus/celt
246 opus/silk
247 opus/silk/fixed
248 opus/silk/float
249 opus/src
250)
diff --git a/externals/opus/opus b/externals/opus/opus
new file mode 160000
Subproject ad8fe90db79b7d2a135e3dfd2ed6631b0c5662a