@scrypted/libav 1.0.167 → 1.0.169
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/binding.gyp +2 -0
- package/opus/.gitattributes +10 -0
- package/opus/.gitlab-ci.yml +122 -0
- package/opus/AUTHORS +6 -0
- package/opus/CMakeLists.txt +755 -0
- package/opus/COPYING +44 -0
- package/opus/ChangeLog +0 -0
- package/opus/LICENSE_PLEASE_READ.txt +22 -0
- package/opus/Makefile.am +497 -0
- package/opus/Makefile.mips +169 -0
- package/opus/Makefile.unix +167 -0
- package/opus/NEWS +0 -0
- package/opus/README +189 -0
- package/opus/README.draft +54 -0
- package/opus/autogen.bat +13 -0
- package/opus/autogen.sh +16 -0
- package/opus/celt/_kiss_fft_guts.h +188 -0
- package/opus/celt/arch.h +390 -0
- package/opus/celt/arm/arm2gnu.pl +353 -0
- package/opus/celt/arm/arm_celt_map.c +171 -0
- package/opus/celt/arm/armcpu.c +291 -0
- package/opus/celt/arm/armcpu.h +90 -0
- package/opus/celt/arm/armopts.s.in +37 -0
- package/opus/celt/arm/celt_fft_ne10.c +173 -0
- package/opus/celt/arm/celt_mdct_ne10.c +258 -0
- package/opus/celt/arm/celt_neon_intr.c +272 -0
- package/opus/celt/arm/celt_pitch_xcorr_arm.s +551 -0
- package/opus/celt/arm/fft_arm.h +71 -0
- package/opus/celt/arm/fixed_arm64.h +35 -0
- package/opus/celt/arm/fixed_armv4.h +80 -0
- package/opus/celt/arm/fixed_armv5e.h +151 -0
- package/opus/celt/arm/kiss_fft_armv4.h +121 -0
- package/opus/celt/arm/kiss_fft_armv5e.h +118 -0
- package/opus/celt/arm/mdct_arm.h +59 -0
- package/opus/celt/arm/meson.build +12 -0
- package/opus/celt/arm/pitch_arm.h +160 -0
- package/opus/celt/arm/pitch_neon_intr.c +288 -0
- package/opus/celt/bands.c +1686 -0
- package/opus/celt/bands.h +123 -0
- package/opus/celt/celt.c +317 -0
- package/opus/celt/celt.h +255 -0
- package/opus/celt/celt_decoder.c +1616 -0
- package/opus/celt/celt_encoder.c +2854 -0
- package/opus/celt/celt_lpc.c +364 -0
- package/opus/celt/celt_lpc.h +66 -0
- package/opus/celt/cpu_support.h +72 -0
- package/opus/celt/cwrs.c +715 -0
- package/opus/celt/cwrs.h +48 -0
- package/opus/celt/dump_modes/dump_modes.c +400 -0
- package/opus/celt/dump_modes/dump_modes_arch.h +45 -0
- package/opus/celt/dump_modes/dump_modes_arm_ne10.c +152 -0
- package/opus/celt/ecintrin.h +91 -0
- package/opus/celt/entcode.c +153 -0
- package/opus/celt/entcode.h +152 -0
- package/opus/celt/entdec.c +266 -0
- package/opus/celt/entdec.h +110 -0
- package/opus/celt/entenc.c +305 -0
- package/opus/celt/entenc.h +119 -0
- package/opus/celt/fixed_c5x.h +79 -0
- package/opus/celt/fixed_c6x.h +70 -0
- package/opus/celt/fixed_debug.h +839 -0
- package/opus/celt/fixed_generic.h +201 -0
- package/opus/celt/float_cast.h +152 -0
- package/opus/celt/kiss_fft.c +648 -0
- package/opus/celt/kiss_fft.h +217 -0
- package/opus/celt/laplace.c +235 -0
- package/opus/celt/laplace.h +57 -0
- package/opus/celt/mathops.c +217 -0
- package/opus/celt/mathops.h +479 -0
- package/opus/celt/mdct.c +372 -0
- package/opus/celt/mdct.h +115 -0
- package/opus/celt/meson.build +64 -0
- package/opus/celt/mfrngcod.h +48 -0
- package/opus/celt/mips/celt_mipsr1.h +152 -0
- package/opus/celt/mips/fixed_generic_mipsr1.h +126 -0
- package/opus/celt/mips/kiss_fft_mipsr1.h +167 -0
- package/opus/celt/mips/mdct_mipsr1.h +288 -0
- package/opus/celt/mips/pitch_mipsr1.h +161 -0
- package/opus/celt/mips/vq_mipsr1.h +116 -0
- package/opus/celt/modes.c +450 -0
- package/opus/celt/modes.h +75 -0
- package/opus/celt/opus_custom_demo.c +451 -0
- package/opus/celt/os_support.h +99 -0
- package/opus/celt/pitch.c +555 -0
- package/opus/celt/pitch.h +203 -0
- package/opus/celt/quant_bands.c +562 -0
- package/opus/celt/quant_bands.h +66 -0
- package/opus/celt/rate.c +646 -0
- package/opus/celt/rate.h +101 -0
- package/opus/celt/stack_alloc.h +185 -0
- package/opus/celt/static_modes_fixed.h +1541 -0
- package/opus/celt/static_modes_fixed_arm_ne10.h +388 -0
- package/opus/celt/static_modes_float.h +888 -0
- package/opus/celt/static_modes_float_arm_ne10.h +404 -0
- package/opus/celt/tests/meson.build +19 -0
- package/opus/celt/tests/test_unit_cwrs32.c +162 -0
- package/opus/celt/tests/test_unit_dft.c +181 -0
- package/opus/celt/tests/test_unit_entropy.c +383 -0
- package/opus/celt/tests/test_unit_laplace.c +94 -0
- package/opus/celt/tests/test_unit_mathops.c +369 -0
- package/opus/celt/tests/test_unit_mdct.c +233 -0
- package/opus/celt/tests/test_unit_rotation.c +87 -0
- package/opus/celt/tests/test_unit_types.c +50 -0
- package/opus/celt/vq.c +442 -0
- package/opus/celt/vq.h +79 -0
- package/opus/celt/x86/celt_lpc_sse.h +67 -0
- package/opus/celt/x86/celt_lpc_sse4_1.c +96 -0
- package/opus/celt/x86/pitch_avx.c +101 -0
- package/opus/celt/x86/pitch_sse.c +185 -0
- package/opus/celt/x86/pitch_sse.h +216 -0
- package/opus/celt/x86/pitch_sse2.c +95 -0
- package/opus/celt/x86/pitch_sse4_1.c +240 -0
- package/opus/celt/x86/vq_sse.h +52 -0
- package/opus/celt/x86/vq_sse2.c +217 -0
- package/opus/celt/x86/x86_arch_macros.h +47 -0
- package/opus/celt/x86/x86_celt_map.c +187 -0
- package/opus/celt/x86/x86cpu.c +184 -0
- package/opus/celt/x86/x86cpu.h +112 -0
- package/opus/celt_headers.mk +54 -0
- package/opus/celt_sources.mk +55 -0
- package/opus/cmake/CFeatureCheck.cmake +39 -0
- package/opus/cmake/OpusBuildtype.cmake +27 -0
- package/opus/cmake/OpusConfig.cmake +118 -0
- package/opus/cmake/OpusConfig.cmake.in +20 -0
- package/opus/cmake/OpusFunctions.cmake +231 -0
- package/opus/cmake/OpusPackageVersion.cmake +70 -0
- package/opus/cmake/OpusSources.cmake +71 -0
- package/opus/cmake/README.md +132 -0
- package/opus/cmake/RunTest.cmake +61 -0
- package/opus/cmake/config.h.cmake.in +1 -0
- package/opus/cmake/cpu_info_by_asm.c +31 -0
- package/opus/cmake/cpu_info_by_c.c +9 -0
- package/opus/cmake/vla.c +7 -0
- package/opus/configure.ac +1091 -0
- package/opus/dnn/LPCNet.yml +24 -0
- package/opus/dnn/README +1 -0
- package/opus/dnn/README.md +126 -0
- package/opus/dnn/adaconvtest.c +449 -0
- package/opus/dnn/arm/arm_dnn_map.c +88 -0
- package/opus/dnn/arm/dnn_arm.h +104 -0
- package/opus/dnn/arm/nnet_dotprod.c +38 -0
- package/opus/dnn/arm/nnet_neon.c +38 -0
- package/opus/dnn/burg.c +246 -0
- package/opus/dnn/burg.h +41 -0
- package/opus/dnn/common.h +56 -0
- package/opus/dnn/datasets.txt +163 -0
- package/opus/dnn/download_model.bat +9 -0
- package/opus/dnn/download_model.sh +30 -0
- package/opus/dnn/dred_coding.c +44 -0
- package/opus/dnn/dred_coding.h +36 -0
- package/opus/dnn/dred_config.h +54 -0
- package/opus/dnn/dred_decoder.c +129 -0
- package/opus/dnn/dred_decoder.h +49 -0
- package/opus/dnn/dred_encoder.c +363 -0
- package/opus/dnn/dred_encoder.h +71 -0
- package/opus/dnn/dred_rdovae.h +42 -0
- package/opus/dnn/dred_rdovae_dec.c +139 -0
- package/opus/dnn/dred_rdovae_dec.h +53 -0
- package/opus/dnn/dred_rdovae_enc.c +110 -0
- package/opus/dnn/dred_rdovae_enc.h +52 -0
- package/opus/dnn/dump_data.c +238 -0
- package/opus/dnn/dump_lpcnet_tables.c +104 -0
- package/opus/dnn/fargan.c +225 -0
- package/opus/dnn/fargan.h +68 -0
- package/opus/dnn/fargan_demo.c +217 -0
- package/opus/dnn/freq.c +328 -0
- package/opus/dnn/freq.h +61 -0
- package/opus/dnn/fwgan.c +322 -0
- package/opus/dnn/fwgan.h +83 -0
- package/opus/dnn/kiss99.c +81 -0
- package/opus/dnn/kiss99.h +46 -0
- package/opus/dnn/lossgen.c +192 -0
- package/opus/dnn/lossgen.h +55 -0
- package/opus/dnn/lossgen_demo.c +22 -0
- package/opus/dnn/lpcnet.c +283 -0
- package/opus/dnn/lpcnet.h +183 -0
- package/opus/dnn/lpcnet_enc.c +230 -0
- package/opus/dnn/lpcnet_plc.c +211 -0
- package/opus/dnn/lpcnet_private.h +90 -0
- package/opus/dnn/lpcnet_tables.c +307 -0
- package/opus/dnn/meson.build +64 -0
- package/opus/dnn/nndsp.c +416 -0
- package/opus/dnn/nndsp.h +143 -0
- package/opus/dnn/nnet.c +149 -0
- package/opus/dnn/nnet.h +163 -0
- package/opus/dnn/nnet_arch.h +247 -0
- package/opus/dnn/nnet_default.c +35 -0
- package/opus/dnn/osce.c +1419 -0
- package/opus/dnn/osce.h +84 -0
- package/opus/dnn/osce_config.h +60 -0
- package/opus/dnn/osce_features.c +454 -0
- package/opus/dnn/osce_features.h +50 -0
- package/opus/dnn/osce_structs.h +125 -0
- package/opus/dnn/parse_lpcnet_weights.c +238 -0
- package/opus/dnn/pitchdnn.c +79 -0
- package/opus/dnn/pitchdnn.h +34 -0
- package/opus/dnn/tansig_table.h +50 -0
- package/opus/dnn/test_vec.c +128 -0
- package/opus/dnn/torch/dnntools/dnntools/__init__.py +2 -0
- package/opus/dnn/torch/dnntools/dnntools/quantization/__init__.py +1 -0
- package/opus/dnn/torch/dnntools/dnntools/quantization/softquant.py +113 -0
- package/opus/dnn/torch/dnntools/dnntools/relegance/__init__.py +2 -0
- package/opus/dnn/torch/dnntools/dnntools/relegance/meta_critic.py +85 -0
- package/opus/dnn/torch/dnntools/dnntools/relegance/relegance.py +449 -0
- package/opus/dnn/torch/dnntools/dnntools/sparsification/__init__.py +6 -0
- package/opus/dnn/torch/dnntools/dnntools/sparsification/base_sparsifier.py +58 -0
- package/opus/dnn/torch/dnntools/dnntools/sparsification/common.py +123 -0
- package/opus/dnn/torch/dnntools/dnntools/sparsification/conv1d_sparsifier.py +133 -0
- package/opus/dnn/torch/dnntools/dnntools/sparsification/conv_transpose1d_sparsifier.py +134 -0
- package/opus/dnn/torch/dnntools/dnntools/sparsification/gru_sparsifier.py +178 -0
- package/opus/dnn/torch/dnntools/dnntools/sparsification/linear_sparsifier.py +128 -0
- package/opus/dnn/torch/dnntools/dnntools/sparsification/utils.py +64 -0
- package/opus/dnn/torch/dnntools/requirements.txt +1 -0
- package/opus/dnn/torch/dnntools/setup.py +48 -0
- package/opus/dnn/torch/fargan/README.md +54 -0
- package/opus/dnn/torch/fargan/adv_train_fargan.py +277 -0
- package/opus/dnn/torch/fargan/dataset.py +61 -0
- package/opus/dnn/torch/fargan/dump_fargan_weights.py +112 -0
- package/opus/dnn/torch/fargan/fargan.py +322 -0
- package/opus/dnn/torch/fargan/filters.py +46 -0
- package/opus/dnn/torch/fargan/rc.py +29 -0
- package/opus/dnn/torch/fargan/stft_loss.py +186 -0
- package/opus/dnn/torch/fargan/test_fargan.py +128 -0
- package/opus/dnn/torch/fargan/train_fargan.py +168 -0
- package/opus/dnn/torch/fwgan/dump_model_weights.py +88 -0
- package/opus/dnn/torch/fwgan/inference.py +141 -0
- package/opus/dnn/torch/fwgan/models/__init__.py +7 -0
- package/opus/dnn/torch/fwgan/models/fwgan400.py +308 -0
- package/opus/dnn/torch/fwgan/models/fwgan500.py +260 -0
- package/opus/dnn/torch/lossgen/README.md +27 -0
- package/opus/dnn/torch/lossgen/export_lossgen.py +101 -0
- package/opus/dnn/torch/lossgen/lossgen.py +29 -0
- package/opus/dnn/torch/lossgen/process_data.sh +17 -0
- package/opus/dnn/torch/lossgen/test_lossgen.py +42 -0
- package/opus/dnn/torch/lossgen/train_lossgen.py +99 -0
- package/opus/dnn/torch/lpcnet/README.md +27 -0
- package/opus/dnn/torch/lpcnet/add_dataset_config.py +77 -0
- package/opus/dnn/torch/lpcnet/data/__init__.py +1 -0
- package/opus/dnn/torch/lpcnet/data/lpcnet_dataset.py +227 -0
- package/opus/dnn/torch/lpcnet/engine/lpcnet_engine.py +141 -0
- package/opus/dnn/torch/lpcnet/make_default_setup.py +56 -0
- package/opus/dnn/torch/lpcnet/make_test_config.py +78 -0
- package/opus/dnn/torch/lpcnet/models/__init__.py +8 -0
- package/opus/dnn/torch/lpcnet/models/lpcnet.py +303 -0
- package/opus/dnn/torch/lpcnet/models/multi_rate_lpcnet.py +437 -0
- package/opus/dnn/torch/lpcnet/print_lpcnet_complexity.py +64 -0
- package/opus/dnn/torch/lpcnet/scripts/collect_multi_run_results.py +190 -0
- package/opus/dnn/torch/lpcnet/scripts/loop_run.sh +52 -0
- package/opus/dnn/torch/lpcnet/scripts/make_animation.py +67 -0
- package/opus/dnn/torch/lpcnet/scripts/modify_dataset_target.py +17 -0
- package/opus/dnn/torch/lpcnet/scripts/multi_run.sh +17 -0
- package/opus/dnn/torch/lpcnet/scripts/run_inference_test.sh +22 -0
- package/opus/dnn/torch/lpcnet/scripts/update_checkpoints.py +54 -0
- package/opus/dnn/torch/lpcnet/scripts/update_output_folder.sh +22 -0
- package/opus/dnn/torch/lpcnet/scripts/update_setups.py +57 -0
- package/opus/dnn/torch/lpcnet/test_lpcnet.py +89 -0
- package/opus/dnn/torch/lpcnet/train_lpcnet.py +272 -0
- package/opus/dnn/torch/lpcnet/utils/__init__.py +4 -0
- package/opus/dnn/torch/lpcnet/utils/data.py +141 -0
- package/opus/dnn/torch/lpcnet/utils/endoscopy.py +234 -0
- package/opus/dnn/torch/lpcnet/utils/layers/__init__.py +3 -0
- package/opus/dnn/torch/lpcnet/utils/layers/dual_fc.py +44 -0
- package/opus/dnn/torch/lpcnet/utils/layers/pcm_embeddings.py +71 -0
- package/opus/dnn/torch/lpcnet/utils/layers/subconditioner.py +497 -0
- package/opus/dnn/torch/lpcnet/utils/misc.py +65 -0
- package/opus/dnn/torch/lpcnet/utils/pcm.py +35 -0
- package/opus/dnn/torch/lpcnet/utils/sample.py +44 -0
- package/opus/dnn/torch/lpcnet/utils/sparsification/__init__.py +2 -0
- package/opus/dnn/torch/lpcnet/utils/sparsification/common.py +121 -0
- package/opus/dnn/torch/lpcnet/utils/sparsification/gru_sparsifier.py +187 -0
- package/opus/dnn/torch/lpcnet/utils/templates.py +157 -0
- package/opus/dnn/torch/lpcnet/utils/ulaw.py +58 -0
- package/opus/dnn/torch/lpcnet/utils/wav.py +43 -0
- package/opus/dnn/torch/neural-pitch/README.md +18 -0
- package/opus/dnn/torch/neural-pitch/data_augmentation.py +149 -0
- package/opus/dnn/torch/neural-pitch/download_demand.sh +43 -0
- package/opus/dnn/torch/neural-pitch/evaluation.py +349 -0
- package/opus/dnn/torch/neural-pitch/experiments.py +38 -0
- package/opus/dnn/torch/neural-pitch/export_neuralpitch_weights.py +109 -0
- package/opus/dnn/torch/neural-pitch/models.py +178 -0
- package/opus/dnn/torch/neural-pitch/neural_pitch_update.py +179 -0
- package/opus/dnn/torch/neural-pitch/ptdb_process.sh +34 -0
- package/opus/dnn/torch/neural-pitch/run_crepe.py +72 -0
- package/opus/dnn/torch/neural-pitch/training.py +162 -0
- package/opus/dnn/torch/neural-pitch/utils.py +59 -0
- package/opus/dnn/torch/osce/README.md +66 -0
- package/opus/dnn/torch/osce/adv_train_model.py +462 -0
- package/opus/dnn/torch/osce/adv_train_vocoder.py +451 -0
- package/opus/dnn/torch/osce/create_testvectors.py +165 -0
- package/opus/dnn/torch/osce/data/__init__.py +2 -0
- package/opus/dnn/torch/osce/data/lpcnet_vocoding_dataset.py +225 -0
- package/opus/dnn/torch/osce/data/silk_conversion_set.py +132 -0
- package/opus/dnn/torch/osce/data/silk_enhancement_set.py +140 -0
- package/opus/dnn/torch/osce/engine/engine.py +103 -0
- package/opus/dnn/torch/osce/engine/vocoder_engine.py +101 -0
- package/opus/dnn/torch/osce/export_model_weights.py +174 -0
- package/opus/dnn/torch/osce/losses/stft_loss.py +277 -0
- package/opus/dnn/torch/osce/losses/td_lowpass.py +34 -0
- package/opus/dnn/torch/osce/make_default_setup.py +93 -0
- package/opus/dnn/torch/osce/models/__init__.py +42 -0
- package/opus/dnn/torch/osce/models/fd_discriminator.py +974 -0
- package/opus/dnn/torch/osce/models/lace.py +190 -0
- package/opus/dnn/torch/osce/models/lavoce.py +274 -0
- package/opus/dnn/torch/osce/models/lavoce_400.py +254 -0
- package/opus/dnn/torch/osce/models/lpcnet_feature_net.py +91 -0
- package/opus/dnn/torch/osce/models/nns_base.py +69 -0
- package/opus/dnn/torch/osce/models/no_lace.py +218 -0
- package/opus/dnn/torch/osce/models/scale_embedding.py +68 -0
- package/opus/dnn/torch/osce/models/shape_up_48.py +179 -0
- package/opus/dnn/torch/osce/models/silk_feature_net.py +86 -0
- package/opus/dnn/torch/osce/models/silk_feature_net_pl.py +127 -0
- package/opus/dnn/torch/osce/requirements.txt +9 -0
- package/opus/dnn/torch/osce/resources/training_files.txt +107716 -0
- package/opus/dnn/torch/osce/resources/validation_files.txt +26929 -0
- package/opus/dnn/torch/osce/scripts/concatenator.py +85 -0
- package/opus/dnn/torch/osce/silk_16_to_48.py +28 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/commonvoice_clip_selection.py +123 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/create_input_data.sh +25 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/env.rc +7 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/evaluate.py +113 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/lace_loss_metric.py +330 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/make_boxplots.py +116 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/make_boxplots_moctest.py +109 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/make_tables.py +124 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/make_tables_moctest.py +121 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/moc.py +182 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/moc2.py +190 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/process_dataset.sh +98 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/run_nomad.py +138 -0
- package/opus/dnn/torch/osce/stndrd/evaluation/run_osce_test.py +196 -0
- package/opus/dnn/torch/osce/stndrd/presentation/endoscopy.py +205 -0
- package/opus/dnn/torch/osce/stndrd/presentation/lace_demo.ipynb +313 -0
- package/opus/dnn/torch/osce/stndrd/presentation/linear_prediction.ipynb +320 -0
- package/opus/dnn/torch/osce/stndrd/presentation/playback.py +25 -0
- package/opus/dnn/torch/osce/stndrd/presentation/postfilter.ipynb +275 -0
- package/opus/dnn/torch/osce/stndrd/presentation/spectrogram.ipynb +173 -0
- package/opus/dnn/torch/osce/test_model.py +96 -0
- package/opus/dnn/torch/osce/test_vocoder.py +103 -0
- package/opus/dnn/torch/osce/train_model.py +307 -0
- package/opus/dnn/torch/osce/train_vocoder.py +287 -0
- package/opus/dnn/torch/osce/utils/ada_conv.py +71 -0
- package/opus/dnn/torch/osce/utils/complexity.py +8 -0
- package/opus/dnn/torch/osce/utils/endoscopy.py +205 -0
- package/opus/dnn/torch/osce/utils/layers/fir.py +27 -0
- package/opus/dnn/torch/osce/utils/layers/limited_adaptive_comb1d.py +230 -0
- package/opus/dnn/torch/osce/utils/layers/limited_adaptive_conv1d.py +200 -0
- package/opus/dnn/torch/osce/utils/layers/noise_shaper.py +100 -0
- package/opus/dnn/torch/osce/utils/layers/pitch_auto_correlator.py +84 -0
- package/opus/dnn/torch/osce/utils/layers/silk_upsampler.py +167 -0
- package/opus/dnn/torch/osce/utils/layers/td_shaper.py +145 -0
- package/opus/dnn/torch/osce/utils/lpcnet_features.py +112 -0
- package/opus/dnn/torch/osce/utils/misc.py +95 -0
- package/opus/dnn/torch/osce/utils/moc.py +153 -0
- package/opus/dnn/torch/osce/utils/pitch.py +122 -0
- package/opus/dnn/torch/osce/utils/silk_features.py +144 -0
- package/opus/dnn/torch/osce/utils/softquant.py +110 -0
- package/opus/dnn/torch/osce/utils/spec.py +210 -0
- package/opus/dnn/torch/osce/utils/templates.py +347 -0
- package/opus/dnn/torch/plc/export_plc.py +100 -0
- package/opus/dnn/torch/plc/plc.py +144 -0
- package/opus/dnn/torch/plc/plc_dataset.py +60 -0
- package/opus/dnn/torch/plc/train_plc.py +145 -0
- package/opus/dnn/torch/rdovae/README.md +55 -0
- package/opus/dnn/torch/rdovae/download_datasets.sh +6 -0
- package/opus/dnn/torch/rdovae/export_rdovae_weights.py +365 -0
- package/opus/dnn/torch/rdovae/fec_encoder.py +212 -0
- package/opus/dnn/torch/rdovae/import_rdovae_weights.py +143 -0
- package/opus/dnn/torch/rdovae/packets/__init__.py +1 -0
- package/opus/dnn/torch/rdovae/packets/fec_packets.c +142 -0
- package/opus/dnn/torch/rdovae/packets/fec_packets.h +34 -0
- package/opus/dnn/torch/rdovae/packets/fec_packets.py +108 -0
- package/opus/dnn/torch/rdovae/process_speech.sh +7 -0
- package/opus/dnn/torch/rdovae/rdovae/__init__.py +2 -0
- package/opus/dnn/torch/rdovae/rdovae/dataset.py +67 -0
- package/opus/dnn/torch/rdovae/rdovae/rdovae.py +719 -0
- package/opus/dnn/torch/rdovae/requirements.txt +4 -0
- package/opus/dnn/torch/rdovae/train_rdovae.py +278 -0
- package/opus/dnn/torch/testsuite/README.md +46 -0
- package/opus/dnn/torch/testsuite/examples/lpcnet_c_example.yml +6 -0
- package/opus/dnn/torch/testsuite/examples/lpcnet_c_plc_example.yml +5 -0
- package/opus/dnn/torch/testsuite/examples/lpcnet_torch_example.yml +5 -0
- package/opus/dnn/torch/testsuite/requirements.txt +12 -0
- package/opus/dnn/torch/testsuite/run_test.py +375 -0
- package/opus/dnn/torch/testsuite/utils/__init__.py +0 -0
- package/opus/dnn/torch/testsuite/utils/files.py +54 -0
- package/opus/dnn/torch/testsuite/utils/pesq.py +43 -0
- package/opus/dnn/torch/testsuite/utils/pitch.py +61 -0
- package/opus/dnn/torch/weight-exchange/README.md +21 -0
- package/opus/dnn/torch/weight-exchange/requirements.txt +1 -0
- package/opus/dnn/torch/weight-exchange/setup.py +48 -0
- package/opus/dnn/torch/weight-exchange/wexchange/__init__.py +30 -0
- package/opus/dnn/torch/weight-exchange/wexchange/c_export/__init__.py +31 -0
- package/opus/dnn/torch/weight-exchange/wexchange/c_export/c_writer.py +181 -0
- package/opus/dnn/torch/weight-exchange/wexchange/c_export/common.py +386 -0
- package/opus/dnn/torch/weight-exchange/wexchange/tf/__init__.py +5 -0
- package/opus/dnn/torch/weight-exchange/wexchange/tf/tf.py +188 -0
- package/opus/dnn/torch/weight-exchange/wexchange/torch/__init__.py +37 -0
- package/opus/dnn/torch/weight-exchange/wexchange/torch/torch.py +433 -0
- package/opus/dnn/training_tf2/dataloader.py +49 -0
- package/opus/dnn/training_tf2/decode_rdovae.py +111 -0
- package/opus/dnn/training_tf2/diffembed.py +49 -0
- package/opus/dnn/training_tf2/dump_lpcnet.py +388 -0
- package/opus/dnn/training_tf2/dump_plc.py +296 -0
- package/opus/dnn/training_tf2/dump_rdovae.py +306 -0
- package/opus/dnn/training_tf2/encode_rdovae.py +125 -0
- package/opus/dnn/training_tf2/fec_encoder.py +256 -0
- package/opus/dnn/training_tf2/fec_packets.c +142 -0
- package/opus/dnn/training_tf2/fec_packets.h +34 -0
- package/opus/dnn/training_tf2/fec_packets.py +108 -0
- package/opus/dnn/training_tf2/keraslayerdump.py +189 -0
- package/opus/dnn/training_tf2/lossfuncs.py +99 -0
- package/opus/dnn/training_tf2/lpcnet.py +339 -0
- package/opus/dnn/training_tf2/lpcnet_plc.py +101 -0
- package/opus/dnn/training_tf2/mdense.py +95 -0
- package/opus/dnn/training_tf2/pade.py +70 -0
- package/opus/dnn/training_tf2/parameters.py +29 -0
- package/opus/dnn/training_tf2/plc_loader.py +73 -0
- package/opus/dnn/training_tf2/rdovae.py +372 -0
- package/opus/dnn/training_tf2/rdovae_exchange.py +138 -0
- package/opus/dnn/training_tf2/rdovae_import.py +123 -0
- package/opus/dnn/training_tf2/test_lpcnet.py +120 -0
- package/opus/dnn/training_tf2/test_plc.py +92 -0
- package/opus/dnn/training_tf2/tf_funcs.py +70 -0
- package/opus/dnn/training_tf2/train_lpcnet.py +214 -0
- package/opus/dnn/training_tf2/train_plc.py +197 -0
- package/opus/dnn/training_tf2/train_rdovae.py +151 -0
- package/opus/dnn/training_tf2/ulaw.py +19 -0
- package/opus/dnn/training_tf2/uniform_noise.py +78 -0
- package/opus/dnn/vec.h +389 -0
- package/opus/dnn/vec_avx.h +884 -0
- package/opus/dnn/vec_neon.h +473 -0
- package/opus/dnn/write_lpcnet_weights.c +97 -0
- package/opus/dnn/x86/dnn_x86.h +121 -0
- package/opus/dnn/x86/nnet_avx2.c +40 -0
- package/opus/dnn/x86/nnet_sse2.c +40 -0
- package/opus/dnn/x86/nnet_sse4_1.c +40 -0
- package/opus/dnn/x86/x86_dnn_map.c +83 -0
- package/opus/doc/Doxyfile.in +340 -0
- package/opus/doc/Makefile.am +45 -0
- package/opus/doc/build_draft.sh +113 -0
- package/opus/doc/build_isobmff.sh +50 -0
- package/opus/doc/build_oggdraft.sh +52 -0
- package/opus/doc/customdoxygen.css +1011 -0
- package/opus/doc/draft-ietf-codec-oggopus.xml +1873 -0
- package/opus/doc/draft-ietf-codec-opus-update.xml +513 -0
- package/opus/doc/draft-ietf-codec-opus.xml +8276 -0
- package/opus/doc/draft-ietf-payload-rtp-opus.xml +960 -0
- package/opus/doc/footer.html +32 -0
- package/opus/doc/header.html +61 -0
- package/opus/doc/meson.build +33 -0
- package/opus/doc/opus_in_isobmff.css +60 -0
- package/opus/doc/opus_in_isobmff.html +692 -0
- package/opus/doc/opus_logo.svg +157 -0
- package/opus/doc/opus_update.patch +244 -0
- package/opus/doc/release.txt +43 -0
- package/opus/doc/trivial_example.c +171 -0
- package/opus/include/meson.build +13 -0
- package/opus/include/opus.h +1172 -0
- package/opus/include/opus_custom.h +381 -0
- package/opus/include/opus_defines.h +830 -0
- package/opus/include/opus_multistream.h +736 -0
- package/opus/include/opus_projection.h +643 -0
- package/opus/include/opus_types.h +166 -0
- package/opus/lpcnet_headers.mk +44 -0
- package/opus/lpcnet_sources.mk +44 -0
- package/opus/m4/as-gcc-inline-assembly.m4 +98 -0
- package/opus/m4/ax_add_fortify_source.m4 +53 -0
- package/opus/m4/opus-intrinsics.m4 +29 -0
- package/opus/meson/README.md +88 -0
- package/opus/meson/get-version.py +86 -0
- package/opus/meson/read-sources-list.py +28 -0
- package/opus/meson.build +745 -0
- package/opus/meson_options.txt +27 -0
- package/opus/opus-uninstalled.pc.in +12 -0
- package/opus/opus.m4 +117 -0
- package/opus/opus.pc.in +16 -0
- package/opus/opus_headers.mk +8 -0
- package/opus/opus_sources.mk +17 -0
- package/opus/releases.sha2 +85 -0
- package/opus/scripts/dump_rnn.py +57 -0
- package/opus/scripts/local_build.py +220 -0
- package/opus/scripts/rnn_train.py +67 -0
- package/opus/scripts/shrink_model.sh +7 -0
- package/opus/silk/A2NLSF.c +267 -0
- package/opus/silk/API.h +156 -0
- package/opus/silk/CNG.c +188 -0
- package/opus/silk/HP_variable_cutoff.c +77 -0
- package/opus/silk/Inlines.h +188 -0
- package/opus/silk/LPC_analysis_filter.c +111 -0
- package/opus/silk/LPC_fit.c +82 -0
- package/opus/silk/LPC_inv_pred_gain.c +141 -0
- package/opus/silk/LP_variable_cutoff.c +135 -0
- package/opus/silk/MacroCount.h +710 -0
- package/opus/silk/MacroDebug.h +945 -0
- package/opus/silk/NLSF2A.c +141 -0
- package/opus/silk/NLSF_VQ.c +76 -0
- package/opus/silk/NLSF_VQ_weights_laroia.c +80 -0
- package/opus/silk/NLSF_decode.c +93 -0
- package/opus/silk/NLSF_del_dec_quant.c +215 -0
- package/opus/silk/NLSF_encode.c +124 -0
- package/opus/silk/NLSF_stabilize.c +142 -0
- package/opus/silk/NLSF_unpack.c +55 -0
- package/opus/silk/NSQ.c +437 -0
- package/opus/silk/NSQ.h +101 -0
- package/opus/silk/NSQ_del_dec.c +733 -0
- package/opus/silk/PLC.c +493 -0
- package/opus/silk/PLC.h +65 -0
- package/opus/silk/SigProc_FIX.h +643 -0
- package/opus/silk/VAD.c +360 -0
- package/opus/silk/VQ_WMat_EC.c +131 -0
- package/opus/silk/ana_filt_bank_1.c +74 -0
- package/opus/silk/arm/LPC_inv_pred_gain_arm.h +57 -0
- package/opus/silk/arm/LPC_inv_pred_gain_neon_intr.c +288 -0
- package/opus/silk/arm/NSQ_del_dec_arm.h +100 -0
- package/opus/silk/arm/NSQ_del_dec_neon_intr.c +1138 -0
- package/opus/silk/arm/NSQ_neon.c +112 -0
- package/opus/silk/arm/NSQ_neon.h +114 -0
- package/opus/silk/arm/SigProc_FIX_armv4.h +47 -0
- package/opus/silk/arm/SigProc_FIX_armv5e.h +61 -0
- package/opus/silk/arm/arm_silk_map.c +128 -0
- package/opus/silk/arm/biquad_alt_arm.h +68 -0
- package/opus/silk/arm/biquad_alt_neon_intr.c +156 -0
- package/opus/silk/arm/macros_arm64.h +39 -0
- package/opus/silk/arm/macros_armv4.h +110 -0
- package/opus/silk/arm/macros_armv5e.h +220 -0
- package/opus/silk/biquad_alt.c +121 -0
- package/opus/silk/bwexpander.c +51 -0
- package/opus/silk/bwexpander_32.c +51 -0
- package/opus/silk/check_control_input.c +106 -0
- package/opus/silk/code_signs.c +115 -0
- package/opus/silk/control.h +161 -0
- package/opus/silk/control_SNR.c +113 -0
- package/opus/silk/control_audio_bandwidth.c +132 -0
- package/opus/silk/control_codec.c +423 -0
- package/opus/silk/debug.c +174 -0
- package/opus/silk/debug.h +267 -0
- package/opus/silk/dec_API.c +465 -0
- package/opus/silk/decode_core.c +243 -0
- package/opus/silk/decode_frame.c +169 -0
- package/opus/silk/decode_indices.c +151 -0
- package/opus/silk/decode_parameters.c +115 -0
- package/opus/silk/decode_pitch.c +77 -0
- package/opus/silk/decode_pulses.c +115 -0
- package/opus/silk/decoder_set_fs.c +108 -0
- package/opus/silk/define.h +235 -0
- package/opus/silk/enc_API.c +593 -0
- package/opus/silk/encode_indices.c +181 -0
- package/opus/silk/encode_pulses.c +206 -0
- package/opus/silk/errors.h +98 -0
- package/opus/silk/fixed/LTP_analysis_filter_FIX.c +90 -0
- package/opus/silk/fixed/LTP_scale_ctrl_FIX.c +58 -0
- package/opus/silk/fixed/apply_sine_window_FIX.c +101 -0
- package/opus/silk/fixed/arm/warped_autocorrelation_FIX_arm.h +68 -0
- package/opus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c +265 -0
- package/opus/silk/fixed/autocorr_FIX.c +48 -0
- package/opus/silk/fixed/burg_modified_FIX.c +280 -0
- package/opus/silk/fixed/corrMatrix_FIX.c +150 -0
- package/opus/silk/fixed/encode_frame_FIX.c +444 -0
- package/opus/silk/fixed/find_LPC_FIX.c +151 -0
- package/opus/silk/fixed/find_LTP_FIX.c +99 -0
- package/opus/silk/fixed/find_pitch_lags_FIX.c +143 -0
- package/opus/silk/fixed/find_pred_coefs_FIX.c +146 -0
- package/opus/silk/fixed/k2a_FIX.c +54 -0
- package/opus/silk/fixed/k2a_Q16_FIX.c +54 -0
- package/opus/silk/fixed/main_FIX.h +244 -0
- package/opus/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h +336 -0
- package/opus/silk/fixed/mips/prefilter_FIX_mipsr1.h +184 -0
- package/opus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h +165 -0
- package/opus/silk/fixed/noise_shape_analysis_FIX.c +407 -0
- package/opus/silk/fixed/pitch_analysis_core_FIX.c +721 -0
- package/opus/silk/fixed/process_gains_FIX.c +117 -0
- package/opus/silk/fixed/regularize_correlations_FIX.c +47 -0
- package/opus/silk/fixed/residual_energy16_FIX.c +103 -0
- package/opus/silk/fixed/residual_energy_FIX.c +98 -0
- package/opus/silk/fixed/schur64_FIX.c +93 -0
- package/opus/silk/fixed/schur_FIX.c +107 -0
- package/opus/silk/fixed/structs_FIX.h +116 -0
- package/opus/silk/fixed/vector_ops_FIX.c +102 -0
- package/opus/silk/fixed/warped_autocorrelation_FIX.c +92 -0
- package/opus/silk/fixed/x86/burg_modified_FIX_sse4_1.c +400 -0
- package/opus/silk/fixed/x86/vector_ops_FIX_sse4_1.c +93 -0
- package/opus/silk/float/LPC_analysis_filter_FLP.c +249 -0
- package/opus/silk/float/LPC_inv_pred_gain_FLP.c +73 -0
- package/opus/silk/float/LTP_analysis_filter_FLP.c +75 -0
- package/opus/silk/float/LTP_scale_ctrl_FLP.c +58 -0
- package/opus/silk/float/SigProc_FLP.h +205 -0
- package/opus/silk/float/apply_sine_window_FLP.c +81 -0
- package/opus/silk/float/autocorrelation_FLP.c +53 -0
- package/opus/silk/float/burg_modified_FLP.c +187 -0
- package/opus/silk/float/bwexpander_FLP.c +49 -0
- package/opus/silk/float/corrMatrix_FLP.c +95 -0
- package/opus/silk/float/encode_frame_FLP.c +432 -0
- package/opus/silk/float/energy_FLP.c +59 -0
- package/opus/silk/float/find_LPC_FLP.c +105 -0
- package/opus/silk/float/find_LTP_FLP.c +65 -0
- package/opus/silk/float/find_pitch_lags_FLP.c +132 -0
- package/opus/silk/float/find_pred_coefs_FLP.c +117 -0
- package/opus/silk/float/inner_product_FLP.c +59 -0
- package/opus/silk/float/k2a_FLP.c +54 -0
- package/opus/silk/float/main_FLP.h +290 -0
- package/opus/silk/float/noise_shape_analysis_FLP.c +350 -0
- package/opus/silk/float/pitch_analysis_core_FLP.c +630 -0
- package/opus/silk/float/process_gains_FLP.c +103 -0
- package/opus/silk/float/regularize_correlations_FLP.c +48 -0
- package/opus/silk/float/residual_energy_FLP.c +117 -0
- package/opus/silk/float/scale_copy_vector_FLP.c +57 -0
- package/opus/silk/float/scale_vector_FLP.c +56 -0
- package/opus/silk/float/schur_FLP.c +70 -0
- package/opus/silk/float/sort_FLP.c +83 -0
- package/opus/silk/float/structs_FLP.h +112 -0
- package/opus/silk/float/warped_autocorrelation_FLP.c +75 -0
- package/opus/silk/float/wrappers_FLP.c +209 -0
- package/opus/silk/float/x86/inner_product_FLP_avx2.c +85 -0
- package/opus/silk/gain_quant.c +142 -0
- package/opus/silk/init_decoder.c +84 -0
- package/opus/silk/init_encoder.c +68 -0
- package/opus/silk/inner_prod_aligned.c +47 -0
- package/opus/silk/interpolate.c +51 -0
- package/opus/silk/lin2log.c +46 -0
- package/opus/silk/log2lin.c +58 -0
- package/opus/silk/macros.h +151 -0
- package/opus/silk/main.h +486 -0
- package/opus/silk/meson.build +69 -0
- package/opus/silk/mips/NSQ_del_dec_mipsr1.h +410 -0
- package/opus/silk/mips/macros_mipsr1.h +92 -0
- package/opus/silk/mips/sigproc_fix_mipsr1.h +60 -0
- package/opus/silk/pitch_est_defines.h +88 -0
- package/opus/silk/pitch_est_tables.c +99 -0
- package/opus/silk/process_NLSFs.c +107 -0
- package/opus/silk/quant_LTP_gains.c +132 -0
- package/opus/silk/resampler.c +215 -0
- package/opus/silk/resampler_down2.c +74 -0
- package/opus/silk/resampler_down2_3.c +103 -0
- package/opus/silk/resampler_private.h +88 -0
- package/opus/silk/resampler_private_AR2.c +55 -0
- package/opus/silk/resampler_private_IIR_FIR.c +107 -0
- package/opus/silk/resampler_private_down_FIR.c +194 -0
- package/opus/silk/resampler_private_up2_HQ.c +113 -0
- package/opus/silk/resampler_rom.c +96 -0
- package/opus/silk/resampler_rom.h +68 -0
- package/opus/silk/resampler_structs.h +60 -0
- package/opus/silk/shell_coder.c +151 -0
- package/opus/silk/sigm_Q15.c +76 -0
- package/opus/silk/sort.c +154 -0
- package/opus/silk/stereo_LR_to_MS.c +229 -0
- package/opus/silk/stereo_MS_to_LR.c +85 -0
- package/opus/silk/stereo_decode_pred.c +73 -0
- package/opus/silk/stereo_encode_pred.c +62 -0
- package/opus/silk/stereo_find_predictor.c +79 -0
- package/opus/silk/stereo_quant_pred.c +73 -0
- package/opus/silk/structs.h +357 -0
- package/opus/silk/sum_sqr_shift.c +83 -0
- package/opus/silk/table_LSF_cos.c +70 -0
- package/opus/silk/tables.h +114 -0
- package/opus/silk/tables_LTP.c +294 -0
- package/opus/silk/tables_NLSF_CB_NB_MB.c +195 -0
- package/opus/silk/tables_NLSF_CB_WB.c +234 -0
- package/opus/silk/tables_gain.c +63 -0
- package/opus/silk/tables_other.c +124 -0
- package/opus/silk/tables_pitch_lag.c +69 -0
- package/opus/silk/tables_pulses_per_block.c +264 -0
- package/opus/silk/tests/meson.build +8 -0
- package/opus/silk/tests/test_unit_LPC_inv_pred_gain.c +130 -0
- package/opus/silk/tuning_parameters.h +155 -0
- package/opus/silk/typedef.h +81 -0
- package/opus/silk/x86/NSQ_del_dec_avx2.c +1075 -0
- package/opus/silk/x86/NSQ_del_dec_sse4_1.c +915 -0
- package/opus/silk/x86/NSQ_sse4_1.c +772 -0
- package/opus/silk/x86/SigProc_FIX_sse.h +99 -0
- package/opus/silk/x86/VAD_sse4_1.c +289 -0
- package/opus/silk/x86/VQ_WMat_EC_sse4_1.c +173 -0
- package/opus/silk/x86/main_sse.h +299 -0
- package/opus/silk/x86/x86_silk_map.c +179 -0
- package/opus/silk_headers.mk +44 -0
- package/opus/silk_sources.mk +164 -0
- package/opus/src/analysis.c +979 -0
- package/opus/src/analysis.h +103 -0
- package/opus/src/extensions.c +663 -0
- package/opus/src/mapping_matrix.c +993 -0
- package/opus/src/mapping_matrix.h +165 -0
- package/opus/src/meson.build +45 -0
- package/opus/src/mlp.c +132 -0
- package/opus/src/mlp.h +60 -0
- package/opus/src/mlp_data.c +672 -0
- package/opus/src/opus.c +362 -0
- package/opus/src/opus_compare.c +382 -0
- package/opus/src/opus_decoder.c +1579 -0
- package/opus/src/opus_demo.c +1194 -0
- package/opus/src/opus_encoder.c +3180 -0
- package/opus/src/opus_multistream.c +92 -0
- package/opus/src/opus_multistream_decoder.c +563 -0
- package/opus/src/opus_multistream_encoder.c +1321 -0
- package/opus/src/opus_private.h +263 -0
- package/opus/src/opus_projection_decoder.c +283 -0
- package/opus/src/opus_projection_encoder.c +522 -0
- package/opus/src/repacketizer.c +469 -0
- package/opus/src/repacketizer_demo.c +247 -0
- package/opus/src/tansig_table.h +45 -0
- package/opus/tar_list.txt +28 -0
- package/opus/tests/meson.build +39 -0
- package/opus/tests/opus_build_test.sh +29 -0
- package/opus/tests/opus_decode_fuzzer.c +124 -0
- package/opus/tests/opus_decode_fuzzer.options +2 -0
- package/opus/tests/opus_encode_regressions.c +1034 -0
- package/opus/tests/random_config.sh +126 -0
- package/opus/tests/run_vectors.sh +143 -0
- package/opus/tests/test_opus_api.c +1904 -0
- package/opus/tests/test_opus_common.h +86 -0
- package/opus/tests/test_opus_custom.c +694 -0
- package/opus/tests/test_opus_decode.c +481 -0
- package/opus/tests/test_opus_dred.c +107 -0
- package/opus/tests/test_opus_encode.c +738 -0
- package/opus/tests/test_opus_extensions.c +750 -0
- package/opus/tests/test_opus_padding.c +94 -0
- package/opus/tests/test_opus_projection.c +384 -0
- package/opus/training/rnn_dump.py +66 -0
- package/opus/training/rnn_train.py +177 -0
- package/opus/training/txt2hdf5.py +12 -0
- package/opus/update_version +65 -0
- package/package.json +2 -2
- package/src/build-ffmpeg-msys.sh +8 -2
- package/test.mp4 +0 -0
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/* Copyright (c) 2014, Cisco Systems, INC
|
|
2
|
+
Written by XiangMingZhu WeiZhou MinPeng YanWang
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions
|
|
6
|
+
are met:
|
|
7
|
+
|
|
8
|
+
- Redistributions of source code must retain the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
12
|
+
notice, this list of conditions and the following disclaimer in the
|
|
13
|
+
documentation and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
16
|
+
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
17
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
18
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
|
19
|
+
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
20
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
21
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
22
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
23
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
24
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
25
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
#if defined(HAVE_CONFIG_H)
|
|
29
|
+
#include "config.h"
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#include "x86/x86cpu.h"
|
|
33
|
+
#include "celt_lpc.h"
|
|
34
|
+
#include "pitch.h"
|
|
35
|
+
#include "pitch_sse.h"
|
|
36
|
+
#include "vq.h"
|
|
37
|
+
|
|
38
|
+
#if defined(OPUS_HAVE_RTCD)
|
|
39
|
+
|
|
40
|
+
# if defined(FIXED_POINT)
|
|
41
|
+
|
|
42
|
+
#if defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)
|
|
43
|
+
|
|
44
|
+
void (*const CELT_FIR_IMPL[OPUS_ARCHMASK + 1])(
|
|
45
|
+
const opus_val16 *x,
|
|
46
|
+
const opus_val16 *num,
|
|
47
|
+
opus_val16 *y,
|
|
48
|
+
int N,
|
|
49
|
+
int ord,
|
|
50
|
+
int arch
|
|
51
|
+
) = {
|
|
52
|
+
celt_fir_c, /* non-sse */
|
|
53
|
+
celt_fir_c,
|
|
54
|
+
celt_fir_c,
|
|
55
|
+
MAY_HAVE_SSE4_1(celt_fir), /* sse4.1 */
|
|
56
|
+
MAY_HAVE_SSE4_1(celt_fir) /* avx */
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
|
|
60
|
+
const opus_val16 *x,
|
|
61
|
+
const opus_val16 *y,
|
|
62
|
+
opus_val32 sum[4],
|
|
63
|
+
int len
|
|
64
|
+
) = {
|
|
65
|
+
xcorr_kernel_c, /* non-sse */
|
|
66
|
+
xcorr_kernel_c,
|
|
67
|
+
xcorr_kernel_c,
|
|
68
|
+
MAY_HAVE_SSE4_1(xcorr_kernel), /* sse4.1 */
|
|
69
|
+
MAY_HAVE_SSE4_1(xcorr_kernel) /* avx */
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
#endif
|
|
73
|
+
|
|
74
|
+
#if (defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)) || \
|
|
75
|
+
(!defined(OPUS_X86_MAY_HAVE_SSE_4_1) && defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2))
|
|
76
|
+
|
|
77
|
+
opus_val32 (*const CELT_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
|
|
78
|
+
const opus_val16 *x,
|
|
79
|
+
const opus_val16 *y,
|
|
80
|
+
int N
|
|
81
|
+
) = {
|
|
82
|
+
celt_inner_prod_c, /* non-sse */
|
|
83
|
+
celt_inner_prod_c,
|
|
84
|
+
MAY_HAVE_SSE2(celt_inner_prod),
|
|
85
|
+
MAY_HAVE_SSE4_1(celt_inner_prod), /* sse4.1 */
|
|
86
|
+
MAY_HAVE_SSE4_1(celt_inner_prod) /* avx */
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
#endif
|
|
90
|
+
|
|
91
|
+
# else
|
|
92
|
+
|
|
93
|
+
#if defined(OPUS_X86_MAY_HAVE_AVX2) && !defined(OPUS_X86_PRESUME_AVX2)
|
|
94
|
+
|
|
95
|
+
void (*const PITCH_XCORR_IMPL[OPUS_ARCHMASK + 1])(
|
|
96
|
+
const float *_x,
|
|
97
|
+
const float *_y,
|
|
98
|
+
float *xcorr,
|
|
99
|
+
int len,
|
|
100
|
+
int max_pitch,
|
|
101
|
+
int arch
|
|
102
|
+
) = {
|
|
103
|
+
celt_pitch_xcorr_c, /* non-sse */
|
|
104
|
+
celt_pitch_xcorr_c,
|
|
105
|
+
celt_pitch_xcorr_c,
|
|
106
|
+
celt_pitch_xcorr_c,
|
|
107
|
+
MAY_HAVE_AVX2(celt_pitch_xcorr)
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
#endif
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
#if defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE)
|
|
114
|
+
|
|
115
|
+
void (*const XCORR_KERNEL_IMPL[OPUS_ARCHMASK + 1])(
|
|
116
|
+
const opus_val16 *x,
|
|
117
|
+
const opus_val16 *y,
|
|
118
|
+
opus_val32 sum[4],
|
|
119
|
+
int len
|
|
120
|
+
) = {
|
|
121
|
+
xcorr_kernel_c, /* non-sse */
|
|
122
|
+
MAY_HAVE_SSE(xcorr_kernel),
|
|
123
|
+
MAY_HAVE_SSE(xcorr_kernel),
|
|
124
|
+
MAY_HAVE_SSE(xcorr_kernel),
|
|
125
|
+
MAY_HAVE_SSE(xcorr_kernel)
|
|
126
|
+
};
|
|
127
|
+
|
|
128
|
+
opus_val32 (*const CELT_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
|
|
129
|
+
const opus_val16 *x,
|
|
130
|
+
const opus_val16 *y,
|
|
131
|
+
int N
|
|
132
|
+
) = {
|
|
133
|
+
celt_inner_prod_c, /* non-sse */
|
|
134
|
+
MAY_HAVE_SSE(celt_inner_prod),
|
|
135
|
+
MAY_HAVE_SSE(celt_inner_prod),
|
|
136
|
+
MAY_HAVE_SSE(celt_inner_prod),
|
|
137
|
+
MAY_HAVE_SSE(celt_inner_prod)
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
void (*const DUAL_INNER_PROD_IMPL[OPUS_ARCHMASK + 1])(
|
|
141
|
+
const opus_val16 *x,
|
|
142
|
+
const opus_val16 *y01,
|
|
143
|
+
const opus_val16 *y02,
|
|
144
|
+
int N,
|
|
145
|
+
opus_val32 *xy1,
|
|
146
|
+
opus_val32 *xy2
|
|
147
|
+
) = {
|
|
148
|
+
dual_inner_prod_c, /* non-sse */
|
|
149
|
+
MAY_HAVE_SSE(dual_inner_prod),
|
|
150
|
+
MAY_HAVE_SSE(dual_inner_prod),
|
|
151
|
+
MAY_HAVE_SSE(dual_inner_prod),
|
|
152
|
+
MAY_HAVE_SSE(dual_inner_prod)
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
void (*const COMB_FILTER_CONST_IMPL[OPUS_ARCHMASK + 1])(
|
|
156
|
+
opus_val32 *y,
|
|
157
|
+
opus_val32 *x,
|
|
158
|
+
int T,
|
|
159
|
+
int N,
|
|
160
|
+
opus_val16 g10,
|
|
161
|
+
opus_val16 g11,
|
|
162
|
+
opus_val16 g12
|
|
163
|
+
) = {
|
|
164
|
+
comb_filter_const_c, /* non-sse */
|
|
165
|
+
MAY_HAVE_SSE(comb_filter_const),
|
|
166
|
+
MAY_HAVE_SSE(comb_filter_const),
|
|
167
|
+
MAY_HAVE_SSE(comb_filter_const),
|
|
168
|
+
MAY_HAVE_SSE(comb_filter_const)
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
#endif
|
|
173
|
+
|
|
174
|
+
#if defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2)
|
|
175
|
+
opus_val16 (*const OP_PVQ_SEARCH_IMPL[OPUS_ARCHMASK + 1])(
|
|
176
|
+
celt_norm *_X, int *iy, int K, int N, int arch
|
|
177
|
+
) = {
|
|
178
|
+
op_pvq_search_c, /* non-sse */
|
|
179
|
+
op_pvq_search_c,
|
|
180
|
+
MAY_HAVE_SSE2(op_pvq_search),
|
|
181
|
+
MAY_HAVE_SSE2(op_pvq_search),
|
|
182
|
+
MAY_HAVE_SSE2(op_pvq_search)
|
|
183
|
+
};
|
|
184
|
+
#endif
|
|
185
|
+
|
|
186
|
+
#endif
|
|
187
|
+
#endif
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/* Copyright (c) 2014, Cisco Systems, INC
|
|
2
|
+
Written by XiangMingZhu WeiZhou MinPeng YanWang
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions
|
|
6
|
+
are met:
|
|
7
|
+
|
|
8
|
+
- Redistributions of source code must retain the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
12
|
+
notice, this list of conditions and the following disclaimer in the
|
|
13
|
+
documentation and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
16
|
+
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
17
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
18
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
|
19
|
+
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
20
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
21
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
22
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
23
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
24
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
25
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
#ifdef HAVE_CONFIG_H
|
|
29
|
+
#include "config.h"
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#include "cpu_support.h"
|
|
33
|
+
#include "macros.h"
|
|
34
|
+
#include "main.h"
|
|
35
|
+
#include "pitch.h"
|
|
36
|
+
#include "x86cpu.h"
|
|
37
|
+
|
|
38
|
+
#if defined(OPUS_HAVE_RTCD) && \
|
|
39
|
+
((defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE)) || \
|
|
40
|
+
(defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2)) || \
|
|
41
|
+
(defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)) || \
|
|
42
|
+
(defined(OPUS_X86_MAY_HAVE_AVX2) && !defined(OPUS_X86_PRESUME_AVX2)))
|
|
43
|
+
|
|
44
|
+
#if defined(_MSC_VER)
|
|
45
|
+
|
|
46
|
+
#include <intrin.h>
|
|
47
|
+
static _inline void cpuid(unsigned int CPUInfo[4], unsigned int InfoType)
|
|
48
|
+
{
|
|
49
|
+
__cpuid((int*)CPUInfo, InfoType);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
#else
|
|
53
|
+
|
|
54
|
+
#if defined(CPU_INFO_BY_C)
|
|
55
|
+
#include <cpuid.h>
|
|
56
|
+
#endif
|
|
57
|
+
|
|
58
|
+
static void cpuid(unsigned int CPUInfo[4], unsigned int InfoType)
|
|
59
|
+
{
|
|
60
|
+
#if defined(CPU_INFO_BY_ASM)
|
|
61
|
+
#if defined(__i386__) && defined(__PIC__)
|
|
62
|
+
/* %ebx is PIC register in 32-bit, so mustn't clobber it. */
|
|
63
|
+
__asm__ __volatile__ (
|
|
64
|
+
"xchg %%ebx, %1\n"
|
|
65
|
+
"cpuid\n"
|
|
66
|
+
"xchg %%ebx, %1\n":
|
|
67
|
+
"=a" (CPUInfo[0]),
|
|
68
|
+
"=r" (CPUInfo[1]),
|
|
69
|
+
"=c" (CPUInfo[2]),
|
|
70
|
+
"=d" (CPUInfo[3]) :
|
|
71
|
+
/* We clear ECX to avoid a valgrind false-positive prior to v3.17.0. */
|
|
72
|
+
"0" (InfoType), "2" (0)
|
|
73
|
+
);
|
|
74
|
+
#else
|
|
75
|
+
__asm__ __volatile__ (
|
|
76
|
+
"cpuid":
|
|
77
|
+
"=a" (CPUInfo[0]),
|
|
78
|
+
"=b" (CPUInfo[1]),
|
|
79
|
+
"=c" (CPUInfo[2]),
|
|
80
|
+
"=d" (CPUInfo[3]) :
|
|
81
|
+
/* We clear ECX to avoid a valgrind false-positive prior to v3.17.0. */
|
|
82
|
+
"0" (InfoType), "2" (0)
|
|
83
|
+
);
|
|
84
|
+
#endif
|
|
85
|
+
#elif defined(CPU_INFO_BY_C)
|
|
86
|
+
/* We use __get_cpuid_count to clear ECX to avoid a valgrind false-positive
|
|
87
|
+
prior to v3.17.0.*/
|
|
88
|
+
if (!__get_cpuid_count(InfoType, 0, &(CPUInfo[0]), &(CPUInfo[1]), &(CPUInfo[2]), &(CPUInfo[3]))) {
|
|
89
|
+
/* Our function cannot fail, but __get_cpuid{_count} can.
|
|
90
|
+
Returning all zeroes will effectively disable all SIMD, which is
|
|
91
|
+
what we want on CPUs that don't support CPUID. */
|
|
92
|
+
CPUInfo[3] = CPUInfo[2] = CPUInfo[1] = CPUInfo[0] = 0;
|
|
93
|
+
}
|
|
94
|
+
#else
|
|
95
|
+
# error "Configured to use x86 RTCD, but no CPU detection method available. " \
|
|
96
|
+
"Reconfigure with --disable-rtcd (or send patches)."
|
|
97
|
+
#endif
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
#endif
|
|
101
|
+
|
|
102
|
+
typedef struct CPU_Feature{
|
|
103
|
+
/* SIMD: 128-bit */
|
|
104
|
+
int HW_SSE;
|
|
105
|
+
int HW_SSE2;
|
|
106
|
+
int HW_SSE41;
|
|
107
|
+
/* SIMD: 256-bit */
|
|
108
|
+
int HW_AVX2;
|
|
109
|
+
} CPU_Feature;
|
|
110
|
+
|
|
111
|
+
static void opus_cpu_feature_check(CPU_Feature *cpu_feature)
|
|
112
|
+
{
|
|
113
|
+
unsigned int info[4];
|
|
114
|
+
unsigned int nIds = 0;
|
|
115
|
+
|
|
116
|
+
cpuid(info, 0);
|
|
117
|
+
nIds = info[0];
|
|
118
|
+
|
|
119
|
+
if (nIds >= 1){
|
|
120
|
+
cpuid(info, 1);
|
|
121
|
+
cpu_feature->HW_SSE = (info[3] & (1 << 25)) != 0;
|
|
122
|
+
cpu_feature->HW_SSE2 = (info[3] & (1 << 26)) != 0;
|
|
123
|
+
cpu_feature->HW_SSE41 = (info[2] & (1 << 19)) != 0;
|
|
124
|
+
cpu_feature->HW_AVX2 = (info[2] & (1 << 28)) != 0 && (info[2] & (1 << 12)) != 0;
|
|
125
|
+
if (cpu_feature->HW_AVX2 && nIds >= 7) {
|
|
126
|
+
cpuid(info, 7);
|
|
127
|
+
cpu_feature->HW_AVX2 = cpu_feature->HW_AVX2 && (info[1] & (1 << 5)) != 0;
|
|
128
|
+
} else {
|
|
129
|
+
cpu_feature->HW_AVX2 = 0;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
cpu_feature->HW_SSE = 0;
|
|
134
|
+
cpu_feature->HW_SSE2 = 0;
|
|
135
|
+
cpu_feature->HW_SSE41 = 0;
|
|
136
|
+
cpu_feature->HW_AVX2 = 0;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
static int opus_select_arch_impl(void)
|
|
141
|
+
{
|
|
142
|
+
CPU_Feature cpu_feature;
|
|
143
|
+
int arch;
|
|
144
|
+
|
|
145
|
+
opus_cpu_feature_check(&cpu_feature);
|
|
146
|
+
|
|
147
|
+
arch = 0;
|
|
148
|
+
if (!cpu_feature.HW_SSE)
|
|
149
|
+
{
|
|
150
|
+
return arch;
|
|
151
|
+
}
|
|
152
|
+
arch++;
|
|
153
|
+
|
|
154
|
+
if (!cpu_feature.HW_SSE2)
|
|
155
|
+
{
|
|
156
|
+
return arch;
|
|
157
|
+
}
|
|
158
|
+
arch++;
|
|
159
|
+
|
|
160
|
+
if (!cpu_feature.HW_SSE41)
|
|
161
|
+
{
|
|
162
|
+
return arch;
|
|
163
|
+
}
|
|
164
|
+
arch++;
|
|
165
|
+
|
|
166
|
+
if (!cpu_feature.HW_AVX2)
|
|
167
|
+
{
|
|
168
|
+
return arch;
|
|
169
|
+
}
|
|
170
|
+
arch++;
|
|
171
|
+
|
|
172
|
+
return arch;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
int opus_select_arch(void) {
|
|
176
|
+
int arch = opus_select_arch_impl();
|
|
177
|
+
#ifdef FUZZING
|
|
178
|
+
/* Randomly downgrade the architecture. */
|
|
179
|
+
arch = rand()%(arch+1);
|
|
180
|
+
#endif
|
|
181
|
+
return arch;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
#endif
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/* Copyright (c) 2014, Cisco Systems, INC
|
|
2
|
+
Written by XiangMingZhu WeiZhou MinPeng YanWang
|
|
3
|
+
|
|
4
|
+
Redistribution and use in source and binary forms, with or without
|
|
5
|
+
modification, are permitted provided that the following conditions
|
|
6
|
+
are met:
|
|
7
|
+
|
|
8
|
+
- Redistributions of source code must retain the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer.
|
|
10
|
+
|
|
11
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
12
|
+
notice, this list of conditions and the following disclaimer in the
|
|
13
|
+
documentation and/or other materials provided with the distribution.
|
|
14
|
+
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
16
|
+
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
17
|
+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
18
|
+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
|
|
19
|
+
OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
20
|
+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
21
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
22
|
+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
|
23
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
|
24
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
25
|
+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
#if !defined(X86CPU_H)
|
|
29
|
+
# define X86CPU_H
|
|
30
|
+
|
|
31
|
+
# if defined(OPUS_X86_MAY_HAVE_SSE)
|
|
32
|
+
# define MAY_HAVE_SSE(name) name ## _sse
|
|
33
|
+
# else
|
|
34
|
+
# define MAY_HAVE_SSE(name) name ## _c
|
|
35
|
+
# endif
|
|
36
|
+
|
|
37
|
+
# if defined(OPUS_X86_MAY_HAVE_SSE2)
|
|
38
|
+
# define MAY_HAVE_SSE2(name) name ## _sse2
|
|
39
|
+
# else
|
|
40
|
+
# define MAY_HAVE_SSE2(name) name ## _c
|
|
41
|
+
# endif
|
|
42
|
+
|
|
43
|
+
# if defined(OPUS_X86_MAY_HAVE_SSE4_1)
|
|
44
|
+
# define MAY_HAVE_SSE4_1(name) name ## _sse4_1
|
|
45
|
+
# else
|
|
46
|
+
# define MAY_HAVE_SSE4_1(name) name ## _c
|
|
47
|
+
# endif
|
|
48
|
+
|
|
49
|
+
# if defined(OPUS_X86_MAY_HAVE_AVX2)
|
|
50
|
+
# define MAY_HAVE_AVX2(name) name ## _avx2
|
|
51
|
+
# else
|
|
52
|
+
# define MAY_HAVE_AVX2(name) name ## _c
|
|
53
|
+
# endif
|
|
54
|
+
|
|
55
|
+
# if defined(OPUS_HAVE_RTCD) && \
|
|
56
|
+
((defined(OPUS_X86_MAY_HAVE_SSE) && !defined(OPUS_X86_PRESUME_SSE)) || \
|
|
57
|
+
(defined(OPUS_X86_MAY_HAVE_SSE2) && !defined(OPUS_X86_PRESUME_SSE2)) || \
|
|
58
|
+
(defined(OPUS_X86_MAY_HAVE_SSE4_1) && !defined(OPUS_X86_PRESUME_SSE4_1)) || \
|
|
59
|
+
(defined(OPUS_X86_MAY_HAVE_AVX2) && !defined(OPUS_X86_PRESUME_AVX2)))
|
|
60
|
+
int opus_select_arch(void);
|
|
61
|
+
# endif
|
|
62
|
+
|
|
63
|
+
# if defined(OPUS_X86_MAY_HAVE_SSE2)
|
|
64
|
+
# include "opus_defines.h"
|
|
65
|
+
|
|
66
|
+
/*MOVD should not impose any alignment restrictions, but the C standard does,
|
|
67
|
+
and UBSan will report errors if we actually make unaligned accesses.
|
|
68
|
+
Use this to work around those restrictions (which should hopefully all get
|
|
69
|
+
optimized to a single MOVD instruction).
|
|
70
|
+
GCC implemented _mm_loadu_si32() since GCC 11; HOWEVER, there is a bug!
|
|
71
|
+
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99754
|
|
72
|
+
LLVM implemented _mm_loadu_si32() since Clang 8.0, however the
|
|
73
|
+
__clang_major__ version number macro is unreliable, as vendors
|
|
74
|
+
(specifically, Apple) will use different numbering schemes than upstream.
|
|
75
|
+
Clang's advice is "use feature detection", but they do not provide feature
|
|
76
|
+
detection support for specific SIMD functions.
|
|
77
|
+
We follow the approach from the SIMDe project and instead detect unrelated
|
|
78
|
+
features that should be available in the version we want (see
|
|
79
|
+
<https://github.com/simd-everywhere/simde/blob/master/simde/simde-detect-clang.h>).*/
|
|
80
|
+
# if defined(__clang__)
|
|
81
|
+
# if __has_warning("-Wextra-semi-stmt") || \
|
|
82
|
+
__has_builtin(__builtin_rotateleft32)
|
|
83
|
+
# define OPUS_CLANG_8 (1)
|
|
84
|
+
# endif
|
|
85
|
+
# endif
|
|
86
|
+
# if !defined(_MSC_VER) && !OPUS_GNUC_PREREQ(11,3) && !defined(OPUS_CLANG_8)
|
|
87
|
+
# include <string.h>
|
|
88
|
+
# include <emmintrin.h>
|
|
89
|
+
|
|
90
|
+
# ifdef _mm_loadu_si32
|
|
91
|
+
# undef _mm_loadu_si32
|
|
92
|
+
# endif
|
|
93
|
+
# define _mm_loadu_si32 WORKAROUND_mm_loadu_si32
|
|
94
|
+
static inline __m128i WORKAROUND_mm_loadu_si32(void const* mem_addr) {
|
|
95
|
+
int val;
|
|
96
|
+
memcpy(&val, mem_addr, sizeof(val));
|
|
97
|
+
return _mm_cvtsi32_si128(val);
|
|
98
|
+
}
|
|
99
|
+
# elif defined(_MSC_VER)
|
|
100
|
+
/* MSVC needs this for _mm_loadu_si32 */
|
|
101
|
+
# include <immintrin.h>
|
|
102
|
+
# endif
|
|
103
|
+
|
|
104
|
+
# define OP_CVTEPI8_EPI32_M32(x) \
|
|
105
|
+
(_mm_cvtepi8_epi32(_mm_loadu_si32(x)))
|
|
106
|
+
|
|
107
|
+
# define OP_CVTEPI16_EPI32_M64(x) \
|
|
108
|
+
(_mm_cvtepi16_epi32(_mm_loadl_epi64((__m128i *)(void*)(x))))
|
|
109
|
+
|
|
110
|
+
# endif
|
|
111
|
+
|
|
112
|
+
#endif
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
CELT_HEAD = \
|
|
2
|
+
celt/arch.h \
|
|
3
|
+
celt/bands.h \
|
|
4
|
+
celt/celt.h \
|
|
5
|
+
celt/cpu_support.h \
|
|
6
|
+
include/opus_types.h \
|
|
7
|
+
include/opus_defines.h \
|
|
8
|
+
include/opus_custom.h \
|
|
9
|
+
celt/cwrs.h \
|
|
10
|
+
celt/ecintrin.h \
|
|
11
|
+
celt/entcode.h \
|
|
12
|
+
celt/entdec.h \
|
|
13
|
+
celt/entenc.h \
|
|
14
|
+
celt/fixed_debug.h \
|
|
15
|
+
celt/fixed_generic.h \
|
|
16
|
+
celt/float_cast.h \
|
|
17
|
+
celt/_kiss_fft_guts.h \
|
|
18
|
+
celt/kiss_fft.h \
|
|
19
|
+
celt/laplace.h \
|
|
20
|
+
celt/mathops.h \
|
|
21
|
+
celt/mdct.h \
|
|
22
|
+
celt/mfrngcod.h \
|
|
23
|
+
celt/modes.h \
|
|
24
|
+
celt/os_support.h \
|
|
25
|
+
celt/pitch.h \
|
|
26
|
+
celt/celt_lpc.h \
|
|
27
|
+
celt/x86/celt_lpc_sse.h \
|
|
28
|
+
celt/quant_bands.h \
|
|
29
|
+
celt/rate.h \
|
|
30
|
+
celt/stack_alloc.h \
|
|
31
|
+
celt/vq.h \
|
|
32
|
+
celt/static_modes_float.h \
|
|
33
|
+
celt/static_modes_fixed.h \
|
|
34
|
+
celt/static_modes_float_arm_ne10.h \
|
|
35
|
+
celt/static_modes_fixed_arm_ne10.h \
|
|
36
|
+
celt/arm/armcpu.h \
|
|
37
|
+
celt/arm/fixed_armv4.h \
|
|
38
|
+
celt/arm/fixed_armv5e.h \
|
|
39
|
+
celt/arm/fixed_arm64.h \
|
|
40
|
+
celt/arm/kiss_fft_armv4.h \
|
|
41
|
+
celt/arm/kiss_fft_armv5e.h \
|
|
42
|
+
celt/arm/pitch_arm.h \
|
|
43
|
+
celt/arm/fft_arm.h \
|
|
44
|
+
celt/arm/mdct_arm.h \
|
|
45
|
+
celt/mips/celt_mipsr1.h \
|
|
46
|
+
celt/mips/fixed_generic_mipsr1.h \
|
|
47
|
+
celt/mips/kiss_fft_mipsr1.h \
|
|
48
|
+
celt/mips/mdct_mipsr1.h \
|
|
49
|
+
celt/mips/pitch_mipsr1.h \
|
|
50
|
+
celt/mips/vq_mipsr1.h \
|
|
51
|
+
celt/x86/pitch_sse.h \
|
|
52
|
+
celt/x86/vq_sse.h \
|
|
53
|
+
celt/x86/x86_arch_macros.h \
|
|
54
|
+
celt/x86/x86cpu.h
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
CELT_SOURCES = \
|
|
2
|
+
celt/bands.c \
|
|
3
|
+
celt/celt.c \
|
|
4
|
+
celt/celt_encoder.c \
|
|
5
|
+
celt/celt_decoder.c \
|
|
6
|
+
celt/cwrs.c \
|
|
7
|
+
celt/entcode.c \
|
|
8
|
+
celt/entdec.c \
|
|
9
|
+
celt/entenc.c \
|
|
10
|
+
celt/kiss_fft.c \
|
|
11
|
+
celt/laplace.c \
|
|
12
|
+
celt/mathops.c \
|
|
13
|
+
celt/mdct.c \
|
|
14
|
+
celt/modes.c \
|
|
15
|
+
celt/pitch.c \
|
|
16
|
+
celt/celt_lpc.c \
|
|
17
|
+
celt/quant_bands.c \
|
|
18
|
+
celt/rate.c \
|
|
19
|
+
celt/vq.c
|
|
20
|
+
|
|
21
|
+
CELT_SOURCES_X86_RTCD = \
|
|
22
|
+
celt/x86/x86cpu.c \
|
|
23
|
+
celt/x86/x86_celt_map.c
|
|
24
|
+
|
|
25
|
+
CELT_SOURCES_SSE = \
|
|
26
|
+
celt/x86/pitch_sse.c
|
|
27
|
+
|
|
28
|
+
CELT_SOURCES_SSE2 = \
|
|
29
|
+
celt/x86/pitch_sse2.c \
|
|
30
|
+
celt/x86/vq_sse2.c
|
|
31
|
+
|
|
32
|
+
CELT_SOURCES_SSE4_1 = \
|
|
33
|
+
celt/x86/celt_lpc_sse4_1.c \
|
|
34
|
+
celt/x86/pitch_sse4_1.c
|
|
35
|
+
|
|
36
|
+
CELT_SOURCES_AVX2 = \
|
|
37
|
+
celt/x86/pitch_avx.c
|
|
38
|
+
|
|
39
|
+
CELT_SOURCES_ARM_RTCD = \
|
|
40
|
+
celt/arm/armcpu.c \
|
|
41
|
+
celt/arm/arm_celt_map.c
|
|
42
|
+
|
|
43
|
+
CELT_SOURCES_ARM_ASM = \
|
|
44
|
+
celt/arm/celt_pitch_xcorr_arm.s
|
|
45
|
+
|
|
46
|
+
CELT_AM_SOURCES_ARM_ASM = \
|
|
47
|
+
celt/arm/armopts.s.in
|
|
48
|
+
|
|
49
|
+
CELT_SOURCES_ARM_NEON_INTR = \
|
|
50
|
+
celt/arm/celt_neon_intr.c \
|
|
51
|
+
celt/arm/pitch_neon_intr.c
|
|
52
|
+
|
|
53
|
+
CELT_SOURCES_ARM_NE10 = \
|
|
54
|
+
celt/arm/celt_fft_ne10.c \
|
|
55
|
+
celt/arm/celt_mdct_ne10.c
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# - Compile and run code to check for C features
|
|
2
|
+
#
|
|
3
|
+
# This functions compiles a source file under the `cmake` folder
|
|
4
|
+
# and adds the corresponding `HAVE_[FILENAME]` flag to the CMake
|
|
5
|
+
# environment
|
|
6
|
+
#
|
|
7
|
+
# c_feature_check(<FLAG> [<VARIANT>])
|
|
8
|
+
#
|
|
9
|
+
# - Example
|
|
10
|
+
#
|
|
11
|
+
# include(CFeatureCheck)
|
|
12
|
+
# c_feature_check(VLA)
|
|
13
|
+
|
|
14
|
+
if(__c_feature_check)
|
|
15
|
+
return()
|
|
16
|
+
endif()
|
|
17
|
+
set(__c_feature_check INCLUDED)
|
|
18
|
+
|
|
19
|
+
function(c_feature_check FILE)
|
|
20
|
+
string(TOLOWER ${FILE} FILE)
|
|
21
|
+
string(TOUPPER ${FILE} VAR)
|
|
22
|
+
string(TOUPPER "${VAR}_SUPPORTED" FEATURE)
|
|
23
|
+
if (DEFINED ${VAR}_SUPPORTED)
|
|
24
|
+
set(${VAR}_SUPPORTED 1 PARENT_SCOPE)
|
|
25
|
+
return()
|
|
26
|
+
endif()
|
|
27
|
+
|
|
28
|
+
if (NOT DEFINED COMPILE_${FEATURE})
|
|
29
|
+
message(STATUS "Performing Test ${FEATURE}")
|
|
30
|
+
try_compile(COMPILE_${FEATURE} ${PROJECT_BINARY_DIR} ${PROJECT_SOURCE_DIR}/cmake/${FILE}.c)
|
|
31
|
+
endif()
|
|
32
|
+
|
|
33
|
+
if(COMPILE_${FEATURE})
|
|
34
|
+
message(STATUS "Performing Test ${FEATURE} -- success")
|
|
35
|
+
set(${VAR}_SUPPORTED 1 PARENT_SCOPE)
|
|
36
|
+
else()
|
|
37
|
+
message(STATUS "Performing Test ${FEATURE} -- failed to compile")
|
|
38
|
+
endif()
|
|
39
|
+
endfunction()
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Set a default build type if none was specified
|
|
2
|
+
if(__opus_buildtype)
|
|
3
|
+
return()
|
|
4
|
+
endif()
|
|
5
|
+
set(__opus_buildtype INCLUDED)
|
|
6
|
+
|
|
7
|
+
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
|
|
8
|
+
if(CMAKE_C_FLAGS)
|
|
9
|
+
message(STATUS "CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS})
|
|
10
|
+
else()
|
|
11
|
+
set(default_build_type "Release")
|
|
12
|
+
message(
|
|
13
|
+
STATUS
|
|
14
|
+
"Setting build type to '${default_build_type}' as none was specified and no CFLAGS was exported."
|
|
15
|
+
)
|
|
16
|
+
set(CMAKE_BUILD_TYPE "${default_build_type}"
|
|
17
|
+
CACHE STRING "Choose the type of build."
|
|
18
|
+
FORCE)
|
|
19
|
+
# Set the possible values of build type for cmake-gui
|
|
20
|
+
set_property(CACHE CMAKE_BUILD_TYPE
|
|
21
|
+
PROPERTY STRINGS
|
|
22
|
+
"Debug"
|
|
23
|
+
"Release"
|
|
24
|
+
"MinSizeRel"
|
|
25
|
+
"RelWithDebInfo")
|
|
26
|
+
endif()
|
|
27
|
+
endif()
|