react-native-audio-api 0.11.0-alpha.1 → 0.11.0-alpha.3

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 (522) hide show
  1. package/README.md +13 -11
  2. package/RNAudioAPI.podspec +25 -18
  3. package/android/build.gradle +41 -5
  4. package/android/src/main/cpp/audioapi/CMakeLists.txt +6 -3
  5. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +10 -16
  6. package/android/src/main/cpp/audioapi/android/OnLoad.cpp +1 -2
  7. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +219 -84
  8. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +23 -23
  9. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +13 -20
  10. package/android/src/main/cpp/audioapi/android/core/utils/AndroidFileWriterBackend.h +14 -18
  11. package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +72 -89
  12. package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +12 -23
  13. package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +47 -47
  14. package/android/src/main/cpp/audioapi/android/core/utils/FileOptions.cpp +83 -0
  15. package/android/src/main/cpp/audioapi/android/core/utils/FileOptions.h +22 -0
  16. package/android/src/main/cpp/audioapi/android/core/utils/MiniaudioImplementation.cpp +5 -0
  17. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.cpp +379 -298
  18. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.h +48 -91
  19. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/ptrs.hpp +48 -0
  20. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/utils.cpp +110 -0
  21. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/utils.h +34 -0
  22. package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.cpp +132 -104
  23. package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +8 -16
  24. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +28 -1
  25. package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +28 -6
  26. package/android/src/main/java/com/swmansion/audioapi/system/MediaNotificationManager.kt +11 -0
  27. package/android/src/main/jniLibs/arm64-v8a/libavcodec.so +0 -0
  28. package/android/src/main/jniLibs/arm64-v8a/libavformat.so +0 -0
  29. package/android/src/main/jniLibs/arm64-v8a/libavutil.so +0 -0
  30. package/android/src/main/jniLibs/arm64-v8a/libswresample.so +0 -0
  31. package/android/src/main/jniLibs/armeabi-v7a/libavcodec.so +0 -0
  32. package/android/src/main/jniLibs/armeabi-v7a/libavformat.so +0 -0
  33. package/android/src/main/jniLibs/armeabi-v7a/libavutil.so +0 -0
  34. package/android/src/main/jniLibs/armeabi-v7a/libswresample.so +0 -0
  35. package/android/src/main/jniLibs/x86/libavcodec.so +0 -0
  36. package/android/src/main/jniLibs/x86/libavformat.so +0 -0
  37. package/android/src/main/jniLibs/x86/libavutil.so +0 -0
  38. package/android/src/main/jniLibs/x86/libswresample.so +0 -0
  39. package/android/src/main/jniLibs/x86_64/libavcodec.so +0 -0
  40. package/android/src/main/jniLibs/x86_64/libavformat.so +0 -0
  41. package/android/src/main/jniLibs/x86_64/libavutil.so +0 -0
  42. package/android/src/main/jniLibs/x86_64/libswresample.so +0 -0
  43. package/android/src/oldarch/NativeAudioAPIModuleSpec.java +4 -0
  44. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +45 -70
  45. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +20 -22
  46. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +3 -4
  47. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +6 -8
  48. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +2 -2
  49. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +102 -63
  50. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +4 -1
  51. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +25 -31
  52. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +3 -3
  53. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +1 -2
  54. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +1 -2
  55. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +10 -18
  56. package/common/cpp/audioapi/HostObjects/destinations/AudioDestinationNodeHostObject.h +2 -3
  57. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +18 -30
  58. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +1 -2
  59. package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.cpp +50 -0
  60. package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.h +20 -0
  61. package/common/cpp/audioapi/HostObjects/effects/DelayNodeHostObject.cpp +27 -0
  62. package/common/cpp/audioapi/HostObjects/effects/DelayNodeHostObject.h +21 -0
  63. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +2 -2
  64. package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.cpp +33 -0
  65. package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.h +20 -0
  66. package/common/cpp/audioapi/HostObjects/effects/PeriodicWaveHostObject.h +1 -2
  67. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +2 -2
  68. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +1 -2
  69. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +6 -12
  70. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +7 -7
  71. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +98 -50
  72. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +5 -2
  73. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +27 -22
  74. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +12 -10
  75. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +17 -22
  76. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +5 -7
  77. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +25 -11
  78. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +8 -8
  79. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +19 -30
  80. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +2 -4
  81. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +7 -11
  82. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +2 -2
  83. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +1 -2
  84. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +6 -8
  85. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +1 -2
  86. package/common/cpp/audioapi/HostObjects/sources/RecorderAdapterNodeHostObject.h +4 -5
  87. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +6 -2
  88. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +5 -6
  89. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +1 -2
  90. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +39 -60
  91. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +15 -30
  92. package/common/cpp/audioapi/core/AudioContext.cpp +23 -28
  93. package/common/cpp/audioapi/core/AudioContext.h +6 -3
  94. package/common/cpp/audioapi/core/AudioNode.cpp +17 -19
  95. package/common/cpp/audioapi/core/AudioNode.h +19 -8
  96. package/common/cpp/audioapi/core/AudioParam.cpp +68 -100
  97. package/common/cpp/audioapi/core/AudioParam.h +20 -12
  98. package/common/cpp/audioapi/core/BaseAudioContext.cpp +52 -34
  99. package/common/cpp/audioapi/core/BaseAudioContext.h +26 -14
  100. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +12 -17
  101. package/common/cpp/audioapi/core/OfflineAudioContext.h +10 -5
  102. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +13 -21
  103. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +8 -6
  104. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.cpp +1 -0
  105. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +5 -3
  106. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +84 -66
  107. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +39 -10
  108. package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +201 -0
  109. package/common/cpp/audioapi/core/effects/ConvolverNode.h +64 -0
  110. package/common/cpp/audioapi/core/effects/DelayNode.cpp +101 -0
  111. package/common/cpp/audioapi/core/effects/DelayNode.h +39 -0
  112. package/common/cpp/audioapi/core/effects/GainNode.cpp +1 -0
  113. package/common/cpp/audioapi/core/effects/GainNode.h +3 -1
  114. package/common/cpp/audioapi/core/effects/IIRFilterNode.cpp +166 -0
  115. package/common/cpp/audioapi/core/effects/IIRFilterNode.h +74 -0
  116. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +22 -35
  117. package/common/cpp/audioapi/core/effects/PeriodicWave.h +4 -9
  118. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +4 -5
  119. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +4 -2
  120. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +11 -13
  121. package/common/cpp/audioapi/core/effects/WorkletNode.h +15 -12
  122. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +4 -4
  123. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +15 -14
  124. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +58 -36
  125. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +42 -44
  126. package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +4 -6
  127. package/common/cpp/audioapi/core/sources/AudioBuffer.h +4 -7
  128. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +48 -57
  129. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +37 -34
  130. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +55 -17
  131. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +35 -28
  132. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +41 -49
  133. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +8 -6
  134. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +29 -24
  135. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +6 -6
  136. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +3 -4
  137. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +3 -1
  138. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +12 -23
  139. package/common/cpp/audioapi/core/sources/OscillatorNode.h +6 -4
  140. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +43 -16
  141. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +22 -17
  142. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +104 -87
  143. package/common/cpp/audioapi/core/sources/StreamerNode.h +69 -33
  144. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +5 -7
  145. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +15 -13
  146. package/common/cpp/audioapi/core/types/AudioFormat.h +1 -11
  147. package/common/cpp/audioapi/core/utils/AudioDecoder.h +15 -6
  148. package/common/cpp/audioapi/core/utils/AudioFileWriter.cpp +41 -0
  149. package/common/cpp/audioapi/core/utils/AudioFileWriter.h +43 -0
  150. package/common/cpp/audioapi/core/utils/AudioNodeDestructor.cpp +5 -6
  151. package/common/cpp/audioapi/core/utils/AudioNodeDestructor.h +7 -10
  152. package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +17 -19
  153. package/common/cpp/audioapi/core/utils/AudioNodeManager.h +8 -11
  154. package/common/cpp/audioapi/core/utils/AudioParamEventQueue.cpp +3 -3
  155. package/common/cpp/audioapi/core/utils/AudioParamEventQueue.h +5 -5
  156. package/common/cpp/audioapi/core/utils/AudioRecorderCallback.cpp +101 -0
  157. package/common/cpp/audioapi/core/utils/AudioRecorderCallback.h +51 -0
  158. package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +6 -6
  159. package/common/cpp/audioapi/core/utils/Constants.h +7 -3
  160. package/common/cpp/audioapi/core/utils/ParamChangeEvent.cpp +1 -0
  161. package/common/cpp/audioapi/core/utils/ParamChangeEvent.h +9 -9
  162. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +33 -34
  163. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +17 -19
  164. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +23 -19
  165. package/common/cpp/audioapi/dsp/AudioUtils.cpp +4 -10
  166. package/common/cpp/audioapi/dsp/AudioUtils.h +1 -1
  167. package/common/cpp/audioapi/dsp/Convolver.cpp +201 -0
  168. package/common/cpp/audioapi/dsp/Convolver.h +47 -0
  169. package/common/cpp/audioapi/dsp/FFT.cpp +1 -27
  170. package/common/cpp/audioapi/dsp/FFT.h +19 -3
  171. package/common/cpp/audioapi/dsp/VectorMath.cpp +24 -58
  172. package/common/cpp/audioapi/dsp/VectorMath.h +35 -8
  173. package/common/cpp/audioapi/dsp/Windows.cpp +4 -9
  174. package/common/cpp/audioapi/dsp/Windows.h +24 -23
  175. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +12 -17
  176. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +45 -40
  177. package/common/cpp/audioapi/events/IAudioEventHandlerRegistry.h +15 -7
  178. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avcodec.h +4 -4
  179. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec.h +1 -1
  180. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_desc.h +1 -1
  181. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_id.h +3 -1
  182. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_par.h +2 -2
  183. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/defs.h +3 -0
  184. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/packet.h +1 -1
  185. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/smpte_436m.h +254 -0
  186. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version.h +1 -1
  187. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avformat.h +6 -6
  188. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version.h +2 -2
  189. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version_major.h +2 -0
  190. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avassert.h +5 -2
  191. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avutil.h +2 -2
  192. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/channel_layout.h +2 -2
  193. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/csp.h +1 -1
  194. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dict.h +1 -1
  195. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ffversion.h +1 -1
  196. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/film_grain_params.h +1 -1
  197. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/frame.h +1 -1
  198. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_vivid_metadata.h +3 -3
  199. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext.h +1 -1
  200. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_opencl.h +1 -1
  201. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_qsv.h +0 -1
  202. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vulkan.h +1 -1
  203. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/iamf.h +2 -2
  204. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lfg.h +2 -2
  205. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/log.h +2 -2
  206. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mathematics.h +1 -1
  207. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/opt.h +4 -4
  208. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rational.h +1 -1
  209. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rc4.h +1 -1
  210. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/refstruct.h +1 -1
  211. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/spherical.h +6 -0
  212. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tdrdi.h +1 -1
  213. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tx.h +1 -1
  214. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/version.h +3 -3
  215. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_hint.h +1 -1
  216. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/swresample.h +1 -1
  217. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version.h +1 -1
  218. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64/libavcodec.framework/libavcodec +0 -0
  219. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
  220. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64/libavformat.framework/libavformat +0 -0
  221. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
  222. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64/libavutil.framework/libavutil +0 -0
  223. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
  224. package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64/libswresample.framework/libswresample +0 -0
  225. package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
  226. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +4 -5
  227. package/common/cpp/audioapi/jsi/JsiHostObject.cpp +11 -13
  228. package/common/cpp/audioapi/jsi/JsiHostObject.h +26 -33
  229. package/common/cpp/audioapi/jsi/JsiPromise.cpp +34 -67
  230. package/common/cpp/audioapi/jsi/JsiPromise.h +65 -26
  231. package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.cpp +7 -10
  232. package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.h +1 -3
  233. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +4 -3
  234. package/common/cpp/audioapi/libs/ffmpeg/relinking.md +24 -0
  235. package/common/cpp/audioapi/utils/AlignedAllocator.hpp +50 -0
  236. package/common/cpp/audioapi/utils/AudioArray.cpp +3 -8
  237. package/common/cpp/audioapi/utils/AudioArray.h +3 -11
  238. package/common/cpp/audioapi/utils/AudioBus.cpp +79 -149
  239. package/common/cpp/audioapi/utils/AudioBus.h +17 -14
  240. package/common/cpp/audioapi/utils/AudioFileProperties.cpp +92 -0
  241. package/common/cpp/audioapi/utils/AudioFileProperties.h +76 -0
  242. package/common/cpp/audioapi/utils/CircularAudioArray.cpp +6 -18
  243. package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.cpp +6 -10
  244. package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.h +2 -2
  245. package/common/cpp/audioapi/utils/Result.hpp +286 -0
  246. package/common/cpp/audioapi/utils/ThreadPool.hpp +59 -1
  247. package/common/cpp/audioapi/utils/UnitConversion.h +9 -0
  248. package/common/cpp/test/CMakeLists.txt +20 -14
  249. package/common/cpp/test/src/AudioParamTest.cpp +4 -3
  250. package/common/cpp/test/src/AudioScheduledSourceTest.cpp +113 -0
  251. package/common/cpp/test/src/ConstantSourceTest.cpp +5 -7
  252. package/common/cpp/test/src/DelayTest.cpp +108 -0
  253. package/common/cpp/test/src/GainTest.cpp +4 -5
  254. package/common/cpp/test/src/IIRFilterTest.cpp +153 -0
  255. package/common/cpp/test/src/MockAudioEventHandlerRegistry.h +19 -11
  256. package/common/cpp/test/src/OscillatorTest.cpp +2 -1
  257. package/common/cpp/test/src/StereoPannerTest.cpp +6 -9
  258. package/common/cpp/test/src/biquad/BiquadFilterChromium.cpp +372 -0
  259. package/common/cpp/test/src/biquad/BiquadFilterChromium.h +65 -0
  260. package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +272 -0
  261. package/common/cpp/test/src/biquad/BiquadFilterTest.h +47 -0
  262. package/ios/audioapi/ios/AudioAPIModule.h +2 -1
  263. package/ios/audioapi/ios/AudioAPIModule.mm +44 -20
  264. package/ios/audioapi/ios/core/IOSAudioPlayer.h +2 -2
  265. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +7 -6
  266. package/ios/audioapi/ios/core/IOSAudioRecorder.h +26 -18
  267. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +193 -53
  268. package/ios/audioapi/ios/core/NativeAudioPlayer.m +16 -13
  269. package/ios/audioapi/ios/core/NativeAudioRecorder.h +4 -0
  270. package/ios/audioapi/ios/core/NativeAudioRecorder.m +42 -7
  271. package/ios/audioapi/ios/core/utils/AudioDecoder.mm +21 -4
  272. package/ios/audioapi/ios/core/utils/FileOptions.h +31 -0
  273. package/ios/audioapi/ios/core/utils/FileOptions.mm +177 -0
  274. package/ios/audioapi/ios/core/{IOSAudioFileWriter.h → utils/IOSFileWriter.h} +16 -14
  275. package/ios/audioapi/ios/core/utils/IOSFileWriter.mm +224 -0
  276. package/ios/audioapi/ios/core/{IOSRecorderCallback.h → utils/IOSRecorderCallback.h} +7 -17
  277. package/ios/audioapi/ios/core/utils/IOSRecorderCallback.mm +172 -0
  278. package/ios/audioapi/ios/system/AudioEngine.h +19 -16
  279. package/ios/audioapi/ios/system/AudioEngine.mm +101 -134
  280. package/ios/audioapi/ios/system/AudioSessionManager.h +25 -11
  281. package/ios/audioapi/ios/system/AudioSessionManager.mm +273 -202
  282. package/ios/audioapi/ios/system/LockScreenManager.mm +39 -23
  283. package/ios/audioapi/ios/system/NotificationManager.mm +37 -52
  284. package/lib/commonjs/AudioAPIModule/AudioAPIModule.js +90 -0
  285. package/lib/commonjs/AudioAPIModule/AudioAPIModule.js.map +1 -0
  286. package/lib/commonjs/AudioAPIModule/globals.d.js +6 -0
  287. package/lib/commonjs/AudioAPIModule/globals.d.js.map +1 -0
  288. package/lib/commonjs/AudioAPIModule/index.js +14 -0
  289. package/lib/commonjs/AudioAPIModule/index.js.map +1 -0
  290. package/lib/commonjs/api.js +18 -12
  291. package/lib/commonjs/api.js.map +1 -1
  292. package/lib/commonjs/api.web.js +8 -0
  293. package/lib/commonjs/api.web.js.map +1 -1
  294. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +3 -0
  295. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
  296. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +5 -2
  297. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  298. package/lib/commonjs/core/AudioContext.js +5 -8
  299. package/lib/commonjs/core/AudioContext.js.map +1 -1
  300. package/lib/commonjs/core/AudioNode.js +1 -1
  301. package/lib/commonjs/core/AudioNode.js.map +1 -1
  302. package/lib/commonjs/core/AudioParam.js +18 -11
  303. package/lib/commonjs/core/AudioParam.js.map +1 -1
  304. package/lib/commonjs/core/AudioRecorder.js +43 -55
  305. package/lib/commonjs/core/AudioRecorder.js.map +1 -1
  306. package/lib/commonjs/core/BaseAudioContext.js +61 -30
  307. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  308. package/lib/commonjs/core/ConvolverNode.js +37 -0
  309. package/lib/commonjs/core/ConvolverNode.js.map +1 -0
  310. package/lib/commonjs/core/DelayNode.js +17 -0
  311. package/lib/commonjs/core/DelayNode.js.map +1 -0
  312. package/lib/commonjs/core/IIRFilterNode.js +19 -0
  313. package/lib/commonjs/core/IIRFilterNode.js.map +1 -0
  314. package/lib/commonjs/core/OfflineAudioContext.js +3 -6
  315. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  316. package/lib/commonjs/plugin/withAudioAPI.js +46 -0
  317. package/lib/commonjs/plugin/withAudioAPI.js.map +1 -1
  318. package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
  319. package/lib/commonjs/system/AudioManager.js +4 -7
  320. package/lib/commonjs/system/AudioManager.js.map +1 -1
  321. package/lib/commonjs/types.js +16 -23
  322. package/lib/commonjs/types.js.map +1 -1
  323. package/lib/commonjs/utils/filePresets.js +43 -0
  324. package/lib/commonjs/utils/filePresets.js.map +1 -0
  325. package/lib/commonjs/utils/index.js +12 -27
  326. package/lib/commonjs/utils/index.js.map +1 -1
  327. package/lib/commonjs/web-core/AudioContext.js +21 -1
  328. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  329. package/lib/commonjs/web-core/ConvolverNode.js +40 -0
  330. package/lib/commonjs/web-core/ConvolverNode.js.map +1 -0
  331. package/lib/commonjs/web-core/ConvolverNodeOptions.js +6 -0
  332. package/lib/commonjs/web-core/ConvolverNodeOptions.js.map +1 -0
  333. package/lib/commonjs/web-core/DelayNode.js +17 -0
  334. package/lib/commonjs/web-core/DelayNode.js.map +1 -0
  335. package/lib/commonjs/web-core/IIRFilterNode.js +19 -0
  336. package/lib/commonjs/web-core/IIRFilterNode.js.map +1 -0
  337. package/lib/commonjs/web-core/OfflineAudioContext.js +20 -0
  338. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  339. package/lib/module/AudioAPIModule/AudioAPIModule.js +87 -0
  340. package/lib/module/AudioAPIModule/AudioAPIModule.js.map +1 -0
  341. package/lib/module/AudioAPIModule/globals.d.js +4 -0
  342. package/lib/module/AudioAPIModule/globals.d.js.map +1 -0
  343. package/lib/module/AudioAPIModule/index.js +4 -0
  344. package/lib/module/AudioAPIModule/index.js.map +1 -0
  345. package/lib/module/api.js +3 -12
  346. package/lib/module/api.js.map +1 -1
  347. package/lib/module/api.web.js +1 -0
  348. package/lib/module/api.web.js.map +1 -1
  349. package/lib/module/core/AudioBufferBaseSourceNode.js +3 -0
  350. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
  351. package/lib/module/core/AudioBufferQueueSourceNode.js +5 -2
  352. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  353. package/lib/module/core/AudioContext.js +5 -8
  354. package/lib/module/core/AudioContext.js.map +1 -1
  355. package/lib/module/core/AudioNode.js +1 -1
  356. package/lib/module/core/AudioNode.js.map +1 -1
  357. package/lib/module/core/AudioParam.js +18 -11
  358. package/lib/module/core/AudioParam.js.map +1 -1
  359. package/lib/module/core/AudioRecorder.js +44 -56
  360. package/lib/module/core/AudioRecorder.js.map +1 -1
  361. package/lib/module/core/BaseAudioContext.js +63 -32
  362. package/lib/module/core/BaseAudioContext.js.map +1 -1
  363. package/lib/module/core/ConvolverNode.js +31 -0
  364. package/lib/module/core/ConvolverNode.js.map +1 -0
  365. package/lib/module/core/DelayNode.js +11 -0
  366. package/lib/module/core/DelayNode.js.map +1 -0
  367. package/lib/module/core/IIRFilterNode.js +13 -0
  368. package/lib/module/core/IIRFilterNode.js.map +1 -0
  369. package/lib/module/core/OfflineAudioContext.js +3 -6
  370. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  371. package/lib/module/plugin/withAudioAPI.js +47 -1
  372. package/lib/module/plugin/withAudioAPI.js.map +1 -1
  373. package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
  374. package/lib/module/system/AudioManager.js +4 -7
  375. package/lib/module/system/AudioManager.js.map +1 -1
  376. package/lib/module/types.js +15 -22
  377. package/lib/module/types.js.map +1 -1
  378. package/lib/module/utils/filePresets.js +39 -0
  379. package/lib/module/utils/filePresets.js.map +1 -0
  380. package/lib/module/utils/index.js +10 -10
  381. package/lib/module/utils/index.js.map +1 -1
  382. package/lib/module/web-core/AudioContext.js +21 -1
  383. package/lib/module/web-core/AudioContext.js.map +1 -1
  384. package/lib/module/web-core/ConvolverNode.js +34 -0
  385. package/lib/module/web-core/ConvolverNode.js.map +1 -0
  386. package/lib/module/web-core/ConvolverNodeOptions.js +4 -0
  387. package/lib/module/web-core/ConvolverNodeOptions.js.map +1 -0
  388. package/lib/module/web-core/DelayNode.js +11 -0
  389. package/lib/module/web-core/DelayNode.js.map +1 -0
  390. package/lib/module/web-core/IIRFilterNode.js +13 -0
  391. package/lib/module/web-core/IIRFilterNode.js.map +1 -0
  392. package/lib/module/web-core/OfflineAudioContext.js +20 -0
  393. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  394. package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts +36 -0
  395. package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts.map +1 -0
  396. package/lib/typescript/AudioAPIModule/index.d.ts +2 -0
  397. package/lib/typescript/AudioAPIModule/index.d.ts.map +1 -0
  398. package/lib/typescript/api.d.ts +3 -9
  399. package/lib/typescript/api.d.ts.map +1 -1
  400. package/lib/typescript/api.web.d.ts +1 -0
  401. package/lib/typescript/api.web.d.ts.map +1 -1
  402. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +1 -0
  403. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
  404. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
  405. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  406. package/lib/typescript/core/AudioContext.d.ts +1 -1
  407. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  408. package/lib/typescript/core/AudioNode.d.ts +2 -1
  409. package/lib/typescript/core/AudioNode.d.ts.map +1 -1
  410. package/lib/typescript/core/AudioParam.d.ts.map +1 -1
  411. package/lib/typescript/core/AudioRecorder.d.ts +13 -6
  412. package/lib/typescript/core/AudioRecorder.d.ts.map +1 -1
  413. package/lib/typescript/core/BaseAudioContext.d.ts +9 -3
  414. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  415. package/lib/typescript/core/ConvolverNode.d.ts +12 -0
  416. package/lib/typescript/core/ConvolverNode.d.ts.map +1 -0
  417. package/lib/typescript/core/DelayNode.d.ts +9 -0
  418. package/lib/typescript/core/DelayNode.d.ts.map +1 -0
  419. package/lib/typescript/core/IIRFilterNode.d.ts +5 -0
  420. package/lib/typescript/core/IIRFilterNode.d.ts.map +1 -0
  421. package/lib/typescript/core/OfflineAudioContext.d.ts +1 -1
  422. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  423. package/lib/typescript/events/types.d.ts +4 -0
  424. package/lib/typescript/events/types.d.ts.map +1 -1
  425. package/lib/typescript/interfaces.d.ts +34 -34
  426. package/lib/typescript/interfaces.d.ts.map +1 -1
  427. package/lib/typescript/plugin/withAudioAPI.d.ts +1 -0
  428. package/lib/typescript/plugin/withAudioAPI.d.ts.map +1 -1
  429. package/lib/typescript/specs/NativeAudioAPIModule.d.ts +2 -1
  430. package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
  431. package/lib/typescript/system/AudioManager.d.ts +3 -2
  432. package/lib/typescript/system/AudioManager.d.ts.map +1 -1
  433. package/lib/typescript/types.d.ts +42 -34
  434. package/lib/typescript/types.d.ts.map +1 -1
  435. package/lib/typescript/utils/filePresets.d.ts +9 -0
  436. package/lib/typescript/utils/filePresets.d.ts.map +1 -0
  437. package/lib/typescript/utils/index.d.ts +1 -8
  438. package/lib/typescript/utils/index.d.ts.map +1 -1
  439. package/lib/typescript/web-core/AudioContext.d.ts +9 -2
  440. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  441. package/lib/typescript/web-core/BaseAudioContext.d.ts +7 -1
  442. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  443. package/lib/typescript/web-core/ConvolverNode.d.ts +11 -0
  444. package/lib/typescript/web-core/ConvolverNode.d.ts.map +1 -0
  445. package/lib/typescript/web-core/ConvolverNodeOptions.d.ts +6 -0
  446. package/lib/typescript/web-core/ConvolverNodeOptions.d.ts.map +1 -0
  447. package/lib/typescript/web-core/DelayNode.d.ts +8 -0
  448. package/lib/typescript/web-core/DelayNode.d.ts.map +1 -0
  449. package/lib/typescript/web-core/IIRFilterNode.d.ts +5 -0
  450. package/lib/typescript/web-core/IIRFilterNode.d.ts.map +1 -0
  451. package/lib/typescript/web-core/OfflineAudioContext.d.ts +8 -1
  452. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  453. package/package.json +11 -4
  454. package/scripts/download-prebuilt-binaries.sh +61 -0
  455. package/scripts/rnaa_utils.rb +8 -0
  456. package/scripts/validate-worklets-version.js +27 -0
  457. package/src/AudioAPIModule/AudioAPIModule.ts +122 -0
  458. package/src/AudioAPIModule/globals.d.ts +33 -0
  459. package/src/AudioAPIModule/index.ts +1 -0
  460. package/src/api.ts +4 -52
  461. package/src/api.web.ts +1 -0
  462. package/src/core/AudioBufferBaseSourceNode.ts +8 -0
  463. package/src/core/AudioBufferQueueSourceNode.ts +8 -2
  464. package/src/core/AudioContext.ts +5 -8
  465. package/src/core/AudioNode.ts +4 -3
  466. package/src/core/AudioParam.ts +18 -11
  467. package/src/core/AudioRecorder.ts +63 -78
  468. package/src/core/BaseAudioContext.ts +120 -54
  469. package/src/core/ConvolverNode.ts +35 -0
  470. package/src/core/DelayNode.ts +13 -0
  471. package/src/core/IIRFilterNode.ts +25 -0
  472. package/src/core/OfflineAudioContext.ts +4 -7
  473. package/src/events/types.ts +5 -0
  474. package/src/interfaces.ts +51 -34
  475. package/src/plugin/withAudioAPI.ts +61 -0
  476. package/src/specs/NativeAudioAPIModule.ts +3 -2
  477. package/src/system/AudioManager.ts +13 -19
  478. package/src/types.ts +45 -36
  479. package/src/utils/filePresets.ts +47 -0
  480. package/src/utils/index.ts +13 -19
  481. package/src/web-core/AudioContext.tsx +40 -1
  482. package/src/web-core/BaseAudioContext.tsx +11 -1
  483. package/src/web-core/ConvolverNode.tsx +43 -0
  484. package/src/web-core/ConvolverNodeOptions.tsx +6 -0
  485. package/src/web-core/DelayNode.tsx +12 -0
  486. package/src/web-core/IIRFilterNode.tsx +25 -0
  487. package/src/web-core/OfflineAudioContext.tsx +39 -0
  488. package/android/src/main/cpp/audioapi/android/core/utils/FileUtils.h +0 -34
  489. package/android/src/main/cpp/audioapi/android/core/utils/FileUtilts.cpp +0 -133
  490. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegAudioFileOptions.cpp +0 -154
  491. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegAudioFileOptions.h +0 -41
  492. package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.cpp +0 -47
  493. package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.h +0 -28
  494. package/common/cpp/audioapi/libs/ffmpeg/INSTRUCTIONS.md +0 -32
  495. package/common/cpp/audioapi/libs/ffmpeg/create_xcframework.sh +0 -111
  496. package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +0 -391
  497. package/ios/audioapi/ios/core/IOSAudioFileOptions.h +0 -36
  498. package/ios/audioapi/ios/core/IOSAudioFileOptions.mm +0 -140
  499. package/ios/audioapi/ios/core/IOSAudioFileWriter.mm +0 -223
  500. package/ios/audioapi/ios/core/IOSRecorderCallback.mm +0 -189
  501. package/lib/commonjs/utils/bitEnums.js +0 -33
  502. package/lib/commonjs/utils/bitEnums.js.map +0 -1
  503. package/lib/module/utils/bitEnums.js +0 -27
  504. package/lib/module/utils/bitEnums.js.map +0 -1
  505. package/lib/typescript/utils/bitEnums.d.ts +0 -4
  506. package/lib/typescript/utils/bitEnums.d.ts.map +0 -1
  507. package/metro-config/index.d.ts +0 -5
  508. package/metro-config/index.js +0 -41
  509. package/metro-config/tsconfig.json +0 -3
  510. package/src/utils/bitEnums.ts +0 -51
  511. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/Info.plist +5 -5
  512. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64/libavcodec.framework/Info.plist +0 -0
  513. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64_x86_64-simulator/libavcodec.framework/Info.plist +0 -0
  514. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/Info.plist +0 -0
  515. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64/libavformat.framework/Info.plist +0 -0
  516. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64_x86_64-simulator/libavformat.framework/Info.plist +0 -0
  517. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/Info.plist +5 -5
  518. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64/libavutil.framework/Info.plist +0 -0
  519. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64_x86_64-simulator/libavutil.framework/Info.plist +0 -0
  520. package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/Info.plist +5 -5
  521. /package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64/libswresample.framework/Info.plist +0 -0
  522. /package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64_x86_64-simulator/libswresample.framework/Info.plist +0 -0
@@ -2,7 +2,10 @@
2
2
  #include <audioapi/core/analysis/AnalyserNode.h>
3
3
  #include <audioapi/core/destinations/AudioDestinationNode.h>
4
4
  #include <audioapi/core/effects/BiquadFilterNode.h>
5
+ #include <audioapi/core/effects/ConvolverNode.h>
6
+ #include <audioapi/core/effects/DelayNode.h>
5
7
  #include <audioapi/core/effects/GainNode.h>
8
+ #include <audioapi/core/effects/IIRFilterNode.h>
6
9
  #include <audioapi/core/effects/StereoPannerNode.h>
7
10
  #include <audioapi/core/effects/WorkletNode.h>
8
11
  #include <audioapi/core/effects/WorkletProcessingNode.h>
@@ -12,7 +15,9 @@
12
15
  #include <audioapi/core/sources/ConstantSourceNode.h>
13
16
  #include <audioapi/core/sources/OscillatorNode.h>
14
17
  #include <audioapi/core/sources/RecorderAdapterNode.h>
18
+ #if !RN_AUDIO_API_FFMPEG_DISABLED
15
19
  #include <audioapi/core/sources/StreamerNode.h>
20
+ #endif // RN_AUDIO_API_FFMPEG_DISABLED
16
21
  #include <audioapi/core/sources/WorkletSourceNode.h>
17
22
  #include <audioapi/core/utils/AudioDecoder.h>
18
23
  #include <audioapi/core/utils/AudioNodeManager.h>
@@ -21,12 +26,15 @@
21
26
  #include <audioapi/utils/AudioArray.h>
22
27
  #include <audioapi/utils/AudioBus.h>
23
28
  #include <audioapi/utils/CircularAudioArray.h>
29
+ #include <memory>
30
+ #include <string>
31
+ #include <utility>
32
+ #include <vector>
24
33
 
25
34
  namespace audioapi {
26
35
 
27
36
  BaseAudioContext::BaseAudioContext(
28
- const std::shared_ptr<IAudioEventHandlerRegistry>
29
- &audioEventHandlerRegistry,
37
+ const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry,
30
38
  const RuntimeRegistry &runtimeRegistry) {
31
39
  nodeManager_ = std::make_shared<AudioNodeManager>();
32
40
  destination_ = std::make_shared<AudioDestinationNode>(this);
@@ -70,8 +78,7 @@ std::shared_ptr<WorkletSourceNode> BaseAudioContext::createWorkletSourceNode(
70
78
  std::weak_ptr<worklets::WorkletRuntime> runtime,
71
79
  bool shouldLockRuntime) {
72
80
  WorkletsRunner workletRunner(runtime, shareableWorklet, shouldLockRuntime);
73
- auto workletSourceNode =
74
- std::make_shared<WorkletSourceNode>(this, std::move(workletRunner));
81
+ auto workletSourceNode = std::make_shared<WorkletSourceNode>(this, std::move(workletRunner));
75
82
  nodeManager_->addSourceNode(workletSourceNode);
76
83
  return workletSourceNode;
77
84
  }
@@ -89,8 +96,7 @@ std::shared_ptr<WorkletNode> BaseAudioContext::createWorkletNode(
89
96
  return workletNode;
90
97
  }
91
98
 
92
- std::shared_ptr<WorkletProcessingNode>
93
- BaseAudioContext::createWorkletProcessingNode(
99
+ std::shared_ptr<WorkletProcessingNode> BaseAudioContext::createWorkletProcessingNode(
94
100
  std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
95
101
  std::weak_ptr<worklets::WorkletRuntime> runtime,
96
102
  bool shouldLockRuntime) {
@@ -119,13 +125,15 @@ std::shared_ptr<ConstantSourceNode> BaseAudioContext::createConstantSource() {
119
125
  return constantSource;
120
126
  }
121
127
 
122
- #ifndef AUDIO_API_TEST_SUITE
123
128
  std::shared_ptr<StreamerNode> BaseAudioContext::createStreamer() {
129
+ #if !RN_AUDIO_API_FFMPEG_DISABLED
124
130
  auto streamer = std::make_shared<StreamerNode>(this);
125
131
  nodeManager_->addSourceNode(streamer);
126
132
  return streamer;
133
+ #else
134
+ return nullptr;
135
+ #endif // RN_AUDIO_API_FFMPEG_DISABLED
127
136
  }
128
- #endif
129
137
 
130
138
  std::shared_ptr<GainNode> BaseAudioContext::createGain() {
131
139
  auto gain = std::make_shared<GainNode>(this);
@@ -133,6 +141,12 @@ std::shared_ptr<GainNode> BaseAudioContext::createGain() {
133
141
  return gain;
134
142
  }
135
143
 
144
+ std::shared_ptr<DelayNode> BaseAudioContext::createDelay(float maxDelayTime) {
145
+ auto delay = std::make_shared<DelayNode>(this, maxDelayTime);
146
+ nodeManager_->addProcessingNode(delay);
147
+ return delay;
148
+ }
149
+
136
150
  std::shared_ptr<StereoPannerNode> BaseAudioContext::createStereoPanner() {
137
151
  auto stereoPanner = std::make_shared<StereoPannerNode>(this);
138
152
  nodeManager_->addProcessingNode(stereoPanner);
@@ -145,26 +159,29 @@ std::shared_ptr<BiquadFilterNode> BaseAudioContext::createBiquadFilter() {
145
159
  return biquadFilter;
146
160
  }
147
161
 
148
- std::shared_ptr<AudioBufferSourceNode> BaseAudioContext::createBufferSource(
149
- bool pitchCorrection) {
150
- auto bufferSource =
151
- std::make_shared<AudioBufferSourceNode>(this, pitchCorrection);
162
+ std::shared_ptr<IIRFilterNode> BaseAudioContext::createIIRFilter(
163
+ const std::vector<float> &feedforward,
164
+ const std::vector<float> &feedback) {
165
+ auto iirFilter = std::make_shared<IIRFilterNode>(this, feedforward, feedback);
166
+ nodeManager_->addProcessingNode(iirFilter);
167
+ return iirFilter;
168
+ }
169
+
170
+ std::shared_ptr<AudioBufferSourceNode> BaseAudioContext::createBufferSource(bool pitchCorrection) {
171
+ auto bufferSource = std::make_shared<AudioBufferSourceNode>(this, pitchCorrection);
152
172
  nodeManager_->addSourceNode(bufferSource);
153
173
  return bufferSource;
154
174
  }
155
175
 
156
- std::shared_ptr<AudioBufferQueueSourceNode>
157
- BaseAudioContext::createBufferQueueSource(bool pitchCorrection) {
158
- auto bufferSource =
159
- std::make_shared<AudioBufferQueueSourceNode>(this, pitchCorrection);
176
+ std::shared_ptr<AudioBufferQueueSourceNode> BaseAudioContext::createBufferQueueSource(
177
+ bool pitchCorrection) {
178
+ auto bufferSource = std::make_shared<AudioBufferQueueSourceNode>(this, pitchCorrection);
160
179
  nodeManager_->addSourceNode(bufferSource);
161
180
  return bufferSource;
162
181
  }
163
182
 
164
- std::shared_ptr<AudioBuffer> BaseAudioContext::createBuffer(
165
- int numberOfChannels,
166
- size_t length,
167
- float sampleRate) {
183
+ std::shared_ptr<AudioBuffer>
184
+ BaseAudioContext::createBuffer(int numberOfChannels, size_t length, float sampleRate) {
168
185
  return std::make_shared<AudioBuffer>(numberOfChannels, length, sampleRate);
169
186
  }
170
187
 
@@ -172,8 +189,7 @@ std::shared_ptr<PeriodicWave> BaseAudioContext::createPeriodicWave(
172
189
  const std::vector<std::complex<float>> &complexData,
173
190
  bool disableNormalization,
174
191
  int length) {
175
- return std::make_shared<PeriodicWave>(
176
- sampleRate_, complexData, length, disableNormalization);
192
+ return std::make_shared<PeriodicWave>(sampleRate_, complexData, length, disableNormalization);
177
193
  }
178
194
 
179
195
  std::shared_ptr<AnalyserNode> BaseAudioContext::createAnalyser() {
@@ -182,6 +198,14 @@ std::shared_ptr<AnalyserNode> BaseAudioContext::createAnalyser() {
182
198
  return analyser;
183
199
  }
184
200
 
201
+ std::shared_ptr<ConvolverNode> BaseAudioContext::createConvolver(
202
+ std::shared_ptr<AudioBuffer> buffer,
203
+ bool disableNormalization) {
204
+ auto convolver = std::make_shared<ConvolverNode>(this, buffer, disableNormalization);
205
+ nodeManager_->addProcessingNode(convolver);
206
+ return convolver;
207
+ }
208
+
185
209
  AudioNodeManager *BaseAudioContext::getNodeManager() {
186
210
  return nodeManager_.get();
187
211
  }
@@ -215,36 +239,30 @@ std::string BaseAudioContext::toString(ContextState state) {
215
239
  }
216
240
  }
217
241
 
218
- std::shared_ptr<PeriodicWave> BaseAudioContext::getBasicWaveForm(
219
- OscillatorType type) {
242
+ std::shared_ptr<PeriodicWave> BaseAudioContext::getBasicWaveForm(OscillatorType type) {
220
243
  switch (type) {
221
244
  case OscillatorType::SINE:
222
245
  if (cachedSineWave_ == nullptr) {
223
- cachedSineWave_ =
224
- std::make_shared<PeriodicWave>(sampleRate_, type, false);
246
+ cachedSineWave_ = std::make_shared<PeriodicWave>(sampleRate_, type, false);
225
247
  }
226
248
  return cachedSineWave_;
227
249
  case OscillatorType::SQUARE:
228
250
  if (cachedSquareWave_ == nullptr) {
229
- cachedSquareWave_ =
230
- std::make_shared<PeriodicWave>(sampleRate_, type, false);
251
+ cachedSquareWave_ = std::make_shared<PeriodicWave>(sampleRate_, type, false);
231
252
  }
232
253
  return cachedSquareWave_;
233
254
  case OscillatorType::SAWTOOTH:
234
255
  if (cachedSawtoothWave_ == nullptr) {
235
- cachedSawtoothWave_ =
236
- std::make_shared<PeriodicWave>(sampleRate_, type, false);
256
+ cachedSawtoothWave_ = std::make_shared<PeriodicWave>(sampleRate_, type, false);
237
257
  }
238
258
  return cachedSawtoothWave_;
239
259
  case OscillatorType::TRIANGLE:
240
260
  if (cachedTriangleWave_ == nullptr) {
241
- cachedTriangleWave_ =
242
- std::make_shared<PeriodicWave>(sampleRate_, type, false);
261
+ cachedTriangleWave_ = std::make_shared<PeriodicWave>(sampleRate_, type, false);
243
262
  }
244
263
  return cachedTriangleWave_;
245
264
  case OscillatorType::CUSTOM:
246
- throw std::invalid_argument(
247
- "You can't get a custom wave form. You need to create it.");
265
+ throw std::invalid_argument("You can't get a custom wave form. You need to create it.");
248
266
  break;
249
267
  }
250
268
  }
@@ -16,6 +16,7 @@ namespace audioapi {
16
16
 
17
17
  class AudioBus;
18
18
  class GainNode;
19
+ class DelayNode;
19
20
  class AudioBuffer;
20
21
  class PeriodicWave;
21
22
  class OscillatorNode;
@@ -23,11 +24,13 @@ class ConstantSourceNode;
23
24
  class StereoPannerNode;
24
25
  class AudioNodeManager;
25
26
  class BiquadFilterNode;
27
+ class IIRFilterNode;
26
28
  class AudioDestinationNode;
27
29
  class AudioBufferSourceNode;
28
30
  class AudioBufferQueueSourceNode;
29
31
  class AnalyserNode;
30
32
  class AudioEventHandlerRegistry;
33
+ class ConvolverNode;
31
34
  class IAudioEventHandlerRegistry;
32
35
  class RecorderAdapterNode;
33
36
  class WorkletSourceNode;
@@ -37,7 +40,9 @@ class StreamerNode;
37
40
 
38
41
  class BaseAudioContext {
39
42
  public:
40
- explicit BaseAudioContext(const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry, const RuntimeRegistry &runtimeRegistry);
43
+ explicit BaseAudioContext(
44
+ const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry,
45
+ const RuntimeRegistry &runtimeRegistry);
41
46
  virtual ~BaseAudioContext() = default;
42
47
 
43
48
  std::string getState();
@@ -48,25 +53,29 @@ class BaseAudioContext {
48
53
 
49
54
  std::shared_ptr<RecorderAdapterNode> createRecorderAdapter();
50
55
  std::shared_ptr<WorkletSourceNode> createWorkletSourceNode(
51
- std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
52
- std::weak_ptr<worklets::WorkletRuntime> runtime,
53
- bool shouldLockRuntime = true);
56
+ std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
57
+ std::weak_ptr<worklets::WorkletRuntime> runtime,
58
+ bool shouldLockRuntime = true);
54
59
  std::shared_ptr<WorkletNode> createWorkletNode(
55
- std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
56
- std::weak_ptr<worklets::WorkletRuntime> runtime,
57
- size_t bufferLength,
58
- size_t inputChannelCount,
59
- bool shouldLockRuntime = true);
60
+ std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
61
+ std::weak_ptr<worklets::WorkletRuntime> runtime,
62
+ size_t bufferLength,
63
+ size_t inputChannelCount,
64
+ bool shouldLockRuntime = true);
60
65
  std::shared_ptr<WorkletProcessingNode> createWorkletProcessingNode(
61
- std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
62
- std::weak_ptr<worklets::WorkletRuntime> runtime,
63
- bool shouldLockRuntime = true);
66
+ std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
67
+ std::weak_ptr<worklets::WorkletRuntime> runtime,
68
+ bool shouldLockRuntime = true);
64
69
  std::shared_ptr<OscillatorNode> createOscillator();
65
70
  std::shared_ptr<ConstantSourceNode> createConstantSource();
66
71
  std::shared_ptr<StreamerNode> createStreamer();
67
72
  std::shared_ptr<GainNode> createGain();
73
+ std::shared_ptr<DelayNode> createDelay(float maxDelayTime);
68
74
  std::shared_ptr<StereoPannerNode> createStereoPanner();
69
75
  std::shared_ptr<BiquadFilterNode> createBiquadFilter();
76
+ std::shared_ptr<IIRFilterNode> createIIRFilter(
77
+ const std::vector<float> &feedforward,
78
+ const std::vector<float> &feedback);
70
79
  std::shared_ptr<AudioBufferSourceNode> createBufferSource(bool pitchCorrection);
71
80
  std::shared_ptr<AudioBufferQueueSourceNode> createBufferQueueSource(bool pitchCorrection);
72
81
  static std::shared_ptr<AudioBuffer>
@@ -76,6 +85,9 @@ class BaseAudioContext {
76
85
  bool disableNormalization,
77
86
  int length);
78
87
  std::shared_ptr<AnalyserNode> createAnalyser();
88
+ std::shared_ptr<ConvolverNode> createConvolver(
89
+ std::shared_ptr<AudioBuffer> buffer,
90
+ bool disableNormalization);
79
91
 
80
92
  std::shared_ptr<PeriodicWave> getBasicWaveForm(OscillatorType type);
81
93
  [[nodiscard]] float getNyquistFrequency() const;
@@ -103,8 +115,8 @@ class BaseAudioContext {
103
115
  [[nodiscard]] virtual bool isDriverRunning() const = 0;
104
116
 
105
117
  public:
106
- std::shared_ptr<IAudioEventHandlerRegistry> audioEventHandlerRegistry_;
107
- RuntimeRegistry runtimeRegistry_;
118
+ std::shared_ptr<IAudioEventHandlerRegistry> audioEventHandlerRegistry_;
119
+ RuntimeRegistry runtimeRegistry_;
108
120
  };
109
121
 
110
122
  } // namespace audioapi
@@ -12,6 +12,7 @@
12
12
  #include <algorithm>
13
13
  #include <cassert>
14
14
  #include <iostream>
15
+ #include <memory>
15
16
  #include <thread>
16
17
  #include <utility>
17
18
 
@@ -21,16 +22,15 @@ OfflineAudioContext::OfflineAudioContext(
21
22
  int numberOfChannels,
22
23
  size_t length,
23
24
  float sampleRate,
24
- const std::shared_ptr<IAudioEventHandlerRegistry>
25
- &audioEventHandlerRegistry,
25
+ const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry,
26
26
  const RuntimeRegistry &runtimeRegistry)
27
27
  : BaseAudioContext(audioEventHandlerRegistry, runtimeRegistry),
28
28
  length_(length),
29
29
  numberOfChannels_(numberOfChannels),
30
30
  currentSampleFrame_(0) {
31
31
  sampleRate_ = sampleRate;
32
- resultBus_ = std::make_shared<AudioBus>(
33
- static_cast<int>(length_), numberOfChannels_, sampleRate_);
32
+ resultBus_ =
33
+ std::make_shared<AudioBus>(static_cast<int>(length_), numberOfChannels_, sampleRate_);
34
34
  }
35
35
 
36
36
  OfflineAudioContext::~OfflineAudioContext() {
@@ -47,21 +47,18 @@ void OfflineAudioContext::resume() {
47
47
  renderAudio();
48
48
  }
49
49
 
50
- void OfflineAudioContext::suspend(
51
- double when,
52
- const std::function<void()> &callback) {
50
+ void OfflineAudioContext::suspend(double when, const std::function<void()> &callback) {
53
51
  Locker locker(mutex_);
54
52
 
55
53
  // we can only suspend once per render quantum at the end of the quantum
56
54
  // first quantum is [0, RENDER_QUANTUM_SIZE)
57
55
  auto frame = static_cast<size_t>(when * sampleRate_);
58
- frame = RENDER_QUANTUM_SIZE *
59
- ((frame + RENDER_QUANTUM_SIZE - 1) / RENDER_QUANTUM_SIZE);
56
+ frame = RENDER_QUANTUM_SIZE * ((frame + RENDER_QUANTUM_SIZE - 1) / RENDER_QUANTUM_SIZE);
60
57
 
61
58
  if (scheduledSuspends_.find(frame) != scheduledSuspends_.end()) {
62
59
  throw std::runtime_error(
63
- "cannot schedule more than one suspend at frame " +
64
- std::to_string(frame) + " (" + std::to_string(when) + " seconds)");
60
+ "cannot schedule more than one suspend at frame " + std::to_string(frame) + " (" +
61
+ std::to_string(when) + " seconds)");
65
62
  }
66
63
 
67
64
  scheduledSuspends_.emplace(frame, callback);
@@ -70,13 +67,12 @@ void OfflineAudioContext::suspend(
70
67
  void OfflineAudioContext::renderAudio() {
71
68
  state_ = ContextState::RUNNING;
72
69
  std::thread([this]() {
73
- auto audioBus = std::make_shared<AudioBus>(
74
- RENDER_QUANTUM_SIZE, numberOfChannels_, sampleRate_);
70
+ auto audioBus = std::make_shared<AudioBus>(RENDER_QUANTUM_SIZE, numberOfChannels_, sampleRate_);
75
71
 
76
72
  while (currentSampleFrame_ < length_) {
77
73
  Locker locker(mutex_);
78
- int framesToProcess = std::min(
79
- static_cast<int>(length_ - currentSampleFrame_), RENDER_QUANTUM_SIZE);
74
+ int framesToProcess =
75
+ std::min(static_cast<int>(length_ - currentSampleFrame_), RENDER_QUANTUM_SIZE);
80
76
 
81
77
  destination_->renderAudio(audioBus, framesToProcess);
82
78
 
@@ -107,8 +103,7 @@ void OfflineAudioContext::renderAudio() {
107
103
  }).detach();
108
104
  }
109
105
 
110
- void OfflineAudioContext::startRendering(
111
- OfflineAudioContextResultCallback callback) {
106
+ void OfflineAudioContext::startRendering(OfflineAudioContextResultCallback callback) {
112
107
  Locker locker(mutex_);
113
108
 
114
109
  resultCallback_ = std::move(callback);
@@ -1,12 +1,12 @@
1
1
  #pragma once
2
2
 
3
- #include "BaseAudioContext.h"
4
3
  #include <audioapi/core/utils/worklets/SafeIncludes.h>
4
+ #include "BaseAudioContext.h"
5
5
 
6
- #include <mutex>
7
6
  #include <map>
8
- #include <unordered_map>
9
7
  #include <memory>
8
+ #include <mutex>
9
+ #include <unordered_map>
10
10
 
11
11
  namespace audioapi {
12
12
 
@@ -15,11 +15,16 @@ using OfflineAudioContextResultCallback = std::function<void(std::shared_ptr<Aud
15
15
 
16
16
  class OfflineAudioContext : public BaseAudioContext {
17
17
  public:
18
- explicit OfflineAudioContext(int numberOfChannels, size_t length, float sampleRate, const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry, const RuntimeRegistry &runtimeRegistry);
18
+ explicit OfflineAudioContext(
19
+ int numberOfChannels,
20
+ size_t length,
21
+ float sampleRate,
22
+ const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry,
23
+ const RuntimeRegistry &runtimeRegistry);
19
24
  ~OfflineAudioContext() override;
20
25
 
21
26
  void resume();
22
- void suspend(double when, const OfflineAudioContextSuspendCallback& callback);
27
+ void suspend(double when, const OfflineAudioContextSuspendCallback &callback);
23
28
 
24
29
  void startRendering(OfflineAudioContextResultCallback callback);
25
30
 
@@ -6,6 +6,10 @@
6
6
  #include <audioapi/utils/AudioArray.h>
7
7
  #include <audioapi/utils/AudioBus.h>
8
8
  #include <audioapi/utils/CircularAudioArray.h>
9
+ #include <algorithm>
10
+ #include <memory>
11
+ #include <string>
12
+ #include <vector>
9
13
 
10
14
  namespace audioapi {
11
15
  AnalyserNode::AnalyserNode(audioapi::BaseAudioContext *context)
@@ -18,8 +22,7 @@ AnalyserNode::AnalyserNode(audioapi::BaseAudioContext *context)
18
22
  inputBuffer_ = std::make_unique<CircularAudioArray>(MAX_FFT_SIZE * 2);
19
23
  tempBuffer_ = std::make_unique<AudioArray>(fftSize_);
20
24
  magnitudeBuffer_ = std::make_unique<AudioArray>(fftSize_ / 2);
21
- downMixBus_ = std::make_unique<AudioBus>(
22
- RENDER_QUANTUM_SIZE, 1, context_->getSampleRate());
25
+ downMixBus_ = std::make_unique<AudioBus>(RENDER_QUANTUM_SIZE, 1, context_->getSampleRate());
23
26
 
24
27
  fft_ = std::make_unique<dsp::FFT>(fftSize_);
25
28
  complexData_ = std::vector<std::complex<float>>(fftSize_);
@@ -100,9 +103,8 @@ void AnalyserNode::getByteFrequencyData(uint8_t *data, int length) {
100
103
  maxDecibels_ == minDecibels_ ? 1 : 1 / (maxDecibels_ - minDecibels_);
101
104
 
102
105
  for (int i = 0; i < length; i++) {
103
- auto dbMag = magnitudeBufferData[i] == 0
104
- ? minDecibels_
105
- : dsp::linearToDecibels(magnitudeBufferData[i]);
106
+ auto dbMag =
107
+ magnitudeBufferData[i] == 0 ? minDecibels_ : dsp::linearToDecibels(magnitudeBufferData[i]);
106
108
  auto scaledValue = UINT8_MAX * (dbMag - minDecibels_) * rangeScaleFactor;
107
109
 
108
110
  if (scaledValue < 0) {
@@ -124,8 +126,7 @@ void AnalyserNode::getFloatTimeDomainData(float *data, int length) {
124
126
  void AnalyserNode::getByteTimeDomainData(uint8_t *data, int length) {
125
127
  auto size = std::min(fftSize_, length);
126
128
 
127
- inputBuffer_->pop_back(
128
- tempBuffer_->getData(), fftSize_, std::max(0, fftSize_ - size), true);
129
+ inputBuffer_->pop_back(tempBuffer_->getData(), fftSize_, std::max(0, fftSize_ - size), true);
129
130
 
130
131
  for (int i = 0; i < size; i++) {
131
132
  auto value = tempBuffer_->getData()[i];
@@ -152,8 +153,7 @@ std::shared_ptr<AudioBus> AnalyserNode::processNode(
152
153
  // Down mix the input bus to mono
153
154
  downMixBus_->copy(processingBus.get());
154
155
  // Copy the down mixed bus to the input buffer (circular buffer)
155
- inputBuffer_->push_back(
156
- downMixBus_->getChannel(0)->getData(), framesToProcess, true);
156
+ inputBuffer_->push_back(downMixBus_->getChannel(0)->getData(), framesToProcess, true);
157
157
 
158
158
  shouldDoFFTAnalysis_ = true;
159
159
 
@@ -171,11 +171,7 @@ void AnalyserNode::doFFTAnalysis() {
171
171
  // the window.
172
172
  inputBuffer_->pop_back(tempBuffer_->getData(), fftSize_, 0, true);
173
173
 
174
- dsp::multiply(
175
- tempBuffer_->getData(),
176
- windowData_->getData(),
177
- tempBuffer_->getData(),
178
- fftSize_);
174
+ dsp::multiply(tempBuffer_->getData(), windowData_->getData(), tempBuffer_->getData(), fftSize_);
179
175
 
180
176
  // do fft analysis - get frequency domain data
181
177
  fft_->doFFT(tempBuffer_->getData(), complexData_);
@@ -194,9 +190,7 @@ void AnalyserNode::doFFTAnalysis() {
194
190
  }
195
191
  }
196
192
 
197
- void AnalyserNode::setWindowData(
198
- audioapi::AnalyserNode::WindowType type,
199
- int size) {
193
+ void AnalyserNode::setWindowData(audioapi::AnalyserNode::WindowType type, int size) {
200
194
  if (windowType_ == type && windowData_ && windowData_->getSize() == size) {
201
195
  return;
202
196
  }
@@ -207,12 +201,10 @@ void AnalyserNode::setWindowData(
207
201
 
208
202
  switch (windowType_) {
209
203
  case WindowType::BLACKMAN:
210
- dsp::Blackman().apply(
211
- windowData_->getData(), static_cast<int>(windowData_->getSize()));
204
+ dsp::Blackman().apply(windowData_->getData(), static_cast<int>(windowData_->getSize()));
212
205
  break;
213
206
  case WindowType::HANN:
214
- dsp::Hann().apply(
215
- windowData_->getData(), static_cast<int>(windowData_->getSize()));
207
+ dsp::Hann().apply(windowData_->getData(), static_cast<int>(windowData_->getSize()));
216
208
  break;
217
209
  }
218
210
  }
@@ -3,10 +3,11 @@
3
3
  #include <audioapi/core/AudioNode.h>
4
4
  #include <audioapi/dsp/FFT.h>
5
5
 
6
- #include <memory>
6
+ #include <algorithm>
7
+ #include <complex>
7
8
  #include <cstddef>
9
+ #include <memory>
8
10
  #include <string>
9
- #include <complex>
10
11
  #include <vector>
11
12
 
12
13
  namespace audioapi {
@@ -39,7 +40,9 @@ class AnalyserNode : public AudioNode {
39
40
  void getByteTimeDomainData(uint8_t *data, int length);
40
41
 
41
42
  protected:
42
- std::shared_ptr<AudioBus> processNode(const std::shared_ptr<AudioBus>& processingBus, int framesToProcess) override;
43
+ std::shared_ptr<AudioBus> processNode(
44
+ const std::shared_ptr<AudioBus> &processingBus,
45
+ int framesToProcess) override;
43
46
 
44
47
  private:
45
48
  int fftSize_;
@@ -57,12 +60,11 @@ class AnalyserNode : public AudioNode {
57
60
  std::unique_ptr<dsp::FFT> fft_;
58
61
  std::vector<std::complex<float>> complexData_;
59
62
  std::unique_ptr<AudioArray> magnitudeBuffer_;
60
- bool shouldDoFFTAnalysis_ { true };
63
+ bool shouldDoFFTAnalysis_{true};
61
64
 
62
65
  static WindowType fromString(const std::string &type) {
63
66
  std::string lowerType = type;
64
- std::transform(
65
- lowerType.begin(), lowerType.end(), lowerType.begin(), ::tolower);
67
+ std::transform(lowerType.begin(), lowerType.end(), lowerType.begin(), ::tolower);
66
68
  if (lowerType == "blackman") {
67
69
  return WindowType::BLACKMAN;
68
70
  }
@@ -3,6 +3,7 @@
3
3
  #include <audioapi/core/destinations/AudioDestinationNode.h>
4
4
  #include <audioapi/core/utils/AudioNodeManager.h>
5
5
  #include <audioapi/utils/AudioBus.h>
6
+ #include <memory>
6
7
 
7
8
  namespace audioapi {
8
9
 
@@ -3,9 +3,9 @@
3
3
  #include <audioapi/core/AudioNode.h>
4
4
 
5
5
  #include <algorithm>
6
+ #include <cstddef>
6
7
  #include <memory>
7
8
  #include <vector>
8
- #include <cstddef>
9
9
 
10
10
  namespace audioapi {
11
11
 
@@ -19,12 +19,14 @@ class AudioDestinationNode : public AudioNode {
19
19
  std::size_t getCurrentSampleFrame() const;
20
20
  double getCurrentTime() const;
21
21
 
22
- void renderAudio(const std::shared_ptr<AudioBus>& audioData, int numFrames);
22
+ void renderAudio(const std::shared_ptr<AudioBus> &audioData, int numFrames);
23
23
 
24
24
  protected:
25
25
  // DestinationNode is triggered by AudioContext using renderAudio
26
26
  // processNode function is not necessary and is never called.
27
- std::shared_ptr<AudioBus> processNode(const std::shared_ptr<AudioBus>& processingBus, int) final { return processingBus; };
27
+ std::shared_ptr<AudioBus> processNode(const std::shared_ptr<AudioBus> &processingBus, int) final {
28
+ return processingBus;
29
+ };
28
30
 
29
31
  private:
30
32
  std::size_t currentSampleFrame_;