react-native-audio-api 0.11.0-alpha.0 → 0.11.0-alpha.10

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 (623) 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 +353 -74
  8. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +32 -19
  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 +15 -15
  11. package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +170 -0
  12. package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +46 -0
  13. package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +46 -58
  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 +366 -304
  18. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.h +49 -91
  19. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/ptrs.hpp +56 -0
  20. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/utils.cpp +114 -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 +154 -95
  23. package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +10 -16
  24. package/android/src/main/cpp/audioapi/android/system/NativeFileInfo.hpp +2 -1
  25. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +189 -14
  26. package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioPlayer.kt +10 -8
  27. package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +10 -8
  28. package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +5 -2
  29. package/android/src/main/java/com/swmansion/audioapi/system/CentralizedForegroundService.kt +128 -0
  30. package/android/src/main/java/com/swmansion/audioapi/system/ForegroundServiceManager.kt +116 -0
  31. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +115 -107
  32. package/android/src/main/java/com/swmansion/audioapi/system/PermissionRequestListener.kt +2 -1
  33. package/android/src/main/java/com/swmansion/audioapi/system/notification/BaseNotification.kt +47 -0
  34. package/android/src/main/java/com/swmansion/audioapi/system/notification/NotificationRegistry.kt +191 -0
  35. package/android/src/main/java/com/swmansion/audioapi/system/notification/PlaybackNotification.kt +669 -0
  36. package/android/src/main/java/com/swmansion/audioapi/system/notification/PlaybackNotificationReceiver.kt +33 -0
  37. package/android/src/main/java/com/swmansion/audioapi/system/notification/RecordingNotification.kt +303 -0
  38. package/android/src/main/java/com/swmansion/audioapi/system/notification/RecordingNotificationReceiver.kt +45 -0
  39. package/android/src/main/java/com/swmansion/audioapi/system/notification/SimpleNotification.kt +119 -0
  40. package/android/src/main/jniLibs/arm64-v8a/libavcodec.so +0 -0
  41. package/android/src/main/jniLibs/arm64-v8a/libavformat.so +0 -0
  42. package/android/src/main/jniLibs/arm64-v8a/libavutil.so +0 -0
  43. package/android/src/main/jniLibs/arm64-v8a/libswresample.so +0 -0
  44. package/android/src/main/jniLibs/armeabi-v7a/libavcodec.so +0 -0
  45. package/android/src/main/jniLibs/armeabi-v7a/libavformat.so +0 -0
  46. package/android/src/main/jniLibs/armeabi-v7a/libavutil.so +0 -0
  47. package/android/src/main/jniLibs/armeabi-v7a/libswresample.so +0 -0
  48. package/android/src/main/jniLibs/x86/libavcodec.so +0 -0
  49. package/android/src/main/jniLibs/x86/libavformat.so +0 -0
  50. package/android/src/main/jniLibs/x86/libavutil.so +0 -0
  51. package/android/src/main/jniLibs/x86/libswresample.so +0 -0
  52. package/android/src/main/jniLibs/x86_64/libavcodec.so +0 -0
  53. package/android/src/main/jniLibs/x86_64/libavformat.so +0 -0
  54. package/android/src/main/jniLibs/x86_64/libavutil.so +0 -0
  55. package/android/src/main/jniLibs/x86_64/libswresample.so +0 -0
  56. package/android/src/oldarch/NativeAudioAPIModuleSpec.java +100 -76
  57. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +45 -70
  58. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +20 -22
  59. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +3 -4
  60. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +6 -8
  61. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +2 -2
  62. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +102 -63
  63. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +4 -1
  64. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +25 -31
  65. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +3 -3
  66. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +1 -2
  67. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +1 -2
  68. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +10 -18
  69. package/common/cpp/audioapi/HostObjects/destinations/AudioDestinationNodeHostObject.h +2 -3
  70. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +18 -30
  71. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +1 -2
  72. package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.cpp +50 -0
  73. package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.h +20 -0
  74. package/common/cpp/audioapi/HostObjects/effects/DelayNodeHostObject.cpp +27 -0
  75. package/common/cpp/audioapi/HostObjects/effects/DelayNodeHostObject.h +21 -0
  76. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +2 -2
  77. package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.cpp +33 -0
  78. package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.h +20 -0
  79. package/common/cpp/audioapi/HostObjects/effects/PeriodicWaveHostObject.h +1 -2
  80. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +2 -2
  81. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +1 -2
  82. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +6 -12
  83. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +7 -7
  84. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +109 -44
  85. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +8 -2
  86. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +27 -22
  87. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +12 -10
  88. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +17 -22
  89. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +5 -7
  90. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +25 -11
  91. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +8 -8
  92. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +19 -30
  93. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +2 -4
  94. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +7 -11
  95. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +2 -2
  96. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +1 -2
  97. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +6 -8
  98. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +1 -2
  99. package/common/cpp/audioapi/HostObjects/sources/RecorderAdapterNodeHostObject.h +4 -5
  100. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +6 -2
  101. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +5 -6
  102. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +1 -2
  103. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +39 -60
  104. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +15 -30
  105. package/common/cpp/audioapi/core/AudioContext.cpp +23 -28
  106. package/common/cpp/audioapi/core/AudioContext.h +6 -3
  107. package/common/cpp/audioapi/core/AudioNode.cpp +17 -19
  108. package/common/cpp/audioapi/core/AudioNode.h +19 -8
  109. package/common/cpp/audioapi/core/AudioParam.cpp +68 -100
  110. package/common/cpp/audioapi/core/AudioParam.h +20 -12
  111. package/common/cpp/audioapi/core/BaseAudioContext.cpp +52 -34
  112. package/common/cpp/audioapi/core/BaseAudioContext.h +26 -14
  113. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +12 -17
  114. package/common/cpp/audioapi/core/OfflineAudioContext.h +10 -5
  115. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +13 -21
  116. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +8 -6
  117. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.cpp +1 -0
  118. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +5 -3
  119. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +96 -74
  120. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +44 -15
  121. package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +201 -0
  122. package/common/cpp/audioapi/core/effects/ConvolverNode.h +64 -0
  123. package/common/cpp/audioapi/core/effects/DelayNode.cpp +101 -0
  124. package/common/cpp/audioapi/core/effects/DelayNode.h +39 -0
  125. package/common/cpp/audioapi/core/effects/GainNode.cpp +1 -0
  126. package/common/cpp/audioapi/core/effects/GainNode.h +3 -1
  127. package/common/cpp/audioapi/core/effects/IIRFilterNode.cpp +166 -0
  128. package/common/cpp/audioapi/core/effects/IIRFilterNode.h +74 -0
  129. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +22 -35
  130. package/common/cpp/audioapi/core/effects/PeriodicWave.h +4 -9
  131. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +4 -5
  132. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +4 -2
  133. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +11 -13
  134. package/common/cpp/audioapi/core/effects/WorkletNode.h +15 -12
  135. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +4 -4
  136. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +15 -14
  137. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +39 -108
  138. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +47 -46
  139. package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +4 -6
  140. package/common/cpp/audioapi/core/sources/AudioBuffer.h +4 -7
  141. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +48 -57
  142. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +37 -34
  143. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +55 -17
  144. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +35 -28
  145. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +41 -49
  146. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +8 -6
  147. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +29 -24
  148. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +6 -6
  149. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +3 -4
  150. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +3 -1
  151. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +12 -23
  152. package/common/cpp/audioapi/core/sources/OscillatorNode.h +6 -4
  153. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +43 -16
  154. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +22 -17
  155. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +105 -87
  156. package/common/cpp/audioapi/core/sources/StreamerNode.h +67 -33
  157. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +5 -7
  158. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +15 -13
  159. package/common/cpp/audioapi/core/types/AudioFormat.h +1 -11
  160. package/common/cpp/audioapi/core/utils/AudioDecoder.h +15 -6
  161. package/common/cpp/audioapi/core/utils/AudioFileWriter.cpp +41 -0
  162. package/common/cpp/audioapi/core/utils/AudioFileWriter.h +44 -0
  163. package/common/cpp/audioapi/core/utils/AudioNodeDestructor.cpp +5 -6
  164. package/common/cpp/audioapi/core/utils/AudioNodeDestructor.h +7 -10
  165. package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +17 -19
  166. package/common/cpp/audioapi/core/utils/AudioNodeManager.h +8 -11
  167. package/common/cpp/audioapi/core/utils/AudioParamEventQueue.cpp +3 -3
  168. package/common/cpp/audioapi/core/utils/AudioParamEventQueue.h +5 -5
  169. package/common/cpp/audioapi/core/utils/AudioRecorderCallback.cpp +101 -0
  170. package/common/cpp/audioapi/core/utils/AudioRecorderCallback.h +52 -0
  171. package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +6 -6
  172. package/common/cpp/audioapi/core/utils/Constants.h +7 -3
  173. package/common/cpp/audioapi/core/utils/ParamChangeEvent.cpp +1 -0
  174. package/common/cpp/audioapi/core/utils/ParamChangeEvent.h +9 -9
  175. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +33 -34
  176. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +17 -19
  177. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +23 -19
  178. package/common/cpp/audioapi/dsp/AudioUtils.cpp +4 -10
  179. package/common/cpp/audioapi/dsp/AudioUtils.h +1 -1
  180. package/common/cpp/audioapi/dsp/Convolver.cpp +201 -0
  181. package/common/cpp/audioapi/dsp/Convolver.h +47 -0
  182. package/common/cpp/audioapi/dsp/FFT.cpp +1 -27
  183. package/common/cpp/audioapi/dsp/FFT.h +19 -3
  184. package/common/cpp/audioapi/dsp/VectorMath.cpp +24 -58
  185. package/common/cpp/audioapi/dsp/VectorMath.h +35 -8
  186. package/common/cpp/audioapi/dsp/Windows.cpp +4 -9
  187. package/common/cpp/audioapi/dsp/Windows.h +24 -23
  188. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +12 -17
  189. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +45 -40
  190. package/common/cpp/audioapi/events/IAudioEventHandlerRegistry.h +15 -7
  191. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avcodec.h +4 -4
  192. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec.h +1 -1
  193. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_desc.h +1 -1
  194. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_id.h +3 -1
  195. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_par.h +2 -2
  196. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/defs.h +3 -0
  197. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/packet.h +1 -1
  198. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/smpte_436m.h +254 -0
  199. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version.h +1 -1
  200. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avformat.h +6 -6
  201. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version.h +2 -2
  202. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version_major.h +2 -0
  203. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avassert.h +5 -2
  204. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avutil.h +2 -2
  205. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/channel_layout.h +2 -2
  206. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/csp.h +1 -1
  207. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dict.h +1 -1
  208. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ffversion.h +1 -1
  209. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/film_grain_params.h +1 -1
  210. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/frame.h +1 -1
  211. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_vivid_metadata.h +3 -3
  212. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext.h +1 -1
  213. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_opencl.h +1 -1
  214. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_qsv.h +0 -1
  215. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vulkan.h +1 -1
  216. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/iamf.h +2 -2
  217. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lfg.h +2 -2
  218. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/log.h +2 -2
  219. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mathematics.h +1 -1
  220. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/opt.h +4 -4
  221. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rational.h +1 -1
  222. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rc4.h +1 -1
  223. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/refstruct.h +1 -1
  224. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/spherical.h +6 -0
  225. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tdrdi.h +1 -1
  226. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tx.h +1 -1
  227. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/version.h +3 -3
  228. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_hint.h +1 -1
  229. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/swresample.h +1 -1
  230. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version.h +1 -1
  231. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64/libavcodec.framework/libavcodec +0 -0
  232. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
  233. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64/libavformat.framework/libavformat +0 -0
  234. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
  235. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64/libavutil.framework/libavutil +0 -0
  236. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
  237. package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64/libswresample.framework/libswresample +0 -0
  238. package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
  239. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +4 -5
  240. package/common/cpp/audioapi/jsi/JsiHostObject.cpp +11 -13
  241. package/common/cpp/audioapi/jsi/JsiHostObject.h +26 -33
  242. package/common/cpp/audioapi/jsi/JsiPromise.cpp +34 -67
  243. package/common/cpp/audioapi/jsi/JsiPromise.h +65 -26
  244. package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.cpp +7 -10
  245. package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.h +1 -3
  246. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +4 -3
  247. package/common/cpp/audioapi/libs/ffmpeg/relinking.md +24 -0
  248. package/common/cpp/audioapi/utils/AlignedAllocator.hpp +53 -0
  249. package/common/cpp/audioapi/utils/AudioArray.cpp +3 -8
  250. package/common/cpp/audioapi/utils/AudioArray.h +3 -11
  251. package/common/cpp/audioapi/utils/AudioBus.cpp +79 -149
  252. package/common/cpp/audioapi/utils/AudioBus.h +17 -14
  253. package/common/cpp/audioapi/utils/AudioFileProperties.cpp +92 -0
  254. package/common/cpp/audioapi/utils/AudioFileProperties.h +76 -0
  255. package/common/cpp/audioapi/utils/Benchmark.hpp +50 -47
  256. package/common/cpp/audioapi/utils/CircularAudioArray.cpp +6 -18
  257. package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.cpp +6 -10
  258. package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.h +2 -2
  259. package/common/cpp/audioapi/utils/CrossThreadEventScheduler.hpp +12 -9
  260. package/common/cpp/audioapi/utils/MoveOnlyFunction.hpp +17 -15
  261. package/common/cpp/audioapi/utils/Result.hpp +323 -0
  262. package/common/cpp/audioapi/utils/RingBiDirectionalBuffer.hpp +22 -28
  263. package/common/cpp/audioapi/utils/SpscChannel.hpp +329 -305
  264. package/common/cpp/audioapi/utils/ThreadPool.hpp +104 -20
  265. package/common/cpp/audioapi/utils/UnitConversion.h +9 -0
  266. package/common/cpp/test/CMakeLists.txt +15 -15
  267. package/common/cpp/test/src/AudioParamTest.cpp +4 -3
  268. package/common/cpp/test/src/AudioScheduledSourceTest.cpp +113 -0
  269. package/common/cpp/test/src/ConstantSourceTest.cpp +5 -7
  270. package/common/cpp/test/src/DelayTest.cpp +108 -0
  271. package/common/cpp/test/src/GainTest.cpp +4 -5
  272. package/common/cpp/test/src/IIRFilterTest.cpp +153 -0
  273. package/common/cpp/test/src/MockAudioEventHandlerRegistry.h +19 -11
  274. package/common/cpp/test/src/OscillatorTest.cpp +2 -1
  275. package/common/cpp/test/src/StereoPannerTest.cpp +6 -9
  276. package/common/cpp/test/src/biquad/BiquadFilterChromium.cpp +372 -0
  277. package/common/cpp/test/src/biquad/BiquadFilterChromium.h +65 -0
  278. package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +272 -0
  279. package/common/cpp/test/src/biquad/BiquadFilterTest.h +47 -0
  280. package/ios/audioapi/ios/AudioAPIModule.h +4 -3
  281. package/ios/audioapi/ios/AudioAPIModule.mm +148 -34
  282. package/ios/audioapi/ios/core/IOSAudioPlayer.h +2 -2
  283. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +7 -6
  284. package/ios/audioapi/ios/core/IOSAudioRecorder.h +28 -11
  285. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +280 -45
  286. package/ios/audioapi/ios/core/NativeAudioPlayer.m +17 -14
  287. package/ios/audioapi/ios/core/NativeAudioRecorder.h +6 -3
  288. package/ios/audioapi/ios/core/NativeAudioRecorder.m +74 -6
  289. package/ios/audioapi/ios/core/utils/AudioDecoder.mm +22 -4
  290. package/ios/audioapi/ios/core/utils/FileOptions.h +33 -0
  291. package/ios/audioapi/ios/core/utils/FileOptions.mm +195 -0
  292. package/ios/audioapi/ios/core/utils/IOSFileWriter.h +53 -0
  293. package/ios/audioapi/ios/core/utils/IOSFileWriter.mm +239 -0
  294. package/ios/audioapi/ios/core/utils/IOSRecorderCallback.h +47 -0
  295. package/ios/audioapi/ios/core/utils/IOSRecorderCallback.mm +185 -0
  296. package/ios/audioapi/ios/system/AudioEngine.h +21 -16
  297. package/ios/audioapi/ios/system/AudioEngine.mm +153 -132
  298. package/ios/audioapi/ios/system/AudioSessionManager.h +25 -11
  299. package/ios/audioapi/ios/system/AudioSessionManager.mm +277 -203
  300. package/ios/audioapi/ios/system/NotificationManager.mm +47 -53
  301. package/ios/audioapi/ios/system/notification/BaseNotification.h +58 -0
  302. package/ios/audioapi/ios/system/notification/NotificationRegistry.h +70 -0
  303. package/ios/audioapi/ios/system/notification/NotificationRegistry.mm +172 -0
  304. package/ios/audioapi/ios/system/notification/PlaybackNotification.h +27 -0
  305. package/ios/audioapi/ios/system/notification/PlaybackNotification.mm +427 -0
  306. package/lib/commonjs/AudioAPIModule/AudioAPIModule.js +90 -0
  307. package/lib/commonjs/AudioAPIModule/AudioAPIModule.js.map +1 -0
  308. package/lib/commonjs/AudioAPIModule/globals.d.js +6 -0
  309. package/lib/commonjs/AudioAPIModule/globals.d.js.map +1 -0
  310. package/lib/commonjs/AudioAPIModule/index.js +14 -0
  311. package/lib/commonjs/AudioAPIModule/index.js.map +1 -0
  312. package/lib/commonjs/api.js +89 -12
  313. package/lib/commonjs/api.js.map +1 -1
  314. package/lib/commonjs/api.web.js +35 -14
  315. package/lib/commonjs/api.web.js.map +1 -1
  316. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +3 -0
  317. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
  318. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +5 -2
  319. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  320. package/lib/commonjs/core/AudioContext.js +5 -8
  321. package/lib/commonjs/core/AudioContext.js.map +1 -1
  322. package/lib/commonjs/core/AudioNode.js +1 -1
  323. package/lib/commonjs/core/AudioNode.js.map +1 -1
  324. package/lib/commonjs/core/AudioParam.js +18 -11
  325. package/lib/commonjs/core/AudioParam.js.map +1 -1
  326. package/lib/commonjs/core/AudioRecorder.js +56 -55
  327. package/lib/commonjs/core/AudioRecorder.js.map +1 -1
  328. package/lib/commonjs/core/BaseAudioContext.js +61 -30
  329. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  330. package/lib/commonjs/core/ConvolverNode.js +37 -0
  331. package/lib/commonjs/core/ConvolverNode.js.map +1 -0
  332. package/lib/commonjs/core/DelayNode.js +17 -0
  333. package/lib/commonjs/core/DelayNode.js.map +1 -0
  334. package/lib/commonjs/core/IIRFilterNode.js +19 -0
  335. package/lib/commonjs/core/IIRFilterNode.js.map +1 -0
  336. package/lib/commonjs/core/OfflineAudioContext.js +3 -6
  337. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  338. package/lib/commonjs/plugin/withAudioAPI.js +46 -0
  339. package/lib/commonjs/plugin/withAudioAPI.js.map +1 -1
  340. package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
  341. package/lib/commonjs/system/AudioManager.js +9 -15
  342. package/lib/commonjs/system/AudioManager.js.map +1 -1
  343. package/lib/commonjs/system/index.js +13 -0
  344. package/lib/commonjs/system/index.js.map +1 -1
  345. package/lib/commonjs/system/notification/PlaybackNotificationManager.js +138 -0
  346. package/lib/commonjs/system/notification/PlaybackNotificationManager.js.map +1 -0
  347. package/lib/commonjs/system/notification/RecordingNotificationManager.js +185 -0
  348. package/lib/commonjs/system/notification/RecordingNotificationManager.js.map +1 -0
  349. package/lib/commonjs/system/notification/SimpleNotificationManager.js +125 -0
  350. package/lib/commonjs/system/notification/SimpleNotificationManager.js.map +1 -0
  351. package/lib/commonjs/system/notification/index.js +45 -0
  352. package/lib/commonjs/system/notification/index.js.map +1 -0
  353. package/lib/commonjs/system/notification/types.js +6 -0
  354. package/lib/commonjs/system/notification/types.js.map +1 -0
  355. package/lib/commonjs/types.js +28 -35
  356. package/lib/commonjs/types.js.map +1 -1
  357. package/lib/commonjs/utils/filePresets.js +43 -0
  358. package/lib/commonjs/utils/filePresets.js.map +1 -0
  359. package/lib/commonjs/utils/index.js +12 -27
  360. package/lib/commonjs/utils/index.js.map +1 -1
  361. package/lib/commonjs/web-core/AudioContext.js +21 -1
  362. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  363. package/lib/commonjs/web-core/ConvolverNode.js +40 -0
  364. package/lib/commonjs/web-core/ConvolverNode.js.map +1 -0
  365. package/lib/commonjs/web-core/ConvolverNodeOptions.js +6 -0
  366. package/lib/commonjs/web-core/ConvolverNodeOptions.js.map +1 -0
  367. package/lib/commonjs/web-core/DelayNode.js +17 -0
  368. package/lib/commonjs/web-core/DelayNode.js.map +1 -0
  369. package/lib/commonjs/web-core/IIRFilterNode.js +19 -0
  370. package/lib/commonjs/web-core/IIRFilterNode.js.map +1 -0
  371. package/lib/commonjs/web-core/OfflineAudioContext.js +20 -0
  372. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  373. package/lib/commonjs/web-system/index.js +17 -0
  374. package/lib/commonjs/web-system/index.js.map +1 -0
  375. package/lib/commonjs/web-system/notification/PlaybackNotificationManager.js +37 -0
  376. package/lib/commonjs/web-system/notification/PlaybackNotificationManager.js.map +1 -0
  377. package/lib/commonjs/web-system/notification/RecordingNotificationManager.js +37 -0
  378. package/lib/commonjs/web-system/notification/RecordingNotificationManager.js.map +1 -0
  379. package/lib/commonjs/web-system/notification/index.js +21 -0
  380. package/lib/commonjs/web-system/notification/index.js.map +1 -0
  381. package/lib/module/AudioAPIModule/AudioAPIModule.js +87 -0
  382. package/lib/module/AudioAPIModule/AudioAPIModule.js.map +1 -0
  383. package/lib/module/AudioAPIModule/globals.d.js +4 -0
  384. package/lib/module/AudioAPIModule/globals.d.js.map +1 -0
  385. package/lib/module/AudioAPIModule/index.js +4 -0
  386. package/lib/module/AudioAPIModule/index.js.map +1 -0
  387. package/lib/module/api.js +7 -12
  388. package/lib/module/api.js.map +1 -1
  389. package/lib/module/api.web.js +4 -1
  390. package/lib/module/api.web.js.map +1 -1
  391. package/lib/module/core/AudioBufferBaseSourceNode.js +3 -0
  392. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
  393. package/lib/module/core/AudioBufferQueueSourceNode.js +5 -2
  394. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  395. package/lib/module/core/AudioContext.js +5 -8
  396. package/lib/module/core/AudioContext.js.map +1 -1
  397. package/lib/module/core/AudioNode.js +1 -1
  398. package/lib/module/core/AudioNode.js.map +1 -1
  399. package/lib/module/core/AudioParam.js +18 -11
  400. package/lib/module/core/AudioParam.js.map +1 -1
  401. package/lib/module/core/AudioRecorder.js +57 -56
  402. package/lib/module/core/AudioRecorder.js.map +1 -1
  403. package/lib/module/core/BaseAudioContext.js +63 -32
  404. package/lib/module/core/BaseAudioContext.js.map +1 -1
  405. package/lib/module/core/ConvolverNode.js +31 -0
  406. package/lib/module/core/ConvolverNode.js.map +1 -0
  407. package/lib/module/core/DelayNode.js +11 -0
  408. package/lib/module/core/DelayNode.js.map +1 -0
  409. package/lib/module/core/IIRFilterNode.js +13 -0
  410. package/lib/module/core/IIRFilterNode.js.map +1 -0
  411. package/lib/module/core/OfflineAudioContext.js +3 -6
  412. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  413. package/lib/module/plugin/withAudioAPI.js +47 -1
  414. package/lib/module/plugin/withAudioAPI.js.map +1 -1
  415. package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
  416. package/lib/module/system/AudioManager.js +9 -15
  417. package/lib/module/system/AudioManager.js.map +1 -1
  418. package/lib/module/system/index.js +1 -0
  419. package/lib/module/system/index.js.map +1 -1
  420. package/lib/module/system/notification/PlaybackNotificationManager.js +134 -0
  421. package/lib/module/system/notification/PlaybackNotificationManager.js.map +1 -0
  422. package/lib/module/system/notification/RecordingNotificationManager.js +181 -0
  423. package/lib/module/system/notification/RecordingNotificationManager.js.map +1 -0
  424. package/lib/module/system/notification/SimpleNotificationManager.js +121 -0
  425. package/lib/module/system/notification/SimpleNotificationManager.js.map +1 -0
  426. package/lib/module/system/notification/index.js +7 -0
  427. package/lib/module/system/notification/index.js.map +1 -0
  428. package/lib/module/system/notification/types.js +4 -0
  429. package/lib/module/system/notification/types.js.map +1 -0
  430. package/lib/module/types.js +27 -34
  431. package/lib/module/types.js.map +1 -1
  432. package/lib/module/utils/filePresets.js +39 -0
  433. package/lib/module/utils/filePresets.js.map +1 -0
  434. package/lib/module/utils/index.js +10 -10
  435. package/lib/module/utils/index.js.map +1 -1
  436. package/lib/module/web-core/AudioContext.js +21 -1
  437. package/lib/module/web-core/AudioContext.js.map +1 -1
  438. package/lib/module/web-core/ConvolverNode.js +34 -0
  439. package/lib/module/web-core/ConvolverNode.js.map +1 -0
  440. package/lib/module/web-core/ConvolverNodeOptions.js +4 -0
  441. package/lib/module/web-core/ConvolverNodeOptions.js.map +1 -0
  442. package/lib/module/web-core/DelayNode.js +11 -0
  443. package/lib/module/web-core/DelayNode.js.map +1 -0
  444. package/lib/module/web-core/IIRFilterNode.js +13 -0
  445. package/lib/module/web-core/IIRFilterNode.js.map +1 -0
  446. package/lib/module/web-core/OfflineAudioContext.js +20 -0
  447. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  448. package/lib/module/web-system/index.js +4 -0
  449. package/lib/module/web-system/index.js.map +1 -0
  450. package/lib/module/web-system/notification/PlaybackNotificationManager.js +33 -0
  451. package/lib/module/web-system/notification/PlaybackNotificationManager.js.map +1 -0
  452. package/lib/module/web-system/notification/RecordingNotificationManager.js +33 -0
  453. package/lib/module/web-system/notification/RecordingNotificationManager.js.map +1 -0
  454. package/lib/module/web-system/notification/index.js +5 -0
  455. package/lib/module/web-system/notification/index.js.map +1 -0
  456. package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts +36 -0
  457. package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts.map +1 -0
  458. package/lib/typescript/AudioAPIModule/index.d.ts +2 -0
  459. package/lib/typescript/AudioAPIModule/index.d.ts.map +1 -0
  460. package/lib/typescript/api.d.ts +5 -9
  461. package/lib/typescript/api.d.ts.map +1 -1
  462. package/lib/typescript/api.web.d.ts +4 -1
  463. package/lib/typescript/api.web.d.ts.map +1 -1
  464. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +1 -0
  465. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
  466. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
  467. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  468. package/lib/typescript/core/AudioContext.d.ts +1 -1
  469. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  470. package/lib/typescript/core/AudioNode.d.ts +2 -1
  471. package/lib/typescript/core/AudioNode.d.ts.map +1 -1
  472. package/lib/typescript/core/AudioParam.d.ts.map +1 -1
  473. package/lib/typescript/core/AudioRecorder.d.ts +16 -6
  474. package/lib/typescript/core/AudioRecorder.d.ts.map +1 -1
  475. package/lib/typescript/core/BaseAudioContext.d.ts +9 -3
  476. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  477. package/lib/typescript/core/ConvolverNode.d.ts +12 -0
  478. package/lib/typescript/core/ConvolverNode.d.ts.map +1 -0
  479. package/lib/typescript/core/DelayNode.d.ts +9 -0
  480. package/lib/typescript/core/DelayNode.d.ts.map +1 -0
  481. package/lib/typescript/core/IIRFilterNode.d.ts +5 -0
  482. package/lib/typescript/core/IIRFilterNode.d.ts.map +1 -0
  483. package/lib/typescript/core/OfflineAudioContext.d.ts +1 -1
  484. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  485. package/lib/typescript/events/types.d.ts +6 -2
  486. package/lib/typescript/events/types.d.ts.map +1 -1
  487. package/lib/typescript/interfaces.d.ts +36 -34
  488. package/lib/typescript/interfaces.d.ts.map +1 -1
  489. package/lib/typescript/plugin/withAudioAPI.d.ts +1 -0
  490. package/lib/typescript/plugin/withAudioAPI.d.ts.map +1 -1
  491. package/lib/typescript/specs/NativeAudioAPIModule.d.ts +18 -6
  492. package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
  493. package/lib/typescript/system/AudioManager.d.ts +5 -5
  494. package/lib/typescript/system/AudioManager.d.ts.map +1 -1
  495. package/lib/typescript/system/index.d.ts +1 -0
  496. package/lib/typescript/system/index.d.ts.map +1 -1
  497. package/lib/typescript/system/notification/PlaybackNotificationManager.d.ts +23 -0
  498. package/lib/typescript/system/notification/PlaybackNotificationManager.d.ts.map +1 -0
  499. package/lib/typescript/system/notification/RecordingNotificationManager.d.ts +24 -0
  500. package/lib/typescript/system/notification/RecordingNotificationManager.d.ts.map +1 -0
  501. package/lib/typescript/system/notification/SimpleNotificationManager.d.ts +21 -0
  502. package/lib/typescript/system/notification/SimpleNotificationManager.d.ts.map +1 -0
  503. package/lib/typescript/system/notification/index.d.ts +5 -0
  504. package/lib/typescript/system/notification/index.d.ts.map +1 -0
  505. package/lib/typescript/system/notification/types.d.ts +65 -0
  506. package/lib/typescript/system/notification/types.d.ts.map +1 -0
  507. package/lib/typescript/system/types.d.ts +0 -16
  508. package/lib/typescript/system/types.d.ts.map +1 -1
  509. package/lib/typescript/types.d.ts +58 -45
  510. package/lib/typescript/types.d.ts.map +1 -1
  511. package/lib/typescript/utils/filePresets.d.ts +9 -0
  512. package/lib/typescript/utils/filePresets.d.ts.map +1 -0
  513. package/lib/typescript/utils/index.d.ts +1 -8
  514. package/lib/typescript/utils/index.d.ts.map +1 -1
  515. package/lib/typescript/web-core/AudioContext.d.ts +9 -2
  516. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  517. package/lib/typescript/web-core/BaseAudioContext.d.ts +7 -1
  518. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  519. package/lib/typescript/web-core/ConvolverNode.d.ts +11 -0
  520. package/lib/typescript/web-core/ConvolverNode.d.ts.map +1 -0
  521. package/lib/typescript/web-core/ConvolverNodeOptions.d.ts +6 -0
  522. package/lib/typescript/web-core/ConvolverNodeOptions.d.ts.map +1 -0
  523. package/lib/typescript/web-core/DelayNode.d.ts +8 -0
  524. package/lib/typescript/web-core/DelayNode.d.ts.map +1 -0
  525. package/lib/typescript/web-core/IIRFilterNode.d.ts +5 -0
  526. package/lib/typescript/web-core/IIRFilterNode.d.ts.map +1 -0
  527. package/lib/typescript/web-core/OfflineAudioContext.d.ts +8 -1
  528. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  529. package/lib/typescript/web-system/index.d.ts +2 -0
  530. package/lib/typescript/web-system/index.d.ts.map +1 -0
  531. package/lib/typescript/web-system/notification/PlaybackNotificationManager.d.ts +20 -0
  532. package/lib/typescript/web-system/notification/PlaybackNotificationManager.d.ts.map +1 -0
  533. package/lib/typescript/web-system/notification/RecordingNotificationManager.d.ts +20 -0
  534. package/lib/typescript/web-system/notification/RecordingNotificationManager.d.ts.map +1 -0
  535. package/lib/typescript/web-system/notification/index.d.ts +3 -0
  536. package/lib/typescript/web-system/notification/index.d.ts.map +1 -0
  537. package/package.json +11 -5
  538. package/scripts/download-prebuilt-binaries.sh +61 -0
  539. package/scripts/rnaa_utils.rb +8 -0
  540. package/scripts/validate-worklets-version.js +27 -0
  541. package/src/AudioAPIModule/AudioAPIModule.ts +122 -0
  542. package/src/AudioAPIModule/globals.d.ts +33 -0
  543. package/src/AudioAPIModule/index.ts +1 -0
  544. package/src/api.ts +21 -52
  545. package/src/api.web.ts +8 -2
  546. package/src/core/AudioBufferBaseSourceNode.ts +8 -0
  547. package/src/core/AudioBufferQueueSourceNode.ts +8 -2
  548. package/src/core/AudioContext.ts +5 -8
  549. package/src/core/AudioNode.ts +4 -3
  550. package/src/core/AudioParam.ts +18 -11
  551. package/src/core/AudioRecorder.ts +86 -84
  552. package/src/core/BaseAudioContext.ts +120 -54
  553. package/src/core/ConvolverNode.ts +35 -0
  554. package/src/core/DelayNode.ts +13 -0
  555. package/src/core/IIRFilterNode.ts +25 -0
  556. package/src/core/OfflineAudioContext.ts +4 -7
  557. package/src/events/types.ts +7 -3
  558. package/src/interfaces.ts +55 -34
  559. package/src/plugin/withAudioAPI.ts +61 -0
  560. package/src/specs/NativeAudioAPIModule.ts +26 -9
  561. package/src/system/AudioManager.ts +13 -32
  562. package/src/system/index.ts +1 -0
  563. package/src/system/notification/PlaybackNotificationManager.ts +197 -0
  564. package/src/system/notification/RecordingNotificationManager.ts +247 -0
  565. package/src/system/notification/SimpleNotificationManager.ts +175 -0
  566. package/src/system/notification/index.ts +4 -0
  567. package/src/system/notification/types.ts +111 -0
  568. package/src/system/types.ts +0 -18
  569. package/src/types.ts +61 -46
  570. package/src/utils/filePresets.ts +47 -0
  571. package/src/utils/index.ts +13 -19
  572. package/src/web-core/AudioContext.tsx +40 -1
  573. package/src/web-core/BaseAudioContext.tsx +11 -1
  574. package/src/web-core/ConvolverNode.tsx +43 -0
  575. package/src/web-core/ConvolverNodeOptions.tsx +6 -0
  576. package/src/web-core/DelayNode.tsx +12 -0
  577. package/src/web-core/IIRFilterNode.tsx +25 -0
  578. package/src/web-core/OfflineAudioContext.tsx +39 -0
  579. package/src/web-system/index.ts +1 -0
  580. package/src/web-system/notification/PlaybackNotificationManager.ts +64 -0
  581. package/src/web-system/notification/RecordingNotificationManager.ts +64 -0
  582. package/src/web-system/notification/index.ts +2 -0
  583. package/android/src/main/cpp/audioapi/android/core/utils/FileUtils.h +0 -34
  584. package/android/src/main/cpp/audioapi/android/core/utils/FileUtilts.cpp +0 -133
  585. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegAudioFileOptions.cpp +0 -154
  586. package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegAudioFileOptions.h +0 -41
  587. package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.cpp +0 -47
  588. package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.h +0 -28
  589. package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +0 -325
  590. package/android/src/main/java/com/swmansion/audioapi/system/MediaNotificationManager.kt +0 -262
  591. package/android/src/main/java/com/swmansion/audioapi/system/MediaReceiver.kt +0 -57
  592. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionCallback.kt +0 -61
  593. package/common/cpp/audioapi/libs/ffmpeg/INSTRUCTIONS.md +0 -32
  594. package/common/cpp/audioapi/libs/ffmpeg/create_xcframework.sh +0 -111
  595. package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +0 -391
  596. package/ios/audioapi/ios/core/IOSAudioFileOptions.h +0 -35
  597. package/ios/audioapi/ios/core/IOSAudioFileOptions.mm +0 -135
  598. package/ios/audioapi/ios/core/IOSAudioFileWriter.h +0 -38
  599. package/ios/audioapi/ios/core/IOSAudioFileWriter.mm +0 -187
  600. package/ios/audioapi/ios/system/LockScreenManager.h +0 -24
  601. package/ios/audioapi/ios/system/LockScreenManager.mm +0 -310
  602. package/lib/commonjs/utils/bitEnums.js +0 -33
  603. package/lib/commonjs/utils/bitEnums.js.map +0 -1
  604. package/lib/module/utils/bitEnums.js +0 -27
  605. package/lib/module/utils/bitEnums.js.map +0 -1
  606. package/lib/typescript/utils/bitEnums.d.ts +0 -4
  607. package/lib/typescript/utils/bitEnums.d.ts.map +0 -1
  608. package/metro-config/index.d.ts +0 -5
  609. package/metro-config/index.js +0 -41
  610. package/metro-config/tsconfig.json +0 -3
  611. package/src/utils/bitEnums.ts +0 -51
  612. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/Info.plist +5 -5
  613. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64/libavcodec.framework/Info.plist +0 -0
  614. package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64_x86_64-simulator/libavcodec.framework/Info.plist +0 -0
  615. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/Info.plist +0 -0
  616. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64/libavformat.framework/Info.plist +0 -0
  617. package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64_x86_64-simulator/libavformat.framework/Info.plist +0 -0
  618. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/Info.plist +5 -5
  619. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64/libavutil.framework/Info.plist +0 -0
  620. package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64_x86_64-simulator/libavutil.framework/Info.plist +0 -0
  621. package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/Info.plist +5 -5
  622. /package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64/libswresample.framework/Info.plist +0 -0
  623. /package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64_x86_64-simulator/libswresample.framework/Info.plist +0 -0
@@ -161,7 +161,7 @@ int av_refstruct_exclusive(const void *obj);
161
161
  *
162
162
  * Frequently allocating and freeing large or complicated objects may be slow
163
163
  * and wasteful. This API is meant to solve this in cases when the caller
164
- * needs a set of interchangable objects.
164
+ * needs a set of interchangeable objects.
165
165
  *
166
166
  * At the beginning, the user must call allocate the pool via
167
167
  * av_refstruct_pool_alloc() or its analogue av_refstruct_pool_alloc_ext().
@@ -82,6 +82,12 @@ enum AVSphericalProjection {
82
82
  * See: https://developer.apple.com/documentation/coremedia/cmprojectiontype/fisheye
83
83
  */
84
84
  AV_SPHERICAL_FISHEYE,
85
+
86
+ /**
87
+ * Parametric Immersive projection (Apple).
88
+ * See: https://developer.apple.com/documentation/coremedia/cmprojectiontype/parametricimmersive
89
+ */
90
+ AV_SPHERICAL_PARAMETRIC_IMMERSIVE,
85
91
  };
86
92
 
87
93
  /**
@@ -119,7 +119,7 @@ typedef struct AV3DReferenceDisplay {
119
119
  uint8_t mantissa_ref_display_width;
120
120
 
121
121
  /**
122
- * Tthe exponent part of the reference viewing distance of the n-th reference display.
122
+ * The exponent part of the reference viewing distance of the n-th reference display.
123
123
  */
124
124
  uint8_t exponent_ref_viewing_distance;
125
125
 
@@ -50,7 +50,7 @@ enum AVTXType {
50
50
 
51
51
  /**
52
52
  * Standard MDCT with a sample data type of float, double or int32_t,
53
- * respecively. For the float and int32 variants, the scale type is
53
+ * respectively. For the float and int32 variants, the scale type is
54
54
  * 'float', while for the double variant, it's 'double'.
55
55
  * If scale is NULL, 1.0 will be used as a default.
56
56
  *
@@ -35,7 +35,7 @@
35
35
  * Useful to check and match library version in order to maintain
36
36
  * backward compatibility.
37
37
  *
38
- * The FFmpeg libraries follow a versioning sheme very similar to
38
+ * The FFmpeg libraries follow a versioning scheme very similar to
39
39
  * Semantic Versioning (http://semver.org/)
40
40
  * The difference is that the component called PATCH is called MICRO in FFmpeg
41
41
  * and its value is reset to 100 instead of 0 to keep it above or equal to 100.
@@ -72,14 +72,14 @@
72
72
  /**
73
73
  * @defgroup lavu_ver Version and Build diagnostics
74
74
  *
75
- * Macros and function useful to check at compiletime and at runtime
75
+ * Macros and function useful to check at compile time and at runtime
76
76
  * which version of libavutil is in use.
77
77
  *
78
78
  * @{
79
79
  */
80
80
 
81
81
  #define LIBAVUTIL_VERSION_MAJOR 60
82
- #define LIBAVUTIL_VERSION_MINOR 6
82
+ #define LIBAVUTIL_VERSION_MINOR 8
83
83
  #define LIBAVUTIL_VERSION_MICRO 100
84
84
 
85
85
  #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
@@ -80,7 +80,7 @@ av_video_hint_get_rect(const AVVideoHint *hints, size_t idx) {
80
80
  * The side data contains a list of rectangles for the portions of the frame
81
81
  * which changed from the last encoded one (and the remainder are assumed to be
82
82
  * changed), or, alternately (depending on the type parameter) the unchanged
83
- * ones (and the remanining ones are those which changed).
83
+ * ones (and the remaining ones are those which changed).
84
84
  * Macroblocks will thus be hinted either to be P_SKIP-ped or go through the
85
85
  * regular encoding procedure.
86
86
  *
@@ -337,7 +337,7 @@ int64_t swr_next_pts(struct SwrContext *s, int64_t pts);
337
337
  * @}
338
338
  *
339
339
  * @name Low-level option setting functions
340
- * These functons provide a means to set low-level options that is not possible
340
+ * These functions provide a means to set low-level options that is not possible
341
341
  * with the AVOption API.
342
342
  * @{
343
343
  */
@@ -30,7 +30,7 @@
30
30
 
31
31
  #include "version_major.h"
32
32
 
33
- #define LIBSWRESAMPLE_VERSION_MINOR 0
33
+ #define LIBSWRESAMPLE_VERSION_MINOR 1
34
34
  #define LIBSWRESAMPLE_VERSION_MICRO 100
35
35
 
36
36
  #define LIBSWRESAMPLE_VERSION_INT AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include <jsi/jsi.h>
4
3
  #include <audioapi/utils/AudioArray.h>
4
+ #include <jsi/jsi.h>
5
5
 
6
6
  #include <memory>
7
7
  #include <utility>
@@ -12,11 +12,11 @@ using namespace facebook;
12
12
 
13
13
  class AudioArrayBuffer : public jsi::MutableBuffer {
14
14
  public:
15
- explicit AudioArrayBuffer(const std::shared_ptr<AudioArray> &audioArray): audioArray_(audioArray) {}
15
+ explicit AudioArrayBuffer(const std::shared_ptr<AudioArray> &audioArray)
16
+ : audioArray_(audioArray) {}
16
17
  ~AudioArrayBuffer() override = default;
17
18
 
18
- AudioArrayBuffer(AudioArrayBuffer &&other) noexcept
19
- : audioArray_(std::move(other.audioArray_)) {
19
+ AudioArrayBuffer(AudioArrayBuffer &&other) noexcept : audioArray_(std::move(other.audioArray_)) {
20
20
  other.audioArray_ = nullptr;
21
21
  }
22
22
 
@@ -32,4 +32,3 @@ class AudioArrayBuffer : public jsi::MutableBuffer {
32
32
  };
33
33
 
34
34
  } // namespace audioapi
35
-
@@ -1,4 +1,9 @@
1
1
  #include <audioapi/jsi/JsiHostObject.h>
2
+ #include <memory>
3
+ #include <string>
4
+ #include <unordered_map>
5
+ #include <utility>
6
+ #include <vector>
2
7
 
3
8
  // set this value to 1 in order to debug the construction/destruction
4
9
  #define JSI_DEBUG_ALLOCATIONS 0
@@ -11,9 +16,8 @@ std::vector<JsiHostObject *> objects;
11
16
  #endif
12
17
 
13
18
  JsiHostObject::JsiHostObject() {
14
- getters_ = std::make_unique<std::unordered_map<
15
- std::string,
16
- jsi::Value (JsiHostObject::*)(jsi::Runtime &)>>();
19
+ getters_ = std::make_unique<
20
+ std::unordered_map<std::string, jsi::Value (JsiHostObject::*)(jsi::Runtime &)>>();
17
21
  functions_ = std::make_unique<std::unordered_map<
18
22
  std::string,
19
23
  jsi::Value (JsiHostObject::*)(
@@ -70,8 +74,7 @@ JsiHostObject::~JsiHostObject() {
70
74
 
71
75
  std::vector<jsi::PropNameID> JsiHostObject::getPropertyNames(jsi::Runtime &rt) {
72
76
  std::vector<jsi::PropNameID> propertyNames;
73
- propertyNames.reserve(
74
- getters_->size() + functions_->size() + setters_->size());
77
+ propertyNames.reserve(getters_->size() + functions_->size() + setters_->size());
75
78
 
76
79
  for (const auto &it : *getters_) {
77
80
  propertyNames.push_back(jsi::PropNameID::forUtf8(rt, it.first));
@@ -88,9 +91,7 @@ std::vector<jsi::PropNameID> JsiHostObject::getPropertyNames(jsi::Runtime &rt) {
88
91
  return propertyNames;
89
92
  }
90
93
 
91
- jsi::Value JsiHostObject::get(
92
- jsi::Runtime &runtime,
93
- const jsi::PropNameID &name) {
94
+ jsi::Value JsiHostObject::get(jsi::Runtime &runtime, const jsi::PropNameID &name) {
94
95
  auto nameAsString = name.utf8(runtime);
95
96
  auto &hostFunctionCache = hostFunctionCache_.get(runtime);
96
97
 
@@ -117,9 +118,7 @@ jsi::Value JsiHostObject::get(
117
118
  std::placeholders::_4);
118
119
 
119
120
  return hostFunctionCache
120
- .emplace(
121
- nameAsString,
122
- jsi::Function::createFromHostFunction(runtime, name, 0, dispatcher))
121
+ .emplace(nameAsString, jsi::Function::createFromHostFunction(runtime, name, 0, dispatcher))
123
122
  .first->second.asFunction(runtime);
124
123
  }
125
124
 
@@ -135,8 +134,7 @@ void JsiHostObject::set(
135
134
  auto setter = setters_->find(nameAsString);
136
135
 
137
136
  if (setter != setters_->end()) {
138
- auto dispatcher = std::bind(
139
- setter->second, this, std::placeholders::_1, std::placeholders::_2);
137
+ auto dispatcher = std::bind(setter->second, this, std::placeholders::_1, std::placeholders::_2);
140
138
 
141
139
  return dispatcher(runtime, value);
142
140
  }
@@ -10,30 +10,32 @@
10
10
  #include <utility>
11
11
  #include <vector>
12
12
 
13
- #define JSI_HOST_FUNCTION_DECL(name) jsi::Value name(jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
14
- #define JSI_HOST_FUNCTION_IMPL(CLASS, name) jsi::Value CLASS::name(jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
15
- #define JSI_EXPORT_FUNCTION(CLASS, FUNCTION) \
16
- std::make_pair( \
17
- std::string(#FUNCTION), \
18
- static_cast<jsi::Value (JsiHostObject::*)( \
19
- jsi::Runtime &, const jsi::Value &, const jsi::Value *, size_t)>( \
20
- &CLASS::FUNCTION))
13
+ #define JSI_HOST_FUNCTION_DECL(name) \
14
+ jsi::Value name( \
15
+ jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
16
+ #define JSI_HOST_FUNCTION_IMPL(CLASS, name) \
17
+ jsi::Value CLASS::name( \
18
+ jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
19
+ #define JSI_EXPORT_FUNCTION(CLASS, FUNCTION) \
20
+ std::make_pair( \
21
+ std::string(#FUNCTION), \
22
+ static_cast<jsi::Value (JsiHostObject::*)( \
23
+ jsi::Runtime &, const jsi::Value &, const jsi::Value *, size_t)>(&CLASS::FUNCTION))
21
24
 
22
25
  #define JSI_PROPERTY_GETTER_DECL(name) jsi::Value name(jsi::Runtime &runtime)
23
26
  #define JSI_PROPERTY_GETTER_IMPL(CLASS, name) jsi::Value CLASS::name(jsi::Runtime &runtime)
24
- #define JSI_EXPORT_PROPERTY_GETTER(CLASS, FUNCTION) \
25
- std::make_pair( \
26
- std::string(#FUNCTION), \
27
- static_cast<jsi::Value (JsiHostObject::*)(jsi::Runtime &)>( \
28
- &CLASS::FUNCTION))
27
+ #define JSI_EXPORT_PROPERTY_GETTER(CLASS, FUNCTION) \
28
+ std::make_pair( \
29
+ std::string(#FUNCTION), \
30
+ static_cast<jsi::Value (JsiHostObject::*)(jsi::Runtime &)>(&CLASS::FUNCTION))
29
31
 
30
32
  #define JSI_PROPERTY_SETTER_DECL(name) void name(jsi::Runtime &runtime, const jsi::Value &value)
31
- #define JSI_PROPERTY_SETTER_IMPL(CLASS, name) void CLASS::name(jsi::Runtime &runtime, const jsi::Value &value)
33
+ #define JSI_PROPERTY_SETTER_IMPL(CLASS, name) \
34
+ void CLASS::name(jsi::Runtime &runtime, const jsi::Value &value)
32
35
  #define JSI_EXPORT_PROPERTY_SETTER(CLASS, FUNCTION) \
33
- std::make_pair( \
34
- std::string(#FUNCTION), \
35
- static_cast<void (JsiHostObject::*)( \
36
- jsi::Runtime &, const jsi::Value &)>(&CLASS::FUNCTION))
36
+ std::make_pair( \
37
+ std::string(#FUNCTION), \
38
+ static_cast<void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>(&CLASS::FUNCTION))
37
39
 
38
40
  namespace audioapi {
39
41
 
@@ -52,10 +54,7 @@ class JsiHostObject : public jsi::HostObject {
52
54
 
53
55
  jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
54
56
 
55
- void set(
56
- jsi::Runtime &runtime,
57
- const jsi::PropNameID &name,
58
- const jsi::Value &value) override;
57
+ void set(jsi::Runtime &runtime, const jsi::PropNameID &name, const jsi::Value &value) override;
59
58
 
60
59
  template <typename... Args>
61
60
  void addGetters(Args... args) {
@@ -73,23 +72,17 @@ class JsiHostObject : public jsi::HostObject {
73
72
  }
74
73
 
75
74
  protected:
76
- std::unique_ptr<std::unordered_map<
77
- std::string,
78
- jsi::Value (JsiHostObject::*)(jsi::Runtime &)>>
75
+ std::unique_ptr<std::unordered_map<std::string, jsi::Value (JsiHostObject::*)(jsi::Runtime &)>>
79
76
  getters_;
80
77
 
81
78
  std::unique_ptr<std::unordered_map<
82
79
  std::string,
83
- jsi::Value (JsiHostObject::*)(
84
- jsi::Runtime &,
85
- const jsi::Value &,
86
- const jsi::Value *,
87
- size_t)>>
80
+ jsi::Value (
81
+ JsiHostObject::*)(jsi::Runtime &, const jsi::Value &, const jsi::Value *, size_t)>>
88
82
  functions_;
89
83
 
90
- std::unique_ptr<std::unordered_map<
91
- std::string,
92
- void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>>
84
+ std::unique_ptr<
85
+ std::unordered_map<std::string, void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>>
93
86
  setters_;
94
87
 
95
88
  private:
@@ -1,68 +1,14 @@
1
1
  #include <audioapi/jsi/JsiPromise.h>
2
+ #include <memory>
2
3
  #include <stdexcept>
4
+ #include <string>
5
+ #include <utility>
3
6
 
4
7
  namespace audioapi {
5
8
 
6
9
  using namespace facebook;
7
10
 
8
- jsi::Value PromiseVendor::createPromise(
9
- const std::function<void(std::shared_ptr<Promise>)> &function) {
10
- if (runtime_ == nullptr) {
11
- throw std::runtime_error("Runtime was null!");
12
- }
13
-
14
- auto &runtime = *runtime_;
15
- auto callInvoker = callInvoker_;
16
-
17
- // get Promise constructor
18
- auto promiseCtor = runtime.global().getPropertyAsFunction(runtime, "Promise");
19
-
20
- // create a "run" function (first Promise arg)
21
- auto runPromise = jsi::Function::createFromHostFunction(
22
- runtime,
23
- jsi::PropNameID::forUtf8(runtime, "runPromise"),
24
- 2,
25
- [callInvoker, function](
26
- jsi::Runtime &runtime,
27
- const jsi::Value &thisValue,
28
- const jsi::Value *arguments,
29
- size_t count) -> jsi::Value {
30
- auto resolveLocal = arguments[0].asObject(runtime).asFunction(runtime);
31
- auto resolve = std::make_shared<jsi::Function>(std::move(resolveLocal));
32
- auto rejectLocal = arguments[1].asObject(runtime).asFunction(runtime);
33
- auto reject = std::make_shared<jsi::Function>(std::move(rejectLocal));
34
-
35
- auto resolveWrapper =
36
- [resolve, &runtime, callInvoker](
37
- const std::function<jsi::Value(jsi::Runtime &)> &resolver)
38
- -> void {
39
- callInvoker->invokeAsync([resolve, &runtime, resolver]() -> void {
40
- auto valueShared = std::make_shared<jsi::Value>(resolver(runtime));
41
-
42
- resolve->call(runtime, *valueShared);
43
- });
44
- };
45
-
46
- auto rejectWrapper = [reject, &runtime, callInvoker](
47
- const std::string &errorMessage) -> void {
48
- callInvoker->invokeAsync([reject, &runtime, errorMessage]() -> void {
49
- auto error = jsi::JSError(runtime, errorMessage);
50
- reject->call(runtime, error.value());
51
- });
52
- };
53
-
54
- auto promise = std::make_shared<Promise>(resolveWrapper, rejectWrapper);
55
- function(promise);
56
-
57
- return jsi::Value::undefined();
58
- });
59
-
60
- // return new Promise((resolve, reject) => ...)
61
- return promiseCtor.callAsConstructor(runtime, runPromise);
62
- }
63
-
64
- jsi::Value PromiseVendor::createAsyncPromise(
65
- std::function<PromiseResolver()> &&function) {
11
+ jsi::Value PromiseVendor::createAsyncPromise(std::function<PromiseResolver()> &&function) {
66
12
  auto &runtime = *runtime_;
67
13
  auto callInvoker = callInvoker_;
68
14
  auto threadPool = threadPool_;
@@ -88,10 +34,33 @@ jsi::Value PromiseVendor::createAsyncPromise(
88
34
  return jsi::Value::undefined();
89
35
  };
90
36
  auto promiseFunction = jsi::Function::createFromHostFunction(
91
- runtime,
92
- jsi::PropNameID::forUtf8(runtime, "asyncPromise"),
93
- 2,
94
- std::move(promiseLambda));
37
+ runtime, jsi::PropNameID::forUtf8(runtime, "asyncPromise"), 2, std::move(promiseLambda));
38
+ return promiseCtor.callAsConstructor(runtime, std::move(promiseFunction));
39
+ }
40
+
41
+ jsi::Value PromiseVendor::createAsyncPromise(std::function<void(Promise &&)> &&function) {
42
+ auto &runtime = *runtime_;
43
+ auto callInvoker = callInvoker_;
44
+ auto threadPool = threadPool_;
45
+ auto promiseCtor = runtime.global().getPropertyAsFunction(runtime, "Promise");
46
+ auto promiseLambda = [threadPool = std::move(threadPool),
47
+ callInvoker = std::move(callInvoker),
48
+ function = std::move(function)](
49
+ jsi::Runtime &runtime,
50
+ const jsi::Value &thisValue,
51
+ const jsi::Value *arguments,
52
+ size_t count) mutable -> jsi::Value {
53
+ auto resolveLocal = arguments[0].asObject(runtime).asFunction(runtime);
54
+ auto rejectLocal = arguments[1].asObject(runtime).asFunction(runtime);
55
+
56
+ Promise promise(std::move(callInvoker), std::move(resolveLocal), std::move(rejectLocal));
57
+
58
+ threadPool->schedule(std::move(function), std::move(promise));
59
+
60
+ return jsi::Value::undefined();
61
+ };
62
+ auto promiseFunction = jsi::Function::createFromHostFunction(
63
+ runtime, jsi::PropNameID::forUtf8(runtime, "asyncPromise"), 2, std::move(promiseLambda));
95
64
  return promiseCtor.callAsConstructor(runtime, std::move(promiseFunction));
96
65
  }
97
66
 
@@ -102,13 +71,11 @@ void PromiseVendor::asyncPromiseJob(
102
71
  std::shared_ptr<jsi::Function> &&reject) {
103
72
  auto resolver = function();
104
73
  callInvoker->invokeAsync(
105
- [resolver = std::move(resolver),
106
- reject = std::move(reject),
107
- resolve = std::move(resolve)](jsi::Runtime &runtime) -> void {
74
+ [resolver = std::move(resolver), reject = std::move(reject), resolve = std::move(resolve)](
75
+ jsi::Runtime &runtime) -> void {
108
76
  auto result = resolver(runtime);
109
77
  if (std::holds_alternative<jsi::Value>(result)) {
110
- auto valueShared = std::make_shared<jsi::Value>(
111
- std::move(std::get<jsi::Value>(result)));
78
+ auto valueShared = std::make_shared<jsi::Value>(std::move(std::get<jsi::Value>(result)));
112
79
  resolve->call(runtime, *valueShared);
113
80
  } else {
114
81
  auto errorMessage = std::get<std::string>(result);
@@ -1,49 +1,82 @@
1
1
  #pragma once
2
2
 
3
-
4
- #include <audioapi/core/utils/Constants.h>
5
3
  #include <ReactCommon/CallInvoker.h>
4
+ #include <audioapi/core/utils/Constants.h>
5
+ #include <audioapi/utils/ThreadPool.hpp>
6
6
  #include <jsi/jsi.h>
7
- #include <variant>
8
- #include <thread>
7
+ #include <functional>
9
8
  #include <memory>
10
9
  #include <string>
10
+ #include <thread>
11
11
  #include <utility>
12
- #include <functional>
13
- #include <audioapi/utils/ThreadPool.hpp>
12
+ #include <variant>
14
13
 
15
14
  namespace audioapi {
16
15
 
17
16
  using namespace facebook;
18
17
 
19
18
  class Promise {
19
+ struct Inner {
20
+ std::shared_ptr<react::CallInvoker> callInvoker;
21
+ jsi::Function resolve;
22
+ jsi::Function reject;
23
+ };
24
+
20
25
  public:
21
- Promise(std::function<void(const std::function<jsi::Value(jsi::Runtime&)>)> resolve, std::function<void(const std::string &)> reject) : resolve_(std::move(resolve)), reject_(std::move(reject)) {}
26
+ explicit Promise(
27
+ std::shared_ptr<react::CallInvoker> &&callInvoker,
28
+ jsi::Function &&resolve,
29
+ jsi::Function &&reject)
30
+ : inner_(
31
+ std::make_shared<Inner>(
32
+ Inner{std::move(callInvoker), std::move(resolve), std::move(reject)})) {}
33
+
34
+ Promise(const Promise &other) {
35
+ inner_ = other.inner_;
36
+ }
37
+ Promise(Promise &&other) noexcept : inner_(std::move(other.inner_)) {}
38
+ Promise &operator=(Promise &&other) noexcept {
39
+ if (this != &other) {
40
+ inner_ = std::move(other.inner_);
41
+ }
42
+ return *this;
43
+ }
22
44
 
23
- void resolve(const std::function<jsi::Value(jsi::Runtime&)> &resolver) {
24
- resolve_(std::forward<const std::function<jsi::Value(jsi::Runtime&)>>(resolver));
45
+ void resolve(const std::function<jsi::Value(jsi::Runtime &)> &&resolver) const {
46
+ auto inner = inner_;
47
+ inner->callInvoker->invokeAsync(
48
+ [inner = std::move(inner),
49
+ resolver = std::forward<decltype(resolver)>(resolver)](jsi::Runtime &runtime) -> void {
50
+ auto valueShared = std::make_shared<jsi::Value>(resolver(runtime));
51
+ inner->resolve.call(runtime, *valueShared);
52
+ });
25
53
  }
26
54
 
27
- void reject(const std::string &errorMessage) {
28
- reject_(errorMessage);
55
+ void reject(const std::string &errorMessage) const {
56
+ auto inner = inner_;
57
+ inner->callInvoker->invokeAsync(
58
+ [inner = std::move(inner), errorMessage](jsi::Runtime &runtime) -> void {
59
+ auto error = jsi::JSError(runtime, errorMessage);
60
+ inner->reject.call(runtime, error.value());
61
+ });
29
62
  }
30
63
 
31
64
  private:
32
- std::function<void(const std::function<jsi::Value(jsi::Runtime&)>)> resolve_;
33
- std::function<void(const std::string &)> reject_;
65
+ std::shared_ptr<Inner> inner_;
34
66
  };
35
67
 
36
- using PromiseResolver = std::function<std::variant<jsi::Value, std::string>(jsi::Runtime&)>;
68
+ using PromiseResolver = std::function<std::variant<jsi::Value, std::string>(jsi::Runtime &)>;
37
69
 
38
70
  class PromiseVendor {
39
71
  public:
40
- PromiseVendor(jsi::Runtime *runtime, const std::shared_ptr<react::CallInvoker> &callInvoker):
41
- runtime_(runtime), callInvoker_(callInvoker), threadPool_(std::make_shared<ThreadPool>(
42
- audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_COUNT,
43
- audioapi::PROMISE_VENDOR_THREAD_POOL_LOAD_BALANCER_QUEUE_SIZE,
44
- audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_QUEUE_SIZE)) {}
45
-
46
- jsi::Value createPromise(const std::function<void(std::shared_ptr<Promise>)> &function);
72
+ PromiseVendor(jsi::Runtime *runtime, const std::shared_ptr<react::CallInvoker> &callInvoker)
73
+ : runtime_(runtime),
74
+ callInvoker_(callInvoker),
75
+ threadPool_(
76
+ std::make_shared<ThreadPool>(
77
+ audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_COUNT,
78
+ audioapi::PROMISE_VENDOR_THREAD_POOL_LOAD_BALANCER_QUEUE_SIZE,
79
+ audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_QUEUE_SIZE)) {}
47
80
 
48
81
  /// @brief Creates an asynchronous promise.
49
82
  /// @param function The function to execute asynchronously. It should return either a jsi::Value on success or a std::string error message on failure.
@@ -66,17 +99,23 @@ class PromiseVendor {
66
99
  /// return promise;
67
100
  jsi::Value createAsyncPromise(std::function<PromiseResolver()> &&function);
68
101
 
102
+ /// @brief Creates an asynchronous promise.
103
+ /// @param function The function to execute asynchronously. It receives a Promise object to resolve or reject the promise.
104
+ /// @return The created promise.
105
+ /// @note The function is executed on a different thread, the promise should be resolved or rejected using the provided Promise object.
106
+ /// @note IMPORTANT: This function is not thread-safe and should be called from a single thread only. (comes from underlying ThreadPool implementation)
107
+ jsi::Value createAsyncPromise(std::function<void(Promise &&)> &&function);
108
+
69
109
  private:
70
110
  jsi::Runtime *runtime_;
71
111
  std::shared_ptr<react::CallInvoker> callInvoker_;
72
112
  std::shared_ptr<ThreadPool> threadPool_;
73
113
 
74
114
  static void asyncPromiseJob(
75
- std::shared_ptr<react::CallInvoker> callInvoker,
76
- std::function<PromiseResolver()> &&function,
77
- std::shared_ptr<jsi::Function> &&resolve,
78
- std::shared_ptr<jsi::Function> &&reject
79
- );
115
+ std::shared_ptr<react::CallInvoker> callInvoker,
116
+ std::function<PromiseResolver()> &&function,
117
+ std::shared_ptr<jsi::Function> &&resolve,
118
+ std::shared_ptr<jsi::Function> &&reject);
80
119
  };
81
120
 
82
121
  } // namespace audioapi
@@ -1,11 +1,12 @@
1
1
  #include <audioapi/jsi/RuntimeLifecycleMonitor.h>
2
+ #include <memory>
3
+ #include <unordered_map>
4
+ #include <unordered_set>
5
+ #include <utility>
2
6
 
3
7
  namespace audioapi {
4
8
 
5
- static std::unordered_map<
6
- jsi::Runtime *,
7
- std::unordered_set<RuntimeLifecycleListener *>>
8
- listeners;
9
+ static std::unordered_map<jsi::Runtime *, std::unordered_set<RuntimeLifecycleListener *>> listeners;
9
10
 
10
11
  struct RuntimeLifecycleMonitorObject : public jsi::HostObject {
11
12
  jsi::Runtime *rt_;
@@ -21,9 +22,7 @@ struct RuntimeLifecycleMonitorObject : public jsi::HostObject {
21
22
  }
22
23
  };
23
24
 
24
- void RuntimeLifecycleMonitor::addListener(
25
- jsi::Runtime &rt,
26
- RuntimeLifecycleListener *listener) {
25
+ void RuntimeLifecycleMonitor::addListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener) {
27
26
  auto listenersSet = listeners.find(&rt);
28
27
  if (listenersSet == listeners.end()) {
29
28
  // We install a global host object in the provided runtime, this way we can
@@ -43,9 +42,7 @@ void RuntimeLifecycleMonitor::addListener(
43
42
  }
44
43
  }
45
44
 
46
- void RuntimeLifecycleMonitor::removeListener(
47
- jsi::Runtime &rt,
48
- RuntimeLifecycleListener *listener) {
45
+ void RuntimeLifecycleMonitor::removeListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener) {
49
46
  auto listenersSet = listeners.find(&rt);
50
47
  if (listenersSet == listeners.end()) {
51
48
  // nothing to do here
@@ -27,9 +27,7 @@ struct RuntimeLifecycleListener {
27
27
  */
28
28
  struct RuntimeLifecycleMonitor {
29
29
  static void addListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener);
30
- static void removeListener(
31
- jsi::Runtime &rt,
32
- RuntimeLifecycleListener *listener);
30
+ static void removeListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener);
33
31
  };
34
32
 
35
33
  } // namespace audioapi
@@ -9,7 +9,9 @@
9
9
  */
10
10
 
11
11
  #include <audioapi/core/sources/AudioBuffer.h>
12
+ #if !RN_AUDIO_API_FFMPEG_DISABLED
12
13
  #include <audioapi/libs/ffmpeg/FFmpegDecoding.h>
14
+ #endif // RN_AUDIO_API_FFMPEG_DISABLED
13
15
  #include <audioapi/utils/AudioArray.h>
14
16
  #include <audioapi/utils/AudioBus.h>
15
17
  #include <functional>
@@ -277,8 +279,7 @@ decodeWithMemoryBlock(const void *data, size_t size, int sample_rate) {
277
279
  MemoryIOContext io_ctx{static_cast<const uint8_t *>(data), size, 0};
278
280
 
279
281
  constexpr size_t buffer_size = 4096;
280
- auto io_buffer = std::unique_ptr<uint8_t, decltype(&av_free)>(
281
- static_cast<uint8_t *>(av_malloc(buffer_size)), &av_free);
282
+ uint8_t *io_buffer = static_cast<uint8_t *>(av_malloc(buffer_size));
282
283
  if (io_buffer == nullptr) {
283
284
  return nullptr;
284
285
  }
@@ -286,7 +287,7 @@ decodeWithMemoryBlock(const void *data, size_t size, int sample_rate) {
286
287
  auto avio_ctx =
287
288
  std::unique_ptr<AVIOContext, std::function<void(AVIOContext *)>>(
288
289
  avio_alloc_context(
289
- io_buffer.get(),
290
+ io_buffer,
290
291
  buffer_size,
291
292
  0,
292
293
  &io_ctx,