@scrypted/libav 1.0.167 → 1.0.168
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/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
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
/***********************************************************************
|
|
2
|
+
Copyright (c) 2006-2011, Skype Limited. All rights reserved.
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions
|
|
5
|
+
are met:
|
|
6
|
+
- Redistributions of source code must retain the above copyright notice,
|
|
7
|
+
this list of conditions and the following disclaimer.
|
|
8
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
documentation and/or other materials provided with the distribution.
|
|
11
|
+
- Neither the name of Internet Society, IETF or IETF Trust, nor the
|
|
12
|
+
names of specific contributors, may be used to endorse or promote
|
|
13
|
+
products derived from this software without specific prior written
|
|
14
|
+
permission.
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
19
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
20
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
21
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
22
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
23
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
24
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
25
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
***********************************************************************/
|
|
27
|
+
|
|
28
|
+
#ifdef HAVE_CONFIG_H
|
|
29
|
+
#include "config.h"
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#include "main.h"
|
|
33
|
+
|
|
34
|
+
/* Encode side-information parameters to payload */
|
|
35
|
+
void silk_encode_indices(
|
|
36
|
+
silk_encoder_state *psEncC, /* I/O Encoder state */
|
|
37
|
+
ec_enc *psRangeEnc, /* I/O Compressor data structure */
|
|
38
|
+
opus_int FrameIndex, /* I Frame number */
|
|
39
|
+
opus_int encode_LBRR, /* I Flag indicating LBRR data is being encoded */
|
|
40
|
+
opus_int condCoding /* I The type of conditional coding to use */
|
|
41
|
+
)
|
|
42
|
+
{
|
|
43
|
+
opus_int i, k, typeOffset;
|
|
44
|
+
opus_int encode_absolute_lagIndex, delta_lagIndex;
|
|
45
|
+
opus_int16 ec_ix[ MAX_LPC_ORDER ];
|
|
46
|
+
opus_uint8 pred_Q8[ MAX_LPC_ORDER ];
|
|
47
|
+
const SideInfoIndices *psIndices;
|
|
48
|
+
|
|
49
|
+
if( encode_LBRR ) {
|
|
50
|
+
psIndices = &psEncC->indices_LBRR[ FrameIndex ];
|
|
51
|
+
} else {
|
|
52
|
+
psIndices = &psEncC->indices;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/*******************************************/
|
|
56
|
+
/* Encode signal type and quantizer offset */
|
|
57
|
+
/*******************************************/
|
|
58
|
+
typeOffset = 2 * psIndices->signalType + psIndices->quantOffsetType;
|
|
59
|
+
celt_assert( typeOffset >= 0 && typeOffset < 6 );
|
|
60
|
+
celt_assert( encode_LBRR == 0 || typeOffset >= 2 );
|
|
61
|
+
if( encode_LBRR || typeOffset >= 2 ) {
|
|
62
|
+
ec_enc_icdf( psRangeEnc, typeOffset - 2, silk_type_offset_VAD_iCDF, 8 );
|
|
63
|
+
} else {
|
|
64
|
+
ec_enc_icdf( psRangeEnc, typeOffset, silk_type_offset_no_VAD_iCDF, 8 );
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/****************/
|
|
68
|
+
/* Encode gains */
|
|
69
|
+
/****************/
|
|
70
|
+
/* first subframe */
|
|
71
|
+
if( condCoding == CODE_CONDITIONALLY ) {
|
|
72
|
+
/* conditional coding */
|
|
73
|
+
silk_assert( psIndices->GainsIndices[ 0 ] >= 0 && psIndices->GainsIndices[ 0 ] < MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 );
|
|
74
|
+
ec_enc_icdf( psRangeEnc, psIndices->GainsIndices[ 0 ], silk_delta_gain_iCDF, 8 );
|
|
75
|
+
} else {
|
|
76
|
+
/* independent coding, in two stages: MSB bits followed by 3 LSBs */
|
|
77
|
+
silk_assert( psIndices->GainsIndices[ 0 ] >= 0 && psIndices->GainsIndices[ 0 ] < N_LEVELS_QGAIN );
|
|
78
|
+
ec_enc_icdf( psRangeEnc, silk_RSHIFT( psIndices->GainsIndices[ 0 ], 3 ), silk_gain_iCDF[ psIndices->signalType ], 8 );
|
|
79
|
+
ec_enc_icdf( psRangeEnc, psIndices->GainsIndices[ 0 ] & 7, silk_uniform8_iCDF, 8 );
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/* remaining subframes */
|
|
83
|
+
for( i = 1; i < psEncC->nb_subfr; i++ ) {
|
|
84
|
+
silk_assert( psIndices->GainsIndices[ i ] >= 0 && psIndices->GainsIndices[ i ] < MAX_DELTA_GAIN_QUANT - MIN_DELTA_GAIN_QUANT + 1 );
|
|
85
|
+
ec_enc_icdf( psRangeEnc, psIndices->GainsIndices[ i ], silk_delta_gain_iCDF, 8 );
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/****************/
|
|
89
|
+
/* Encode NLSFs */
|
|
90
|
+
/****************/
|
|
91
|
+
ec_enc_icdf( psRangeEnc, psIndices->NLSFIndices[ 0 ], &psEncC->psNLSF_CB->CB1_iCDF[ ( psIndices->signalType >> 1 ) * psEncC->psNLSF_CB->nVectors ], 8 );
|
|
92
|
+
silk_NLSF_unpack( ec_ix, pred_Q8, psEncC->psNLSF_CB, psIndices->NLSFIndices[ 0 ] );
|
|
93
|
+
celt_assert( psEncC->psNLSF_CB->order == psEncC->predictLPCOrder );
|
|
94
|
+
for( i = 0; i < psEncC->psNLSF_CB->order; i++ ) {
|
|
95
|
+
if( psIndices->NLSFIndices[ i+1 ] >= NLSF_QUANT_MAX_AMPLITUDE ) {
|
|
96
|
+
ec_enc_icdf( psRangeEnc, 2 * NLSF_QUANT_MAX_AMPLITUDE, &psEncC->psNLSF_CB->ec_iCDF[ ec_ix[ i ] ], 8 );
|
|
97
|
+
ec_enc_icdf( psRangeEnc, psIndices->NLSFIndices[ i+1 ] - NLSF_QUANT_MAX_AMPLITUDE, silk_NLSF_EXT_iCDF, 8 );
|
|
98
|
+
} else if( psIndices->NLSFIndices[ i+1 ] <= -NLSF_QUANT_MAX_AMPLITUDE ) {
|
|
99
|
+
ec_enc_icdf( psRangeEnc, 0, &psEncC->psNLSF_CB->ec_iCDF[ ec_ix[ i ] ], 8 );
|
|
100
|
+
ec_enc_icdf( psRangeEnc, -psIndices->NLSFIndices[ i+1 ] - NLSF_QUANT_MAX_AMPLITUDE, silk_NLSF_EXT_iCDF, 8 );
|
|
101
|
+
} else {
|
|
102
|
+
ec_enc_icdf( psRangeEnc, psIndices->NLSFIndices[ i+1 ] + NLSF_QUANT_MAX_AMPLITUDE, &psEncC->psNLSF_CB->ec_iCDF[ ec_ix[ i ] ], 8 );
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/* Encode NLSF interpolation factor */
|
|
107
|
+
if( psEncC->nb_subfr == MAX_NB_SUBFR ) {
|
|
108
|
+
silk_assert( psIndices->NLSFInterpCoef_Q2 >= 0 && psIndices->NLSFInterpCoef_Q2 < 5 );
|
|
109
|
+
ec_enc_icdf( psRangeEnc, psIndices->NLSFInterpCoef_Q2, silk_NLSF_interpolation_factor_iCDF, 8 );
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
if( psIndices->signalType == TYPE_VOICED )
|
|
113
|
+
{
|
|
114
|
+
/*********************/
|
|
115
|
+
/* Encode pitch lags */
|
|
116
|
+
/*********************/
|
|
117
|
+
/* lag index */
|
|
118
|
+
encode_absolute_lagIndex = 1;
|
|
119
|
+
if( condCoding == CODE_CONDITIONALLY && psEncC->ec_prevSignalType == TYPE_VOICED ) {
|
|
120
|
+
/* Delta Encoding */
|
|
121
|
+
delta_lagIndex = psIndices->lagIndex - psEncC->ec_prevLagIndex;
|
|
122
|
+
if( delta_lagIndex < -8 || delta_lagIndex > 11 ) {
|
|
123
|
+
delta_lagIndex = 0;
|
|
124
|
+
} else {
|
|
125
|
+
delta_lagIndex = delta_lagIndex + 9;
|
|
126
|
+
encode_absolute_lagIndex = 0; /* Only use delta */
|
|
127
|
+
}
|
|
128
|
+
silk_assert( delta_lagIndex >= 0 && delta_lagIndex < 21 );
|
|
129
|
+
ec_enc_icdf( psRangeEnc, delta_lagIndex, silk_pitch_delta_iCDF, 8 );
|
|
130
|
+
}
|
|
131
|
+
if( encode_absolute_lagIndex ) {
|
|
132
|
+
/* Absolute encoding */
|
|
133
|
+
opus_int32 pitch_high_bits, pitch_low_bits;
|
|
134
|
+
pitch_high_bits = silk_DIV32_16( psIndices->lagIndex, silk_RSHIFT( psEncC->fs_kHz, 1 ) );
|
|
135
|
+
pitch_low_bits = psIndices->lagIndex - silk_SMULBB( pitch_high_bits, silk_RSHIFT( psEncC->fs_kHz, 1 ) );
|
|
136
|
+
silk_assert( pitch_low_bits < psEncC->fs_kHz / 2 );
|
|
137
|
+
silk_assert( pitch_high_bits < 32 );
|
|
138
|
+
ec_enc_icdf( psRangeEnc, pitch_high_bits, silk_pitch_lag_iCDF, 8 );
|
|
139
|
+
ec_enc_icdf( psRangeEnc, pitch_low_bits, psEncC->pitch_lag_low_bits_iCDF, 8 );
|
|
140
|
+
}
|
|
141
|
+
psEncC->ec_prevLagIndex = psIndices->lagIndex;
|
|
142
|
+
|
|
143
|
+
/* Countour index */
|
|
144
|
+
silk_assert( psIndices->contourIndex >= 0 );
|
|
145
|
+
silk_assert( ( psIndices->contourIndex < 34 && psEncC->fs_kHz > 8 && psEncC->nb_subfr == 4 ) ||
|
|
146
|
+
( psIndices->contourIndex < 11 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 4 ) ||
|
|
147
|
+
( psIndices->contourIndex < 12 && psEncC->fs_kHz > 8 && psEncC->nb_subfr == 2 ) ||
|
|
148
|
+
( psIndices->contourIndex < 3 && psEncC->fs_kHz == 8 && psEncC->nb_subfr == 2 ) );
|
|
149
|
+
ec_enc_icdf( psRangeEnc, psIndices->contourIndex, psEncC->pitch_contour_iCDF, 8 );
|
|
150
|
+
|
|
151
|
+
/********************/
|
|
152
|
+
/* Encode LTP gains */
|
|
153
|
+
/********************/
|
|
154
|
+
/* PERIndex value */
|
|
155
|
+
silk_assert( psIndices->PERIndex >= 0 && psIndices->PERIndex < 3 );
|
|
156
|
+
ec_enc_icdf( psRangeEnc, psIndices->PERIndex, silk_LTP_per_index_iCDF, 8 );
|
|
157
|
+
|
|
158
|
+
/* Codebook Indices */
|
|
159
|
+
for( k = 0; k < psEncC->nb_subfr; k++ ) {
|
|
160
|
+
silk_assert( psIndices->LTPIndex[ k ] >= 0 && psIndices->LTPIndex[ k ] < ( 8 << psIndices->PERIndex ) );
|
|
161
|
+
ec_enc_icdf( psRangeEnc, psIndices->LTPIndex[ k ], silk_LTP_gain_iCDF_ptrs[ psIndices->PERIndex ], 8 );
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**********************/
|
|
165
|
+
/* Encode LTP scaling */
|
|
166
|
+
/**********************/
|
|
167
|
+
if( condCoding == CODE_INDEPENDENTLY ) {
|
|
168
|
+
silk_assert( psIndices->LTP_scaleIndex >= 0 && psIndices->LTP_scaleIndex < 3 );
|
|
169
|
+
ec_enc_icdf( psRangeEnc, psIndices->LTP_scaleIndex, silk_LTPscale_iCDF, 8 );
|
|
170
|
+
}
|
|
171
|
+
silk_assert( !condCoding || psIndices->LTP_scaleIndex == 0 );
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
psEncC->ec_prevSignalType = psIndices->signalType;
|
|
175
|
+
|
|
176
|
+
/***************/
|
|
177
|
+
/* Encode seed */
|
|
178
|
+
/***************/
|
|
179
|
+
silk_assert( psIndices->Seed >= 0 && psIndices->Seed < 4 );
|
|
180
|
+
ec_enc_icdf( psRangeEnc, psIndices->Seed, silk_uniform4_iCDF, 8 );
|
|
181
|
+
}
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/***********************************************************************
|
|
2
|
+
Copyright (c) 2006-2011, Skype Limited. All rights reserved.
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions
|
|
5
|
+
are met:
|
|
6
|
+
- Redistributions of source code must retain the above copyright notice,
|
|
7
|
+
this list of conditions and the following disclaimer.
|
|
8
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
documentation and/or other materials provided with the distribution.
|
|
11
|
+
- Neither the name of Internet Society, IETF or IETF Trust, nor the
|
|
12
|
+
names of specific contributors, may be used to endorse or promote
|
|
13
|
+
products derived from this software without specific prior written
|
|
14
|
+
permission.
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
19
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
20
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
21
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
22
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
23
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
24
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
25
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
***********************************************************************/
|
|
27
|
+
|
|
28
|
+
#ifdef HAVE_CONFIG_H
|
|
29
|
+
#include "config.h"
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#include "main.h"
|
|
33
|
+
#include "stack_alloc.h"
|
|
34
|
+
|
|
35
|
+
/*********************************************/
|
|
36
|
+
/* Encode quantization indices of excitation */
|
|
37
|
+
/*********************************************/
|
|
38
|
+
|
|
39
|
+
static OPUS_INLINE opus_int combine_and_check( /* return ok */
|
|
40
|
+
opus_int *pulses_comb, /* O */
|
|
41
|
+
const opus_int *pulses_in, /* I */
|
|
42
|
+
opus_int max_pulses, /* I max value for sum of pulses */
|
|
43
|
+
opus_int len /* I number of output values */
|
|
44
|
+
)
|
|
45
|
+
{
|
|
46
|
+
opus_int k, sum;
|
|
47
|
+
|
|
48
|
+
for( k = 0; k < len; k++ ) {
|
|
49
|
+
sum = pulses_in[ 2 * k ] + pulses_in[ 2 * k + 1 ];
|
|
50
|
+
if( sum > max_pulses ) {
|
|
51
|
+
return 1;
|
|
52
|
+
}
|
|
53
|
+
pulses_comb[ k ] = sum;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/* Encode quantization indices of excitation */
|
|
60
|
+
void silk_encode_pulses(
|
|
61
|
+
ec_enc *psRangeEnc, /* I/O compressor data structure */
|
|
62
|
+
const opus_int signalType, /* I Signal type */
|
|
63
|
+
const opus_int quantOffsetType, /* I quantOffsetType */
|
|
64
|
+
opus_int8 pulses[], /* I quantization indices */
|
|
65
|
+
const opus_int frame_length /* I Frame length */
|
|
66
|
+
)
|
|
67
|
+
{
|
|
68
|
+
opus_int i, k, j, iter, bit, nLS, scale_down, RateLevelIndex = 0;
|
|
69
|
+
opus_int32 abs_q, minSumBits_Q5, sumBits_Q5;
|
|
70
|
+
VARDECL( opus_int, abs_pulses );
|
|
71
|
+
VARDECL( opus_int, sum_pulses );
|
|
72
|
+
VARDECL( opus_int, nRshifts );
|
|
73
|
+
opus_int pulses_comb[ 8 ];
|
|
74
|
+
opus_int *abs_pulses_ptr;
|
|
75
|
+
const opus_int8 *pulses_ptr;
|
|
76
|
+
const opus_uint8 *cdf_ptr;
|
|
77
|
+
const opus_uint8 *nBits_ptr;
|
|
78
|
+
SAVE_STACK;
|
|
79
|
+
|
|
80
|
+
silk_memset( pulses_comb, 0, 8 * sizeof( opus_int ) ); /* Fixing Valgrind reported problem*/
|
|
81
|
+
|
|
82
|
+
/****************************/
|
|
83
|
+
/* Prepare for shell coding */
|
|
84
|
+
/****************************/
|
|
85
|
+
/* Calculate number of shell blocks */
|
|
86
|
+
silk_assert( 1 << LOG2_SHELL_CODEC_FRAME_LENGTH == SHELL_CODEC_FRAME_LENGTH );
|
|
87
|
+
iter = silk_RSHIFT( frame_length, LOG2_SHELL_CODEC_FRAME_LENGTH );
|
|
88
|
+
if( iter * SHELL_CODEC_FRAME_LENGTH < frame_length ) {
|
|
89
|
+
celt_assert( frame_length == 12 * 10 ); /* Make sure only happens for 10 ms @ 12 kHz */
|
|
90
|
+
iter++;
|
|
91
|
+
silk_memset( &pulses[ frame_length ], 0, SHELL_CODEC_FRAME_LENGTH * sizeof(opus_int8));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* Take the absolute value of the pulses */
|
|
95
|
+
ALLOC( abs_pulses, iter * SHELL_CODEC_FRAME_LENGTH, opus_int );
|
|
96
|
+
silk_assert( !( SHELL_CODEC_FRAME_LENGTH & 3 ) );
|
|
97
|
+
for( i = 0; i < iter * SHELL_CODEC_FRAME_LENGTH; i+=4 ) {
|
|
98
|
+
abs_pulses[i+0] = ( opus_int )silk_abs( pulses[ i + 0 ] );
|
|
99
|
+
abs_pulses[i+1] = ( opus_int )silk_abs( pulses[ i + 1 ] );
|
|
100
|
+
abs_pulses[i+2] = ( opus_int )silk_abs( pulses[ i + 2 ] );
|
|
101
|
+
abs_pulses[i+3] = ( opus_int )silk_abs( pulses[ i + 3 ] );
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/* Calc sum pulses per shell code frame */
|
|
105
|
+
ALLOC( sum_pulses, iter, opus_int );
|
|
106
|
+
ALLOC( nRshifts, iter, opus_int );
|
|
107
|
+
abs_pulses_ptr = abs_pulses;
|
|
108
|
+
for( i = 0; i < iter; i++ ) {
|
|
109
|
+
nRshifts[ i ] = 0;
|
|
110
|
+
|
|
111
|
+
while( 1 ) {
|
|
112
|
+
/* 1+1 -> 2 */
|
|
113
|
+
scale_down = combine_and_check( pulses_comb, abs_pulses_ptr, silk_max_pulses_table[ 0 ], 8 );
|
|
114
|
+
/* 2+2 -> 4 */
|
|
115
|
+
scale_down += combine_and_check( pulses_comb, pulses_comb, silk_max_pulses_table[ 1 ], 4 );
|
|
116
|
+
/* 4+4 -> 8 */
|
|
117
|
+
scale_down += combine_and_check( pulses_comb, pulses_comb, silk_max_pulses_table[ 2 ], 2 );
|
|
118
|
+
/* 8+8 -> 16 */
|
|
119
|
+
scale_down += combine_and_check( &sum_pulses[ i ], pulses_comb, silk_max_pulses_table[ 3 ], 1 );
|
|
120
|
+
|
|
121
|
+
if( scale_down ) {
|
|
122
|
+
/* We need to downscale the quantization signal */
|
|
123
|
+
nRshifts[ i ]++;
|
|
124
|
+
for( k = 0; k < SHELL_CODEC_FRAME_LENGTH; k++ ) {
|
|
125
|
+
abs_pulses_ptr[ k ] = silk_RSHIFT( abs_pulses_ptr[ k ], 1 );
|
|
126
|
+
}
|
|
127
|
+
} else {
|
|
128
|
+
/* Jump out of while(1) loop and go to next shell coding frame */
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
abs_pulses_ptr += SHELL_CODEC_FRAME_LENGTH;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**************/
|
|
136
|
+
/* Rate level */
|
|
137
|
+
/**************/
|
|
138
|
+
/* find rate level that leads to fewest bits for coding of pulses per block info */
|
|
139
|
+
minSumBits_Q5 = silk_int32_MAX;
|
|
140
|
+
for( k = 0; k < N_RATE_LEVELS - 1; k++ ) {
|
|
141
|
+
nBits_ptr = silk_pulses_per_block_BITS_Q5[ k ];
|
|
142
|
+
sumBits_Q5 = silk_rate_levels_BITS_Q5[ signalType >> 1 ][ k ];
|
|
143
|
+
for( i = 0; i < iter; i++ ) {
|
|
144
|
+
if( nRshifts[ i ] > 0 ) {
|
|
145
|
+
sumBits_Q5 += nBits_ptr[ SILK_MAX_PULSES + 1 ];
|
|
146
|
+
} else {
|
|
147
|
+
sumBits_Q5 += nBits_ptr[ sum_pulses[ i ] ];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if( sumBits_Q5 < minSumBits_Q5 ) {
|
|
151
|
+
minSumBits_Q5 = sumBits_Q5;
|
|
152
|
+
RateLevelIndex = k;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
ec_enc_icdf( psRangeEnc, RateLevelIndex, silk_rate_levels_iCDF[ signalType >> 1 ], 8 );
|
|
156
|
+
|
|
157
|
+
/***************************************************/
|
|
158
|
+
/* Sum-Weighted-Pulses Encoding */
|
|
159
|
+
/***************************************************/
|
|
160
|
+
cdf_ptr = silk_pulses_per_block_iCDF[ RateLevelIndex ];
|
|
161
|
+
for( i = 0; i < iter; i++ ) {
|
|
162
|
+
if( nRshifts[ i ] == 0 ) {
|
|
163
|
+
ec_enc_icdf( psRangeEnc, sum_pulses[ i ], cdf_ptr, 8 );
|
|
164
|
+
} else {
|
|
165
|
+
ec_enc_icdf( psRangeEnc, SILK_MAX_PULSES + 1, cdf_ptr, 8 );
|
|
166
|
+
for( k = 0; k < nRshifts[ i ] - 1; k++ ) {
|
|
167
|
+
ec_enc_icdf( psRangeEnc, SILK_MAX_PULSES + 1, silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1 ], 8 );
|
|
168
|
+
}
|
|
169
|
+
ec_enc_icdf( psRangeEnc, sum_pulses[ i ], silk_pulses_per_block_iCDF[ N_RATE_LEVELS - 1 ], 8 );
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/******************/
|
|
174
|
+
/* Shell Encoding */
|
|
175
|
+
/******************/
|
|
176
|
+
for( i = 0; i < iter; i++ ) {
|
|
177
|
+
if( sum_pulses[ i ] > 0 ) {
|
|
178
|
+
silk_shell_encoder( psRangeEnc, &abs_pulses[ i * SHELL_CODEC_FRAME_LENGTH ] );
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/****************/
|
|
183
|
+
/* LSB Encoding */
|
|
184
|
+
/****************/
|
|
185
|
+
for( i = 0; i < iter; i++ ) {
|
|
186
|
+
if( nRshifts[ i ] > 0 ) {
|
|
187
|
+
pulses_ptr = &pulses[ i * SHELL_CODEC_FRAME_LENGTH ];
|
|
188
|
+
nLS = nRshifts[ i ] - 1;
|
|
189
|
+
for( k = 0; k < SHELL_CODEC_FRAME_LENGTH; k++ ) {
|
|
190
|
+
abs_q = (opus_int8)silk_abs( pulses_ptr[ k ] );
|
|
191
|
+
for( j = nLS; j > 0; j-- ) {
|
|
192
|
+
bit = silk_RSHIFT( abs_q, j ) & 1;
|
|
193
|
+
ec_enc_icdf( psRangeEnc, bit, silk_lsb_iCDF, 8 );
|
|
194
|
+
}
|
|
195
|
+
bit = abs_q & 1;
|
|
196
|
+
ec_enc_icdf( psRangeEnc, bit, silk_lsb_iCDF, 8 );
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/****************/
|
|
202
|
+
/* Encode signs */
|
|
203
|
+
/****************/
|
|
204
|
+
silk_encode_signs( psRangeEnc, pulses, frame_length, signalType, quantOffsetType, sum_pulses );
|
|
205
|
+
RESTORE_STACK;
|
|
206
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/***********************************************************************
|
|
2
|
+
Copyright (c) 2006-2011, Skype Limited. All rights reserved.
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions
|
|
5
|
+
are met:
|
|
6
|
+
- Redistributions of source code must retain the above copyright notice,
|
|
7
|
+
this list of conditions and the following disclaimer.
|
|
8
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
documentation and/or other materials provided with the distribution.
|
|
11
|
+
- Neither the name of Internet Society, IETF or IETF Trust, nor the
|
|
12
|
+
names of specific contributors, may be used to endorse or promote
|
|
13
|
+
products derived from this software without specific prior written
|
|
14
|
+
permission.
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
19
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
20
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
21
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
22
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
23
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
24
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
25
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
***********************************************************************/
|
|
27
|
+
|
|
28
|
+
#ifndef SILK_ERRORS_H
|
|
29
|
+
#define SILK_ERRORS_H
|
|
30
|
+
|
|
31
|
+
#ifdef __cplusplus
|
|
32
|
+
extern "C"
|
|
33
|
+
{
|
|
34
|
+
#endif
|
|
35
|
+
|
|
36
|
+
/******************/
|
|
37
|
+
/* Error messages */
|
|
38
|
+
/******************/
|
|
39
|
+
#define SILK_NO_ERROR 0
|
|
40
|
+
|
|
41
|
+
/**************************/
|
|
42
|
+
/* Encoder error messages */
|
|
43
|
+
/**************************/
|
|
44
|
+
|
|
45
|
+
/* Input length is not a multiple of 10 ms, or length is longer than the packet length */
|
|
46
|
+
#define SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES -101
|
|
47
|
+
|
|
48
|
+
/* Sampling frequency not 8000, 12000 or 16000 Hertz */
|
|
49
|
+
#define SILK_ENC_FS_NOT_SUPPORTED -102
|
|
50
|
+
|
|
51
|
+
/* Packet size not 10, 20, 40, or 60 ms */
|
|
52
|
+
#define SILK_ENC_PACKET_SIZE_NOT_SUPPORTED -103
|
|
53
|
+
|
|
54
|
+
/* Allocated payload buffer too short */
|
|
55
|
+
#define SILK_ENC_PAYLOAD_BUF_TOO_SHORT -104
|
|
56
|
+
|
|
57
|
+
/* Loss rate not between 0 and 100 percent */
|
|
58
|
+
#define SILK_ENC_INVALID_LOSS_RATE -105
|
|
59
|
+
|
|
60
|
+
/* Complexity setting not valid, use 0...10 */
|
|
61
|
+
#define SILK_ENC_INVALID_COMPLEXITY_SETTING -106
|
|
62
|
+
|
|
63
|
+
/* Inband FEC setting not valid, use 0 or 1 */
|
|
64
|
+
#define SILK_ENC_INVALID_INBAND_FEC_SETTING -107
|
|
65
|
+
|
|
66
|
+
/* DTX setting not valid, use 0 or 1 */
|
|
67
|
+
#define SILK_ENC_INVALID_DTX_SETTING -108
|
|
68
|
+
|
|
69
|
+
/* CBR setting not valid, use 0 or 1 */
|
|
70
|
+
#define SILK_ENC_INVALID_CBR_SETTING -109
|
|
71
|
+
|
|
72
|
+
/* Internal encoder error */
|
|
73
|
+
#define SILK_ENC_INTERNAL_ERROR -110
|
|
74
|
+
|
|
75
|
+
/* Internal encoder error */
|
|
76
|
+
#define SILK_ENC_INVALID_NUMBER_OF_CHANNELS_ERROR -111
|
|
77
|
+
|
|
78
|
+
/**************************/
|
|
79
|
+
/* Decoder error messages */
|
|
80
|
+
/**************************/
|
|
81
|
+
|
|
82
|
+
/* Output sampling frequency lower than internal decoded sampling frequency */
|
|
83
|
+
#define SILK_DEC_INVALID_SAMPLING_FREQUENCY -200
|
|
84
|
+
|
|
85
|
+
/* Payload size exceeded the maximum allowed 1024 bytes */
|
|
86
|
+
#define SILK_DEC_PAYLOAD_TOO_LARGE -201
|
|
87
|
+
|
|
88
|
+
/* Payload has bit errors */
|
|
89
|
+
#define SILK_DEC_PAYLOAD_ERROR -202
|
|
90
|
+
|
|
91
|
+
/* Payload has bit errors */
|
|
92
|
+
#define SILK_DEC_INVALID_FRAME_SIZE -203
|
|
93
|
+
|
|
94
|
+
#ifdef __cplusplus
|
|
95
|
+
}
|
|
96
|
+
#endif
|
|
97
|
+
|
|
98
|
+
#endif
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/***********************************************************************
|
|
2
|
+
Copyright (c) 2006-2011, Skype Limited. All rights reserved.
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions
|
|
5
|
+
are met:
|
|
6
|
+
- Redistributions of source code must retain the above copyright notice,
|
|
7
|
+
this list of conditions and the following disclaimer.
|
|
8
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
documentation and/or other materials provided with the distribution.
|
|
11
|
+
- Neither the name of Internet Society, IETF or IETF Trust, nor the
|
|
12
|
+
names of specific contributors, may be used to endorse or promote
|
|
13
|
+
products derived from this software without specific prior written
|
|
14
|
+
permission.
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
19
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
20
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
21
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
22
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
23
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
24
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
25
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
***********************************************************************/
|
|
27
|
+
|
|
28
|
+
#ifdef HAVE_CONFIG_H
|
|
29
|
+
#include "config.h"
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#include "main_FIX.h"
|
|
33
|
+
|
|
34
|
+
void silk_LTP_analysis_filter_FIX(
|
|
35
|
+
opus_int16 *LTP_res, /* O LTP residual signal of length MAX_NB_SUBFR * ( pre_length + subfr_length ) */
|
|
36
|
+
const opus_int16 *x, /* I Pointer to input signal with at least max( pitchL ) preceding samples */
|
|
37
|
+
const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ],/* I LTP_ORDER LTP coefficients for each MAX_NB_SUBFR subframe */
|
|
38
|
+
const opus_int pitchL[ MAX_NB_SUBFR ], /* I Pitch lag, one for each subframe */
|
|
39
|
+
const opus_int32 invGains_Q16[ MAX_NB_SUBFR ], /* I Inverse quantization gains, one for each subframe */
|
|
40
|
+
const opus_int subfr_length, /* I Length of each subframe */
|
|
41
|
+
const opus_int nb_subfr, /* I Number of subframes */
|
|
42
|
+
const opus_int pre_length /* I Length of the preceding samples starting at &x[0] for each subframe */
|
|
43
|
+
)
|
|
44
|
+
{
|
|
45
|
+
const opus_int16 *x_ptr, *x_lag_ptr;
|
|
46
|
+
opus_int16 Btmp_Q14[ LTP_ORDER ];
|
|
47
|
+
opus_int16 *LTP_res_ptr;
|
|
48
|
+
opus_int k, i;
|
|
49
|
+
opus_int32 LTP_est;
|
|
50
|
+
|
|
51
|
+
x_ptr = x;
|
|
52
|
+
LTP_res_ptr = LTP_res;
|
|
53
|
+
for( k = 0; k < nb_subfr; k++ ) {
|
|
54
|
+
|
|
55
|
+
x_lag_ptr = x_ptr - pitchL[ k ];
|
|
56
|
+
|
|
57
|
+
Btmp_Q14[ 0 ] = LTPCoef_Q14[ k * LTP_ORDER ];
|
|
58
|
+
Btmp_Q14[ 1 ] = LTPCoef_Q14[ k * LTP_ORDER + 1 ];
|
|
59
|
+
Btmp_Q14[ 2 ] = LTPCoef_Q14[ k * LTP_ORDER + 2 ];
|
|
60
|
+
Btmp_Q14[ 3 ] = LTPCoef_Q14[ k * LTP_ORDER + 3 ];
|
|
61
|
+
Btmp_Q14[ 4 ] = LTPCoef_Q14[ k * LTP_ORDER + 4 ];
|
|
62
|
+
|
|
63
|
+
/* LTP analysis FIR filter */
|
|
64
|
+
for( i = 0; i < subfr_length + pre_length; i++ ) {
|
|
65
|
+
LTP_res_ptr[ i ] = x_ptr[ i ];
|
|
66
|
+
|
|
67
|
+
/* Long-term prediction */
|
|
68
|
+
LTP_est = silk_SMULBB( x_lag_ptr[ LTP_ORDER / 2 ], Btmp_Q14[ 0 ] );
|
|
69
|
+
LTP_est = silk_SMLABB_ovflw( LTP_est, x_lag_ptr[ 1 ], Btmp_Q14[ 1 ] );
|
|
70
|
+
LTP_est = silk_SMLABB_ovflw( LTP_est, x_lag_ptr[ 0 ], Btmp_Q14[ 2 ] );
|
|
71
|
+
LTP_est = silk_SMLABB_ovflw( LTP_est, x_lag_ptr[ -1 ], Btmp_Q14[ 3 ] );
|
|
72
|
+
LTP_est = silk_SMLABB_ovflw( LTP_est, x_lag_ptr[ -2 ], Btmp_Q14[ 4 ] );
|
|
73
|
+
|
|
74
|
+
LTP_est = silk_RSHIFT_ROUND( LTP_est, 14 ); /* round and -> Q0*/
|
|
75
|
+
|
|
76
|
+
/* Subtract long-term prediction */
|
|
77
|
+
LTP_res_ptr[ i ] = (opus_int16)silk_SAT16( (opus_int32)x_ptr[ i ] - LTP_est );
|
|
78
|
+
|
|
79
|
+
/* Scale residual */
|
|
80
|
+
LTP_res_ptr[ i ] = silk_SMULWB( invGains_Q16[ k ], LTP_res_ptr[ i ] );
|
|
81
|
+
|
|
82
|
+
x_lag_ptr++;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Update pointers */
|
|
86
|
+
LTP_res_ptr += subfr_length + pre_length;
|
|
87
|
+
x_ptr += subfr_length;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/***********************************************************************
|
|
2
|
+
Copyright (c) 2006-2011, Skype Limited. All rights reserved.
|
|
3
|
+
Redistribution and use in source and binary forms, with or without
|
|
4
|
+
modification, are permitted provided that the following conditions
|
|
5
|
+
are met:
|
|
6
|
+
- Redistributions of source code must retain the above copyright notice,
|
|
7
|
+
this list of conditions and the following disclaimer.
|
|
8
|
+
- Redistributions in binary form must reproduce the above copyright
|
|
9
|
+
notice, this list of conditions and the following disclaimer in the
|
|
10
|
+
documentation and/or other materials provided with the distribution.
|
|
11
|
+
- Neither the name of Internet Society, IETF or IETF Trust, nor the
|
|
12
|
+
names of specific contributors, may be used to endorse or promote
|
|
13
|
+
products derived from this software without specific prior written
|
|
14
|
+
permission.
|
|
15
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
16
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
17
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
18
|
+
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
|
19
|
+
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
20
|
+
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
21
|
+
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
22
|
+
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
23
|
+
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
24
|
+
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
|
25
|
+
POSSIBILITY OF SUCH DAMAGE.
|
|
26
|
+
***********************************************************************/
|
|
27
|
+
|
|
28
|
+
#ifdef HAVE_CONFIG_H
|
|
29
|
+
#include "config.h"
|
|
30
|
+
#endif
|
|
31
|
+
|
|
32
|
+
#include "main_FIX.h"
|
|
33
|
+
|
|
34
|
+
/* Calculation of LTP state scaling */
|
|
35
|
+
void silk_LTP_scale_ctrl_FIX(
|
|
36
|
+
silk_encoder_state_FIX *psEnc, /* I/O encoder state */
|
|
37
|
+
silk_encoder_control_FIX *psEncCtrl, /* I/O encoder control */
|
|
38
|
+
opus_int condCoding /* I The type of conditional coding to use */
|
|
39
|
+
)
|
|
40
|
+
{
|
|
41
|
+
opus_int round_loss;
|
|
42
|
+
|
|
43
|
+
if( condCoding == CODE_INDEPENDENTLY ) {
|
|
44
|
+
/* Only scale if first frame in packet */
|
|
45
|
+
round_loss = psEnc->sCmn.PacketLoss_perc * psEnc->sCmn.nFramesPerPacket;
|
|
46
|
+
if ( psEnc->sCmn.LBRR_flag ) {
|
|
47
|
+
/* LBRR reduces the effective loss. In practice, it does not square the loss because
|
|
48
|
+
losses aren't independent, but that still seems to work best. We also never go below 2%. */
|
|
49
|
+
round_loss = 2 + silk_SMULBB( round_loss, round_loss ) / 100;
|
|
50
|
+
}
|
|
51
|
+
psEnc->sCmn.indices.LTP_scaleIndex = silk_SMULBB( psEncCtrl->LTPredCodGain_Q7, round_loss ) > silk_log2lin( 128*7 + 2900-psEnc->sCmn.SNR_dB_Q7 );
|
|
52
|
+
psEnc->sCmn.indices.LTP_scaleIndex += silk_SMULBB( psEncCtrl->LTPredCodGain_Q7, round_loss ) > silk_log2lin( 128*7 + 3900-psEnc->sCmn.SNR_dB_Q7 );
|
|
53
|
+
} else {
|
|
54
|
+
/* Default is minimum scaling */
|
|
55
|
+
psEnc->sCmn.indices.LTP_scaleIndex = 0;
|
|
56
|
+
}
|
|
57
|
+
psEncCtrl->LTP_scale_Q14 = silk_LTPScales_table_Q14[ psEnc->sCmn.indices.LTP_scaleIndex ];
|
|
58
|
+
}
|