@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.
Files changed (722) hide show
  1. package/binding.gyp +2 -0
  2. package/opus/.gitattributes +10 -0
  3. package/opus/.gitlab-ci.yml +122 -0
  4. package/opus/AUTHORS +6 -0
  5. package/opus/CMakeLists.txt +755 -0
  6. package/opus/COPYING +44 -0
  7. package/opus/ChangeLog +0 -0
  8. package/opus/LICENSE_PLEASE_READ.txt +22 -0
  9. package/opus/Makefile.am +497 -0
  10. package/opus/Makefile.mips +169 -0
  11. package/opus/Makefile.unix +167 -0
  12. package/opus/NEWS +0 -0
  13. package/opus/README +189 -0
  14. package/opus/README.draft +54 -0
  15. package/opus/autogen.bat +13 -0
  16. package/opus/autogen.sh +16 -0
  17. package/opus/celt/_kiss_fft_guts.h +188 -0
  18. package/opus/celt/arch.h +390 -0
  19. package/opus/celt/arm/arm2gnu.pl +353 -0
  20. package/opus/celt/arm/arm_celt_map.c +171 -0
  21. package/opus/celt/arm/armcpu.c +291 -0
  22. package/opus/celt/arm/armcpu.h +90 -0
  23. package/opus/celt/arm/armopts.s.in +37 -0
  24. package/opus/celt/arm/celt_fft_ne10.c +173 -0
  25. package/opus/celt/arm/celt_mdct_ne10.c +258 -0
  26. package/opus/celt/arm/celt_neon_intr.c +272 -0
  27. package/opus/celt/arm/celt_pitch_xcorr_arm.s +551 -0
  28. package/opus/celt/arm/fft_arm.h +71 -0
  29. package/opus/celt/arm/fixed_arm64.h +35 -0
  30. package/opus/celt/arm/fixed_armv4.h +80 -0
  31. package/opus/celt/arm/fixed_armv5e.h +151 -0
  32. package/opus/celt/arm/kiss_fft_armv4.h +121 -0
  33. package/opus/celt/arm/kiss_fft_armv5e.h +118 -0
  34. package/opus/celt/arm/mdct_arm.h +59 -0
  35. package/opus/celt/arm/meson.build +12 -0
  36. package/opus/celt/arm/pitch_arm.h +160 -0
  37. package/opus/celt/arm/pitch_neon_intr.c +288 -0
  38. package/opus/celt/bands.c +1686 -0
  39. package/opus/celt/bands.h +123 -0
  40. package/opus/celt/celt.c +317 -0
  41. package/opus/celt/celt.h +255 -0
  42. package/opus/celt/celt_decoder.c +1616 -0
  43. package/opus/celt/celt_encoder.c +2854 -0
  44. package/opus/celt/celt_lpc.c +364 -0
  45. package/opus/celt/celt_lpc.h +66 -0
  46. package/opus/celt/cpu_support.h +72 -0
  47. package/opus/celt/cwrs.c +715 -0
  48. package/opus/celt/cwrs.h +48 -0
  49. package/opus/celt/dump_modes/dump_modes.c +400 -0
  50. package/opus/celt/dump_modes/dump_modes_arch.h +45 -0
  51. package/opus/celt/dump_modes/dump_modes_arm_ne10.c +152 -0
  52. package/opus/celt/ecintrin.h +91 -0
  53. package/opus/celt/entcode.c +153 -0
  54. package/opus/celt/entcode.h +152 -0
  55. package/opus/celt/entdec.c +266 -0
  56. package/opus/celt/entdec.h +110 -0
  57. package/opus/celt/entenc.c +305 -0
  58. package/opus/celt/entenc.h +119 -0
  59. package/opus/celt/fixed_c5x.h +79 -0
  60. package/opus/celt/fixed_c6x.h +70 -0
  61. package/opus/celt/fixed_debug.h +839 -0
  62. package/opus/celt/fixed_generic.h +201 -0
  63. package/opus/celt/float_cast.h +152 -0
  64. package/opus/celt/kiss_fft.c +648 -0
  65. package/opus/celt/kiss_fft.h +217 -0
  66. package/opus/celt/laplace.c +235 -0
  67. package/opus/celt/laplace.h +57 -0
  68. package/opus/celt/mathops.c +217 -0
  69. package/opus/celt/mathops.h +479 -0
  70. package/opus/celt/mdct.c +372 -0
  71. package/opus/celt/mdct.h +115 -0
  72. package/opus/celt/meson.build +64 -0
  73. package/opus/celt/mfrngcod.h +48 -0
  74. package/opus/celt/mips/celt_mipsr1.h +152 -0
  75. package/opus/celt/mips/fixed_generic_mipsr1.h +126 -0
  76. package/opus/celt/mips/kiss_fft_mipsr1.h +167 -0
  77. package/opus/celt/mips/mdct_mipsr1.h +288 -0
  78. package/opus/celt/mips/pitch_mipsr1.h +161 -0
  79. package/opus/celt/mips/vq_mipsr1.h +116 -0
  80. package/opus/celt/modes.c +450 -0
  81. package/opus/celt/modes.h +75 -0
  82. package/opus/celt/opus_custom_demo.c +451 -0
  83. package/opus/celt/os_support.h +99 -0
  84. package/opus/celt/pitch.c +555 -0
  85. package/opus/celt/pitch.h +203 -0
  86. package/opus/celt/quant_bands.c +562 -0
  87. package/opus/celt/quant_bands.h +66 -0
  88. package/opus/celt/rate.c +646 -0
  89. package/opus/celt/rate.h +101 -0
  90. package/opus/celt/stack_alloc.h +185 -0
  91. package/opus/celt/static_modes_fixed.h +1541 -0
  92. package/opus/celt/static_modes_fixed_arm_ne10.h +388 -0
  93. package/opus/celt/static_modes_float.h +888 -0
  94. package/opus/celt/static_modes_float_arm_ne10.h +404 -0
  95. package/opus/celt/tests/meson.build +19 -0
  96. package/opus/celt/tests/test_unit_cwrs32.c +162 -0
  97. package/opus/celt/tests/test_unit_dft.c +181 -0
  98. package/opus/celt/tests/test_unit_entropy.c +383 -0
  99. package/opus/celt/tests/test_unit_laplace.c +94 -0
  100. package/opus/celt/tests/test_unit_mathops.c +369 -0
  101. package/opus/celt/tests/test_unit_mdct.c +233 -0
  102. package/opus/celt/tests/test_unit_rotation.c +87 -0
  103. package/opus/celt/tests/test_unit_types.c +50 -0
  104. package/opus/celt/vq.c +442 -0
  105. package/opus/celt/vq.h +79 -0
  106. package/opus/celt/x86/celt_lpc_sse.h +67 -0
  107. package/opus/celt/x86/celt_lpc_sse4_1.c +96 -0
  108. package/opus/celt/x86/pitch_avx.c +101 -0
  109. package/opus/celt/x86/pitch_sse.c +185 -0
  110. package/opus/celt/x86/pitch_sse.h +216 -0
  111. package/opus/celt/x86/pitch_sse2.c +95 -0
  112. package/opus/celt/x86/pitch_sse4_1.c +240 -0
  113. package/opus/celt/x86/vq_sse.h +52 -0
  114. package/opus/celt/x86/vq_sse2.c +217 -0
  115. package/opus/celt/x86/x86_arch_macros.h +47 -0
  116. package/opus/celt/x86/x86_celt_map.c +187 -0
  117. package/opus/celt/x86/x86cpu.c +184 -0
  118. package/opus/celt/x86/x86cpu.h +112 -0
  119. package/opus/celt_headers.mk +54 -0
  120. package/opus/celt_sources.mk +55 -0
  121. package/opus/cmake/CFeatureCheck.cmake +39 -0
  122. package/opus/cmake/OpusBuildtype.cmake +27 -0
  123. package/opus/cmake/OpusConfig.cmake +118 -0
  124. package/opus/cmake/OpusConfig.cmake.in +20 -0
  125. package/opus/cmake/OpusFunctions.cmake +231 -0
  126. package/opus/cmake/OpusPackageVersion.cmake +70 -0
  127. package/opus/cmake/OpusSources.cmake +71 -0
  128. package/opus/cmake/README.md +132 -0
  129. package/opus/cmake/RunTest.cmake +61 -0
  130. package/opus/cmake/config.h.cmake.in +1 -0
  131. package/opus/cmake/cpu_info_by_asm.c +31 -0
  132. package/opus/cmake/cpu_info_by_c.c +9 -0
  133. package/opus/cmake/vla.c +7 -0
  134. package/opus/configure.ac +1091 -0
  135. package/opus/dnn/LPCNet.yml +24 -0
  136. package/opus/dnn/README +1 -0
  137. package/opus/dnn/README.md +126 -0
  138. package/opus/dnn/adaconvtest.c +449 -0
  139. package/opus/dnn/arm/arm_dnn_map.c +88 -0
  140. package/opus/dnn/arm/dnn_arm.h +104 -0
  141. package/opus/dnn/arm/nnet_dotprod.c +38 -0
  142. package/opus/dnn/arm/nnet_neon.c +38 -0
  143. package/opus/dnn/burg.c +246 -0
  144. package/opus/dnn/burg.h +41 -0
  145. package/opus/dnn/common.h +56 -0
  146. package/opus/dnn/datasets.txt +163 -0
  147. package/opus/dnn/download_model.bat +9 -0
  148. package/opus/dnn/download_model.sh +30 -0
  149. package/opus/dnn/dred_coding.c +44 -0
  150. package/opus/dnn/dred_coding.h +36 -0
  151. package/opus/dnn/dred_config.h +54 -0
  152. package/opus/dnn/dred_decoder.c +129 -0
  153. package/opus/dnn/dred_decoder.h +49 -0
  154. package/opus/dnn/dred_encoder.c +363 -0
  155. package/opus/dnn/dred_encoder.h +71 -0
  156. package/opus/dnn/dred_rdovae.h +42 -0
  157. package/opus/dnn/dred_rdovae_dec.c +139 -0
  158. package/opus/dnn/dred_rdovae_dec.h +53 -0
  159. package/opus/dnn/dred_rdovae_enc.c +110 -0
  160. package/opus/dnn/dred_rdovae_enc.h +52 -0
  161. package/opus/dnn/dump_data.c +238 -0
  162. package/opus/dnn/dump_lpcnet_tables.c +104 -0
  163. package/opus/dnn/fargan.c +225 -0
  164. package/opus/dnn/fargan.h +68 -0
  165. package/opus/dnn/fargan_demo.c +217 -0
  166. package/opus/dnn/freq.c +328 -0
  167. package/opus/dnn/freq.h +61 -0
  168. package/opus/dnn/fwgan.c +322 -0
  169. package/opus/dnn/fwgan.h +83 -0
  170. package/opus/dnn/kiss99.c +81 -0
  171. package/opus/dnn/kiss99.h +46 -0
  172. package/opus/dnn/lossgen.c +192 -0
  173. package/opus/dnn/lossgen.h +55 -0
  174. package/opus/dnn/lossgen_demo.c +22 -0
  175. package/opus/dnn/lpcnet.c +283 -0
  176. package/opus/dnn/lpcnet.h +183 -0
  177. package/opus/dnn/lpcnet_enc.c +230 -0
  178. package/opus/dnn/lpcnet_plc.c +211 -0
  179. package/opus/dnn/lpcnet_private.h +90 -0
  180. package/opus/dnn/lpcnet_tables.c +307 -0
  181. package/opus/dnn/meson.build +64 -0
  182. package/opus/dnn/nndsp.c +416 -0
  183. package/opus/dnn/nndsp.h +143 -0
  184. package/opus/dnn/nnet.c +149 -0
  185. package/opus/dnn/nnet.h +163 -0
  186. package/opus/dnn/nnet_arch.h +247 -0
  187. package/opus/dnn/nnet_default.c +35 -0
  188. package/opus/dnn/osce.c +1419 -0
  189. package/opus/dnn/osce.h +84 -0
  190. package/opus/dnn/osce_config.h +60 -0
  191. package/opus/dnn/osce_features.c +454 -0
  192. package/opus/dnn/osce_features.h +50 -0
  193. package/opus/dnn/osce_structs.h +125 -0
  194. package/opus/dnn/parse_lpcnet_weights.c +238 -0
  195. package/opus/dnn/pitchdnn.c +79 -0
  196. package/opus/dnn/pitchdnn.h +34 -0
  197. package/opus/dnn/tansig_table.h +50 -0
  198. package/opus/dnn/test_vec.c +128 -0
  199. package/opus/dnn/torch/dnntools/dnntools/__init__.py +2 -0
  200. package/opus/dnn/torch/dnntools/dnntools/quantization/__init__.py +1 -0
  201. package/opus/dnn/torch/dnntools/dnntools/quantization/softquant.py +113 -0
  202. package/opus/dnn/torch/dnntools/dnntools/relegance/__init__.py +2 -0
  203. package/opus/dnn/torch/dnntools/dnntools/relegance/meta_critic.py +85 -0
  204. package/opus/dnn/torch/dnntools/dnntools/relegance/relegance.py +449 -0
  205. package/opus/dnn/torch/dnntools/dnntools/sparsification/__init__.py +6 -0
  206. package/opus/dnn/torch/dnntools/dnntools/sparsification/base_sparsifier.py +58 -0
  207. package/opus/dnn/torch/dnntools/dnntools/sparsification/common.py +123 -0
  208. package/opus/dnn/torch/dnntools/dnntools/sparsification/conv1d_sparsifier.py +133 -0
  209. package/opus/dnn/torch/dnntools/dnntools/sparsification/conv_transpose1d_sparsifier.py +134 -0
  210. package/opus/dnn/torch/dnntools/dnntools/sparsification/gru_sparsifier.py +178 -0
  211. package/opus/dnn/torch/dnntools/dnntools/sparsification/linear_sparsifier.py +128 -0
  212. package/opus/dnn/torch/dnntools/dnntools/sparsification/utils.py +64 -0
  213. package/opus/dnn/torch/dnntools/requirements.txt +1 -0
  214. package/opus/dnn/torch/dnntools/setup.py +48 -0
  215. package/opus/dnn/torch/fargan/README.md +54 -0
  216. package/opus/dnn/torch/fargan/adv_train_fargan.py +277 -0
  217. package/opus/dnn/torch/fargan/dataset.py +61 -0
  218. package/opus/dnn/torch/fargan/dump_fargan_weights.py +112 -0
  219. package/opus/dnn/torch/fargan/fargan.py +322 -0
  220. package/opus/dnn/torch/fargan/filters.py +46 -0
  221. package/opus/dnn/torch/fargan/rc.py +29 -0
  222. package/opus/dnn/torch/fargan/stft_loss.py +186 -0
  223. package/opus/dnn/torch/fargan/test_fargan.py +128 -0
  224. package/opus/dnn/torch/fargan/train_fargan.py +168 -0
  225. package/opus/dnn/torch/fwgan/dump_model_weights.py +88 -0
  226. package/opus/dnn/torch/fwgan/inference.py +141 -0
  227. package/opus/dnn/torch/fwgan/models/__init__.py +7 -0
  228. package/opus/dnn/torch/fwgan/models/fwgan400.py +308 -0
  229. package/opus/dnn/torch/fwgan/models/fwgan500.py +260 -0
  230. package/opus/dnn/torch/lossgen/README.md +27 -0
  231. package/opus/dnn/torch/lossgen/export_lossgen.py +101 -0
  232. package/opus/dnn/torch/lossgen/lossgen.py +29 -0
  233. package/opus/dnn/torch/lossgen/process_data.sh +17 -0
  234. package/opus/dnn/torch/lossgen/test_lossgen.py +42 -0
  235. package/opus/dnn/torch/lossgen/train_lossgen.py +99 -0
  236. package/opus/dnn/torch/lpcnet/README.md +27 -0
  237. package/opus/dnn/torch/lpcnet/add_dataset_config.py +77 -0
  238. package/opus/dnn/torch/lpcnet/data/__init__.py +1 -0
  239. package/opus/dnn/torch/lpcnet/data/lpcnet_dataset.py +227 -0
  240. package/opus/dnn/torch/lpcnet/engine/lpcnet_engine.py +141 -0
  241. package/opus/dnn/torch/lpcnet/make_default_setup.py +56 -0
  242. package/opus/dnn/torch/lpcnet/make_test_config.py +78 -0
  243. package/opus/dnn/torch/lpcnet/models/__init__.py +8 -0
  244. package/opus/dnn/torch/lpcnet/models/lpcnet.py +303 -0
  245. package/opus/dnn/torch/lpcnet/models/multi_rate_lpcnet.py +437 -0
  246. package/opus/dnn/torch/lpcnet/print_lpcnet_complexity.py +64 -0
  247. package/opus/dnn/torch/lpcnet/scripts/collect_multi_run_results.py +190 -0
  248. package/opus/dnn/torch/lpcnet/scripts/loop_run.sh +52 -0
  249. package/opus/dnn/torch/lpcnet/scripts/make_animation.py +67 -0
  250. package/opus/dnn/torch/lpcnet/scripts/modify_dataset_target.py +17 -0
  251. package/opus/dnn/torch/lpcnet/scripts/multi_run.sh +17 -0
  252. package/opus/dnn/torch/lpcnet/scripts/run_inference_test.sh +22 -0
  253. package/opus/dnn/torch/lpcnet/scripts/update_checkpoints.py +54 -0
  254. package/opus/dnn/torch/lpcnet/scripts/update_output_folder.sh +22 -0
  255. package/opus/dnn/torch/lpcnet/scripts/update_setups.py +57 -0
  256. package/opus/dnn/torch/lpcnet/test_lpcnet.py +89 -0
  257. package/opus/dnn/torch/lpcnet/train_lpcnet.py +272 -0
  258. package/opus/dnn/torch/lpcnet/utils/__init__.py +4 -0
  259. package/opus/dnn/torch/lpcnet/utils/data.py +141 -0
  260. package/opus/dnn/torch/lpcnet/utils/endoscopy.py +234 -0
  261. package/opus/dnn/torch/lpcnet/utils/layers/__init__.py +3 -0
  262. package/opus/dnn/torch/lpcnet/utils/layers/dual_fc.py +44 -0
  263. package/opus/dnn/torch/lpcnet/utils/layers/pcm_embeddings.py +71 -0
  264. package/opus/dnn/torch/lpcnet/utils/layers/subconditioner.py +497 -0
  265. package/opus/dnn/torch/lpcnet/utils/misc.py +65 -0
  266. package/opus/dnn/torch/lpcnet/utils/pcm.py +35 -0
  267. package/opus/dnn/torch/lpcnet/utils/sample.py +44 -0
  268. package/opus/dnn/torch/lpcnet/utils/sparsification/__init__.py +2 -0
  269. package/opus/dnn/torch/lpcnet/utils/sparsification/common.py +121 -0
  270. package/opus/dnn/torch/lpcnet/utils/sparsification/gru_sparsifier.py +187 -0
  271. package/opus/dnn/torch/lpcnet/utils/templates.py +157 -0
  272. package/opus/dnn/torch/lpcnet/utils/ulaw.py +58 -0
  273. package/opus/dnn/torch/lpcnet/utils/wav.py +43 -0
  274. package/opus/dnn/torch/neural-pitch/README.md +18 -0
  275. package/opus/dnn/torch/neural-pitch/data_augmentation.py +149 -0
  276. package/opus/dnn/torch/neural-pitch/download_demand.sh +43 -0
  277. package/opus/dnn/torch/neural-pitch/evaluation.py +349 -0
  278. package/opus/dnn/torch/neural-pitch/experiments.py +38 -0
  279. package/opus/dnn/torch/neural-pitch/export_neuralpitch_weights.py +109 -0
  280. package/opus/dnn/torch/neural-pitch/models.py +178 -0
  281. package/opus/dnn/torch/neural-pitch/neural_pitch_update.py +179 -0
  282. package/opus/dnn/torch/neural-pitch/ptdb_process.sh +34 -0
  283. package/opus/dnn/torch/neural-pitch/run_crepe.py +72 -0
  284. package/opus/dnn/torch/neural-pitch/training.py +162 -0
  285. package/opus/dnn/torch/neural-pitch/utils.py +59 -0
  286. package/opus/dnn/torch/osce/README.md +66 -0
  287. package/opus/dnn/torch/osce/adv_train_model.py +462 -0
  288. package/opus/dnn/torch/osce/adv_train_vocoder.py +451 -0
  289. package/opus/dnn/torch/osce/create_testvectors.py +165 -0
  290. package/opus/dnn/torch/osce/data/__init__.py +2 -0
  291. package/opus/dnn/torch/osce/data/lpcnet_vocoding_dataset.py +225 -0
  292. package/opus/dnn/torch/osce/data/silk_conversion_set.py +132 -0
  293. package/opus/dnn/torch/osce/data/silk_enhancement_set.py +140 -0
  294. package/opus/dnn/torch/osce/engine/engine.py +103 -0
  295. package/opus/dnn/torch/osce/engine/vocoder_engine.py +101 -0
  296. package/opus/dnn/torch/osce/export_model_weights.py +174 -0
  297. package/opus/dnn/torch/osce/losses/stft_loss.py +277 -0
  298. package/opus/dnn/torch/osce/losses/td_lowpass.py +34 -0
  299. package/opus/dnn/torch/osce/make_default_setup.py +93 -0
  300. package/opus/dnn/torch/osce/models/__init__.py +42 -0
  301. package/opus/dnn/torch/osce/models/fd_discriminator.py +974 -0
  302. package/opus/dnn/torch/osce/models/lace.py +190 -0
  303. package/opus/dnn/torch/osce/models/lavoce.py +274 -0
  304. package/opus/dnn/torch/osce/models/lavoce_400.py +254 -0
  305. package/opus/dnn/torch/osce/models/lpcnet_feature_net.py +91 -0
  306. package/opus/dnn/torch/osce/models/nns_base.py +69 -0
  307. package/opus/dnn/torch/osce/models/no_lace.py +218 -0
  308. package/opus/dnn/torch/osce/models/scale_embedding.py +68 -0
  309. package/opus/dnn/torch/osce/models/shape_up_48.py +179 -0
  310. package/opus/dnn/torch/osce/models/silk_feature_net.py +86 -0
  311. package/opus/dnn/torch/osce/models/silk_feature_net_pl.py +127 -0
  312. package/opus/dnn/torch/osce/requirements.txt +9 -0
  313. package/opus/dnn/torch/osce/resources/training_files.txt +107716 -0
  314. package/opus/dnn/torch/osce/resources/validation_files.txt +26929 -0
  315. package/opus/dnn/torch/osce/scripts/concatenator.py +85 -0
  316. package/opus/dnn/torch/osce/silk_16_to_48.py +28 -0
  317. package/opus/dnn/torch/osce/stndrd/evaluation/commonvoice_clip_selection.py +123 -0
  318. package/opus/dnn/torch/osce/stndrd/evaluation/create_input_data.sh +25 -0
  319. package/opus/dnn/torch/osce/stndrd/evaluation/env.rc +7 -0
  320. package/opus/dnn/torch/osce/stndrd/evaluation/evaluate.py +113 -0
  321. package/opus/dnn/torch/osce/stndrd/evaluation/lace_loss_metric.py +330 -0
  322. package/opus/dnn/torch/osce/stndrd/evaluation/make_boxplots.py +116 -0
  323. package/opus/dnn/torch/osce/stndrd/evaluation/make_boxplots_moctest.py +109 -0
  324. package/opus/dnn/torch/osce/stndrd/evaluation/make_tables.py +124 -0
  325. package/opus/dnn/torch/osce/stndrd/evaluation/make_tables_moctest.py +121 -0
  326. package/opus/dnn/torch/osce/stndrd/evaluation/moc.py +182 -0
  327. package/opus/dnn/torch/osce/stndrd/evaluation/moc2.py +190 -0
  328. package/opus/dnn/torch/osce/stndrd/evaluation/process_dataset.sh +98 -0
  329. package/opus/dnn/torch/osce/stndrd/evaluation/run_nomad.py +138 -0
  330. package/opus/dnn/torch/osce/stndrd/evaluation/run_osce_test.py +196 -0
  331. package/opus/dnn/torch/osce/stndrd/presentation/endoscopy.py +205 -0
  332. package/opus/dnn/torch/osce/stndrd/presentation/lace_demo.ipynb +313 -0
  333. package/opus/dnn/torch/osce/stndrd/presentation/linear_prediction.ipynb +320 -0
  334. package/opus/dnn/torch/osce/stndrd/presentation/playback.py +25 -0
  335. package/opus/dnn/torch/osce/stndrd/presentation/postfilter.ipynb +275 -0
  336. package/opus/dnn/torch/osce/stndrd/presentation/spectrogram.ipynb +173 -0
  337. package/opus/dnn/torch/osce/test_model.py +96 -0
  338. package/opus/dnn/torch/osce/test_vocoder.py +103 -0
  339. package/opus/dnn/torch/osce/train_model.py +307 -0
  340. package/opus/dnn/torch/osce/train_vocoder.py +287 -0
  341. package/opus/dnn/torch/osce/utils/ada_conv.py +71 -0
  342. package/opus/dnn/torch/osce/utils/complexity.py +8 -0
  343. package/opus/dnn/torch/osce/utils/endoscopy.py +205 -0
  344. package/opus/dnn/torch/osce/utils/layers/fir.py +27 -0
  345. package/opus/dnn/torch/osce/utils/layers/limited_adaptive_comb1d.py +230 -0
  346. package/opus/dnn/torch/osce/utils/layers/limited_adaptive_conv1d.py +200 -0
  347. package/opus/dnn/torch/osce/utils/layers/noise_shaper.py +100 -0
  348. package/opus/dnn/torch/osce/utils/layers/pitch_auto_correlator.py +84 -0
  349. package/opus/dnn/torch/osce/utils/layers/silk_upsampler.py +167 -0
  350. package/opus/dnn/torch/osce/utils/layers/td_shaper.py +145 -0
  351. package/opus/dnn/torch/osce/utils/lpcnet_features.py +112 -0
  352. package/opus/dnn/torch/osce/utils/misc.py +95 -0
  353. package/opus/dnn/torch/osce/utils/moc.py +153 -0
  354. package/opus/dnn/torch/osce/utils/pitch.py +122 -0
  355. package/opus/dnn/torch/osce/utils/silk_features.py +144 -0
  356. package/opus/dnn/torch/osce/utils/softquant.py +110 -0
  357. package/opus/dnn/torch/osce/utils/spec.py +210 -0
  358. package/opus/dnn/torch/osce/utils/templates.py +347 -0
  359. package/opus/dnn/torch/plc/export_plc.py +100 -0
  360. package/opus/dnn/torch/plc/plc.py +144 -0
  361. package/opus/dnn/torch/plc/plc_dataset.py +60 -0
  362. package/opus/dnn/torch/plc/train_plc.py +145 -0
  363. package/opus/dnn/torch/rdovae/README.md +55 -0
  364. package/opus/dnn/torch/rdovae/download_datasets.sh +6 -0
  365. package/opus/dnn/torch/rdovae/export_rdovae_weights.py +365 -0
  366. package/opus/dnn/torch/rdovae/fec_encoder.py +212 -0
  367. package/opus/dnn/torch/rdovae/import_rdovae_weights.py +143 -0
  368. package/opus/dnn/torch/rdovae/packets/__init__.py +1 -0
  369. package/opus/dnn/torch/rdovae/packets/fec_packets.c +142 -0
  370. package/opus/dnn/torch/rdovae/packets/fec_packets.h +34 -0
  371. package/opus/dnn/torch/rdovae/packets/fec_packets.py +108 -0
  372. package/opus/dnn/torch/rdovae/process_speech.sh +7 -0
  373. package/opus/dnn/torch/rdovae/rdovae/__init__.py +2 -0
  374. package/opus/dnn/torch/rdovae/rdovae/dataset.py +67 -0
  375. package/opus/dnn/torch/rdovae/rdovae/rdovae.py +719 -0
  376. package/opus/dnn/torch/rdovae/requirements.txt +4 -0
  377. package/opus/dnn/torch/rdovae/train_rdovae.py +278 -0
  378. package/opus/dnn/torch/testsuite/README.md +46 -0
  379. package/opus/dnn/torch/testsuite/examples/lpcnet_c_example.yml +6 -0
  380. package/opus/dnn/torch/testsuite/examples/lpcnet_c_plc_example.yml +5 -0
  381. package/opus/dnn/torch/testsuite/examples/lpcnet_torch_example.yml +5 -0
  382. package/opus/dnn/torch/testsuite/requirements.txt +12 -0
  383. package/opus/dnn/torch/testsuite/run_test.py +375 -0
  384. package/opus/dnn/torch/testsuite/utils/__init__.py +0 -0
  385. package/opus/dnn/torch/testsuite/utils/files.py +54 -0
  386. package/opus/dnn/torch/testsuite/utils/pesq.py +43 -0
  387. package/opus/dnn/torch/testsuite/utils/pitch.py +61 -0
  388. package/opus/dnn/torch/weight-exchange/README.md +21 -0
  389. package/opus/dnn/torch/weight-exchange/requirements.txt +1 -0
  390. package/opus/dnn/torch/weight-exchange/setup.py +48 -0
  391. package/opus/dnn/torch/weight-exchange/wexchange/__init__.py +30 -0
  392. package/opus/dnn/torch/weight-exchange/wexchange/c_export/__init__.py +31 -0
  393. package/opus/dnn/torch/weight-exchange/wexchange/c_export/c_writer.py +181 -0
  394. package/opus/dnn/torch/weight-exchange/wexchange/c_export/common.py +386 -0
  395. package/opus/dnn/torch/weight-exchange/wexchange/tf/__init__.py +5 -0
  396. package/opus/dnn/torch/weight-exchange/wexchange/tf/tf.py +188 -0
  397. package/opus/dnn/torch/weight-exchange/wexchange/torch/__init__.py +37 -0
  398. package/opus/dnn/torch/weight-exchange/wexchange/torch/torch.py +433 -0
  399. package/opus/dnn/training_tf2/dataloader.py +49 -0
  400. package/opus/dnn/training_tf2/decode_rdovae.py +111 -0
  401. package/opus/dnn/training_tf2/diffembed.py +49 -0
  402. package/opus/dnn/training_tf2/dump_lpcnet.py +388 -0
  403. package/opus/dnn/training_tf2/dump_plc.py +296 -0
  404. package/opus/dnn/training_tf2/dump_rdovae.py +306 -0
  405. package/opus/dnn/training_tf2/encode_rdovae.py +125 -0
  406. package/opus/dnn/training_tf2/fec_encoder.py +256 -0
  407. package/opus/dnn/training_tf2/fec_packets.c +142 -0
  408. package/opus/dnn/training_tf2/fec_packets.h +34 -0
  409. package/opus/dnn/training_tf2/fec_packets.py +108 -0
  410. package/opus/dnn/training_tf2/keraslayerdump.py +189 -0
  411. package/opus/dnn/training_tf2/lossfuncs.py +99 -0
  412. package/opus/dnn/training_tf2/lpcnet.py +339 -0
  413. package/opus/dnn/training_tf2/lpcnet_plc.py +101 -0
  414. package/opus/dnn/training_tf2/mdense.py +95 -0
  415. package/opus/dnn/training_tf2/pade.py +70 -0
  416. package/opus/dnn/training_tf2/parameters.py +29 -0
  417. package/opus/dnn/training_tf2/plc_loader.py +73 -0
  418. package/opus/dnn/training_tf2/rdovae.py +372 -0
  419. package/opus/dnn/training_tf2/rdovae_exchange.py +138 -0
  420. package/opus/dnn/training_tf2/rdovae_import.py +123 -0
  421. package/opus/dnn/training_tf2/test_lpcnet.py +120 -0
  422. package/opus/dnn/training_tf2/test_plc.py +92 -0
  423. package/opus/dnn/training_tf2/tf_funcs.py +70 -0
  424. package/opus/dnn/training_tf2/train_lpcnet.py +214 -0
  425. package/opus/dnn/training_tf2/train_plc.py +197 -0
  426. package/opus/dnn/training_tf2/train_rdovae.py +151 -0
  427. package/opus/dnn/training_tf2/ulaw.py +19 -0
  428. package/opus/dnn/training_tf2/uniform_noise.py +78 -0
  429. package/opus/dnn/vec.h +389 -0
  430. package/opus/dnn/vec_avx.h +884 -0
  431. package/opus/dnn/vec_neon.h +473 -0
  432. package/opus/dnn/write_lpcnet_weights.c +97 -0
  433. package/opus/dnn/x86/dnn_x86.h +121 -0
  434. package/opus/dnn/x86/nnet_avx2.c +40 -0
  435. package/opus/dnn/x86/nnet_sse2.c +40 -0
  436. package/opus/dnn/x86/nnet_sse4_1.c +40 -0
  437. package/opus/dnn/x86/x86_dnn_map.c +83 -0
  438. package/opus/doc/Doxyfile.in +340 -0
  439. package/opus/doc/Makefile.am +45 -0
  440. package/opus/doc/build_draft.sh +113 -0
  441. package/opus/doc/build_isobmff.sh +50 -0
  442. package/opus/doc/build_oggdraft.sh +52 -0
  443. package/opus/doc/customdoxygen.css +1011 -0
  444. package/opus/doc/draft-ietf-codec-oggopus.xml +1873 -0
  445. package/opus/doc/draft-ietf-codec-opus-update.xml +513 -0
  446. package/opus/doc/draft-ietf-codec-opus.xml +8276 -0
  447. package/opus/doc/draft-ietf-payload-rtp-opus.xml +960 -0
  448. package/opus/doc/footer.html +32 -0
  449. package/opus/doc/header.html +61 -0
  450. package/opus/doc/meson.build +33 -0
  451. package/opus/doc/opus_in_isobmff.css +60 -0
  452. package/opus/doc/opus_in_isobmff.html +692 -0
  453. package/opus/doc/opus_logo.svg +157 -0
  454. package/opus/doc/opus_update.patch +244 -0
  455. package/opus/doc/release.txt +43 -0
  456. package/opus/doc/trivial_example.c +171 -0
  457. package/opus/include/meson.build +13 -0
  458. package/opus/include/opus.h +1172 -0
  459. package/opus/include/opus_custom.h +381 -0
  460. package/opus/include/opus_defines.h +830 -0
  461. package/opus/include/opus_multistream.h +736 -0
  462. package/opus/include/opus_projection.h +643 -0
  463. package/opus/include/opus_types.h +166 -0
  464. package/opus/lpcnet_headers.mk +44 -0
  465. package/opus/lpcnet_sources.mk +44 -0
  466. package/opus/m4/as-gcc-inline-assembly.m4 +98 -0
  467. package/opus/m4/ax_add_fortify_source.m4 +53 -0
  468. package/opus/m4/opus-intrinsics.m4 +29 -0
  469. package/opus/meson/README.md +88 -0
  470. package/opus/meson/get-version.py +86 -0
  471. package/opus/meson/read-sources-list.py +28 -0
  472. package/opus/meson.build +745 -0
  473. package/opus/meson_options.txt +27 -0
  474. package/opus/opus-uninstalled.pc.in +12 -0
  475. package/opus/opus.m4 +117 -0
  476. package/opus/opus.pc.in +16 -0
  477. package/opus/opus_headers.mk +8 -0
  478. package/opus/opus_sources.mk +17 -0
  479. package/opus/releases.sha2 +85 -0
  480. package/opus/scripts/dump_rnn.py +57 -0
  481. package/opus/scripts/local_build.py +220 -0
  482. package/opus/scripts/rnn_train.py +67 -0
  483. package/opus/scripts/shrink_model.sh +7 -0
  484. package/opus/silk/A2NLSF.c +267 -0
  485. package/opus/silk/API.h +156 -0
  486. package/opus/silk/CNG.c +188 -0
  487. package/opus/silk/HP_variable_cutoff.c +77 -0
  488. package/opus/silk/Inlines.h +188 -0
  489. package/opus/silk/LPC_analysis_filter.c +111 -0
  490. package/opus/silk/LPC_fit.c +82 -0
  491. package/opus/silk/LPC_inv_pred_gain.c +141 -0
  492. package/opus/silk/LP_variable_cutoff.c +135 -0
  493. package/opus/silk/MacroCount.h +710 -0
  494. package/opus/silk/MacroDebug.h +945 -0
  495. package/opus/silk/NLSF2A.c +141 -0
  496. package/opus/silk/NLSF_VQ.c +76 -0
  497. package/opus/silk/NLSF_VQ_weights_laroia.c +80 -0
  498. package/opus/silk/NLSF_decode.c +93 -0
  499. package/opus/silk/NLSF_del_dec_quant.c +215 -0
  500. package/opus/silk/NLSF_encode.c +124 -0
  501. package/opus/silk/NLSF_stabilize.c +142 -0
  502. package/opus/silk/NLSF_unpack.c +55 -0
  503. package/opus/silk/NSQ.c +437 -0
  504. package/opus/silk/NSQ.h +101 -0
  505. package/opus/silk/NSQ_del_dec.c +733 -0
  506. package/opus/silk/PLC.c +493 -0
  507. package/opus/silk/PLC.h +65 -0
  508. package/opus/silk/SigProc_FIX.h +643 -0
  509. package/opus/silk/VAD.c +360 -0
  510. package/opus/silk/VQ_WMat_EC.c +131 -0
  511. package/opus/silk/ana_filt_bank_1.c +74 -0
  512. package/opus/silk/arm/LPC_inv_pred_gain_arm.h +57 -0
  513. package/opus/silk/arm/LPC_inv_pred_gain_neon_intr.c +288 -0
  514. package/opus/silk/arm/NSQ_del_dec_arm.h +100 -0
  515. package/opus/silk/arm/NSQ_del_dec_neon_intr.c +1138 -0
  516. package/opus/silk/arm/NSQ_neon.c +112 -0
  517. package/opus/silk/arm/NSQ_neon.h +114 -0
  518. package/opus/silk/arm/SigProc_FIX_armv4.h +47 -0
  519. package/opus/silk/arm/SigProc_FIX_armv5e.h +61 -0
  520. package/opus/silk/arm/arm_silk_map.c +128 -0
  521. package/opus/silk/arm/biquad_alt_arm.h +68 -0
  522. package/opus/silk/arm/biquad_alt_neon_intr.c +156 -0
  523. package/opus/silk/arm/macros_arm64.h +39 -0
  524. package/opus/silk/arm/macros_armv4.h +110 -0
  525. package/opus/silk/arm/macros_armv5e.h +220 -0
  526. package/opus/silk/biquad_alt.c +121 -0
  527. package/opus/silk/bwexpander.c +51 -0
  528. package/opus/silk/bwexpander_32.c +51 -0
  529. package/opus/silk/check_control_input.c +106 -0
  530. package/opus/silk/code_signs.c +115 -0
  531. package/opus/silk/control.h +161 -0
  532. package/opus/silk/control_SNR.c +113 -0
  533. package/opus/silk/control_audio_bandwidth.c +132 -0
  534. package/opus/silk/control_codec.c +423 -0
  535. package/opus/silk/debug.c +174 -0
  536. package/opus/silk/debug.h +267 -0
  537. package/opus/silk/dec_API.c +465 -0
  538. package/opus/silk/decode_core.c +243 -0
  539. package/opus/silk/decode_frame.c +169 -0
  540. package/opus/silk/decode_indices.c +151 -0
  541. package/opus/silk/decode_parameters.c +115 -0
  542. package/opus/silk/decode_pitch.c +77 -0
  543. package/opus/silk/decode_pulses.c +115 -0
  544. package/opus/silk/decoder_set_fs.c +108 -0
  545. package/opus/silk/define.h +235 -0
  546. package/opus/silk/enc_API.c +593 -0
  547. package/opus/silk/encode_indices.c +181 -0
  548. package/opus/silk/encode_pulses.c +206 -0
  549. package/opus/silk/errors.h +98 -0
  550. package/opus/silk/fixed/LTP_analysis_filter_FIX.c +90 -0
  551. package/opus/silk/fixed/LTP_scale_ctrl_FIX.c +58 -0
  552. package/opus/silk/fixed/apply_sine_window_FIX.c +101 -0
  553. package/opus/silk/fixed/arm/warped_autocorrelation_FIX_arm.h +68 -0
  554. package/opus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c +265 -0
  555. package/opus/silk/fixed/autocorr_FIX.c +48 -0
  556. package/opus/silk/fixed/burg_modified_FIX.c +280 -0
  557. package/opus/silk/fixed/corrMatrix_FIX.c +150 -0
  558. package/opus/silk/fixed/encode_frame_FIX.c +444 -0
  559. package/opus/silk/fixed/find_LPC_FIX.c +151 -0
  560. package/opus/silk/fixed/find_LTP_FIX.c +99 -0
  561. package/opus/silk/fixed/find_pitch_lags_FIX.c +143 -0
  562. package/opus/silk/fixed/find_pred_coefs_FIX.c +146 -0
  563. package/opus/silk/fixed/k2a_FIX.c +54 -0
  564. package/opus/silk/fixed/k2a_Q16_FIX.c +54 -0
  565. package/opus/silk/fixed/main_FIX.h +244 -0
  566. package/opus/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h +336 -0
  567. package/opus/silk/fixed/mips/prefilter_FIX_mipsr1.h +184 -0
  568. package/opus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h +165 -0
  569. package/opus/silk/fixed/noise_shape_analysis_FIX.c +407 -0
  570. package/opus/silk/fixed/pitch_analysis_core_FIX.c +721 -0
  571. package/opus/silk/fixed/process_gains_FIX.c +117 -0
  572. package/opus/silk/fixed/regularize_correlations_FIX.c +47 -0
  573. package/opus/silk/fixed/residual_energy16_FIX.c +103 -0
  574. package/opus/silk/fixed/residual_energy_FIX.c +98 -0
  575. package/opus/silk/fixed/schur64_FIX.c +93 -0
  576. package/opus/silk/fixed/schur_FIX.c +107 -0
  577. package/opus/silk/fixed/structs_FIX.h +116 -0
  578. package/opus/silk/fixed/vector_ops_FIX.c +102 -0
  579. package/opus/silk/fixed/warped_autocorrelation_FIX.c +92 -0
  580. package/opus/silk/fixed/x86/burg_modified_FIX_sse4_1.c +400 -0
  581. package/opus/silk/fixed/x86/vector_ops_FIX_sse4_1.c +93 -0
  582. package/opus/silk/float/LPC_analysis_filter_FLP.c +249 -0
  583. package/opus/silk/float/LPC_inv_pred_gain_FLP.c +73 -0
  584. package/opus/silk/float/LTP_analysis_filter_FLP.c +75 -0
  585. package/opus/silk/float/LTP_scale_ctrl_FLP.c +58 -0
  586. package/opus/silk/float/SigProc_FLP.h +205 -0
  587. package/opus/silk/float/apply_sine_window_FLP.c +81 -0
  588. package/opus/silk/float/autocorrelation_FLP.c +53 -0
  589. package/opus/silk/float/burg_modified_FLP.c +187 -0
  590. package/opus/silk/float/bwexpander_FLP.c +49 -0
  591. package/opus/silk/float/corrMatrix_FLP.c +95 -0
  592. package/opus/silk/float/encode_frame_FLP.c +432 -0
  593. package/opus/silk/float/energy_FLP.c +59 -0
  594. package/opus/silk/float/find_LPC_FLP.c +105 -0
  595. package/opus/silk/float/find_LTP_FLP.c +65 -0
  596. package/opus/silk/float/find_pitch_lags_FLP.c +132 -0
  597. package/opus/silk/float/find_pred_coefs_FLP.c +117 -0
  598. package/opus/silk/float/inner_product_FLP.c +59 -0
  599. package/opus/silk/float/k2a_FLP.c +54 -0
  600. package/opus/silk/float/main_FLP.h +290 -0
  601. package/opus/silk/float/noise_shape_analysis_FLP.c +350 -0
  602. package/opus/silk/float/pitch_analysis_core_FLP.c +630 -0
  603. package/opus/silk/float/process_gains_FLP.c +103 -0
  604. package/opus/silk/float/regularize_correlations_FLP.c +48 -0
  605. package/opus/silk/float/residual_energy_FLP.c +117 -0
  606. package/opus/silk/float/scale_copy_vector_FLP.c +57 -0
  607. package/opus/silk/float/scale_vector_FLP.c +56 -0
  608. package/opus/silk/float/schur_FLP.c +70 -0
  609. package/opus/silk/float/sort_FLP.c +83 -0
  610. package/opus/silk/float/structs_FLP.h +112 -0
  611. package/opus/silk/float/warped_autocorrelation_FLP.c +75 -0
  612. package/opus/silk/float/wrappers_FLP.c +209 -0
  613. package/opus/silk/float/x86/inner_product_FLP_avx2.c +85 -0
  614. package/opus/silk/gain_quant.c +142 -0
  615. package/opus/silk/init_decoder.c +84 -0
  616. package/opus/silk/init_encoder.c +68 -0
  617. package/opus/silk/inner_prod_aligned.c +47 -0
  618. package/opus/silk/interpolate.c +51 -0
  619. package/opus/silk/lin2log.c +46 -0
  620. package/opus/silk/log2lin.c +58 -0
  621. package/opus/silk/macros.h +151 -0
  622. package/opus/silk/main.h +486 -0
  623. package/opus/silk/meson.build +69 -0
  624. package/opus/silk/mips/NSQ_del_dec_mipsr1.h +410 -0
  625. package/opus/silk/mips/macros_mipsr1.h +92 -0
  626. package/opus/silk/mips/sigproc_fix_mipsr1.h +60 -0
  627. package/opus/silk/pitch_est_defines.h +88 -0
  628. package/opus/silk/pitch_est_tables.c +99 -0
  629. package/opus/silk/process_NLSFs.c +107 -0
  630. package/opus/silk/quant_LTP_gains.c +132 -0
  631. package/opus/silk/resampler.c +215 -0
  632. package/opus/silk/resampler_down2.c +74 -0
  633. package/opus/silk/resampler_down2_3.c +103 -0
  634. package/opus/silk/resampler_private.h +88 -0
  635. package/opus/silk/resampler_private_AR2.c +55 -0
  636. package/opus/silk/resampler_private_IIR_FIR.c +107 -0
  637. package/opus/silk/resampler_private_down_FIR.c +194 -0
  638. package/opus/silk/resampler_private_up2_HQ.c +113 -0
  639. package/opus/silk/resampler_rom.c +96 -0
  640. package/opus/silk/resampler_rom.h +68 -0
  641. package/opus/silk/resampler_structs.h +60 -0
  642. package/opus/silk/shell_coder.c +151 -0
  643. package/opus/silk/sigm_Q15.c +76 -0
  644. package/opus/silk/sort.c +154 -0
  645. package/opus/silk/stereo_LR_to_MS.c +229 -0
  646. package/opus/silk/stereo_MS_to_LR.c +85 -0
  647. package/opus/silk/stereo_decode_pred.c +73 -0
  648. package/opus/silk/stereo_encode_pred.c +62 -0
  649. package/opus/silk/stereo_find_predictor.c +79 -0
  650. package/opus/silk/stereo_quant_pred.c +73 -0
  651. package/opus/silk/structs.h +357 -0
  652. package/opus/silk/sum_sqr_shift.c +83 -0
  653. package/opus/silk/table_LSF_cos.c +70 -0
  654. package/opus/silk/tables.h +114 -0
  655. package/opus/silk/tables_LTP.c +294 -0
  656. package/opus/silk/tables_NLSF_CB_NB_MB.c +195 -0
  657. package/opus/silk/tables_NLSF_CB_WB.c +234 -0
  658. package/opus/silk/tables_gain.c +63 -0
  659. package/opus/silk/tables_other.c +124 -0
  660. package/opus/silk/tables_pitch_lag.c +69 -0
  661. package/opus/silk/tables_pulses_per_block.c +264 -0
  662. package/opus/silk/tests/meson.build +8 -0
  663. package/opus/silk/tests/test_unit_LPC_inv_pred_gain.c +130 -0
  664. package/opus/silk/tuning_parameters.h +155 -0
  665. package/opus/silk/typedef.h +81 -0
  666. package/opus/silk/x86/NSQ_del_dec_avx2.c +1075 -0
  667. package/opus/silk/x86/NSQ_del_dec_sse4_1.c +915 -0
  668. package/opus/silk/x86/NSQ_sse4_1.c +772 -0
  669. package/opus/silk/x86/SigProc_FIX_sse.h +99 -0
  670. package/opus/silk/x86/VAD_sse4_1.c +289 -0
  671. package/opus/silk/x86/VQ_WMat_EC_sse4_1.c +173 -0
  672. package/opus/silk/x86/main_sse.h +299 -0
  673. package/opus/silk/x86/x86_silk_map.c +179 -0
  674. package/opus/silk_headers.mk +44 -0
  675. package/opus/silk_sources.mk +164 -0
  676. package/opus/src/analysis.c +979 -0
  677. package/opus/src/analysis.h +103 -0
  678. package/opus/src/extensions.c +663 -0
  679. package/opus/src/mapping_matrix.c +993 -0
  680. package/opus/src/mapping_matrix.h +165 -0
  681. package/opus/src/meson.build +45 -0
  682. package/opus/src/mlp.c +132 -0
  683. package/opus/src/mlp.h +60 -0
  684. package/opus/src/mlp_data.c +672 -0
  685. package/opus/src/opus.c +362 -0
  686. package/opus/src/opus_compare.c +382 -0
  687. package/opus/src/opus_decoder.c +1579 -0
  688. package/opus/src/opus_demo.c +1194 -0
  689. package/opus/src/opus_encoder.c +3180 -0
  690. package/opus/src/opus_multistream.c +92 -0
  691. package/opus/src/opus_multistream_decoder.c +563 -0
  692. package/opus/src/opus_multistream_encoder.c +1321 -0
  693. package/opus/src/opus_private.h +263 -0
  694. package/opus/src/opus_projection_decoder.c +283 -0
  695. package/opus/src/opus_projection_encoder.c +522 -0
  696. package/opus/src/repacketizer.c +469 -0
  697. package/opus/src/repacketizer_demo.c +247 -0
  698. package/opus/src/tansig_table.h +45 -0
  699. package/opus/tar_list.txt +28 -0
  700. package/opus/tests/meson.build +39 -0
  701. package/opus/tests/opus_build_test.sh +29 -0
  702. package/opus/tests/opus_decode_fuzzer.c +124 -0
  703. package/opus/tests/opus_decode_fuzzer.options +2 -0
  704. package/opus/tests/opus_encode_regressions.c +1034 -0
  705. package/opus/tests/random_config.sh +126 -0
  706. package/opus/tests/run_vectors.sh +143 -0
  707. package/opus/tests/test_opus_api.c +1904 -0
  708. package/opus/tests/test_opus_common.h +86 -0
  709. package/opus/tests/test_opus_custom.c +694 -0
  710. package/opus/tests/test_opus_decode.c +481 -0
  711. package/opus/tests/test_opus_dred.c +107 -0
  712. package/opus/tests/test_opus_encode.c +738 -0
  713. package/opus/tests/test_opus_extensions.c +750 -0
  714. package/opus/tests/test_opus_padding.c +94 -0
  715. package/opus/tests/test_opus_projection.c +384 -0
  716. package/opus/training/rnn_dump.py +66 -0
  717. package/opus/training/rnn_train.py +177 -0
  718. package/opus/training/txt2hdf5.py +12 -0
  719. package/opus/update_version +65 -0
  720. package/package.json +2 -2
  721. package/src/build-ffmpeg-msys.sh +8 -2
  722. package/test.mp4 +0 -0
@@ -0,0 +1,839 @@
1
+ /* Copyright (C) 2003-2008 Jean-Marc Valin
2
+ Copyright (C) 2007-2012 Xiph.Org Foundation */
3
+ /**
4
+ @file fixed_debug.h
5
+ @brief Fixed-point operations with debugging
6
+ */
7
+ /*
8
+ Redistribution and use in source and binary forms, with or without
9
+ modification, are permitted provided that the following conditions
10
+ are met:
11
+
12
+ - Redistributions of source code must retain the above copyright
13
+ notice, this list of conditions and the following disclaimer.
14
+
15
+ - Redistributions in binary form must reproduce the above copyright
16
+ notice, this list of conditions and the following disclaimer in the
17
+ documentation and/or other materials provided with the distribution.
18
+
19
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
23
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
26
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
27
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
28
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
29
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
+ */
31
+
32
+ #ifndef FIXED_DEBUG_H
33
+ #define FIXED_DEBUG_H
34
+
35
+ #include <stdio.h>
36
+ #include "opus_defines.h"
37
+
38
+ #ifdef CELT_C
39
+ OPUS_EXPORT opus_int64 celt_mips=0;
40
+ #else
41
+ extern opus_int64 celt_mips;
42
+ #endif
43
+
44
+ #define MULT16_16SU(a,b) ((opus_val32)(opus_val16)(a)*(opus_val32)(opus_uint16)(b))
45
+ #define MULT32_32_Q31(a,b) ADD32(ADD32(SHL32(MULT16_16(SHR32((a),16),SHR((b),16)),1), SHR32(MULT16_16SU(SHR32((a),16),((b)&0x0000ffff)),15)), SHR32(MULT16_16SU(SHR32((b),16),((a)&0x0000ffff)),15))
46
+ #define MULT32_32_Q32(a,b) ADD32(ADD32(MULT16_16(SHR((a),16),SHR((b),16)), SHR(MULT16_16SU(SHR((a),16),((b)&0x0000ffff)),16)), SHR(MULT16_16SU(SHR((b),16),((a)&0x0000ffff)),16))
47
+
48
+ /** 16x32 multiplication, followed by a 16-bit shift right. Results fits in 32 bits */
49
+ #define MULT16_32_Q16(a,b) ADD32(MULT16_16((a),SHR32((b),16)), SHR32(MULT16_16SU((a),((b)&0x0000ffff)),16))
50
+
51
+ #define MULT16_32_P16(a,b) MULT16_32_PX(a,b,16)
52
+
53
+ #define QCONST16(x,bits) ((opus_val16)(.5+(x)*(((opus_val32)1)<<(bits))))
54
+ #define QCONST32(x,bits) ((opus_val32)(.5+(x)*(((opus_val64)1)<<(bits))))
55
+ #define GCONST2(x,bits) ((celt_glog)(.5+(x)*(((celt_glog)1)<<(bits))))
56
+ #define GCONST(x) GCONST2((x),DB_SHIFT)
57
+
58
+ #define VERIFY_SHORT(x) ((x)<=32767&&(x)>=-32768)
59
+ #define VERIFY_INT(x) ((x)<=2147483647LL&&(x)>=-2147483648LL)
60
+ #define VERIFY_UINT(x) ((x)<=(2147483647LLU<<1))
61
+
62
+ #define SHR(a,b) SHR32(a,b)
63
+ #define PSHR(a,b) PSHR32(a,b)
64
+
65
+ /** Add two 32-bit values, ignore any overflows */
66
+ #define ADD32_ovflw(a,b) (celt_mips+=2,(opus_val32)((opus_uint32)(a)+(opus_uint32)(b)))
67
+ /** Subtract two 32-bit values, ignore any overflows */
68
+ #define SUB32_ovflw(a,b) (celt_mips+=2,(opus_val32)((opus_uint32)(a)-(opus_uint32)(b)))
69
+ /* Avoid MSVC warning C4146: unary minus operator applied to unsigned type */
70
+ /** Negate 32-bit value, ignore any overflows */
71
+ #define NEG32_ovflw(a) (celt_mips+=2,(opus_val32)(0-(opus_uint32)(a)))
72
+
73
+ static OPUS_INLINE short NEG16(int x)
74
+ {
75
+ int res;
76
+ if (!VERIFY_SHORT(x))
77
+ {
78
+ fprintf (stderr, "NEG16: input is not short: %d\n", (int)x);
79
+ #ifdef FIXED_DEBUG_ASSERT
80
+ celt_assert(0);
81
+ #endif
82
+ }
83
+ res = -x;
84
+ if (!VERIFY_SHORT(res))
85
+ {
86
+ fprintf (stderr, "NEG16: output is not short: %d\n", (int)res);
87
+ #ifdef FIXED_DEBUG_ASSERT
88
+ celt_assert(0);
89
+ #endif
90
+ }
91
+ celt_mips++;
92
+ return res;
93
+ }
94
+ static OPUS_INLINE int NEG32(opus_int64 x)
95
+ {
96
+ opus_int64 res;
97
+ if (!VERIFY_INT(x))
98
+ {
99
+ fprintf (stderr, "NEG16: input is not int: %d\n", (int)x);
100
+ #ifdef FIXED_DEBUG_ASSERT
101
+ celt_assert(0);
102
+ #endif
103
+ }
104
+ res = -x;
105
+ if (!VERIFY_INT(res))
106
+ {
107
+ fprintf (stderr, "NEG16: output is not int: %d\n", (int)res);
108
+ #ifdef FIXED_DEBUG_ASSERT
109
+ celt_assert(0);
110
+ #endif
111
+ }
112
+ celt_mips+=2;
113
+ return res;
114
+ }
115
+
116
+ #define EXTRACT16(x) EXTRACT16_(x, __FILE__, __LINE__)
117
+ static OPUS_INLINE short EXTRACT16_(int x, char *file, int line)
118
+ {
119
+ int res;
120
+ if (!VERIFY_SHORT(x))
121
+ {
122
+ fprintf (stderr, "EXTRACT16: input is not short: %d in %s: line %d\n", x, file, line);
123
+ #ifdef FIXED_DEBUG_ASSERT
124
+ celt_assert(0);
125
+ #endif
126
+ }
127
+ res = x;
128
+ celt_mips++;
129
+ return res;
130
+ }
131
+
132
+ #define EXTEND32(x) EXTEND32_(x, __FILE__, __LINE__)
133
+ static OPUS_INLINE int EXTEND32_(int x, char *file, int line)
134
+ {
135
+ int res;
136
+ if (!VERIFY_SHORT(x))
137
+ {
138
+ fprintf (stderr, "EXTEND32: input is not short: %d in %s: line %d\n", x, file, line);
139
+ #ifdef FIXED_DEBUG_ASSERT
140
+ celt_assert(0);
141
+ #endif
142
+ }
143
+ res = x;
144
+ celt_mips++;
145
+ return res;
146
+ }
147
+
148
+ #define SHR16(a, shift) SHR16_(a, shift, __FILE__, __LINE__)
149
+ static OPUS_INLINE short SHR16_(int a, int shift, char *file, int line)
150
+ {
151
+ int res;
152
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(shift))
153
+ {
154
+ fprintf (stderr, "SHR16: inputs are not short: %d >> %d in %s: line %d\n", a, shift, file, line);
155
+ #ifdef FIXED_DEBUG_ASSERT
156
+ celt_assert(0);
157
+ #endif
158
+ }
159
+ res = a>>shift;
160
+ if (!VERIFY_SHORT(res))
161
+ {
162
+ fprintf (stderr, "SHR16: output is not short: %d in %s: line %d\n", res, file, line);
163
+ #ifdef FIXED_DEBUG_ASSERT
164
+ celt_assert(0);
165
+ #endif
166
+ }
167
+ celt_mips++;
168
+ return res;
169
+ }
170
+ #define SHL16(a, shift) SHL16_(a, shift, __FILE__, __LINE__)
171
+ static OPUS_INLINE short SHL16_(int a, int shift, char *file, int line)
172
+ {
173
+ opus_int32 res;
174
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(shift))
175
+ {
176
+ fprintf (stderr, "SHL16: inputs are not short: %d %d in %s: line %d\n", a, shift, file, line);
177
+ #ifdef FIXED_DEBUG_ASSERT
178
+ celt_assert(0);
179
+ #endif
180
+ }
181
+ res = (opus_int32)((opus_uint32)a<<shift);
182
+ if (!VERIFY_SHORT(res))
183
+ {
184
+ fprintf (stderr, "SHL16: output is not short: %d in %s: line %d\n", res, file, line);
185
+ #ifdef FIXED_DEBUG_ASSERT
186
+ celt_assert(0);
187
+ #endif
188
+ }
189
+ celt_mips++;
190
+ return res;
191
+ }
192
+
193
+ static OPUS_INLINE int SHR32(opus_int64 a, int shift)
194
+ {
195
+ opus_int64 res;
196
+ if (!VERIFY_INT(a) || !VERIFY_SHORT(shift))
197
+ {
198
+ fprintf (stderr, "SHR32: inputs are not int: %d %d\n", (int)a, shift);
199
+ #ifdef FIXED_DEBUG_ASSERT
200
+ celt_assert(0);
201
+ #endif
202
+ }
203
+ res = a>>shift;
204
+ if (!VERIFY_INT(res))
205
+ {
206
+ fprintf (stderr, "SHR32: output is not int: %d\n", (int)res);
207
+ #ifdef FIXED_DEBUG_ASSERT
208
+ celt_assert(0);
209
+ #endif
210
+ }
211
+ celt_mips+=2;
212
+ return res;
213
+ }
214
+ #define SHL32(a, shift) SHL32_(a, shift, __FILE__, __LINE__)
215
+ static OPUS_INLINE int SHL32_(opus_int64 a, int shift, char *file, int line)
216
+ {
217
+ opus_int64 res;
218
+ if (!VERIFY_INT(a) || !VERIFY_SHORT(shift))
219
+ {
220
+ fprintf (stderr, "SHL32: inputs are not int: %lld %d in %s: line %d\n", (long long)a, shift, file, line);
221
+ #ifdef FIXED_DEBUG_ASSERT
222
+ celt_assert(0);
223
+ #endif
224
+ }
225
+ res = (opus_int64)((opus_uint64)a<<shift);
226
+ if (!VERIFY_INT(res))
227
+ {
228
+ fprintf (stderr, "SHL32: output is not int: %lld<<%d = %lld in %s: line %d\n", (long long)a, shift, (long long)res, file, line);
229
+ #ifdef FIXED_DEBUG_ASSERT
230
+ celt_assert(0);
231
+ #endif
232
+ }
233
+ celt_mips+=2;
234
+ return res;
235
+ }
236
+
237
+ #define PSHR32(a,shift) (celt_mips--,SHR32(ADD32((a),(((opus_val32)(1)<<((shift))>>1))),shift))
238
+ #define VSHR32(a, shift) (((shift)>0) ? SHR32(a, shift) : SHL32(a, -(shift)))
239
+
240
+ #define ROUND16(x,a) (celt_mips--,EXTRACT16(PSHR32((x),(a))))
241
+ #define SROUND16(x,a) (celt_mips--,EXTRACT16(SATURATE(PSHR32(x,a), 32767)));
242
+
243
+ #define HALF16(x) (SHR16(x,1))
244
+ #define HALF32(x) (SHR32(x,1))
245
+
246
+ #define ADD16(a, b) ADD16_(a, b, __FILE__, __LINE__)
247
+ static OPUS_INLINE short ADD16_(int a, int b, char *file, int line)
248
+ {
249
+ int res;
250
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
251
+ {
252
+ fprintf (stderr, "ADD16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
253
+ #ifdef FIXED_DEBUG_ASSERT
254
+ celt_assert(0);
255
+ #endif
256
+ }
257
+ res = a+b;
258
+ if (!VERIFY_SHORT(res))
259
+ {
260
+ fprintf (stderr, "ADD16: output is not short: %d+%d=%d in %s: line %d\n", a,b,res, file, line);
261
+ #ifdef FIXED_DEBUG_ASSERT
262
+ celt_assert(0);
263
+ #endif
264
+ }
265
+ celt_mips++;
266
+ return res;
267
+ }
268
+
269
+ #define SUB16(a, b) SUB16_(a, b, __FILE__, __LINE__)
270
+ static OPUS_INLINE short SUB16_(int a, int b, char *file, int line)
271
+ {
272
+ int res;
273
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
274
+ {
275
+ fprintf (stderr, "SUB16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
276
+ #ifdef FIXED_DEBUG_ASSERT
277
+ celt_assert(0);
278
+ #endif
279
+ }
280
+ res = a-b;
281
+ if (!VERIFY_SHORT(res))
282
+ {
283
+ fprintf (stderr, "SUB16: output is not short: %d in %s: line %d\n", res, file, line);
284
+ #ifdef FIXED_DEBUG_ASSERT
285
+ celt_assert(0);
286
+ #endif
287
+ }
288
+ celt_mips++;
289
+ return res;
290
+ }
291
+
292
+ #define ADD32(a, b) ADD32_(a, b, __FILE__, __LINE__)
293
+ static OPUS_INLINE int ADD32_(opus_int64 a, opus_int64 b, char *file, int line)
294
+ {
295
+ opus_int64 res;
296
+ if (!VERIFY_INT(a) || !VERIFY_INT(b))
297
+ {
298
+ fprintf (stderr, "ADD32: inputs are not int: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
299
+ #ifdef FIXED_DEBUG_ASSERT
300
+ celt_assert(0);
301
+ #endif
302
+ }
303
+ res = a+b;
304
+ if (!VERIFY_INT(res))
305
+ {
306
+ fprintf (stderr, "ADD32: output is not int: %d in %s: line %d\n", (int)res, file, line);
307
+ #ifdef FIXED_DEBUG_ASSERT
308
+ celt_assert(0);
309
+ #endif
310
+ }
311
+ celt_mips+=2;
312
+ return res;
313
+ }
314
+
315
+ #define SUB32(a, b) SUB32_(a, b, __FILE__, __LINE__)
316
+ static OPUS_INLINE int SUB32_(opus_int64 a, opus_int64 b, char *file, int line)
317
+ {
318
+ opus_int64 res;
319
+ if (!VERIFY_INT(a) || !VERIFY_INT(b))
320
+ {
321
+ fprintf (stderr, "SUB32: inputs are not int: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
322
+ #ifdef FIXED_DEBUG_ASSERT
323
+ celt_assert(0);
324
+ #endif
325
+ }
326
+ res = a-b;
327
+ if (!VERIFY_INT(res))
328
+ {
329
+ fprintf (stderr, "SUB32: output is not int: %d in %s: line %d\n", (int)res, file, line);
330
+ #ifdef FIXED_DEBUG_ASSERT
331
+ celt_assert(0);
332
+ #endif
333
+ }
334
+ celt_mips+=2;
335
+ return res;
336
+ }
337
+
338
+ #undef UADD32
339
+ #define UADD32(a, b) UADD32_(a, b, __FILE__, __LINE__)
340
+ static OPUS_INLINE unsigned int UADD32_(opus_uint64 a, opus_uint64 b, char *file, int line)
341
+ {
342
+ opus_uint64 res;
343
+ if (!VERIFY_UINT(a) || !VERIFY_UINT(b))
344
+ {
345
+ fprintf (stderr, "UADD32: inputs are not uint32: %llu %llu in %s: line %d\n", (unsigned long long)a, (unsigned long long)b, file, line);
346
+ #ifdef FIXED_DEBUG_ASSERT
347
+ celt_assert(0);
348
+ #endif
349
+ }
350
+ res = a+b;
351
+ if (!VERIFY_UINT(res))
352
+ {
353
+ fprintf (stderr, "UADD32: output is not uint32: %llu in %s: line %d\n", (unsigned long long)res, file, line);
354
+ #ifdef FIXED_DEBUG_ASSERT
355
+ celt_assert(0);
356
+ #endif
357
+ }
358
+ celt_mips+=2;
359
+ return res;
360
+ }
361
+
362
+ #undef USUB32
363
+ #define USUB32(a, b) USUB32_(a, b, __FILE__, __LINE__)
364
+ static OPUS_INLINE unsigned int USUB32_(opus_uint64 a, opus_uint64 b, char *file, int line)
365
+ {
366
+ opus_uint64 res;
367
+ if (!VERIFY_UINT(a) || !VERIFY_UINT(b))
368
+ {
369
+ fprintf (stderr, "USUB32: inputs are not uint32: %llu %llu in %s: line %d\n", (unsigned long long)a, (unsigned long long)b, file, line);
370
+ #ifdef FIXED_DEBUG_ASSERT
371
+ celt_assert(0);
372
+ #endif
373
+ }
374
+ if (a<b)
375
+ {
376
+ fprintf (stderr, "USUB32: inputs underflow: %llu < %llu in %s: line %d\n", (unsigned long long)a, (unsigned long long)b, file, line);
377
+ #ifdef FIXED_DEBUG_ASSERT
378
+ celt_assert(0);
379
+ #endif
380
+ }
381
+ res = a-b;
382
+ if (!VERIFY_UINT(res))
383
+ {
384
+ fprintf (stderr, "USUB32: output is not uint32: %llu - %llu = %llu in %s: line %d\n", (unsigned long long)a, (unsigned long long)b, (unsigned long long)res, file, line);
385
+ #ifdef FIXED_DEBUG_ASSERT
386
+ celt_assert(0);
387
+ #endif
388
+ }
389
+ celt_mips+=2;
390
+ return res;
391
+ }
392
+
393
+ /* result fits in 16 bits */
394
+ static OPUS_INLINE short MULT16_16_16(int a, int b)
395
+ {
396
+ int res;
397
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
398
+ {
399
+ fprintf (stderr, "MULT16_16_16: inputs are not short: %d %d\n", a, b);
400
+ #ifdef FIXED_DEBUG_ASSERT
401
+ celt_assert(0);
402
+ #endif
403
+ }
404
+ res = a*b;
405
+ if (!VERIFY_SHORT(res))
406
+ {
407
+ fprintf (stderr, "MULT16_16_16: output is not short: %d\n", res);
408
+ #ifdef FIXED_DEBUG_ASSERT
409
+ celt_assert(0);
410
+ #endif
411
+ }
412
+ celt_mips++;
413
+ return res;
414
+ }
415
+
416
+ /* result fits in 32 bits */
417
+ static OPUS_INLINE int MULT32_32_32(opus_int64 a, opus_int64 b)
418
+ {
419
+ opus_int64 res;
420
+ if (!VERIFY_INT(a) || !VERIFY_INT(b))
421
+ {
422
+ fprintf (stderr, "MULT32_32_32: inputs are not int: %lld %lld\n", (long long)a, (long long)b);
423
+ #ifdef FIXED_DEBUG_ASSERT
424
+ celt_assert(0);
425
+ #endif
426
+ }
427
+ res = a*b;
428
+ if (!VERIFY_INT(res))
429
+ {
430
+ fprintf (stderr, "MULT32_32_32: output is not int: %lld\n", (long long)res);
431
+ #ifdef FIXED_DEBUG_ASSERT
432
+ celt_assert(0);
433
+ #endif
434
+ }
435
+ celt_mips+=5;
436
+ return res;
437
+ }
438
+
439
+ static OPUS_INLINE int MULT32_32_Q16(opus_int64 a, opus_int64 b)
440
+ {
441
+ opus_int64 res;
442
+ if (!VERIFY_INT(a) || !VERIFY_INT(b))
443
+ {
444
+ fprintf (stderr, "MULT32_32_Q16: inputs are not int: %lld %lld\n", (long long)a, (long long)b);
445
+ #ifdef FIXED_DEBUG_ASSERT
446
+ celt_assert(0);
447
+ #endif
448
+ }
449
+ res = ((opus_int64)(a)*(opus_int64)(b)) >> 16;
450
+ if (!VERIFY_INT(res))
451
+ {
452
+ fprintf (stderr, "MULT32_32_Q16: output is not int: %lld*%lld=%lld\n", (long long)a, (long long)b, (long long)res);
453
+ #ifdef FIXED_DEBUG_ASSERT
454
+ celt_assert(0);
455
+ #endif
456
+ }
457
+ celt_mips+=5;
458
+ return res;
459
+ }
460
+
461
+ #define MULT16_16(a, b) MULT16_16_(a, b, __FILE__, __LINE__)
462
+ static OPUS_INLINE int MULT16_16_(int a, int b, char *file, int line)
463
+ {
464
+ opus_int64 res;
465
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
466
+ {
467
+ fprintf (stderr, "MULT16_16: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
468
+ #ifdef FIXED_DEBUG_ASSERT
469
+ celt_assert(0);
470
+ #endif
471
+ }
472
+ res = ((opus_int64)a)*b;
473
+ if (!VERIFY_INT(res))
474
+ {
475
+ fprintf (stderr, "MULT16_16: output is not int: %d in %s: line %d\n", (int)res, file, line);
476
+ #ifdef FIXED_DEBUG_ASSERT
477
+ celt_assert(0);
478
+ #endif
479
+ }
480
+ celt_mips++;
481
+ return res;
482
+ }
483
+
484
+ #define MAC16_16(c,a,b) (celt_mips-=2,ADD32((c),MULT16_16((a),(b))))
485
+
486
+ #define MULT16_32_QX(a, b, Q) MULT16_32_QX_(a, b, Q, __FILE__, __LINE__)
487
+ static OPUS_INLINE int MULT16_32_QX_(int a, opus_int64 b, int Q, char *file, int line)
488
+ {
489
+ opus_int64 res;
490
+ if (!VERIFY_SHORT(a) || !VERIFY_INT(b))
491
+ {
492
+ fprintf (stderr, "MULT16_32_Q%d: inputs are not short+int: %d %d in %s: line %d\n", Q, (int)a, (int)b, file, line);
493
+ #ifdef FIXED_DEBUG_ASSERT
494
+ celt_assert(0);
495
+ #endif
496
+ }
497
+ if (ABS32(b)>=((opus_int64)(1)<<(16+Q)))
498
+ {
499
+ fprintf (stderr, "MULT16_32_Q%d: second operand too large: %d %d in %s: line %d\n", Q, (int)a, (int)b, file, line);
500
+ #ifdef FIXED_DEBUG_ASSERT
501
+ celt_assert(0);
502
+ #endif
503
+ }
504
+ res = (((opus_int64)a)*(opus_int64)b) >> Q;
505
+ if (!VERIFY_INT(res))
506
+ {
507
+ fprintf (stderr, "MULT16_32_Q%d: output is not int: %d*%d=%d in %s: line %d\n", Q, (int)a, (int)b,(int)res, file, line);
508
+ #ifdef FIXED_DEBUG_ASSERT
509
+ celt_assert(0);
510
+ #endif
511
+ }
512
+ if (Q==15)
513
+ celt_mips+=3;
514
+ else
515
+ celt_mips+=4;
516
+ return res;
517
+ }
518
+
519
+ #define MULT16_32_PX(a, b, Q) MULT16_32_PX_(a, b, Q, __FILE__, __LINE__)
520
+ static OPUS_INLINE int MULT16_32_PX_(int a, opus_int64 b, int Q, char *file, int line)
521
+ {
522
+ opus_int64 res;
523
+ if (!VERIFY_SHORT(a) || !VERIFY_INT(b))
524
+ {
525
+ fprintf (stderr, "MULT16_32_P%d: inputs are not short+int: %d %d in %s: line %d\n\n", Q, (int)a, (int)b, file, line);
526
+ #ifdef FIXED_DEBUG_ASSERT
527
+ celt_assert(0);
528
+ #endif
529
+ }
530
+ if (ABS32(b)>=((opus_int64)(1)<<(16+Q)))
531
+ {
532
+ fprintf (stderr, "MULT16_32_Q%d: second operand too large: %d %d in %s: line %d\n\n", Q, (int)a, (int)b,file, line);
533
+ #ifdef FIXED_DEBUG_ASSERT
534
+ celt_assert(0);
535
+ #endif
536
+ }
537
+ res = ((((opus_int64)a)*(opus_int64)b) + (((opus_val32)(1)<<Q)>>1))>> Q;
538
+ if (!VERIFY_INT(res))
539
+ {
540
+ fprintf (stderr, "MULT16_32_P%d: output is not int: %d*%d=%d in %s: line %d\n\n", Q, (int)a, (int)b,(int)res, file, line);
541
+ #ifdef FIXED_DEBUG_ASSERT
542
+ celt_assert(0);
543
+ #endif
544
+ }
545
+ if (Q==15)
546
+ celt_mips+=4;
547
+ else
548
+ celt_mips+=5;
549
+ return res;
550
+ }
551
+
552
+ #define MULT16_32_Q15(a,b) MULT16_32_QX(a,b,15)
553
+ #define MAC16_32_Q15(c,a,b) (celt_mips-=2,ADD32((c),MULT16_32_Q15((a),(b))))
554
+ #define MAC16_32_Q16(c,a,b) (celt_mips-=2,ADD32((c),MULT16_32_Q16((a),(b))))
555
+
556
+ static OPUS_INLINE int SATURATE(int a, int b)
557
+ {
558
+ if (a>b)
559
+ a=b;
560
+ if (a<-b)
561
+ a = -b;
562
+ celt_mips+=3;
563
+ return a;
564
+ }
565
+
566
+ static OPUS_INLINE opus_int16 SATURATE16(opus_int32 a)
567
+ {
568
+ celt_mips+=3;
569
+ if (a>32767)
570
+ return 32767;
571
+ else if (a<-32768)
572
+ return -32768;
573
+ else return a;
574
+ }
575
+
576
+ static OPUS_INLINE int MULT16_16_Q11_32(int a, int b)
577
+ {
578
+ opus_int64 res;
579
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
580
+ {
581
+ fprintf (stderr, "MULT16_16_Q11: inputs are not short: %d %d\n", a, b);
582
+ #ifdef FIXED_DEBUG_ASSERT
583
+ celt_assert(0);
584
+ #endif
585
+ }
586
+ res = ((opus_int64)a)*b;
587
+ res >>= 11;
588
+ if (!VERIFY_INT(res))
589
+ {
590
+ fprintf (stderr, "MULT16_16_Q11: output is not short: %d*%d=%d\n", (int)a, (int)b, (int)res);
591
+ #ifdef FIXED_DEBUG_ASSERT
592
+ celt_assert(0);
593
+ #endif
594
+ }
595
+ celt_mips+=3;
596
+ return res;
597
+ }
598
+ static OPUS_INLINE short MULT16_16_Q13(int a, int b)
599
+ {
600
+ opus_int64 res;
601
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
602
+ {
603
+ fprintf (stderr, "MULT16_16_Q13: inputs are not short: %d %d\n", a, b);
604
+ #ifdef FIXED_DEBUG_ASSERT
605
+ celt_assert(0);
606
+ #endif
607
+ }
608
+ res = ((opus_int64)a)*b;
609
+ res >>= 13;
610
+ if (!VERIFY_SHORT(res))
611
+ {
612
+ fprintf (stderr, "MULT16_16_Q13: output is not short: %d*%d=%d\n", a, b, (int)res);
613
+ #ifdef FIXED_DEBUG_ASSERT
614
+ celt_assert(0);
615
+ #endif
616
+ }
617
+ celt_mips+=3;
618
+ return res;
619
+ }
620
+ static OPUS_INLINE short MULT16_16_Q14(int a, int b)
621
+ {
622
+ opus_int64 res;
623
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
624
+ {
625
+ fprintf (stderr, "MULT16_16_Q14: inputs are not short: %d %d\n", a, b);
626
+ #ifdef FIXED_DEBUG_ASSERT
627
+ celt_assert(0);
628
+ #endif
629
+ }
630
+ res = ((opus_int64)a)*b;
631
+ res >>= 14;
632
+ if (!VERIFY_SHORT(res))
633
+ {
634
+ fprintf (stderr, "MULT16_16_Q14: output is not short: %d\n", (int)res);
635
+ #ifdef FIXED_DEBUG_ASSERT
636
+ celt_assert(0);
637
+ #endif
638
+ }
639
+ celt_mips+=3;
640
+ return res;
641
+ }
642
+
643
+ #define MULT16_16_Q15(a, b) MULT16_16_Q15_(a, b, __FILE__, __LINE__)
644
+ static OPUS_INLINE short MULT16_16_Q15_(int a, int b, char *file, int line)
645
+ {
646
+ opus_int64 res;
647
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
648
+ {
649
+ fprintf (stderr, "MULT16_16_Q15: inputs are not short: %d %d in %s: line %d\n", a, b, file, line);
650
+ #ifdef FIXED_DEBUG_ASSERT
651
+ celt_assert(0);
652
+ #endif
653
+ }
654
+ res = ((opus_int64)a)*b;
655
+ res >>= 15;
656
+ if (!VERIFY_SHORT(res))
657
+ {
658
+ fprintf (stderr, "MULT16_16_Q15: output is not short: %d in %s: line %d\n", (int)res, file, line);
659
+ #ifdef FIXED_DEBUG_ASSERT
660
+ celt_assert(0);
661
+ #endif
662
+ }
663
+ celt_mips+=1;
664
+ return res;
665
+ }
666
+
667
+ static OPUS_INLINE short MULT16_16_P13(int a, int b)
668
+ {
669
+ opus_int64 res;
670
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
671
+ {
672
+ fprintf (stderr, "MULT16_16_P13: inputs are not short: %d %d\n", a, b);
673
+ #ifdef FIXED_DEBUG_ASSERT
674
+ celt_assert(0);
675
+ #endif
676
+ }
677
+ res = ((opus_int64)a)*b;
678
+ res += 4096;
679
+ if (!VERIFY_INT(res))
680
+ {
681
+ fprintf (stderr, "MULT16_16_P13: overflow: %d*%d=%d\n", a, b, (int)res);
682
+ #ifdef FIXED_DEBUG_ASSERT
683
+ celt_assert(0);
684
+ #endif
685
+ }
686
+ res >>= 13;
687
+ if (!VERIFY_SHORT(res))
688
+ {
689
+ fprintf (stderr, "MULT16_16_P13: output is not short: %d*%d=%d\n", a, b, (int)res);
690
+ #ifdef FIXED_DEBUG_ASSERT
691
+ celt_assert(0);
692
+ #endif
693
+ }
694
+ celt_mips+=4;
695
+ return res;
696
+ }
697
+ static OPUS_INLINE short MULT16_16_P14(int a, int b)
698
+ {
699
+ opus_int64 res;
700
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
701
+ {
702
+ fprintf (stderr, "MULT16_16_P14: inputs are not short: %d %d\n", a, b);
703
+ #ifdef FIXED_DEBUG_ASSERT
704
+ celt_assert(0);
705
+ #endif
706
+ }
707
+ res = ((opus_int64)a)*b;
708
+ res += 8192;
709
+ if (!VERIFY_INT(res))
710
+ {
711
+ fprintf (stderr, "MULT16_16_P14: overflow: %d*%d=%d\n", a, b, (int)res);
712
+ #ifdef FIXED_DEBUG_ASSERT
713
+ celt_assert(0);
714
+ #endif
715
+ }
716
+ res >>= 14;
717
+ if (!VERIFY_SHORT(res))
718
+ {
719
+ fprintf (stderr, "MULT16_16_P14: output is not short: %d*%d=%d\n", a, b, (int)res);
720
+ #ifdef FIXED_DEBUG_ASSERT
721
+ celt_assert(0);
722
+ #endif
723
+ }
724
+ celt_mips+=4;
725
+ return res;
726
+ }
727
+ static OPUS_INLINE short MULT16_16_P15(int a, int b)
728
+ {
729
+ opus_int64 res;
730
+ if (!VERIFY_SHORT(a) || !VERIFY_SHORT(b))
731
+ {
732
+ fprintf (stderr, "MULT16_16_P15: inputs are not short: %d %d\n", a, b);
733
+ #ifdef FIXED_DEBUG_ASSERT
734
+ celt_assert(0);
735
+ #endif
736
+ }
737
+ res = ((opus_int64)a)*b;
738
+ res += 16384;
739
+ if (!VERIFY_INT(res))
740
+ {
741
+ fprintf (stderr, "MULT16_16_P15: overflow: %d*%d=%d\n", a, b, (int)res);
742
+ #ifdef FIXED_DEBUG_ASSERT
743
+ celt_assert(0);
744
+ #endif
745
+ }
746
+ res >>= 15;
747
+ if (!VERIFY_SHORT(res))
748
+ {
749
+ fprintf (stderr, "MULT16_16_P15: output is not short: %d*%d=%d\n", a, b, (int)res);
750
+ #ifdef FIXED_DEBUG_ASSERT
751
+ celt_assert(0);
752
+ #endif
753
+ }
754
+ celt_mips+=2;
755
+ return res;
756
+ }
757
+
758
+ #define DIV32_16(a, b) DIV32_16_(a, b, __FILE__, __LINE__)
759
+
760
+ static OPUS_INLINE int DIV32_16_(opus_int64 a, opus_int64 b, char *file, int line)
761
+ {
762
+ opus_int64 res;
763
+ if (b==0)
764
+ {
765
+ fprintf(stderr, "DIV32_16: divide by zero: %d/%d in %s: line %d\n", (int)a, (int)b, file, line);
766
+ #ifdef FIXED_DEBUG_ASSERT
767
+ celt_assert(0);
768
+ #endif
769
+ return 0;
770
+ }
771
+ if (!VERIFY_INT(a) || !VERIFY_SHORT(b))
772
+ {
773
+ fprintf (stderr, "DIV32_16: inputs are not int/short: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
774
+ #ifdef FIXED_DEBUG_ASSERT
775
+ celt_assert(0);
776
+ #endif
777
+ }
778
+ res = a/b;
779
+ if (!VERIFY_SHORT(res))
780
+ {
781
+ fprintf (stderr, "DIV32_16: output is not short: %d / %d = %d in %s: line %d\n", (int)a,(int)b,(int)res, file, line);
782
+ if (res>32767)
783
+ res = 32767;
784
+ if (res<-32768)
785
+ res = -32768;
786
+ #ifdef FIXED_DEBUG_ASSERT
787
+ celt_assert(0);
788
+ #endif
789
+ }
790
+ celt_mips+=35;
791
+ return res;
792
+ }
793
+
794
+ #define DIV32(a, b) DIV32_(a, b, __FILE__, __LINE__)
795
+ static OPUS_INLINE int DIV32_(opus_int64 a, opus_int64 b, char *file, int line)
796
+ {
797
+ opus_int64 res;
798
+ if (b==0)
799
+ {
800
+ fprintf(stderr, "DIV32: divide by zero: %d/%d in %s: line %d\n", (int)a, (int)b, file, line);
801
+ #ifdef FIXED_DEBUG_ASSERT
802
+ celt_assert(0);
803
+ #endif
804
+ return 0;
805
+ }
806
+
807
+ if (!VERIFY_INT(a) || !VERIFY_INT(b))
808
+ {
809
+ fprintf (stderr, "DIV32: inputs are not int/short: %d %d in %s: line %d\n", (int)a, (int)b, file, line);
810
+ #ifdef FIXED_DEBUG_ASSERT
811
+ celt_assert(0);
812
+ #endif
813
+ }
814
+ res = a/b;
815
+ if (!VERIFY_INT(res))
816
+ {
817
+ fprintf (stderr, "DIV32: output is not int: %d in %s: line %d\n", (int)res, file, line);
818
+ #ifdef FIXED_DEBUG_ASSERT
819
+ celt_assert(0);
820
+ #endif
821
+ }
822
+ celt_mips+=70;
823
+ return res;
824
+ }
825
+
826
+ static OPUS_INLINE opus_val16 SIG2WORD16_generic(celt_sig x)
827
+ {
828
+ x = PSHR32(x, SIG_SHIFT);
829
+ x = MAX32(x, -32768);
830
+ x = MIN32(x, 32767);
831
+ return EXTRACT16(x);
832
+ }
833
+ #define SIG2WORD16(x) (SIG2WORD16_generic(x))
834
+
835
+
836
+ #undef PRINT_MIPS
837
+ #define PRINT_MIPS(file) do {fprintf (file, "total complexity = %llu MIPS\n", (unsigned long long)celt_mips);} while (0);
838
+
839
+ #endif