1cc_library_shared { 2 name: "libopus", 3 vendor_available: true, 4 vndk: { 5 enabled: true, 6 }, 7 8 export_include_dirs: ["include"], 9 10 local_include_dirs: [ 11 "src", 12 "silk", 13 "celt", 14 "silk/fixed", 15 ], 16 17 srcs: [ 18 // CELT_SOURCES 19 "celt/bands.c", 20 "celt/celt.c", 21 "celt/celt_encoder.c", 22 "celt/celt_decoder.c", 23 "celt/cwrs.c", 24 "celt/entcode.c", 25 "celt/entdec.c", 26 "celt/entenc.c", 27 "celt/kiss_fft.c", 28 "celt/laplace.c", 29 "celt/mathops.c", 30 "celt/mdct.c", 31 "celt/modes.c", 32 "celt/pitch.c", 33 "celt/celt_lpc.c", 34 "celt/quant_bands.c", 35 "celt/rate.c", 36 "celt/vq.c", 37 38 // SILK_SOURCES 39 "silk/CNG.c", 40 "silk/code_signs.c", 41 "silk/init_decoder.c", 42 "silk/decode_core.c", 43 "silk/decode_frame.c", 44 "silk/decode_parameters.c", 45 "silk/decode_indices.c", 46 "silk/decode_pulses.c", 47 "silk/decoder_set_fs.c", 48 "silk/dec_API.c", 49 "silk/enc_API.c", 50 "silk/encode_indices.c", 51 "silk/encode_pulses.c", 52 "silk/gain_quant.c", 53 "silk/interpolate.c", 54 "silk/LP_variable_cutoff.c", 55 "silk/NLSF_decode.c", 56 "silk/NSQ.c", 57 "silk/NSQ_del_dec.c", 58 "silk/PLC.c", 59 "silk/shell_coder.c", 60 "silk/tables_gain.c", 61 "silk/tables_LTP.c", 62 "silk/tables_NLSF_CB_NB_MB.c", 63 "silk/tables_NLSF_CB_WB.c", 64 "silk/tables_other.c", 65 "silk/tables_pitch_lag.c", 66 "silk/tables_pulses_per_block.c", 67 "silk/VAD.c", 68 "silk/control_audio_bandwidth.c", 69 "silk/quant_LTP_gains.c", 70 "silk/VQ_WMat_EC.c", 71 "silk/HP_variable_cutoff.c", 72 "silk/NLSF_encode.c", 73 "silk/NLSF_VQ.c", 74 "silk/NLSF_unpack.c", 75 "silk/NLSF_del_dec_quant.c", 76 "silk/process_NLSFs.c", 77 "silk/stereo_LR_to_MS.c", 78 "silk/stereo_MS_to_LR.c", 79 "silk/check_control_input.c", 80 "silk/control_SNR.c", 81 "silk/init_encoder.c", 82 "silk/control_codec.c", 83 "silk/A2NLSF.c", 84 "silk/ana_filt_bank_1.c", 85 "silk/biquad_alt.c", 86 "silk/bwexpander_32.c", 87 "silk/bwexpander.c", 88 "silk/debug.c", 89 "silk/decode_pitch.c", 90 "silk/inner_prod_aligned.c", 91 "silk/lin2log.c", 92 "silk/log2lin.c", 93 "silk/LPC_analysis_filter.c", 94 "silk/LPC_fit.c", 95 "silk/LPC_inv_pred_gain.c", 96 "silk/table_LSF_cos.c", 97 "silk/NLSF2A.c", 98 "silk/NLSF_stabilize.c", 99 "silk/NLSF_VQ_weights_laroia.c", 100 "silk/pitch_est_tables.c", 101 "silk/resampler.c", 102 "silk/resampler_down2_3.c", 103 "silk/resampler_down2.c", 104 "silk/resampler_private_AR2.c", 105 "silk/resampler_private_down_FIR.c", 106 "silk/resampler_private_IIR_FIR.c", 107 "silk/resampler_private_up2_HQ.c", 108 "silk/resampler_rom.c", 109 "silk/sigm_Q15.c", 110 "silk/sort.c", 111 "silk/sum_sqr_shift.c", 112 "silk/stereo_decode_pred.c", 113 "silk/stereo_encode_pred.c", 114 "silk/stereo_find_predictor.c", 115 "silk/stereo_quant_pred.c", 116 117 // SILK_SOURCES_FIXED 118 "silk/fixed/LTP_analysis_filter_FIX.c", 119 "silk/fixed/LTP_scale_ctrl_FIX.c", 120 "silk/fixed/corrMatrix_FIX.c", 121 "silk/fixed/encode_frame_FIX.c", 122 "silk/fixed/find_LPC_FIX.c", 123 "silk/fixed/find_LTP_FIX.c", 124 "silk/fixed/find_pitch_lags_FIX.c", 125 "silk/fixed/find_pred_coefs_FIX.c", 126 "silk/fixed/noise_shape_analysis_FIX.c", 127 "silk/fixed/process_gains_FIX.c", 128 "silk/fixed/regularize_correlations_FIX.c", 129 "silk/fixed/residual_energy16_FIX.c", 130 "silk/fixed/residual_energy_FIX.c", 131 "silk/fixed/warped_autocorrelation_FIX.c", 132 "silk/fixed/apply_sine_window_FIX.c", 133 "silk/fixed/autocorr_FIX.c", 134 "silk/fixed/burg_modified_FIX.c", 135 "silk/fixed/k2a_FIX.c", 136 "silk/fixed/k2a_Q16_FIX.c", 137 "silk/fixed/pitch_analysis_core_FIX.c", 138 "silk/fixed/vector_ops_FIX.c", 139 "silk/fixed/schur64_FIX.c", 140 "silk/fixed/schur_FIX.c", 141 142 // OPUS_SOURCES 143 "src/opus.c", 144 "src/opus_decoder.c", 145 "src/opus_encoder.c", 146 "src/opus_multistream.c", 147 "src/opus_multistream_encoder.c", 148 "src/opus_multistream_decoder.c", 149 "src/repacketizer.c", 150 151 // OPUS_SOURCES_FLOAT 152 "src/analysis.c", 153 "src/mlp.c", 154 "src/mlp_data.c", 155 ], 156 157 cflags: [ 158 "-DNULL=0", 159 "-DSOCKLEN_T=socklen_t", 160 "-DLOCALE_NOT_USED", 161 "-D_LARGEFILE_SOURCE=1", 162 "-D_FILE_OFFSET_BITS=64", 163 "-Drestrict=", 164 "-D__EMX__", 165 "-DOPUS_BUILD", 166 "-DFIXED_POINT", 167 "-DUSE_ALLOCA", 168 "-DHAVE_LRINT", 169 "-DHAVE_LRINTF", 170 "-O2", 171 "-fno-math-errno", 172 "-Wall", 173 "-Werror", 174 ], 175 cppflags: [ 176 "-DBSD=1", 177 "-ffast-math", 178 "-O2", 179 "-funroll-loops", 180 ], 181 182 arch: { 183 arm: { 184 srcs: [ 185 // CELT_SOURCES_ARM 186 "celt/arm/armcpu.c", 187 "celt/arm/arm_celt_map.c", 188 189 // DSP, MEDIA and NEON instructions are in the same assembler 190 // file - thus we need to include it even if NEON is not 191 // supported on target platform. 192 // CELT_SOURCES_ARM_ASM 193 "celt/arm/celt_pitch_xcorr_arm_gnu.s", 194 195 // CELT_AM_SOURCES_ARM_ASM 196 "celt/arm/armopts_gnu.s", 197 ], 198 199 cflags: [ 200 "-DOPUS_ARM_ASM", 201 "-DOPUS_ARM_INLINE_ASM", 202 "-DOPUS_ARM_MAY_HAVE_EDSP", 203 "-DOPUS_ARM_INLINE_EDSP", 204 "-DOPUS_ARM_MAY_HAVE_MEDIA", 205 "-DOPUS_ARM_INLINE_MEDIA", 206 "-DOPUS_ARM_MAY_HAVE_NEON", 207 "-DOPUS_HAVE_RTCD", 208 ], 209 210 // Note: OPUS enhanced DSP/NEON implementation is not yet 211 // compatible with arm64. Only add the appropriate defines for 212 // 32-bit arm architecture. 213 neon: { 214 srcs: [ 215 // CELT_SOURCES_ARM_NEON_INTR 216 "celt/arm/celt_neon_intr.c", 217 "celt/arm/pitch_neon_intr.c", 218 219 // SILK_SOURCES_ARM_NEON_INTR, 220 "silk/arm/arm_silk_map.c", 221 "silk/arm/biquad_alt_neon_intr.c", 222 "silk/arm/LPC_inv_pred_gain_neon_intr.c", 223 "silk/arm/NSQ_del_dec_neon_intr.c", 224 "silk/arm/NSQ_neon.c", 225 226 // SILK_SOURCES_FIXED_ARM_NEON_INTR, 227 "silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c", 228 ], 229 230 cflags: [ 231 "-DOPUS_ARM_MAY_HAVE_NEON", 232 "-DOPUS_ARM_MAY_HAVE_NEON_INTR", 233 "-DOPUS_ARM_PRESUME_NEON", 234 "-DOPUS_ARM_INLINE_NEON", 235 ], 236 }, 237 238 }, 239 240 x86: { 241 ssse3: { 242 srcs: [ 243 // CELT_SOURCES_SSE 244 "celt/x86/x86cpu.c", 245 "celt/x86/x86_celt_map.c", 246 "celt/x86/pitch_sse.c", 247 248 // CELT_SOURCES_SSE2 249 "celt/x86/pitch_sse2.c", 250 "celt/x86/vq_sse2.c", 251 ], 252 253 cflags: [ 254 "-DOPUS_X86_MAY_HAVE_SSE", 255 "-DOPUS_X86_PRESUME_SSE", 256 "-DOPUS_X86_MAY_HAVE_SSE2", 257 "-DOPUS_X86_PRESUME_SSE2", 258 ], 259 }, 260 261 sse4_1: { 262 srcs: [ 263 // CELT_SOURCES_SSE4_1 264 "celt/x86/celt_lpc_sse.c", 265 "celt/x86/pitch_sse4_1.c", 266 267 // SILK_SOURCES_SSE4_1 268 "silk/x86/NSQ_sse.c", 269 "silk/x86/NSQ_del_dec_sse.c", 270 "silk/x86/x86_silk_map.c", 271 "silk/x86/VAD_sse.c", 272 "silk/x86/VQ_WMat_EC_sse.c", 273 274 // SILK_SOURCES_FIXED_SSE4_1 275 "silk/fixed/x86/vector_ops_FIX_sse.c", 276 "silk/fixed/x86/burg_modified_FIX_sse.c", 277 ], 278 279 cflags: [ 280 "-DOPUS_X86_MAY_HAVE_SSE4_1", 281 "-DOPUS_X86_PRESUME_SSE4_1", 282 ], 283 }, 284 }, 285 286 x86_64: { 287 ssse3: { 288 srcs: [ 289 // CELT_SOURCES_SSE 290 "celt/x86/x86cpu.c", 291 "celt/x86/x86_celt_map.c", 292 "celt/x86/pitch_sse.c", 293 294 // CELT_SOURCES_SSE2 295 "celt/x86/pitch_sse2.c", 296 ], 297 298 cflags: [ 299 "-DOPUS_X86_MAY_HAVE_SSE", 300 "-DOPUS_X86_PRESUME_SSE", 301 "-DOPUS_X86_MAY_HAVE_SSE2", 302 "-DOPUS_X86_PRESUME_SSE2", 303 ], 304 }, 305 306 sse4_1: { 307 srcs: [ 308 // CELT_SOURCES_SSE4_1 309 "celt/x86/celt_lpc_sse.c", 310 "celt/x86/pitch_sse4_1.c", 311 312 // SILK_SOURCES_SSE4_1 313 "silk/x86/NSQ_sse.c", 314 "silk/x86/NSQ_del_dec_sse.c", 315 "silk/x86/x86_silk_map.c", 316 "silk/x86/VAD_sse.c", 317 "silk/x86/VQ_WMat_EC_sse.c", 318 319 // SILK_SOURCES_FIXED_SSE4_1 320 "silk/fixed/x86/vector_ops_FIX_sse.c", 321 "silk/fixed/x86/burg_modified_FIX_sse.c", 322 ], 323 324 cflags: [ 325 "-DOPUS_X86_MAY_HAVE_SSE4_1", 326 "-DOPUS_X86_PRESUME_SSE4_1", 327 ], 328 }, 329 }, 330 }, 331} 332