@scrypted/libav 1.0.166 → 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.
Files changed (720) hide show
  1. package/opus/.gitattributes +10 -0
  2. package/opus/.gitlab-ci.yml +122 -0
  3. package/opus/AUTHORS +6 -0
  4. package/opus/CMakeLists.txt +755 -0
  5. package/opus/COPYING +44 -0
  6. package/opus/ChangeLog +0 -0
  7. package/opus/LICENSE_PLEASE_READ.txt +22 -0
  8. package/opus/Makefile.am +497 -0
  9. package/opus/Makefile.mips +169 -0
  10. package/opus/Makefile.unix +167 -0
  11. package/opus/NEWS +0 -0
  12. package/opus/README +189 -0
  13. package/opus/README.draft +54 -0
  14. package/opus/autogen.bat +13 -0
  15. package/opus/autogen.sh +16 -0
  16. package/opus/celt/_kiss_fft_guts.h +188 -0
  17. package/opus/celt/arch.h +390 -0
  18. package/opus/celt/arm/arm2gnu.pl +353 -0
  19. package/opus/celt/arm/arm_celt_map.c +171 -0
  20. package/opus/celt/arm/armcpu.c +291 -0
  21. package/opus/celt/arm/armcpu.h +90 -0
  22. package/opus/celt/arm/armopts.s.in +37 -0
  23. package/opus/celt/arm/celt_fft_ne10.c +173 -0
  24. package/opus/celt/arm/celt_mdct_ne10.c +258 -0
  25. package/opus/celt/arm/celt_neon_intr.c +272 -0
  26. package/opus/celt/arm/celt_pitch_xcorr_arm.s +551 -0
  27. package/opus/celt/arm/fft_arm.h +71 -0
  28. package/opus/celt/arm/fixed_arm64.h +35 -0
  29. package/opus/celt/arm/fixed_armv4.h +80 -0
  30. package/opus/celt/arm/fixed_armv5e.h +151 -0
  31. package/opus/celt/arm/kiss_fft_armv4.h +121 -0
  32. package/opus/celt/arm/kiss_fft_armv5e.h +118 -0
  33. package/opus/celt/arm/mdct_arm.h +59 -0
  34. package/opus/celt/arm/meson.build +12 -0
  35. package/opus/celt/arm/pitch_arm.h +160 -0
  36. package/opus/celt/arm/pitch_neon_intr.c +288 -0
  37. package/opus/celt/bands.c +1686 -0
  38. package/opus/celt/bands.h +123 -0
  39. package/opus/celt/celt.c +317 -0
  40. package/opus/celt/celt.h +255 -0
  41. package/opus/celt/celt_decoder.c +1616 -0
  42. package/opus/celt/celt_encoder.c +2854 -0
  43. package/opus/celt/celt_lpc.c +364 -0
  44. package/opus/celt/celt_lpc.h +66 -0
  45. package/opus/celt/cpu_support.h +72 -0
  46. package/opus/celt/cwrs.c +715 -0
  47. package/opus/celt/cwrs.h +48 -0
  48. package/opus/celt/dump_modes/dump_modes.c +400 -0
  49. package/opus/celt/dump_modes/dump_modes_arch.h +45 -0
  50. package/opus/celt/dump_modes/dump_modes_arm_ne10.c +152 -0
  51. package/opus/celt/ecintrin.h +91 -0
  52. package/opus/celt/entcode.c +153 -0
  53. package/opus/celt/entcode.h +152 -0
  54. package/opus/celt/entdec.c +266 -0
  55. package/opus/celt/entdec.h +110 -0
  56. package/opus/celt/entenc.c +305 -0
  57. package/opus/celt/entenc.h +119 -0
  58. package/opus/celt/fixed_c5x.h +79 -0
  59. package/opus/celt/fixed_c6x.h +70 -0
  60. package/opus/celt/fixed_debug.h +839 -0
  61. package/opus/celt/fixed_generic.h +201 -0
  62. package/opus/celt/float_cast.h +152 -0
  63. package/opus/celt/kiss_fft.c +648 -0
  64. package/opus/celt/kiss_fft.h +217 -0
  65. package/opus/celt/laplace.c +235 -0
  66. package/opus/celt/laplace.h +57 -0
  67. package/opus/celt/mathops.c +217 -0
  68. package/opus/celt/mathops.h +479 -0
  69. package/opus/celt/mdct.c +372 -0
  70. package/opus/celt/mdct.h +115 -0
  71. package/opus/celt/meson.build +64 -0
  72. package/opus/celt/mfrngcod.h +48 -0
  73. package/opus/celt/mips/celt_mipsr1.h +152 -0
  74. package/opus/celt/mips/fixed_generic_mipsr1.h +126 -0
  75. package/opus/celt/mips/kiss_fft_mipsr1.h +167 -0
  76. package/opus/celt/mips/mdct_mipsr1.h +288 -0
  77. package/opus/celt/mips/pitch_mipsr1.h +161 -0
  78. package/opus/celt/mips/vq_mipsr1.h +116 -0
  79. package/opus/celt/modes.c +450 -0
  80. package/opus/celt/modes.h +75 -0
  81. package/opus/celt/opus_custom_demo.c +451 -0
  82. package/opus/celt/os_support.h +99 -0
  83. package/opus/celt/pitch.c +555 -0
  84. package/opus/celt/pitch.h +203 -0
  85. package/opus/celt/quant_bands.c +562 -0
  86. package/opus/celt/quant_bands.h +66 -0
  87. package/opus/celt/rate.c +646 -0
  88. package/opus/celt/rate.h +101 -0
  89. package/opus/celt/stack_alloc.h +185 -0
  90. package/opus/celt/static_modes_fixed.h +1541 -0
  91. package/opus/celt/static_modes_fixed_arm_ne10.h +388 -0
  92. package/opus/celt/static_modes_float.h +888 -0
  93. package/opus/celt/static_modes_float_arm_ne10.h +404 -0
  94. package/opus/celt/tests/meson.build +19 -0
  95. package/opus/celt/tests/test_unit_cwrs32.c +162 -0
  96. package/opus/celt/tests/test_unit_dft.c +181 -0
  97. package/opus/celt/tests/test_unit_entropy.c +383 -0
  98. package/opus/celt/tests/test_unit_laplace.c +94 -0
  99. package/opus/celt/tests/test_unit_mathops.c +369 -0
  100. package/opus/celt/tests/test_unit_mdct.c +233 -0
  101. package/opus/celt/tests/test_unit_rotation.c +87 -0
  102. package/opus/celt/tests/test_unit_types.c +50 -0
  103. package/opus/celt/vq.c +442 -0
  104. package/opus/celt/vq.h +79 -0
  105. package/opus/celt/x86/celt_lpc_sse.h +67 -0
  106. package/opus/celt/x86/celt_lpc_sse4_1.c +96 -0
  107. package/opus/celt/x86/pitch_avx.c +101 -0
  108. package/opus/celt/x86/pitch_sse.c +185 -0
  109. package/opus/celt/x86/pitch_sse.h +216 -0
  110. package/opus/celt/x86/pitch_sse2.c +95 -0
  111. package/opus/celt/x86/pitch_sse4_1.c +240 -0
  112. package/opus/celt/x86/vq_sse.h +52 -0
  113. package/opus/celt/x86/vq_sse2.c +217 -0
  114. package/opus/celt/x86/x86_arch_macros.h +47 -0
  115. package/opus/celt/x86/x86_celt_map.c +187 -0
  116. package/opus/celt/x86/x86cpu.c +184 -0
  117. package/opus/celt/x86/x86cpu.h +112 -0
  118. package/opus/celt_headers.mk +54 -0
  119. package/opus/celt_sources.mk +55 -0
  120. package/opus/cmake/CFeatureCheck.cmake +39 -0
  121. package/opus/cmake/OpusBuildtype.cmake +27 -0
  122. package/opus/cmake/OpusConfig.cmake +118 -0
  123. package/opus/cmake/OpusConfig.cmake.in +20 -0
  124. package/opus/cmake/OpusFunctions.cmake +231 -0
  125. package/opus/cmake/OpusPackageVersion.cmake +70 -0
  126. package/opus/cmake/OpusSources.cmake +71 -0
  127. package/opus/cmake/README.md +132 -0
  128. package/opus/cmake/RunTest.cmake +61 -0
  129. package/opus/cmake/config.h.cmake.in +1 -0
  130. package/opus/cmake/cpu_info_by_asm.c +31 -0
  131. package/opus/cmake/cpu_info_by_c.c +9 -0
  132. package/opus/cmake/vla.c +7 -0
  133. package/opus/configure.ac +1091 -0
  134. package/opus/dnn/LPCNet.yml +24 -0
  135. package/opus/dnn/README +1 -0
  136. package/opus/dnn/README.md +126 -0
  137. package/opus/dnn/adaconvtest.c +449 -0
  138. package/opus/dnn/arm/arm_dnn_map.c +88 -0
  139. package/opus/dnn/arm/dnn_arm.h +104 -0
  140. package/opus/dnn/arm/nnet_dotprod.c +38 -0
  141. package/opus/dnn/arm/nnet_neon.c +38 -0
  142. package/opus/dnn/burg.c +246 -0
  143. package/opus/dnn/burg.h +41 -0
  144. package/opus/dnn/common.h +56 -0
  145. package/opus/dnn/datasets.txt +163 -0
  146. package/opus/dnn/download_model.bat +9 -0
  147. package/opus/dnn/download_model.sh +30 -0
  148. package/opus/dnn/dred_coding.c +44 -0
  149. package/opus/dnn/dred_coding.h +36 -0
  150. package/opus/dnn/dred_config.h +54 -0
  151. package/opus/dnn/dred_decoder.c +129 -0
  152. package/opus/dnn/dred_decoder.h +49 -0
  153. package/opus/dnn/dred_encoder.c +363 -0
  154. package/opus/dnn/dred_encoder.h +71 -0
  155. package/opus/dnn/dred_rdovae.h +42 -0
  156. package/opus/dnn/dred_rdovae_dec.c +139 -0
  157. package/opus/dnn/dred_rdovae_dec.h +53 -0
  158. package/opus/dnn/dred_rdovae_enc.c +110 -0
  159. package/opus/dnn/dred_rdovae_enc.h +52 -0
  160. package/opus/dnn/dump_data.c +238 -0
  161. package/opus/dnn/dump_lpcnet_tables.c +104 -0
  162. package/opus/dnn/fargan.c +225 -0
  163. package/opus/dnn/fargan.h +68 -0
  164. package/opus/dnn/fargan_demo.c +217 -0
  165. package/opus/dnn/freq.c +328 -0
  166. package/opus/dnn/freq.h +61 -0
  167. package/opus/dnn/fwgan.c +322 -0
  168. package/opus/dnn/fwgan.h +83 -0
  169. package/opus/dnn/kiss99.c +81 -0
  170. package/opus/dnn/kiss99.h +46 -0
  171. package/opus/dnn/lossgen.c +192 -0
  172. package/opus/dnn/lossgen.h +55 -0
  173. package/opus/dnn/lossgen_demo.c +22 -0
  174. package/opus/dnn/lpcnet.c +283 -0
  175. package/opus/dnn/lpcnet.h +183 -0
  176. package/opus/dnn/lpcnet_enc.c +230 -0
  177. package/opus/dnn/lpcnet_plc.c +211 -0
  178. package/opus/dnn/lpcnet_private.h +90 -0
  179. package/opus/dnn/lpcnet_tables.c +307 -0
  180. package/opus/dnn/meson.build +64 -0
  181. package/opus/dnn/nndsp.c +416 -0
  182. package/opus/dnn/nndsp.h +143 -0
  183. package/opus/dnn/nnet.c +149 -0
  184. package/opus/dnn/nnet.h +163 -0
  185. package/opus/dnn/nnet_arch.h +247 -0
  186. package/opus/dnn/nnet_default.c +35 -0
  187. package/opus/dnn/osce.c +1419 -0
  188. package/opus/dnn/osce.h +84 -0
  189. package/opus/dnn/osce_config.h +60 -0
  190. package/opus/dnn/osce_features.c +454 -0
  191. package/opus/dnn/osce_features.h +50 -0
  192. package/opus/dnn/osce_structs.h +125 -0
  193. package/opus/dnn/parse_lpcnet_weights.c +238 -0
  194. package/opus/dnn/pitchdnn.c +79 -0
  195. package/opus/dnn/pitchdnn.h +34 -0
  196. package/opus/dnn/tansig_table.h +50 -0
  197. package/opus/dnn/test_vec.c +128 -0
  198. package/opus/dnn/torch/dnntools/dnntools/__init__.py +2 -0
  199. package/opus/dnn/torch/dnntools/dnntools/quantization/__init__.py +1 -0
  200. package/opus/dnn/torch/dnntools/dnntools/quantization/softquant.py +113 -0
  201. package/opus/dnn/torch/dnntools/dnntools/relegance/__init__.py +2 -0
  202. package/opus/dnn/torch/dnntools/dnntools/relegance/meta_critic.py +85 -0
  203. package/opus/dnn/torch/dnntools/dnntools/relegance/relegance.py +449 -0
  204. package/opus/dnn/torch/dnntools/dnntools/sparsification/__init__.py +6 -0
  205. package/opus/dnn/torch/dnntools/dnntools/sparsification/base_sparsifier.py +58 -0
  206. package/opus/dnn/torch/dnntools/dnntools/sparsification/common.py +123 -0
  207. package/opus/dnn/torch/dnntools/dnntools/sparsification/conv1d_sparsifier.py +133 -0
  208. package/opus/dnn/torch/dnntools/dnntools/sparsification/conv_transpose1d_sparsifier.py +134 -0
  209. package/opus/dnn/torch/dnntools/dnntools/sparsification/gru_sparsifier.py +178 -0
  210. package/opus/dnn/torch/dnntools/dnntools/sparsification/linear_sparsifier.py +128 -0
  211. package/opus/dnn/torch/dnntools/dnntools/sparsification/utils.py +64 -0
  212. package/opus/dnn/torch/dnntools/requirements.txt +1 -0
  213. package/opus/dnn/torch/dnntools/setup.py +48 -0
  214. package/opus/dnn/torch/fargan/README.md +54 -0
  215. package/opus/dnn/torch/fargan/adv_train_fargan.py +277 -0
  216. package/opus/dnn/torch/fargan/dataset.py +61 -0
  217. package/opus/dnn/torch/fargan/dump_fargan_weights.py +112 -0
  218. package/opus/dnn/torch/fargan/fargan.py +322 -0
  219. package/opus/dnn/torch/fargan/filters.py +46 -0
  220. package/opus/dnn/torch/fargan/rc.py +29 -0
  221. package/opus/dnn/torch/fargan/stft_loss.py +186 -0
  222. package/opus/dnn/torch/fargan/test_fargan.py +128 -0
  223. package/opus/dnn/torch/fargan/train_fargan.py +168 -0
  224. package/opus/dnn/torch/fwgan/dump_model_weights.py +88 -0
  225. package/opus/dnn/torch/fwgan/inference.py +141 -0
  226. package/opus/dnn/torch/fwgan/models/__init__.py +7 -0
  227. package/opus/dnn/torch/fwgan/models/fwgan400.py +308 -0
  228. package/opus/dnn/torch/fwgan/models/fwgan500.py +260 -0
  229. package/opus/dnn/torch/lossgen/README.md +27 -0
  230. package/opus/dnn/torch/lossgen/export_lossgen.py +101 -0
  231. package/opus/dnn/torch/lossgen/lossgen.py +29 -0
  232. package/opus/dnn/torch/lossgen/process_data.sh +17 -0
  233. package/opus/dnn/torch/lossgen/test_lossgen.py +42 -0
  234. package/opus/dnn/torch/lossgen/train_lossgen.py +99 -0
  235. package/opus/dnn/torch/lpcnet/README.md +27 -0
  236. package/opus/dnn/torch/lpcnet/add_dataset_config.py +77 -0
  237. package/opus/dnn/torch/lpcnet/data/__init__.py +1 -0
  238. package/opus/dnn/torch/lpcnet/data/lpcnet_dataset.py +227 -0
  239. package/opus/dnn/torch/lpcnet/engine/lpcnet_engine.py +141 -0
  240. package/opus/dnn/torch/lpcnet/make_default_setup.py +56 -0
  241. package/opus/dnn/torch/lpcnet/make_test_config.py +78 -0
  242. package/opus/dnn/torch/lpcnet/models/__init__.py +8 -0
  243. package/opus/dnn/torch/lpcnet/models/lpcnet.py +303 -0
  244. package/opus/dnn/torch/lpcnet/models/multi_rate_lpcnet.py +437 -0
  245. package/opus/dnn/torch/lpcnet/print_lpcnet_complexity.py +64 -0
  246. package/opus/dnn/torch/lpcnet/scripts/collect_multi_run_results.py +190 -0
  247. package/opus/dnn/torch/lpcnet/scripts/loop_run.sh +52 -0
  248. package/opus/dnn/torch/lpcnet/scripts/make_animation.py +67 -0
  249. package/opus/dnn/torch/lpcnet/scripts/modify_dataset_target.py +17 -0
  250. package/opus/dnn/torch/lpcnet/scripts/multi_run.sh +17 -0
  251. package/opus/dnn/torch/lpcnet/scripts/run_inference_test.sh +22 -0
  252. package/opus/dnn/torch/lpcnet/scripts/update_checkpoints.py +54 -0
  253. package/opus/dnn/torch/lpcnet/scripts/update_output_folder.sh +22 -0
  254. package/opus/dnn/torch/lpcnet/scripts/update_setups.py +57 -0
  255. package/opus/dnn/torch/lpcnet/test_lpcnet.py +89 -0
  256. package/opus/dnn/torch/lpcnet/train_lpcnet.py +272 -0
  257. package/opus/dnn/torch/lpcnet/utils/__init__.py +4 -0
  258. package/opus/dnn/torch/lpcnet/utils/data.py +141 -0
  259. package/opus/dnn/torch/lpcnet/utils/endoscopy.py +234 -0
  260. package/opus/dnn/torch/lpcnet/utils/layers/__init__.py +3 -0
  261. package/opus/dnn/torch/lpcnet/utils/layers/dual_fc.py +44 -0
  262. package/opus/dnn/torch/lpcnet/utils/layers/pcm_embeddings.py +71 -0
  263. package/opus/dnn/torch/lpcnet/utils/layers/subconditioner.py +497 -0
  264. package/opus/dnn/torch/lpcnet/utils/misc.py +65 -0
  265. package/opus/dnn/torch/lpcnet/utils/pcm.py +35 -0
  266. package/opus/dnn/torch/lpcnet/utils/sample.py +44 -0
  267. package/opus/dnn/torch/lpcnet/utils/sparsification/__init__.py +2 -0
  268. package/opus/dnn/torch/lpcnet/utils/sparsification/common.py +121 -0
  269. package/opus/dnn/torch/lpcnet/utils/sparsification/gru_sparsifier.py +187 -0
  270. package/opus/dnn/torch/lpcnet/utils/templates.py +157 -0
  271. package/opus/dnn/torch/lpcnet/utils/ulaw.py +58 -0
  272. package/opus/dnn/torch/lpcnet/utils/wav.py +43 -0
  273. package/opus/dnn/torch/neural-pitch/README.md +18 -0
  274. package/opus/dnn/torch/neural-pitch/data_augmentation.py +149 -0
  275. package/opus/dnn/torch/neural-pitch/download_demand.sh +43 -0
  276. package/opus/dnn/torch/neural-pitch/evaluation.py +349 -0
  277. package/opus/dnn/torch/neural-pitch/experiments.py +38 -0
  278. package/opus/dnn/torch/neural-pitch/export_neuralpitch_weights.py +109 -0
  279. package/opus/dnn/torch/neural-pitch/models.py +178 -0
  280. package/opus/dnn/torch/neural-pitch/neural_pitch_update.py +179 -0
  281. package/opus/dnn/torch/neural-pitch/ptdb_process.sh +34 -0
  282. package/opus/dnn/torch/neural-pitch/run_crepe.py +72 -0
  283. package/opus/dnn/torch/neural-pitch/training.py +162 -0
  284. package/opus/dnn/torch/neural-pitch/utils.py +59 -0
  285. package/opus/dnn/torch/osce/README.md +66 -0
  286. package/opus/dnn/torch/osce/adv_train_model.py +462 -0
  287. package/opus/dnn/torch/osce/adv_train_vocoder.py +451 -0
  288. package/opus/dnn/torch/osce/create_testvectors.py +165 -0
  289. package/opus/dnn/torch/osce/data/__init__.py +2 -0
  290. package/opus/dnn/torch/osce/data/lpcnet_vocoding_dataset.py +225 -0
  291. package/opus/dnn/torch/osce/data/silk_conversion_set.py +132 -0
  292. package/opus/dnn/torch/osce/data/silk_enhancement_set.py +140 -0
  293. package/opus/dnn/torch/osce/engine/engine.py +103 -0
  294. package/opus/dnn/torch/osce/engine/vocoder_engine.py +101 -0
  295. package/opus/dnn/torch/osce/export_model_weights.py +174 -0
  296. package/opus/dnn/torch/osce/losses/stft_loss.py +277 -0
  297. package/opus/dnn/torch/osce/losses/td_lowpass.py +34 -0
  298. package/opus/dnn/torch/osce/make_default_setup.py +93 -0
  299. package/opus/dnn/torch/osce/models/__init__.py +42 -0
  300. package/opus/dnn/torch/osce/models/fd_discriminator.py +974 -0
  301. package/opus/dnn/torch/osce/models/lace.py +190 -0
  302. package/opus/dnn/torch/osce/models/lavoce.py +274 -0
  303. package/opus/dnn/torch/osce/models/lavoce_400.py +254 -0
  304. package/opus/dnn/torch/osce/models/lpcnet_feature_net.py +91 -0
  305. package/opus/dnn/torch/osce/models/nns_base.py +69 -0
  306. package/opus/dnn/torch/osce/models/no_lace.py +218 -0
  307. package/opus/dnn/torch/osce/models/scale_embedding.py +68 -0
  308. package/opus/dnn/torch/osce/models/shape_up_48.py +179 -0
  309. package/opus/dnn/torch/osce/models/silk_feature_net.py +86 -0
  310. package/opus/dnn/torch/osce/models/silk_feature_net_pl.py +127 -0
  311. package/opus/dnn/torch/osce/requirements.txt +9 -0
  312. package/opus/dnn/torch/osce/resources/training_files.txt +107716 -0
  313. package/opus/dnn/torch/osce/resources/validation_files.txt +26929 -0
  314. package/opus/dnn/torch/osce/scripts/concatenator.py +85 -0
  315. package/opus/dnn/torch/osce/silk_16_to_48.py +28 -0
  316. package/opus/dnn/torch/osce/stndrd/evaluation/commonvoice_clip_selection.py +123 -0
  317. package/opus/dnn/torch/osce/stndrd/evaluation/create_input_data.sh +25 -0
  318. package/opus/dnn/torch/osce/stndrd/evaluation/env.rc +7 -0
  319. package/opus/dnn/torch/osce/stndrd/evaluation/evaluate.py +113 -0
  320. package/opus/dnn/torch/osce/stndrd/evaluation/lace_loss_metric.py +330 -0
  321. package/opus/dnn/torch/osce/stndrd/evaluation/make_boxplots.py +116 -0
  322. package/opus/dnn/torch/osce/stndrd/evaluation/make_boxplots_moctest.py +109 -0
  323. package/opus/dnn/torch/osce/stndrd/evaluation/make_tables.py +124 -0
  324. package/opus/dnn/torch/osce/stndrd/evaluation/make_tables_moctest.py +121 -0
  325. package/opus/dnn/torch/osce/stndrd/evaluation/moc.py +182 -0
  326. package/opus/dnn/torch/osce/stndrd/evaluation/moc2.py +190 -0
  327. package/opus/dnn/torch/osce/stndrd/evaluation/process_dataset.sh +98 -0
  328. package/opus/dnn/torch/osce/stndrd/evaluation/run_nomad.py +138 -0
  329. package/opus/dnn/torch/osce/stndrd/evaluation/run_osce_test.py +196 -0
  330. package/opus/dnn/torch/osce/stndrd/presentation/endoscopy.py +205 -0
  331. package/opus/dnn/torch/osce/stndrd/presentation/lace_demo.ipynb +313 -0
  332. package/opus/dnn/torch/osce/stndrd/presentation/linear_prediction.ipynb +320 -0
  333. package/opus/dnn/torch/osce/stndrd/presentation/playback.py +25 -0
  334. package/opus/dnn/torch/osce/stndrd/presentation/postfilter.ipynb +275 -0
  335. package/opus/dnn/torch/osce/stndrd/presentation/spectrogram.ipynb +173 -0
  336. package/opus/dnn/torch/osce/test_model.py +96 -0
  337. package/opus/dnn/torch/osce/test_vocoder.py +103 -0
  338. package/opus/dnn/torch/osce/train_model.py +307 -0
  339. package/opus/dnn/torch/osce/train_vocoder.py +287 -0
  340. package/opus/dnn/torch/osce/utils/ada_conv.py +71 -0
  341. package/opus/dnn/torch/osce/utils/complexity.py +8 -0
  342. package/opus/dnn/torch/osce/utils/endoscopy.py +205 -0
  343. package/opus/dnn/torch/osce/utils/layers/fir.py +27 -0
  344. package/opus/dnn/torch/osce/utils/layers/limited_adaptive_comb1d.py +230 -0
  345. package/opus/dnn/torch/osce/utils/layers/limited_adaptive_conv1d.py +200 -0
  346. package/opus/dnn/torch/osce/utils/layers/noise_shaper.py +100 -0
  347. package/opus/dnn/torch/osce/utils/layers/pitch_auto_correlator.py +84 -0
  348. package/opus/dnn/torch/osce/utils/layers/silk_upsampler.py +167 -0
  349. package/opus/dnn/torch/osce/utils/layers/td_shaper.py +145 -0
  350. package/opus/dnn/torch/osce/utils/lpcnet_features.py +112 -0
  351. package/opus/dnn/torch/osce/utils/misc.py +95 -0
  352. package/opus/dnn/torch/osce/utils/moc.py +153 -0
  353. package/opus/dnn/torch/osce/utils/pitch.py +122 -0
  354. package/opus/dnn/torch/osce/utils/silk_features.py +144 -0
  355. package/opus/dnn/torch/osce/utils/softquant.py +110 -0
  356. package/opus/dnn/torch/osce/utils/spec.py +210 -0
  357. package/opus/dnn/torch/osce/utils/templates.py +347 -0
  358. package/opus/dnn/torch/plc/export_plc.py +100 -0
  359. package/opus/dnn/torch/plc/plc.py +144 -0
  360. package/opus/dnn/torch/plc/plc_dataset.py +60 -0
  361. package/opus/dnn/torch/plc/train_plc.py +145 -0
  362. package/opus/dnn/torch/rdovae/README.md +55 -0
  363. package/opus/dnn/torch/rdovae/download_datasets.sh +6 -0
  364. package/opus/dnn/torch/rdovae/export_rdovae_weights.py +365 -0
  365. package/opus/dnn/torch/rdovae/fec_encoder.py +212 -0
  366. package/opus/dnn/torch/rdovae/import_rdovae_weights.py +143 -0
  367. package/opus/dnn/torch/rdovae/packets/__init__.py +1 -0
  368. package/opus/dnn/torch/rdovae/packets/fec_packets.c +142 -0
  369. package/opus/dnn/torch/rdovae/packets/fec_packets.h +34 -0
  370. package/opus/dnn/torch/rdovae/packets/fec_packets.py +108 -0
  371. package/opus/dnn/torch/rdovae/process_speech.sh +7 -0
  372. package/opus/dnn/torch/rdovae/rdovae/__init__.py +2 -0
  373. package/opus/dnn/torch/rdovae/rdovae/dataset.py +67 -0
  374. package/opus/dnn/torch/rdovae/rdovae/rdovae.py +719 -0
  375. package/opus/dnn/torch/rdovae/requirements.txt +4 -0
  376. package/opus/dnn/torch/rdovae/train_rdovae.py +278 -0
  377. package/opus/dnn/torch/testsuite/README.md +46 -0
  378. package/opus/dnn/torch/testsuite/examples/lpcnet_c_example.yml +6 -0
  379. package/opus/dnn/torch/testsuite/examples/lpcnet_c_plc_example.yml +5 -0
  380. package/opus/dnn/torch/testsuite/examples/lpcnet_torch_example.yml +5 -0
  381. package/opus/dnn/torch/testsuite/requirements.txt +12 -0
  382. package/opus/dnn/torch/testsuite/run_test.py +375 -0
  383. package/opus/dnn/torch/testsuite/utils/__init__.py +0 -0
  384. package/opus/dnn/torch/testsuite/utils/files.py +54 -0
  385. package/opus/dnn/torch/testsuite/utils/pesq.py +43 -0
  386. package/opus/dnn/torch/testsuite/utils/pitch.py +61 -0
  387. package/opus/dnn/torch/weight-exchange/README.md +21 -0
  388. package/opus/dnn/torch/weight-exchange/requirements.txt +1 -0
  389. package/opus/dnn/torch/weight-exchange/setup.py +48 -0
  390. package/opus/dnn/torch/weight-exchange/wexchange/__init__.py +30 -0
  391. package/opus/dnn/torch/weight-exchange/wexchange/c_export/__init__.py +31 -0
  392. package/opus/dnn/torch/weight-exchange/wexchange/c_export/c_writer.py +181 -0
  393. package/opus/dnn/torch/weight-exchange/wexchange/c_export/common.py +386 -0
  394. package/opus/dnn/torch/weight-exchange/wexchange/tf/__init__.py +5 -0
  395. package/opus/dnn/torch/weight-exchange/wexchange/tf/tf.py +188 -0
  396. package/opus/dnn/torch/weight-exchange/wexchange/torch/__init__.py +37 -0
  397. package/opus/dnn/torch/weight-exchange/wexchange/torch/torch.py +433 -0
  398. package/opus/dnn/training_tf2/dataloader.py +49 -0
  399. package/opus/dnn/training_tf2/decode_rdovae.py +111 -0
  400. package/opus/dnn/training_tf2/diffembed.py +49 -0
  401. package/opus/dnn/training_tf2/dump_lpcnet.py +388 -0
  402. package/opus/dnn/training_tf2/dump_plc.py +296 -0
  403. package/opus/dnn/training_tf2/dump_rdovae.py +306 -0
  404. package/opus/dnn/training_tf2/encode_rdovae.py +125 -0
  405. package/opus/dnn/training_tf2/fec_encoder.py +256 -0
  406. package/opus/dnn/training_tf2/fec_packets.c +142 -0
  407. package/opus/dnn/training_tf2/fec_packets.h +34 -0
  408. package/opus/dnn/training_tf2/fec_packets.py +108 -0
  409. package/opus/dnn/training_tf2/keraslayerdump.py +189 -0
  410. package/opus/dnn/training_tf2/lossfuncs.py +99 -0
  411. package/opus/dnn/training_tf2/lpcnet.py +339 -0
  412. package/opus/dnn/training_tf2/lpcnet_plc.py +101 -0
  413. package/opus/dnn/training_tf2/mdense.py +95 -0
  414. package/opus/dnn/training_tf2/pade.py +70 -0
  415. package/opus/dnn/training_tf2/parameters.py +29 -0
  416. package/opus/dnn/training_tf2/plc_loader.py +73 -0
  417. package/opus/dnn/training_tf2/rdovae.py +372 -0
  418. package/opus/dnn/training_tf2/rdovae_exchange.py +138 -0
  419. package/opus/dnn/training_tf2/rdovae_import.py +123 -0
  420. package/opus/dnn/training_tf2/test_lpcnet.py +120 -0
  421. package/opus/dnn/training_tf2/test_plc.py +92 -0
  422. package/opus/dnn/training_tf2/tf_funcs.py +70 -0
  423. package/opus/dnn/training_tf2/train_lpcnet.py +214 -0
  424. package/opus/dnn/training_tf2/train_plc.py +197 -0
  425. package/opus/dnn/training_tf2/train_rdovae.py +151 -0
  426. package/opus/dnn/training_tf2/ulaw.py +19 -0
  427. package/opus/dnn/training_tf2/uniform_noise.py +78 -0
  428. package/opus/dnn/vec.h +389 -0
  429. package/opus/dnn/vec_avx.h +884 -0
  430. package/opus/dnn/vec_neon.h +473 -0
  431. package/opus/dnn/write_lpcnet_weights.c +97 -0
  432. package/opus/dnn/x86/dnn_x86.h +121 -0
  433. package/opus/dnn/x86/nnet_avx2.c +40 -0
  434. package/opus/dnn/x86/nnet_sse2.c +40 -0
  435. package/opus/dnn/x86/nnet_sse4_1.c +40 -0
  436. package/opus/dnn/x86/x86_dnn_map.c +83 -0
  437. package/opus/doc/Doxyfile.in +340 -0
  438. package/opus/doc/Makefile.am +45 -0
  439. package/opus/doc/build_draft.sh +113 -0
  440. package/opus/doc/build_isobmff.sh +50 -0
  441. package/opus/doc/build_oggdraft.sh +52 -0
  442. package/opus/doc/customdoxygen.css +1011 -0
  443. package/opus/doc/draft-ietf-codec-oggopus.xml +1873 -0
  444. package/opus/doc/draft-ietf-codec-opus-update.xml +513 -0
  445. package/opus/doc/draft-ietf-codec-opus.xml +8276 -0
  446. package/opus/doc/draft-ietf-payload-rtp-opus.xml +960 -0
  447. package/opus/doc/footer.html +32 -0
  448. package/opus/doc/header.html +61 -0
  449. package/opus/doc/meson.build +33 -0
  450. package/opus/doc/opus_in_isobmff.css +60 -0
  451. package/opus/doc/opus_in_isobmff.html +692 -0
  452. package/opus/doc/opus_logo.svg +157 -0
  453. package/opus/doc/opus_update.patch +244 -0
  454. package/opus/doc/release.txt +43 -0
  455. package/opus/doc/trivial_example.c +171 -0
  456. package/opus/include/meson.build +13 -0
  457. package/opus/include/opus.h +1172 -0
  458. package/opus/include/opus_custom.h +381 -0
  459. package/opus/include/opus_defines.h +830 -0
  460. package/opus/include/opus_multistream.h +736 -0
  461. package/opus/include/opus_projection.h +643 -0
  462. package/opus/include/opus_types.h +166 -0
  463. package/opus/lpcnet_headers.mk +44 -0
  464. package/opus/lpcnet_sources.mk +44 -0
  465. package/opus/m4/as-gcc-inline-assembly.m4 +98 -0
  466. package/opus/m4/ax_add_fortify_source.m4 +53 -0
  467. package/opus/m4/opus-intrinsics.m4 +29 -0
  468. package/opus/meson/README.md +88 -0
  469. package/opus/meson/get-version.py +86 -0
  470. package/opus/meson/read-sources-list.py +28 -0
  471. package/opus/meson.build +745 -0
  472. package/opus/meson_options.txt +27 -0
  473. package/opus/opus-uninstalled.pc.in +12 -0
  474. package/opus/opus.m4 +117 -0
  475. package/opus/opus.pc.in +16 -0
  476. package/opus/opus_headers.mk +8 -0
  477. package/opus/opus_sources.mk +17 -0
  478. package/opus/releases.sha2 +85 -0
  479. package/opus/scripts/dump_rnn.py +57 -0
  480. package/opus/scripts/local_build.py +220 -0
  481. package/opus/scripts/rnn_train.py +67 -0
  482. package/opus/scripts/shrink_model.sh +7 -0
  483. package/opus/silk/A2NLSF.c +267 -0
  484. package/opus/silk/API.h +156 -0
  485. package/opus/silk/CNG.c +188 -0
  486. package/opus/silk/HP_variable_cutoff.c +77 -0
  487. package/opus/silk/Inlines.h +188 -0
  488. package/opus/silk/LPC_analysis_filter.c +111 -0
  489. package/opus/silk/LPC_fit.c +82 -0
  490. package/opus/silk/LPC_inv_pred_gain.c +141 -0
  491. package/opus/silk/LP_variable_cutoff.c +135 -0
  492. package/opus/silk/MacroCount.h +710 -0
  493. package/opus/silk/MacroDebug.h +945 -0
  494. package/opus/silk/NLSF2A.c +141 -0
  495. package/opus/silk/NLSF_VQ.c +76 -0
  496. package/opus/silk/NLSF_VQ_weights_laroia.c +80 -0
  497. package/opus/silk/NLSF_decode.c +93 -0
  498. package/opus/silk/NLSF_del_dec_quant.c +215 -0
  499. package/opus/silk/NLSF_encode.c +124 -0
  500. package/opus/silk/NLSF_stabilize.c +142 -0
  501. package/opus/silk/NLSF_unpack.c +55 -0
  502. package/opus/silk/NSQ.c +437 -0
  503. package/opus/silk/NSQ.h +101 -0
  504. package/opus/silk/NSQ_del_dec.c +733 -0
  505. package/opus/silk/PLC.c +493 -0
  506. package/opus/silk/PLC.h +65 -0
  507. package/opus/silk/SigProc_FIX.h +643 -0
  508. package/opus/silk/VAD.c +360 -0
  509. package/opus/silk/VQ_WMat_EC.c +131 -0
  510. package/opus/silk/ana_filt_bank_1.c +74 -0
  511. package/opus/silk/arm/LPC_inv_pred_gain_arm.h +57 -0
  512. package/opus/silk/arm/LPC_inv_pred_gain_neon_intr.c +288 -0
  513. package/opus/silk/arm/NSQ_del_dec_arm.h +100 -0
  514. package/opus/silk/arm/NSQ_del_dec_neon_intr.c +1138 -0
  515. package/opus/silk/arm/NSQ_neon.c +112 -0
  516. package/opus/silk/arm/NSQ_neon.h +114 -0
  517. package/opus/silk/arm/SigProc_FIX_armv4.h +47 -0
  518. package/opus/silk/arm/SigProc_FIX_armv5e.h +61 -0
  519. package/opus/silk/arm/arm_silk_map.c +128 -0
  520. package/opus/silk/arm/biquad_alt_arm.h +68 -0
  521. package/opus/silk/arm/biquad_alt_neon_intr.c +156 -0
  522. package/opus/silk/arm/macros_arm64.h +39 -0
  523. package/opus/silk/arm/macros_armv4.h +110 -0
  524. package/opus/silk/arm/macros_armv5e.h +220 -0
  525. package/opus/silk/biquad_alt.c +121 -0
  526. package/opus/silk/bwexpander.c +51 -0
  527. package/opus/silk/bwexpander_32.c +51 -0
  528. package/opus/silk/check_control_input.c +106 -0
  529. package/opus/silk/code_signs.c +115 -0
  530. package/opus/silk/control.h +161 -0
  531. package/opus/silk/control_SNR.c +113 -0
  532. package/opus/silk/control_audio_bandwidth.c +132 -0
  533. package/opus/silk/control_codec.c +423 -0
  534. package/opus/silk/debug.c +174 -0
  535. package/opus/silk/debug.h +267 -0
  536. package/opus/silk/dec_API.c +465 -0
  537. package/opus/silk/decode_core.c +243 -0
  538. package/opus/silk/decode_frame.c +169 -0
  539. package/opus/silk/decode_indices.c +151 -0
  540. package/opus/silk/decode_parameters.c +115 -0
  541. package/opus/silk/decode_pitch.c +77 -0
  542. package/opus/silk/decode_pulses.c +115 -0
  543. package/opus/silk/decoder_set_fs.c +108 -0
  544. package/opus/silk/define.h +235 -0
  545. package/opus/silk/enc_API.c +593 -0
  546. package/opus/silk/encode_indices.c +181 -0
  547. package/opus/silk/encode_pulses.c +206 -0
  548. package/opus/silk/errors.h +98 -0
  549. package/opus/silk/fixed/LTP_analysis_filter_FIX.c +90 -0
  550. package/opus/silk/fixed/LTP_scale_ctrl_FIX.c +58 -0
  551. package/opus/silk/fixed/apply_sine_window_FIX.c +101 -0
  552. package/opus/silk/fixed/arm/warped_autocorrelation_FIX_arm.h +68 -0
  553. package/opus/silk/fixed/arm/warped_autocorrelation_FIX_neon_intr.c +265 -0
  554. package/opus/silk/fixed/autocorr_FIX.c +48 -0
  555. package/opus/silk/fixed/burg_modified_FIX.c +280 -0
  556. package/opus/silk/fixed/corrMatrix_FIX.c +150 -0
  557. package/opus/silk/fixed/encode_frame_FIX.c +444 -0
  558. package/opus/silk/fixed/find_LPC_FIX.c +151 -0
  559. package/opus/silk/fixed/find_LTP_FIX.c +99 -0
  560. package/opus/silk/fixed/find_pitch_lags_FIX.c +143 -0
  561. package/opus/silk/fixed/find_pred_coefs_FIX.c +146 -0
  562. package/opus/silk/fixed/k2a_FIX.c +54 -0
  563. package/opus/silk/fixed/k2a_Q16_FIX.c +54 -0
  564. package/opus/silk/fixed/main_FIX.h +244 -0
  565. package/opus/silk/fixed/mips/noise_shape_analysis_FIX_mipsr1.h +336 -0
  566. package/opus/silk/fixed/mips/prefilter_FIX_mipsr1.h +184 -0
  567. package/opus/silk/fixed/mips/warped_autocorrelation_FIX_mipsr1.h +165 -0
  568. package/opus/silk/fixed/noise_shape_analysis_FIX.c +407 -0
  569. package/opus/silk/fixed/pitch_analysis_core_FIX.c +721 -0
  570. package/opus/silk/fixed/process_gains_FIX.c +117 -0
  571. package/opus/silk/fixed/regularize_correlations_FIX.c +47 -0
  572. package/opus/silk/fixed/residual_energy16_FIX.c +103 -0
  573. package/opus/silk/fixed/residual_energy_FIX.c +98 -0
  574. package/opus/silk/fixed/schur64_FIX.c +93 -0
  575. package/opus/silk/fixed/schur_FIX.c +107 -0
  576. package/opus/silk/fixed/structs_FIX.h +116 -0
  577. package/opus/silk/fixed/vector_ops_FIX.c +102 -0
  578. package/opus/silk/fixed/warped_autocorrelation_FIX.c +92 -0
  579. package/opus/silk/fixed/x86/burg_modified_FIX_sse4_1.c +400 -0
  580. package/opus/silk/fixed/x86/vector_ops_FIX_sse4_1.c +93 -0
  581. package/opus/silk/float/LPC_analysis_filter_FLP.c +249 -0
  582. package/opus/silk/float/LPC_inv_pred_gain_FLP.c +73 -0
  583. package/opus/silk/float/LTP_analysis_filter_FLP.c +75 -0
  584. package/opus/silk/float/LTP_scale_ctrl_FLP.c +58 -0
  585. package/opus/silk/float/SigProc_FLP.h +205 -0
  586. package/opus/silk/float/apply_sine_window_FLP.c +81 -0
  587. package/opus/silk/float/autocorrelation_FLP.c +53 -0
  588. package/opus/silk/float/burg_modified_FLP.c +187 -0
  589. package/opus/silk/float/bwexpander_FLP.c +49 -0
  590. package/opus/silk/float/corrMatrix_FLP.c +95 -0
  591. package/opus/silk/float/encode_frame_FLP.c +432 -0
  592. package/opus/silk/float/energy_FLP.c +59 -0
  593. package/opus/silk/float/find_LPC_FLP.c +105 -0
  594. package/opus/silk/float/find_LTP_FLP.c +65 -0
  595. package/opus/silk/float/find_pitch_lags_FLP.c +132 -0
  596. package/opus/silk/float/find_pred_coefs_FLP.c +117 -0
  597. package/opus/silk/float/inner_product_FLP.c +59 -0
  598. package/opus/silk/float/k2a_FLP.c +54 -0
  599. package/opus/silk/float/main_FLP.h +290 -0
  600. package/opus/silk/float/noise_shape_analysis_FLP.c +350 -0
  601. package/opus/silk/float/pitch_analysis_core_FLP.c +630 -0
  602. package/opus/silk/float/process_gains_FLP.c +103 -0
  603. package/opus/silk/float/regularize_correlations_FLP.c +48 -0
  604. package/opus/silk/float/residual_energy_FLP.c +117 -0
  605. package/opus/silk/float/scale_copy_vector_FLP.c +57 -0
  606. package/opus/silk/float/scale_vector_FLP.c +56 -0
  607. package/opus/silk/float/schur_FLP.c +70 -0
  608. package/opus/silk/float/sort_FLP.c +83 -0
  609. package/opus/silk/float/structs_FLP.h +112 -0
  610. package/opus/silk/float/warped_autocorrelation_FLP.c +75 -0
  611. package/opus/silk/float/wrappers_FLP.c +209 -0
  612. package/opus/silk/float/x86/inner_product_FLP_avx2.c +85 -0
  613. package/opus/silk/gain_quant.c +142 -0
  614. package/opus/silk/init_decoder.c +84 -0
  615. package/opus/silk/init_encoder.c +68 -0
  616. package/opus/silk/inner_prod_aligned.c +47 -0
  617. package/opus/silk/interpolate.c +51 -0
  618. package/opus/silk/lin2log.c +46 -0
  619. package/opus/silk/log2lin.c +58 -0
  620. package/opus/silk/macros.h +151 -0
  621. package/opus/silk/main.h +486 -0
  622. package/opus/silk/meson.build +69 -0
  623. package/opus/silk/mips/NSQ_del_dec_mipsr1.h +410 -0
  624. package/opus/silk/mips/macros_mipsr1.h +92 -0
  625. package/opus/silk/mips/sigproc_fix_mipsr1.h +60 -0
  626. package/opus/silk/pitch_est_defines.h +88 -0
  627. package/opus/silk/pitch_est_tables.c +99 -0
  628. package/opus/silk/process_NLSFs.c +107 -0
  629. package/opus/silk/quant_LTP_gains.c +132 -0
  630. package/opus/silk/resampler.c +215 -0
  631. package/opus/silk/resampler_down2.c +74 -0
  632. package/opus/silk/resampler_down2_3.c +103 -0
  633. package/opus/silk/resampler_private.h +88 -0
  634. package/opus/silk/resampler_private_AR2.c +55 -0
  635. package/opus/silk/resampler_private_IIR_FIR.c +107 -0
  636. package/opus/silk/resampler_private_down_FIR.c +194 -0
  637. package/opus/silk/resampler_private_up2_HQ.c +113 -0
  638. package/opus/silk/resampler_rom.c +96 -0
  639. package/opus/silk/resampler_rom.h +68 -0
  640. package/opus/silk/resampler_structs.h +60 -0
  641. package/opus/silk/shell_coder.c +151 -0
  642. package/opus/silk/sigm_Q15.c +76 -0
  643. package/opus/silk/sort.c +154 -0
  644. package/opus/silk/stereo_LR_to_MS.c +229 -0
  645. package/opus/silk/stereo_MS_to_LR.c +85 -0
  646. package/opus/silk/stereo_decode_pred.c +73 -0
  647. package/opus/silk/stereo_encode_pred.c +62 -0
  648. package/opus/silk/stereo_find_predictor.c +79 -0
  649. package/opus/silk/stereo_quant_pred.c +73 -0
  650. package/opus/silk/structs.h +357 -0
  651. package/opus/silk/sum_sqr_shift.c +83 -0
  652. package/opus/silk/table_LSF_cos.c +70 -0
  653. package/opus/silk/tables.h +114 -0
  654. package/opus/silk/tables_LTP.c +294 -0
  655. package/opus/silk/tables_NLSF_CB_NB_MB.c +195 -0
  656. package/opus/silk/tables_NLSF_CB_WB.c +234 -0
  657. package/opus/silk/tables_gain.c +63 -0
  658. package/opus/silk/tables_other.c +124 -0
  659. package/opus/silk/tables_pitch_lag.c +69 -0
  660. package/opus/silk/tables_pulses_per_block.c +264 -0
  661. package/opus/silk/tests/meson.build +8 -0
  662. package/opus/silk/tests/test_unit_LPC_inv_pred_gain.c +130 -0
  663. package/opus/silk/tuning_parameters.h +155 -0
  664. package/opus/silk/typedef.h +81 -0
  665. package/opus/silk/x86/NSQ_del_dec_avx2.c +1075 -0
  666. package/opus/silk/x86/NSQ_del_dec_sse4_1.c +915 -0
  667. package/opus/silk/x86/NSQ_sse4_1.c +772 -0
  668. package/opus/silk/x86/SigProc_FIX_sse.h +99 -0
  669. package/opus/silk/x86/VAD_sse4_1.c +289 -0
  670. package/opus/silk/x86/VQ_WMat_EC_sse4_1.c +173 -0
  671. package/opus/silk/x86/main_sse.h +299 -0
  672. package/opus/silk/x86/x86_silk_map.c +179 -0
  673. package/opus/silk_headers.mk +44 -0
  674. package/opus/silk_sources.mk +164 -0
  675. package/opus/src/analysis.c +979 -0
  676. package/opus/src/analysis.h +103 -0
  677. package/opus/src/extensions.c +663 -0
  678. package/opus/src/mapping_matrix.c +993 -0
  679. package/opus/src/mapping_matrix.h +165 -0
  680. package/opus/src/meson.build +45 -0
  681. package/opus/src/mlp.c +132 -0
  682. package/opus/src/mlp.h +60 -0
  683. package/opus/src/mlp_data.c +672 -0
  684. package/opus/src/opus.c +362 -0
  685. package/opus/src/opus_compare.c +382 -0
  686. package/opus/src/opus_decoder.c +1579 -0
  687. package/opus/src/opus_demo.c +1194 -0
  688. package/opus/src/opus_encoder.c +3180 -0
  689. package/opus/src/opus_multistream.c +92 -0
  690. package/opus/src/opus_multistream_decoder.c +563 -0
  691. package/opus/src/opus_multistream_encoder.c +1321 -0
  692. package/opus/src/opus_private.h +263 -0
  693. package/opus/src/opus_projection_decoder.c +283 -0
  694. package/opus/src/opus_projection_encoder.c +522 -0
  695. package/opus/src/repacketizer.c +469 -0
  696. package/opus/src/repacketizer_demo.c +247 -0
  697. package/opus/src/tansig_table.h +45 -0
  698. package/opus/tar_list.txt +28 -0
  699. package/opus/tests/meson.build +39 -0
  700. package/opus/tests/opus_build_test.sh +29 -0
  701. package/opus/tests/opus_decode_fuzzer.c +124 -0
  702. package/opus/tests/opus_decode_fuzzer.options +2 -0
  703. package/opus/tests/opus_encode_regressions.c +1034 -0
  704. package/opus/tests/random_config.sh +126 -0
  705. package/opus/tests/run_vectors.sh +143 -0
  706. package/opus/tests/test_opus_api.c +1904 -0
  707. package/opus/tests/test_opus_common.h +86 -0
  708. package/opus/tests/test_opus_custom.c +694 -0
  709. package/opus/tests/test_opus_decode.c +481 -0
  710. package/opus/tests/test_opus_dred.c +107 -0
  711. package/opus/tests/test_opus_encode.c +738 -0
  712. package/opus/tests/test_opus_extensions.c +750 -0
  713. package/opus/tests/test_opus_padding.c +94 -0
  714. package/opus/tests/test_opus_projection.c +384 -0
  715. package/opus/training/rnn_dump.py +66 -0
  716. package/opus/training/rnn_train.py +177 -0
  717. package/opus/training/txt2hdf5.py +12 -0
  718. package/opus/update_version +65 -0
  719. package/package.json +2 -2
  720. package/src/build-ffmpeg-msys.sh +8 -2
@@ -0,0 +1,84 @@
1
+ /* Copyright (c) 2023 Amazon
2
+ Written by Jan Buethe */
3
+ /*
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions
6
+ are met:
7
+
8
+ - Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+
11
+ - Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
19
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #ifndef OSCE_H
29
+ #define OSCE_H
30
+
31
+
32
+ #include "opus_types.h"
33
+ /*#include "osce_config.h"*/
34
+ #ifndef DISABLE_LACE
35
+ #include "lace_data.h"
36
+ #endif
37
+ #ifndef DISABLE_NOLACE
38
+ #include "nolace_data.h"
39
+ #endif
40
+ #include "nndsp.h"
41
+ #include "nnet.h"
42
+ #include "osce_structs.h"
43
+ #include "structs.h"
44
+
45
+ #define OSCE_METHOD_NONE 0
46
+ #ifndef DISABLE_LACE
47
+ #define OSCE_METHOD_LACE 1
48
+ #endif
49
+ #ifndef DISABLE_NOLACE
50
+ #define OSCE_METHOD_NOLACE 2
51
+ #endif
52
+
53
+ #if !defined(DISABLE_NOLACE)
54
+ #define OSCE_DEFAULT_METHOD OSCE_METHOD_NOLACE
55
+ #define OSCE_MAX_RNN_NEURONS NOLACE_FNET_GRU_STATE_SIZE
56
+ #elif !defined(DISABLE_LACE)
57
+ #define OSCE_DEFAULT_METHOD OSCE_METHOD_LACE
58
+ #define OSCE_MAX_RNN_NEURONS LACE_FNET_GRU_STATE_SIZE
59
+ #else
60
+ #define OSCE_DEFAULT_METHOD OSCE_METHOD_NONE
61
+ #define OSCE_MAX_RNN_NEURONS 0
62
+ #endif
63
+
64
+
65
+
66
+
67
+ /* API */
68
+
69
+
70
+ void osce_enhance_frame(
71
+ OSCEModel *model, /* I OSCE model struct */
72
+ silk_decoder_state *psDec, /* I/O Decoder state */
73
+ silk_decoder_control *psDecCtrl, /* I Decoder control */
74
+ opus_int16 xq[], /* I/O Decoded speech */
75
+ opus_int32 num_bits, /* I Size of SILK payload in bits */
76
+ int arch /* I Run-time architecture */
77
+ );
78
+
79
+
80
+ int osce_load_models(OSCEModel *hModel, const void *data, int len);
81
+ void osce_reset(silk_OSCE_struct *hOSCE, int method);
82
+
83
+
84
+ #endif
@@ -0,0 +1,60 @@
1
+ /* Copyright (c) 2023 Amazon
2
+ Written by Jan Buethe */
3
+ /*
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions
6
+ are met:
7
+
8
+ - Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+
11
+ - Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
19
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #ifndef OSCE_CONFIG
29
+ #define OSCE_CONFIG
30
+
31
+ #define OSCE_FEATURES_MAX_HISTORY 350
32
+ #define OSCE_FEATURE_DIM 93
33
+ #define OSCE_MAX_FEATURE_FRAMES 4
34
+
35
+ #define OSCE_CLEAN_SPEC_NUM_BANDS 64
36
+ #define OSCE_NOISY_SPEC_NUM_BANDS 18
37
+
38
+ #define OSCE_NO_PITCH_VALUE 7
39
+
40
+ #define OSCE_PREEMPH 0.85f
41
+
42
+ #define OSCE_PITCH_HANGOVER 0
43
+
44
+ #define OSCE_CLEAN_SPEC_START 0
45
+ #define OSCE_CLEAN_SPEC_LENGTH 64
46
+
47
+ #define OSCE_NOISY_CEPSTRUM_START 64
48
+ #define OSCE_NOISY_CEPSTRUM_LENGTH 18
49
+
50
+ #define OSCE_ACORR_START 82
51
+ #define OSCE_ACORR_LENGTH 5
52
+
53
+ #define OSCE_LTP_START 87
54
+ #define OSCE_LTP_LENGTH 5
55
+
56
+ #define OSCE_LOG_GAIN_START 92
57
+ #define OSCE_LOG_GAIN_LENGTH 1
58
+
59
+
60
+ #endif
@@ -0,0 +1,454 @@
1
+ /* Copyright (c) 2023 Amazon
2
+ Written by Jan Buethe */
3
+ /*
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions
6
+ are met:
7
+
8
+ - Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+
11
+ - Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
19
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #ifdef HAVE_CONFIG_H
29
+ #include "config.h"
30
+ #endif
31
+
32
+ #define OSCE_SPEC_WINDOW_SIZE 320
33
+ #define OSCE_SPEC_NUM_FREQS 161
34
+
35
+
36
+ /*DEBUG*/
37
+ /*#define WRITE_FEATURES*/
38
+ /*#define DEBUG_PRING*/
39
+ /*******/
40
+
41
+ #include "stack_alloc.h"
42
+ #include "osce_features.h"
43
+ #include "kiss_fft.h"
44
+ #include "os_support.h"
45
+ #include "osce.h"
46
+ #include "freq.h"
47
+
48
+
49
+ #if defined(WRITE_FEATURES) || defined(DEBUG_PRING)
50
+ #include <stdio.h>
51
+ #include <stdlib.h>
52
+ #endif
53
+
54
+ static const int center_bins_clean[64] = {
55
+ 0, 2, 5, 8, 10, 12, 15, 18,
56
+ 20, 22, 25, 28, 30, 33, 35, 38,
57
+ 40, 42, 45, 48, 50, 52, 55, 58,
58
+ 60, 62, 65, 68, 70, 73, 75, 78,
59
+ 80, 82, 85, 88, 90, 92, 95, 98,
60
+ 100, 102, 105, 108, 110, 112, 115, 118,
61
+ 120, 122, 125, 128, 130, 132, 135, 138,
62
+ 140, 142, 145, 148, 150, 152, 155, 160
63
+ };
64
+
65
+ static const int center_bins_noisy[18] = {
66
+ 0, 4, 8, 12, 16, 20, 24, 28,
67
+ 32, 40, 48, 56, 64, 80, 96, 112,
68
+ 136, 160
69
+ };
70
+
71
+ static const float band_weights_clean[64] = {
72
+ 0.666666666667f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
73
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
74
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
75
+ 0.400000000000f, 0.400000000000f, 0.400000000000f, 0.400000000000f,
76
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
77
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
78
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
79
+ 0.400000000000f, 0.400000000000f, 0.400000000000f, 0.400000000000f,
80
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
81
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
82
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
83
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
84
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
85
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
86
+ 0.500000000000f, 0.400000000000f, 0.333333333333f, 0.400000000000f,
87
+ 0.500000000000f, 0.400000000000f, 0.250000000000f, 0.333333333333f
88
+ };
89
+
90
+ static const float band_weights_noisy[18] = {
91
+ 0.400000000000f, 0.250000000000f, 0.250000000000f, 0.250000000000f,
92
+ 0.250000000000f, 0.250000000000f, 0.250000000000f, 0.250000000000f,
93
+ 0.166666666667f, 0.125000000000f, 0.125000000000f, 0.125000000000f,
94
+ 0.083333333333f, 0.062500000000f, 0.062500000000f, 0.050000000000f,
95
+ 0.041666666667f, 0.080000000000f
96
+ };
97
+
98
+ static float osce_window[OSCE_SPEC_WINDOW_SIZE] = {
99
+ 0.004908718808f, 0.014725683311f, 0.024541228523f, 0.034354408400f, 0.044164277127f,
100
+ 0.053969889210f, 0.063770299562f, 0.073564563600f, 0.083351737332f, 0.093130877450f,
101
+ 0.102901041421f, 0.112661287575f, 0.122410675199f, 0.132148264628f, 0.141873117332f,
102
+ 0.151584296010f, 0.161280864678f, 0.170961888760f, 0.180626435180f, 0.190273572448f,
103
+ 0.199902370753f, 0.209511902052f, 0.219101240157f, 0.228669460829f, 0.238215641862f,
104
+ 0.247738863176f, 0.257238206902f, 0.266712757475f, 0.276161601717f, 0.285583828929f,
105
+ 0.294978530977f, 0.304344802381f, 0.313681740399f, 0.322988445118f, 0.332264019538f,
106
+ 0.341507569661f, 0.350718204573f, 0.359895036535f, 0.369037181064f, 0.378143757022f,
107
+ 0.387213886697f, 0.396246695891f, 0.405241314005f, 0.414196874117f, 0.423112513073f,
108
+ 0.431987371563f, 0.440820594212f, 0.449611329655f, 0.458358730621f, 0.467061954019f,
109
+ 0.475720161014f, 0.484332517110f, 0.492898192230f, 0.501416360796f, 0.509886201809f,
110
+ 0.518306898929f, 0.526677640552f, 0.534997619887f, 0.543266035038f, 0.551482089078f,
111
+ 0.559644990127f, 0.567753951426f, 0.575808191418f, 0.583806933818f, 0.591749407690f,
112
+ 0.599634847523f, 0.607462493302f, 0.615231590581f, 0.622941390558f, 0.630591150148f,
113
+ 0.638180132051f, 0.645707604824f, 0.653172842954f, 0.660575126926f, 0.667913743292f,
114
+ 0.675187984742f, 0.682397150168f, 0.689540544737f, 0.696617479953f, 0.703627273726f,
115
+ 0.710569250438f, 0.717442741007f, 0.724247082951f, 0.730981620454f, 0.737645704427f,
116
+ 0.744238692572f, 0.750759949443f, 0.757208846506f, 0.763584762206f, 0.769887082016f,
117
+ 0.776115198508f, 0.782268511401f, 0.788346427627f, 0.794348361383f, 0.800273734191f,
118
+ 0.806121974951f, 0.811892519997f, 0.817584813152f, 0.823198305781f, 0.828732456844f,
119
+ 0.834186732948f, 0.839560608398f, 0.844853565250f, 0.850065093356f, 0.855194690420f,
120
+ 0.860241862039f, 0.865206121757f, 0.870086991109f, 0.874883999665f, 0.879596685080f,
121
+ 0.884224593137f, 0.888767277786f, 0.893224301196f, 0.897595233788f, 0.901879654283f,
122
+ 0.906077149740f, 0.910187315596f, 0.914209755704f, 0.918144082372f, 0.921989916403f,
123
+ 0.925746887127f, 0.929414632439f, 0.932992798835f, 0.936481041442f, 0.939879024058f,
124
+ 0.943186419177f, 0.946402908026f, 0.949528180593f, 0.952561935658f, 0.955503880820f,
125
+ 0.958353732530f, 0.961111216112f, 0.963776065795f, 0.966348024735f, 0.968826845041f,
126
+ 0.971212287799f, 0.973504123096f, 0.975702130039f, 0.977806096779f, 0.979815820533f,
127
+ 0.981731107599f, 0.983551773378f, 0.985277642389f, 0.986908548290f, 0.988444333892f,
128
+ 0.989884851171f, 0.991229961288f, 0.992479534599f, 0.993633450666f, 0.994691598273f,
129
+ 0.995653875433f, 0.996520189401f, 0.997290456679f, 0.997964603026f, 0.998542563469f,
130
+ 0.999024282300f, 0.999409713092f, 0.999698818696f, 0.999891571247f, 0.999987952167f,
131
+ 0.999987952167f, 0.999891571247f, 0.999698818696f, 0.999409713092f, 0.999024282300f,
132
+ 0.998542563469f, 0.997964603026f, 0.997290456679f, 0.996520189401f, 0.995653875433f,
133
+ 0.994691598273f, 0.993633450666f, 0.992479534599f, 0.991229961288f, 0.989884851171f,
134
+ 0.988444333892f, 0.986908548290f, 0.985277642389f, 0.983551773378f, 0.981731107599f,
135
+ 0.979815820533f, 0.977806096779f, 0.975702130039f, 0.973504123096f, 0.971212287799f,
136
+ 0.968826845041f, 0.966348024735f, 0.963776065795f, 0.961111216112f, 0.958353732530f,
137
+ 0.955503880820f, 0.952561935658f, 0.949528180593f, 0.946402908026f, 0.943186419177f,
138
+ 0.939879024058f, 0.936481041442f, 0.932992798835f, 0.929414632439f, 0.925746887127f,
139
+ 0.921989916403f, 0.918144082372f, 0.914209755704f, 0.910187315596f, 0.906077149740f,
140
+ 0.901879654283f, 0.897595233788f, 0.893224301196f, 0.888767277786f, 0.884224593137f,
141
+ 0.879596685080f, 0.874883999665f, 0.870086991109f, 0.865206121757f, 0.860241862039f,
142
+ 0.855194690420f, 0.850065093356f, 0.844853565250f, 0.839560608398f, 0.834186732948f,
143
+ 0.828732456844f, 0.823198305781f, 0.817584813152f, 0.811892519997f, 0.806121974951f,
144
+ 0.800273734191f, 0.794348361383f, 0.788346427627f, 0.782268511401f, 0.776115198508f,
145
+ 0.769887082016f, 0.763584762206f, 0.757208846506f, 0.750759949443f, 0.744238692572f,
146
+ 0.737645704427f, 0.730981620454f, 0.724247082951f, 0.717442741007f, 0.710569250438f,
147
+ 0.703627273726f, 0.696617479953f, 0.689540544737f, 0.682397150168f, 0.675187984742f,
148
+ 0.667913743292f, 0.660575126926f, 0.653172842954f, 0.645707604824f, 0.638180132051f,
149
+ 0.630591150148f, 0.622941390558f, 0.615231590581f, 0.607462493302f, 0.599634847523f,
150
+ 0.591749407690f, 0.583806933818f, 0.575808191418f, 0.567753951426f, 0.559644990127f,
151
+ 0.551482089078f, 0.543266035038f, 0.534997619887f, 0.526677640552f, 0.518306898929f,
152
+ 0.509886201809f, 0.501416360796f, 0.492898192230f, 0.484332517110f, 0.475720161014f,
153
+ 0.467061954019f, 0.458358730621f, 0.449611329655f, 0.440820594212f, 0.431987371563f,
154
+ 0.423112513073f, 0.414196874117f, 0.405241314005f, 0.396246695891f, 0.387213886697f,
155
+ 0.378143757022f, 0.369037181064f, 0.359895036535f, 0.350718204573f, 0.341507569661f,
156
+ 0.332264019538f, 0.322988445118f, 0.313681740399f, 0.304344802381f, 0.294978530977f,
157
+ 0.285583828929f, 0.276161601717f, 0.266712757475f, 0.257238206902f, 0.247738863176f,
158
+ 0.238215641862f, 0.228669460829f, 0.219101240157f, 0.209511902052f, 0.199902370753f,
159
+ 0.190273572448f, 0.180626435180f, 0.170961888760f, 0.161280864678f, 0.151584296010f,
160
+ 0.141873117332f, 0.132148264628f, 0.122410675199f, 0.112661287575f, 0.102901041421f,
161
+ 0.093130877450f, 0.083351737332f, 0.073564563600f, 0.063770299562f, 0.053969889210f,
162
+ 0.044164277127f, 0.034354408400f, 0.024541228523f, 0.014725683311f, 0.004908718808f
163
+ };
164
+
165
+ static void apply_filterbank(float *x_out, float *x_in, const int *center_bins, const float* band_weights, int num_bands)
166
+ {
167
+ int b, i;
168
+ float frac;
169
+
170
+ celt_assert(x_in != x_out)
171
+
172
+ x_out[0] = 0;
173
+ for (b = 0; b < num_bands - 1; b++)
174
+ {
175
+ x_out[b+1] = 0;
176
+ for (i = center_bins[b]; i < center_bins[b+1]; i++)
177
+ {
178
+ frac = (float) (center_bins[b+1] - i) / (center_bins[b+1] - center_bins[b]);
179
+ x_out[b] += band_weights[b] * frac * x_in[i];
180
+ x_out[b+1] += band_weights[b+1] * (1 - frac) * x_in[i];
181
+
182
+ }
183
+ }
184
+ x_out[num_bands - 1] += band_weights[num_bands - 1] * x_in[center_bins[num_bands - 1]];
185
+ #ifdef DEBUG_PRINT
186
+ for (b = 0; b < num_bands; b++)
187
+ {
188
+ printf("band[%d]: %f\n", b, x_out[b]);
189
+ }
190
+ #endif
191
+ }
192
+
193
+
194
+ static void mag_spec_320_onesided(float *out, float *in)
195
+ {
196
+ celt_assert(OSCE_SPEC_WINDOW_SIZE == 320);
197
+ kiss_fft_cpx buffer[OSCE_SPEC_WINDOW_SIZE];
198
+ int k;
199
+ forward_transform(buffer, in);
200
+
201
+ for (k = 0; k < OSCE_SPEC_NUM_FREQS; k++)
202
+ {
203
+ out[k] = OSCE_SPEC_WINDOW_SIZE * sqrt(buffer[k].r * buffer[k].r + buffer[k].i * buffer[k].i);
204
+ #ifdef DEBUG_PRINT
205
+ printf("magspec[%d]: %f\n", k, out[k]);
206
+ #endif
207
+ }
208
+ }
209
+
210
+
211
+ static void calculate_log_spectrum_from_lpc(float *spec, opus_int16 *a_q12, int lpc_order)
212
+ {
213
+ float buffer[OSCE_SPEC_WINDOW_SIZE] = {0};
214
+ int i;
215
+
216
+ /* zero expansion */
217
+ buffer[0] = 1;
218
+ for (i = 0; i < lpc_order; i++)
219
+ {
220
+ buffer[i+1] = - (float)a_q12[i] / (1U << 12);
221
+ }
222
+
223
+ /* calculate and invert magnitude spectrum */
224
+ mag_spec_320_onesided(buffer, buffer);
225
+
226
+ for (i = 0; i < OSCE_SPEC_NUM_FREQS; i++)
227
+ {
228
+ buffer[i] = 1.f / (buffer[i] + 1e-9f);
229
+ }
230
+
231
+ /* apply filterbank */
232
+ apply_filterbank(spec, buffer, center_bins_clean, band_weights_clean, OSCE_CLEAN_SPEC_NUM_BANDS);
233
+
234
+ /* log and scaling */
235
+ for (i = 0; i < OSCE_CLEAN_SPEC_NUM_BANDS; i++)
236
+ {
237
+ spec[i] = 0.3f * log(spec[i] + 1e-9f);
238
+ }
239
+ }
240
+
241
+ static void calculate_cepstrum(float *cepstrum, float *signal)
242
+ {
243
+ float buffer[OSCE_SPEC_WINDOW_SIZE];
244
+ float *spec = &buffer[OSCE_SPEC_NUM_FREQS + 3];
245
+ int n;
246
+
247
+ celt_assert(cepstrum != signal)
248
+
249
+ for (n = 0; n < OSCE_SPEC_WINDOW_SIZE; n++)
250
+ {
251
+ buffer[n] = osce_window[n] * signal[n];
252
+ }
253
+
254
+ /* calculate magnitude spectrum */
255
+ mag_spec_320_onesided(buffer, buffer);
256
+
257
+ /* accumulate bands */
258
+ apply_filterbank(spec, buffer, center_bins_noisy, band_weights_noisy, OSCE_NOISY_SPEC_NUM_BANDS);
259
+
260
+ /* log domain conversion */
261
+ for (n = 0; n < OSCE_NOISY_SPEC_NUM_BANDS; n++)
262
+ {
263
+ spec[n] = log(spec[n] + 1e-9f);
264
+ #ifdef DEBUG_PRINT
265
+ printf("logspec[%d]: %f\n", n, spec[n]);
266
+ #endif
267
+ }
268
+
269
+ /* DCT-II (orthonormal) */
270
+ celt_assert(OSCE_NOISY_SPEC_NUM_BANDS == NB_BANDS);
271
+ dct(cepstrum, spec);
272
+ }
273
+
274
+ static void calculate_acorr(float *acorr, float *signal, int lag)
275
+ {
276
+ int n, k;
277
+ celt_assert(acorr != signal)
278
+
279
+ for (k = -2; k <= 2; k++)
280
+ {
281
+ acorr[k+2] = 0;
282
+ float xx = 0;
283
+ float xy = 0;
284
+ float yy = 0;
285
+ for (n = 0; n < 80; n++)
286
+ {
287
+ /* obviously wasteful -> fix later */
288
+ xx += signal[n] * signal[n];
289
+ yy += signal[n - lag + k] * signal[n - lag + k];
290
+ xy += signal[n] * signal[n - lag + k];
291
+ }
292
+ acorr[k+2] = xy / sqrt(xx * yy + 1e-9f);
293
+ }
294
+ }
295
+
296
+ static int pitch_postprocessing(OSCEFeatureState *psFeatures, int lag, int type)
297
+ {
298
+ int new_lag;
299
+ int modulus;
300
+
301
+ #ifdef OSCE_HANGOVER_BUGFIX
302
+ #define TESTBIT 1
303
+ #else
304
+ #define TESTBIT 0
305
+ #endif
306
+
307
+ modulus = OSCE_PITCH_HANGOVER;
308
+ if (modulus == 0) modulus ++;
309
+
310
+ /* hangover is currently disabled to reflect a bug in the python code. ToDo: re-evaluate hangover */
311
+ if (type != TYPE_VOICED && psFeatures->last_type == TYPE_VOICED && TESTBIT)
312
+ /* enter hangover */
313
+ {
314
+ new_lag = OSCE_NO_PITCH_VALUE;
315
+ if (psFeatures->pitch_hangover_count < OSCE_PITCH_HANGOVER)
316
+ {
317
+ new_lag = psFeatures->last_lag;
318
+ psFeatures->pitch_hangover_count = (psFeatures->pitch_hangover_count + 1) % modulus;
319
+ }
320
+ }
321
+ else if (type != TYPE_VOICED && psFeatures->pitch_hangover_count && TESTBIT)
322
+ /* continue hangover */
323
+ {
324
+ new_lag = psFeatures->last_lag;
325
+ psFeatures->pitch_hangover_count = (psFeatures->pitch_hangover_count + 1) % modulus;
326
+ }
327
+ else if (type != TYPE_VOICED)
328
+ /* unvoiced frame after hangover */
329
+ {
330
+ new_lag = OSCE_NO_PITCH_VALUE;
331
+ psFeatures->pitch_hangover_count = 0;
332
+ }
333
+ else
334
+ /* voiced frame: update last_lag */
335
+ {
336
+ new_lag = lag;
337
+ psFeatures->last_lag = lag;
338
+ psFeatures->pitch_hangover_count = 0;
339
+ }
340
+
341
+ /* buffer update */
342
+ psFeatures->last_type = type;
343
+
344
+ /* with the current setup this should never happen (but who knows...) */
345
+ celt_assert(new_lag)
346
+
347
+ return new_lag;
348
+ }
349
+
350
+ void osce_calculate_features(
351
+ silk_decoder_state *psDec, /* I/O Decoder state */
352
+ silk_decoder_control *psDecCtrl, /* I Decoder control */
353
+ float *features, /* O input features */
354
+ float *numbits, /* O numbits and smoothed numbits */
355
+ int *periods, /* O pitch lags on subframe basis */
356
+ const opus_int16 xq[], /* I Decoded speech */
357
+ opus_int32 num_bits /* I Size of SILK payload in bits */
358
+ )
359
+ {
360
+ int num_subframes, num_samples;
361
+ float buffer[OSCE_FEATURES_MAX_HISTORY + OSCE_MAX_FEATURE_FRAMES * 80];
362
+ float *frame, *pfeatures;
363
+ OSCEFeatureState *psFeatures;
364
+ int i, n, k;
365
+ #ifdef WRITE_FEATURES
366
+ static FILE *f_feat = NULL;
367
+ if (f_feat == NULL)
368
+ {
369
+ f_feat = fopen("assembled_features.f32", "wb");
370
+ }
371
+ #endif
372
+
373
+ /*OPUS_CLEAR(buffer, 1);*/
374
+ memset(buffer, 0, sizeof(buffer));
375
+
376
+ num_subframes = psDec->nb_subfr;
377
+ num_samples = num_subframes * 80;
378
+ psFeatures = &psDec->osce.features;
379
+
380
+ /* smooth bit count */
381
+ psFeatures->numbits_smooth = 0.9f * psFeatures->numbits_smooth + 0.1f * num_bits;
382
+ numbits[0] = num_bits;
383
+ numbits[1] = psFeatures->numbits_smooth;
384
+
385
+ for (n = 0; n < num_samples; n++)
386
+ {
387
+ buffer[OSCE_FEATURES_MAX_HISTORY + n] = (float) xq[n] / (1U<<15);
388
+ }
389
+ OPUS_COPY(buffer, psFeatures->signal_history, OSCE_FEATURES_MAX_HISTORY);
390
+
391
+ for (k = 0; k < num_subframes; k++)
392
+ {
393
+ pfeatures = features + k * OSCE_FEATURE_DIM;
394
+ frame = &buffer[OSCE_FEATURES_MAX_HISTORY + k * 80];
395
+ memset(pfeatures, 0, OSCE_FEATURE_DIM); /* precaution */
396
+
397
+ /* clean spectrum from lpcs (update every other frame) */
398
+ if (k % 2 == 0)
399
+ {
400
+ calculate_log_spectrum_from_lpc(pfeatures + OSCE_CLEAN_SPEC_START, psDecCtrl->PredCoef_Q12[k >> 1], psDec->LPC_order);
401
+ }
402
+ else
403
+ {
404
+ OPUS_COPY(pfeatures + OSCE_CLEAN_SPEC_START, pfeatures + OSCE_CLEAN_SPEC_START - OSCE_FEATURE_DIM, OSCE_CLEAN_SPEC_LENGTH);
405
+ }
406
+
407
+ /* noisy cepstrum from signal (update every other frame) */
408
+ if (k % 2 == 0)
409
+ {
410
+ calculate_cepstrum(pfeatures + OSCE_NOISY_CEPSTRUM_START, frame - 160);
411
+ }
412
+ else
413
+ {
414
+ OPUS_COPY(pfeatures + OSCE_NOISY_CEPSTRUM_START, pfeatures + OSCE_NOISY_CEPSTRUM_START - OSCE_FEATURE_DIM, OSCE_NOISY_CEPSTRUM_LENGTH);
415
+ }
416
+
417
+ /* pitch hangover and zero value replacement */
418
+ periods[k] = pitch_postprocessing(psFeatures, psDecCtrl->pitchL[k], psDec->indices.signalType);
419
+
420
+ /* auto-correlation around pitch lag */
421
+ calculate_acorr(pfeatures + OSCE_ACORR_START, frame, periods[k]);
422
+
423
+ /* ltp */
424
+ celt_assert(OSCE_LTP_LENGTH == LTP_ORDER)
425
+ for (i = 0; i < OSCE_LTP_LENGTH; i++)
426
+ {
427
+ pfeatures[OSCE_LTP_START + i] = (float) psDecCtrl->LTPCoef_Q14[k * LTP_ORDER + i] / (1U << 14);
428
+ }
429
+
430
+ /* frame gain */
431
+ pfeatures[OSCE_LOG_GAIN_START] = log((float) psDecCtrl->Gains_Q16[k] / (1UL << 16) + 1e-9f);
432
+
433
+ #ifdef WRITE_FEATURES
434
+ fwrite(pfeatures, sizeof(*pfeatures), 93, f_feat);
435
+ #endif
436
+ }
437
+
438
+ /* buffer update */
439
+ OPUS_COPY(psFeatures->signal_history, &buffer[num_samples], OSCE_FEATURES_MAX_HISTORY);
440
+ }
441
+
442
+
443
+ void osce_cross_fade_10ms(float *x_enhanced, float *x_in, int length)
444
+ {
445
+ int i;
446
+ celt_assert(length >= 160);
447
+
448
+ for (i = 0; i < 160; i++)
449
+ {
450
+ x_enhanced[i] = osce_window[i] * x_enhanced[i] + (1.f - osce_window[i]) * x_in[i];
451
+ }
452
+
453
+
454
+ }
@@ -0,0 +1,50 @@
1
+ /* Copyright (c) 2023 Amazon
2
+ Written by Jan Buethe */
3
+ /*
4
+ Redistribution and use in source and binary forms, with or without
5
+ modification, are permitted provided that the following conditions
6
+ are met:
7
+
8
+ - Redistributions of source code must retain the above copyright
9
+ notice, this list of conditions and the following disclaimer.
10
+
11
+ - Redistributions in binary form must reproduce the above copyright
12
+ notice, this list of conditions and the following disclaimer in the
13
+ documentation and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
19
+ OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
23
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
24
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
+ */
27
+
28
+ #ifndef OSCE_FEATURES_H
29
+ #define OSCE_FEATURES_H
30
+
31
+
32
+ #include "structs.h"
33
+ #include "opus_types.h"
34
+
35
+ #define OSCE_NUMBITS_BUGFIX
36
+
37
+ void osce_calculate_features(
38
+ silk_decoder_state *psDec, /* I/O Decoder state */
39
+ silk_decoder_control *psDecCtrl, /* I Decoder control */
40
+ float *features, /* O input features */
41
+ float *numbits, /* O numbits and smoothed numbits */
42
+ int *periods, /* O pitch lags on subframe basis */
43
+ const opus_int16 xq[], /* I Decoded speech */
44
+ opus_int32 num_bits /* I Size of SILK payload in bits */
45
+ );
46
+
47
+
48
+ void osce_cross_fade_10ms(float *x_enhanced, float *x_in, int length);
49
+
50
+ #endif