react-native-audio-api 0.8.3-nightly-ea268f4-20251006 → 0.8.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 (282) hide show
  1. package/README.md +39 -40
  2. package/RNAudioAPI.podspec +12 -17
  3. package/android/build.gradle +4 -44
  4. package/android/src/main/cpp/audioapi/CMakeLists.txt +0 -65
  5. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +1 -29
  6. package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +0 -14
  7. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +1 -7
  8. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +1 -6
  9. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +1 -1
  10. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +1 -11
  11. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +2 -15
  12. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +18 -53
  13. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +149 -0
  14. package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +76 -0
  15. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +120 -0
  16. package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +67 -0
  17. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +142 -0
  18. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +46 -6
  19. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +6 -70
  20. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.h +66 -10
  21. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +91 -17
  22. package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +86 -0
  23. package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +56 -0
  24. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +6 -362
  25. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +241 -29
  26. package/common/cpp/audioapi/HostObjects/BiquadFilterNodeHostObject.h +89 -0
  27. package/common/cpp/audioapi/HostObjects/GainNodeHostObject.h +27 -0
  28. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +50 -6
  29. package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +65 -0
  30. package/common/cpp/audioapi/HostObjects/{sources/RecorderAdapterNodeHostObject.h → RecorderAdapterNodeHostObject.h} +2 -1
  31. package/common/cpp/audioapi/HostObjects/StereoPannerNodeHostObject.h +29 -0
  32. package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +30 -0
  33. package/common/cpp/audioapi/core/AudioContext.cpp +2 -3
  34. package/common/cpp/audioapi/core/AudioContext.h +1 -2
  35. package/common/cpp/audioapi/core/AudioNode.h +1 -1
  36. package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
  37. package/common/cpp/audioapi/core/AudioParam.h +1 -1
  38. package/common/cpp/audioapi/core/{utils/AudioParamEventQueue.cpp → AudioParamEventQueue.cpp} +7 -13
  39. package/common/cpp/audioapi/core/BaseAudioContext.cpp +3 -47
  40. package/common/cpp/audioapi/core/BaseAudioContext.h +4 -13
  41. package/common/cpp/audioapi/core/{utils/Constants.h → Constants.h} +0 -5
  42. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +3 -4
  43. package/common/cpp/audioapi/core/OfflineAudioContext.h +1 -2
  44. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +1 -1
  45. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +1 -1
  46. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +1 -1
  47. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +2 -2
  48. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +10 -47
  49. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +3 -18
  50. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +12 -94
  51. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +2 -8
  52. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +42 -33
  53. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +8 -6
  54. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +6 -1
  55. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +1 -1
  56. package/common/cpp/audioapi/core/sources/StreamerNode.h +8 -0
  57. package/common/cpp/audioapi/dsp/Windows.cpp +1 -1
  58. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +1 -1
  59. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +1 -2
  60. package/common/cpp/audioapi/events/AudioEventHandlerRegistryHostObject.h +48 -0
  61. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +1 -14
  62. package/common/cpp/audioapi/jsi/JsiHostObject.h +12 -6
  63. package/common/cpp/audioapi/jsi/JsiPromise.cpp +0 -49
  64. package/common/cpp/audioapi/jsi/JsiPromise.h +1 -29
  65. package/common/cpp/audioapi/utils/AudioBus.cpp +1 -1
  66. package/common/cpp/test/CMakeLists.txt +3 -11
  67. package/common/cpp/test/GainTest.cpp +1 -2
  68. package/common/cpp/test/OscillatorTest.cpp +1 -2
  69. package/ios/audioapi/ios/AudioAPIModule.mm +5 -32
  70. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +1 -1
  71. package/ios/audioapi/ios/core/IOSAudioRecorder.h +1 -2
  72. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
  73. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.h +7 -0
  74. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.mm +12 -0
  75. package/lib/commonjs/api.js +2 -36
  76. package/lib/commonjs/api.js.map +1 -1
  77. package/lib/commonjs/api.web.js +0 -8
  78. package/lib/commonjs/api.web.js.map +1 -1
  79. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +7 -7
  80. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
  81. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +6 -1
  82. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  83. package/lib/commonjs/core/AudioBufferSourceNode.js +0 -15
  84. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  85. package/lib/commonjs/core/AudioContext.js +1 -10
  86. package/lib/commonjs/core/AudioContext.js.map +1 -1
  87. package/lib/commonjs/core/AudioScheduledSourceNode.js +4 -4
  88. package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
  89. package/lib/commonjs/core/BaseAudioContext.js +11 -66
  90. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  91. package/lib/commonjs/core/OfflineAudioContext.js +2 -11
  92. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  93. package/lib/commonjs/core/OscillatorNode.js +0 -6
  94. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  95. package/lib/commonjs/hooks/{useSystemVolume.js → useSytemVolume.js} +1 -1
  96. package/lib/commonjs/hooks/useSytemVolume.js.map +1 -0
  97. package/lib/commonjs/utils/index.js +0 -9
  98. package/lib/commonjs/utils/index.js.map +1 -1
  99. package/lib/commonjs/web-core/AudioContext.js +0 -4
  100. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  101. package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -1
  102. package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
  103. package/lib/commonjs/web-core/OfflineAudioContext.js +0 -4
  104. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  105. package/lib/module/api.js +2 -6
  106. package/lib/module/api.js.map +1 -1
  107. package/lib/module/api.web.js +0 -1
  108. package/lib/module/api.web.js.map +1 -1
  109. package/lib/module/core/AudioBufferBaseSourceNode.js +7 -7
  110. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
  111. package/lib/module/core/AudioBufferQueueSourceNode.js +6 -1
  112. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  113. package/lib/module/core/AudioBufferSourceNode.js +0 -15
  114. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  115. package/lib/module/core/AudioContext.js +1 -10
  116. package/lib/module/core/AudioContext.js.map +1 -1
  117. package/lib/module/core/AudioScheduledSourceNode.js +4 -4
  118. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  119. package/lib/module/core/BaseAudioContext.js +11 -66
  120. package/lib/module/core/BaseAudioContext.js.map +1 -1
  121. package/lib/module/core/OfflineAudioContext.js +2 -11
  122. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  123. package/lib/module/core/OscillatorNode.js +0 -6
  124. package/lib/module/core/OscillatorNode.js.map +1 -1
  125. package/lib/module/hooks/{useSystemVolume.js → useSytemVolume.js} +1 -1
  126. package/lib/module/hooks/useSytemVolume.js.map +1 -0
  127. package/lib/module/utils/index.js +0 -8
  128. package/lib/module/utils/index.js.map +1 -1
  129. package/lib/module/web-core/AudioContext.js +0 -4
  130. package/lib/module/web-core/AudioContext.js.map +1 -1
  131. package/lib/module/web-core/AudioScheduledSourceNode.js +1 -1
  132. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  133. package/lib/module/web-core/OfflineAudioContext.js +0 -4
  134. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  135. package/lib/typescript/api.d.ts +4 -8
  136. package/lib/typescript/api.d.ts.map +1 -1
  137. package/lib/typescript/api.web.d.ts +0 -1
  138. package/lib/typescript/api.web.d.ts.map +1 -1
  139. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +2 -2
  140. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
  141. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
  142. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  143. package/lib/typescript/core/AudioBufferSourceNode.d.ts +0 -4
  144. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  145. package/lib/typescript/core/AudioContext.d.ts +0 -1
  146. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  147. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -1
  148. package/lib/typescript/core/BaseAudioContext.d.ts +11 -19
  149. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  150. package/lib/typescript/core/OfflineAudioContext.d.ts +0 -1
  151. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  152. package/lib/typescript/core/OscillatorNode.d.ts +0 -3
  153. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  154. package/lib/typescript/events/types.d.ts +0 -2
  155. package/lib/typescript/events/types.d.ts.map +1 -1
  156. package/lib/typescript/hooks/{useSystemVolume.d.ts → useSytemVolume.d.ts} +1 -1
  157. package/lib/typescript/hooks/useSytemVolume.d.ts.map +1 -0
  158. package/lib/typescript/interfaces.d.ts +3 -21
  159. package/lib/typescript/interfaces.d.ts.map +1 -1
  160. package/lib/typescript/types.d.ts +1 -2
  161. package/lib/typescript/types.d.ts.map +1 -1
  162. package/lib/typescript/utils/index.d.ts +0 -8
  163. package/lib/typescript/utils/index.d.ts.map +1 -1
  164. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +1 -1
  165. package/lib/typescript/web-core/AudioContext.d.ts +2 -4
  166. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  167. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -1
  168. package/lib/typescript/web-core/BaseAudioContext.d.ts +0 -2
  169. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  170. package/lib/typescript/web-core/OfflineAudioContext.d.ts +2 -4
  171. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  172. package/package.json +2 -3
  173. package/src/api.ts +3 -12
  174. package/src/api.web.ts +0 -1
  175. package/src/core/AudioBufferBaseSourceNode.ts +9 -9
  176. package/src/core/AudioBufferQueueSourceNode.ts +9 -1
  177. package/src/core/AudioBufferSourceNode.ts +0 -28
  178. package/src/core/AudioContext.ts +1 -12
  179. package/src/core/AudioScheduledSourceNode.ts +5 -5
  180. package/src/core/BaseAudioContext.ts +13 -149
  181. package/src/core/OfflineAudioContext.ts +2 -18
  182. package/src/core/OscillatorNode.ts +0 -11
  183. package/src/events/types.ts +0 -2
  184. package/src/interfaces.ts +5 -59
  185. package/src/types.ts +1 -3
  186. package/src/utils/index.ts +0 -21
  187. package/src/web-core/AudioBufferSourceNode.tsx +1 -1
  188. package/src/web-core/AudioContext.tsx +2 -7
  189. package/src/web-core/AudioScheduledSourceNode.tsx +1 -1
  190. package/src/web-core/BaseAudioContext.tsx +0 -2
  191. package/src/web-core/OfflineAudioContext.tsx +2 -7
  192. package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +0 -36
  193. package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +0 -24
  194. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +0 -57
  195. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +0 -105
  196. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +0 -70
  197. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +0 -18
  198. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +0 -18
  199. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +0 -148
  200. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.h +0 -37
  201. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +0 -92
  202. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +0 -29
  203. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +0 -20
  204. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.h +0 -19
  205. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +0 -21
  206. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +0 -21
  207. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +0 -41
  208. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +0 -28
  209. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +0 -69
  210. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +0 -33
  211. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +0 -73
  212. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +0 -29
  213. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +0 -94
  214. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +0 -46
  215. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +0 -60
  216. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +0 -25
  217. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +0 -152
  218. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +0 -37
  219. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +0 -52
  220. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h +0 -25
  221. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +0 -19
  222. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +0 -21
  223. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +0 -55
  224. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +0 -27
  225. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +0 -22
  226. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +0 -28
  227. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +0 -18
  228. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +0 -87
  229. package/common/cpp/audioapi/core/effects/WorkletNode.h +0 -65
  230. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +0 -89
  231. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +0 -52
  232. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +0 -51
  233. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +0 -26
  234. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +0 -82
  235. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +0 -47
  236. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +0 -52
  237. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +0 -9
  238. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +0 -73
  239. package/common/cpp/audioapi/utils/ThreadPool.hpp +0 -104
  240. package/common/cpp/test/AudioParamTest.cpp +0 -204
  241. package/lib/commonjs/core/ConstantSourceNode.js +0 -17
  242. package/lib/commonjs/core/ConstantSourceNode.js.map +0 -1
  243. package/lib/commonjs/core/WorkletNode.js +0 -11
  244. package/lib/commonjs/core/WorkletNode.js.map +0 -1
  245. package/lib/commonjs/core/WorkletProcessingNode.js +0 -11
  246. package/lib/commonjs/core/WorkletProcessingNode.js.map +0 -1
  247. package/lib/commonjs/core/WorkletSourceNode.js +0 -11
  248. package/lib/commonjs/core/WorkletSourceNode.js.map +0 -1
  249. package/lib/commonjs/hooks/useSystemVolume.js.map +0 -1
  250. package/lib/commonjs/web-core/ConstantSourceNode.js +0 -17
  251. package/lib/commonjs/web-core/ConstantSourceNode.js.map +0 -1
  252. package/lib/module/core/ConstantSourceNode.js +0 -11
  253. package/lib/module/core/ConstantSourceNode.js.map +0 -1
  254. package/lib/module/core/WorkletNode.js +0 -5
  255. package/lib/module/core/WorkletNode.js.map +0 -1
  256. package/lib/module/core/WorkletProcessingNode.js +0 -5
  257. package/lib/module/core/WorkletProcessingNode.js.map +0 -1
  258. package/lib/module/core/WorkletSourceNode.js +0 -5
  259. package/lib/module/core/WorkletSourceNode.js.map +0 -1
  260. package/lib/module/hooks/useSystemVolume.js.map +0 -1
  261. package/lib/module/web-core/ConstantSourceNode.js +0 -11
  262. package/lib/module/web-core/ConstantSourceNode.js.map +0 -1
  263. package/lib/typescript/core/ConstantSourceNode.d.ts +0 -9
  264. package/lib/typescript/core/ConstantSourceNode.d.ts.map +0 -1
  265. package/lib/typescript/core/WorkletNode.d.ts +0 -4
  266. package/lib/typescript/core/WorkletNode.d.ts.map +0 -1
  267. package/lib/typescript/core/WorkletProcessingNode.d.ts +0 -4
  268. package/lib/typescript/core/WorkletProcessingNode.d.ts.map +0 -1
  269. package/lib/typescript/core/WorkletSourceNode.d.ts +0 -4
  270. package/lib/typescript/core/WorkletSourceNode.d.ts.map +0 -1
  271. package/lib/typescript/hooks/useSystemVolume.d.ts.map +0 -1
  272. package/lib/typescript/web-core/ConstantSourceNode.d.ts +0 -8
  273. package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +0 -1
  274. package/src/core/ConstantSourceNode.ts +0 -13
  275. package/src/core/WorkletNode.ts +0 -3
  276. package/src/core/WorkletProcessingNode.ts +0 -3
  277. package/src/core/WorkletSourceNode.ts +0 -3
  278. package/src/web-core/ConstantSourceNode.tsx +0 -12
  279. /package/common/cpp/audioapi/HostObjects/{destinations/AudioDestinationNodeHostObject.h → AudioDestinationNodeHostObject.h} +0 -0
  280. /package/common/cpp/audioapi/HostObjects/{effects/PeriodicWaveHostObject.h → PeriodicWaveHostObject.h} +0 -0
  281. /package/common/cpp/audioapi/core/{utils/AudioParamEventQueue.h → AudioParamEventQueue.h} +0 -0
  282. /package/src/hooks/{useSystemVolume.ts → useSytemVolume.ts} +0 -0
@@ -1,41 +0,0 @@
1
- #include <audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h>
2
-
3
- #include <audioapi/events/AudioEventHandlerRegistry.h>
4
-
5
- namespace audioapi {
6
-
7
- AudioEventHandlerRegistryHostObject::AudioEventHandlerRegistryHostObject(
8
- const std::shared_ptr<AudioEventHandlerRegistry> &eventHandlerRegistry) {
9
- eventHandlerRegistry_ = eventHandlerRegistry;
10
-
11
- addFunctions(
12
- JSI_EXPORT_FUNCTION(
13
- AudioEventHandlerRegistryHostObject, addAudioEventListener),
14
- JSI_EXPORT_FUNCTION(
15
- AudioEventHandlerRegistryHostObject, removeAudioEventListener));
16
- }
17
-
18
- JSI_HOST_FUNCTION_IMPL(
19
- AudioEventHandlerRegistryHostObject,
20
- addAudioEventListener) {
21
- auto eventName = args[0].getString(runtime).utf8(runtime);
22
- auto callback = std::make_shared<jsi::Function>(
23
- args[1].getObject(runtime).getFunction(runtime));
24
-
25
- auto listenerId = eventHandlerRegistry_->registerHandler(eventName, callback);
26
-
27
- return jsi::String::createFromUtf8(runtime, std::to_string(listenerId));
28
- }
29
-
30
- JSI_HOST_FUNCTION_IMPL(
31
- AudioEventHandlerRegistryHostObject,
32
- removeAudioEventListener) {
33
- auto eventName = args[0].getString(runtime).utf8(runtime);
34
- uint64_t listenerId = std::stoull(args[1].getString(runtime).utf8(runtime));
35
-
36
- eventHandlerRegistry_->unregisterHandler(eventName, listenerId);
37
-
38
- return jsi::Value::undefined();
39
- }
40
-
41
- } // namespace audioapi
@@ -1,28 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/jsi/JsiHostObject.h>
4
-
5
- #include <jsi/jsi.h>
6
- #include <ReactCommon/CallInvoker.h>
7
- #include <memory>
8
- #include <unordered_map>
9
- #include <vector>
10
- #include <string>
11
-
12
- namespace audioapi {
13
- using namespace facebook;
14
-
15
- class AudioEventHandlerRegistry;
16
-
17
- class AudioEventHandlerRegistryHostObject : public JsiHostObject {
18
- public:
19
- explicit AudioEventHandlerRegistryHostObject(const std::shared_ptr<AudioEventHandlerRegistry>& eventHandlerRegistry);
20
-
21
- JSI_HOST_FUNCTION_DECL(addAudioEventListener);
22
- JSI_HOST_FUNCTION_DECL(removeAudioEventListener);
23
-
24
- private:
25
- std::shared_ptr<AudioEventHandlerRegistry> eventHandlerRegistry_;
26
- };
27
- } // namespace audioapi
28
-
@@ -1,69 +0,0 @@
1
- #include <audioapi/HostObjects/inputs/AudioRecorderHostObject.h>
2
-
3
- #include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
4
- #include <audioapi/HostObjects/sources/RecorderAdapterNodeHostObject.h>
5
- #include <audioapi/core/inputs/AudioRecorder.h>
6
- #include <audioapi/core/sources/AudioBuffer.h>
7
- #include <audioapi/events/AudioEventHandlerRegistry.h>
8
- #ifdef ANDROID
9
- #include <audioapi/android/core/AndroidAudioRecorder.h>
10
- #else
11
- #include <audioapi/ios/core/IOSAudioRecorder.h>
12
- #endif
13
-
14
- namespace audioapi {
15
-
16
- AudioRecorderHostObject::AudioRecorderHostObject(
17
- const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry,
18
- float sampleRate,
19
- int bufferLength) {
20
- #ifdef ANDROID
21
- audioRecorder_ = std::make_shared<AndroidAudioRecorder>(
22
- sampleRate, bufferLength, audioEventHandlerRegistry);
23
- #else
24
- audioRecorder_ = std::make_shared<IOSAudioRecorder>(
25
- sampleRate, bufferLength, audioEventHandlerRegistry);
26
- #endif
27
-
28
- addSetters(JSI_EXPORT_PROPERTY_SETTER(AudioRecorderHostObject, onAudioReady));
29
-
30
- addFunctions(
31
- JSI_EXPORT_FUNCTION(AudioRecorderHostObject, start),
32
- JSI_EXPORT_FUNCTION(AudioRecorderHostObject, stop),
33
- JSI_EXPORT_FUNCTION(AudioRecorderHostObject, connect),
34
- JSI_EXPORT_FUNCTION(AudioRecorderHostObject, disconnect));
35
- }
36
-
37
- JSI_PROPERTY_SETTER_IMPL(AudioRecorderHostObject, onAudioReady) {
38
- audioRecorder_->setOnAudioReadyCallbackId(
39
- std::stoull(value.getString(runtime).utf8(runtime)));
40
- }
41
-
42
- JSI_HOST_FUNCTION_IMPL(AudioRecorderHostObject, connect) {
43
- auto adapterNodeHostObject =
44
- args[0].getObject(runtime).getHostObject<RecorderAdapterNodeHostObject>(
45
- runtime);
46
- audioRecorder_->connect(
47
- std::static_pointer_cast<RecorderAdapterNode>(
48
- adapterNodeHostObject->node_));
49
- return jsi::Value::undefined();
50
- }
51
-
52
- JSI_HOST_FUNCTION_IMPL(AudioRecorderHostObject, disconnect) {
53
- audioRecorder_->disconnect();
54
- return jsi::Value::undefined();
55
- }
56
-
57
- JSI_HOST_FUNCTION_IMPL(AudioRecorderHostObject, start) {
58
- audioRecorder_->start();
59
-
60
- return jsi::Value::undefined();
61
- }
62
-
63
- JSI_HOST_FUNCTION_IMPL(AudioRecorderHostObject, stop) {
64
- audioRecorder_->stop();
65
-
66
- return jsi::Value::undefined();
67
- }
68
-
69
- } // namespace audioapi
@@ -1,33 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/jsi/JsiHostObject.h>
4
-
5
- #include <memory>
6
- #include <utility>
7
- #include <vector>
8
- #include <cstdio>
9
-
10
- namespace audioapi {
11
- using namespace facebook;
12
-
13
- class AudioRecorder;
14
- class AudioEventHandlerRegistry;
15
-
16
- class AudioRecorderHostObject : public JsiHostObject {
17
- public:
18
- explicit AudioRecorderHostObject(
19
- const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry,
20
- float sampleRate,
21
- int bufferLength);
22
-
23
- JSI_PROPERTY_SETTER_DECL(onAudioReady);
24
-
25
- JSI_HOST_FUNCTION_DECL(connect);
26
- JSI_HOST_FUNCTION_DECL(disconnect);
27
- JSI_HOST_FUNCTION_DECL(start);
28
- JSI_HOST_FUNCTION_DECL(stop);
29
-
30
- private:
31
- std::shared_ptr<AudioRecorder> audioRecorder_;
32
- };
33
- } // namespace audioapi
@@ -1,73 +0,0 @@
1
- #include <audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h>
2
-
3
- #include <audioapi/HostObjects/AudioParamHostObject.h>
4
- #include <audioapi/core/sources/AudioBufferBaseSourceNode.h>
5
-
6
- namespace audioapi {
7
-
8
- AudioBufferBaseSourceNodeHostObject::AudioBufferBaseSourceNodeHostObject(
9
- const std::shared_ptr<AudioBufferBaseSourceNode> &node)
10
- : AudioScheduledSourceNodeHostObject(node) {
11
- addGetters(
12
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferBaseSourceNodeHostObject, detune),
13
- JSI_EXPORT_PROPERTY_GETTER(
14
- AudioBufferBaseSourceNodeHostObject, playbackRate),
15
- JSI_EXPORT_PROPERTY_GETTER(
16
- AudioBufferBaseSourceNodeHostObject, onPositionChangedInterval));
17
-
18
- addSetters(
19
- JSI_EXPORT_PROPERTY_SETTER(
20
- AudioBufferBaseSourceNodeHostObject, onPositionChanged),
21
- JSI_EXPORT_PROPERTY_SETTER(
22
- AudioBufferBaseSourceNodeHostObject, onPositionChangedInterval));
23
- }
24
-
25
- AudioBufferBaseSourceNodeHostObject::~AudioBufferBaseSourceNodeHostObject() {
26
- auto sourceNode = std::static_pointer_cast<AudioBufferBaseSourceNode>(node_);
27
-
28
- // When JSI object is garbage collected (together with the eventual callback),
29
- // underlying source node might still be active and try to call the
30
- // non-existing callback.
31
- sourceNode->clearOnPositionChangedCallback();
32
- }
33
-
34
- JSI_PROPERTY_GETTER_IMPL(AudioBufferBaseSourceNodeHostObject, detune) {
35
- auto sourceNode = std::static_pointer_cast<AudioBufferBaseSourceNode>(node_);
36
- auto detune = sourceNode->getDetuneParam();
37
- auto detuneHostObject = std::make_shared<AudioParamHostObject>(detune);
38
- return jsi::Object::createFromHostObject(runtime, detuneHostObject);
39
- }
40
-
41
- JSI_PROPERTY_GETTER_IMPL(AudioBufferBaseSourceNodeHostObject, playbackRate) {
42
- auto sourceNode = std::static_pointer_cast<AudioBufferBaseSourceNode>(node_);
43
- auto playbackRate = sourceNode->getPlaybackRateParam();
44
- auto playbackRateHostObject =
45
- std::make_shared<AudioParamHostObject>(playbackRate);
46
- return jsi::Object::createFromHostObject(runtime, playbackRateHostObject);
47
- }
48
-
49
- JSI_PROPERTY_GETTER_IMPL(
50
- AudioBufferBaseSourceNodeHostObject,
51
- onPositionChangedInterval) {
52
- auto sourceNode = std::static_pointer_cast<AudioBufferBaseSourceNode>(node_);
53
- return {sourceNode->getOnPositionChangedInterval()};
54
- }
55
-
56
- JSI_PROPERTY_SETTER_IMPL(
57
- AudioBufferBaseSourceNodeHostObject,
58
- onPositionChanged) {
59
- auto sourceNode = std::static_pointer_cast<AudioBufferBaseSourceNode>(node_);
60
-
61
- sourceNode->setOnPositionChangedCallbackId(
62
- std::stoull(value.getString(runtime).utf8(runtime)));
63
- }
64
-
65
- JSI_PROPERTY_SETTER_IMPL(
66
- AudioBufferBaseSourceNodeHostObject,
67
- onPositionChangedInterval) {
68
- auto sourceNode = std::static_pointer_cast<AudioBufferBaseSourceNode>(node_);
69
-
70
- sourceNode->setOnPositionChangedInterval(static_cast<int>(value.getNumber()));
71
- }
72
-
73
- } // namespace audioapi
@@ -1,29 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h>
4
-
5
- #include <memory>
6
- #include <vector>
7
-
8
- namespace audioapi {
9
- using namespace facebook;
10
-
11
- class AudioBufferBaseSourceNode;
12
-
13
- class AudioBufferBaseSourceNodeHostObject
14
- : public AudioScheduledSourceNodeHostObject {
15
- public:
16
- explicit AudioBufferBaseSourceNodeHostObject(
17
- const std::shared_ptr<AudioBufferBaseSourceNode> &node);
18
-
19
- ~AudioBufferBaseSourceNodeHostObject() override;
20
-
21
- JSI_PROPERTY_GETTER_DECL(detune);
22
- JSI_PROPERTY_GETTER_DECL(playbackRate);
23
- JSI_PROPERTY_GETTER_DECL(onPositionChangedInterval);
24
-
25
- JSI_PROPERTY_SETTER_DECL(onPositionChanged);
26
- JSI_PROPERTY_SETTER_DECL(onPositionChangedInterval);
27
- };
28
-
29
- } // namespace audioapi
@@ -1,94 +0,0 @@
1
- #include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
2
-
3
- #include <audioapi/jsi/AudioArrayBuffer.h>
4
-
5
- namespace audioapi {
6
-
7
- AudioBufferHostObject::AudioBufferHostObject(
8
- const std::shared_ptr<AudioBuffer> &audioBuffer)
9
- : audioBuffer_(audioBuffer) {
10
- addGetters(
11
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferHostObject, sampleRate),
12
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferHostObject, length),
13
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferHostObject, duration),
14
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferHostObject, numberOfChannels));
15
-
16
- addFunctions(
17
- JSI_EXPORT_FUNCTION(AudioBufferHostObject, getChannelData),
18
- JSI_EXPORT_FUNCTION(AudioBufferHostObject, copyFromChannel),
19
- JSI_EXPORT_FUNCTION(AudioBufferHostObject, copyToChannel));
20
- }
21
-
22
- AudioBufferHostObject::AudioBufferHostObject(
23
- AudioBufferHostObject &&other) noexcept
24
- : JsiHostObject(std::move(other)),
25
- audioBuffer_(std::move(other.audioBuffer_)) {}
26
-
27
- JSI_PROPERTY_GETTER_IMPL(AudioBufferHostObject, sampleRate) {
28
- return {audioBuffer_->getSampleRate()};
29
- }
30
-
31
- JSI_PROPERTY_GETTER_IMPL(AudioBufferHostObject, length) {
32
- return {static_cast<double>(audioBuffer_->getLength())};
33
- }
34
-
35
- JSI_PROPERTY_GETTER_IMPL(AudioBufferHostObject, duration) {
36
- return {audioBuffer_->getDuration()};
37
- }
38
-
39
- JSI_PROPERTY_GETTER_IMPL(AudioBufferHostObject, numberOfChannels) {
40
- return {audioBuffer_->getNumberOfChannels()};
41
- }
42
-
43
- JSI_HOST_FUNCTION_IMPL(AudioBufferHostObject, getChannelData) {
44
- auto channel = static_cast<int>(args[0].getNumber());
45
- auto channelData =
46
- reinterpret_cast<uint8_t *>(audioBuffer_->getChannelData(channel));
47
- auto length = static_cast<int>(audioBuffer_->getLength());
48
- auto size = static_cast<int>(length * sizeof(float));
49
-
50
- // reading or writing from this ArrayBuffer could cause a crash
51
- // if underlying channelData is deallocated
52
- auto audioArrayBuffer = std::make_shared<AudioArrayBuffer>(channelData, size);
53
- auto arrayBuffer = jsi::ArrayBuffer(runtime, audioArrayBuffer);
54
-
55
- auto float32ArrayCtor =
56
- runtime.global().getPropertyAsFunction(runtime, "Float32Array");
57
- auto float32Array = float32ArrayCtor.callAsConstructor(runtime, arrayBuffer)
58
- .getObject(runtime);
59
-
60
- return float32Array;
61
- }
62
-
63
- JSI_HOST_FUNCTION_IMPL(AudioBufferHostObject, copyFromChannel) {
64
- auto arrayBuffer = args[0]
65
- .getObject(runtime)
66
- .getPropertyAsObject(runtime, "buffer")
67
- .getArrayBuffer(runtime);
68
- auto destination = reinterpret_cast<float *>(arrayBuffer.data(runtime));
69
- auto length = static_cast<int>(arrayBuffer.size(runtime));
70
- auto channelNumber = static_cast<int>(args[1].getNumber());
71
- auto startInChannel = static_cast<size_t>(args[2].getNumber());
72
-
73
- audioBuffer_->copyFromChannel(
74
- destination, length, channelNumber, startInChannel);
75
-
76
- return jsi::Value::undefined();
77
- }
78
-
79
- JSI_HOST_FUNCTION_IMPL(AudioBufferHostObject, copyToChannel) {
80
- auto arrayBuffer = args[0]
81
- .getObject(runtime)
82
- .getPropertyAsObject(runtime, "buffer")
83
- .getArrayBuffer(runtime);
84
- auto source = reinterpret_cast<float *>(arrayBuffer.data(runtime));
85
- auto length = static_cast<int>(arrayBuffer.size(runtime));
86
- auto channelNumber = static_cast<int>(args[1].getNumber());
87
- auto startInChannel = static_cast<size_t>(args[2].getNumber());
88
-
89
- audioBuffer_->copyToChannel(source, length, channelNumber, startInChannel);
90
-
91
- return jsi::Value::undefined();
92
- }
93
-
94
- } // namespace audioapi
@@ -1,46 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/jsi/JsiHostObject.h>
4
- #include <audioapi/core/sources/AudioBuffer.h>
5
-
6
- #include <jsi/jsi.h>
7
- #include <cstddef>
8
- #include <memory>
9
- #include <utility>
10
- #include <vector>
11
-
12
- namespace audioapi {
13
- using namespace facebook;
14
-
15
- class AudioBufferHostObject : public JsiHostObject {
16
- public:
17
- std::shared_ptr<AudioBuffer> audioBuffer_;
18
-
19
- explicit AudioBufferHostObject(
20
- const std::shared_ptr<AudioBuffer> &audioBuffer);
21
- AudioBufferHostObject(const AudioBufferHostObject &) = delete;
22
- AudioBufferHostObject &operator=(const AudioBufferHostObject &) = delete;
23
- AudioBufferHostObject(AudioBufferHostObject &&other) noexcept;
24
- AudioBufferHostObject &operator=(AudioBufferHostObject &&other) noexcept {
25
- if (this != &other) {
26
- JsiHostObject::operator=(std::move(other));
27
- audioBuffer_ = std::move(other.audioBuffer_);
28
- }
29
- return *this;
30
- }
31
-
32
- [[nodiscard]] inline size_t getSizeInBytes() const {
33
- return audioBuffer_->getLength() * audioBuffer_->getNumberOfChannels() *
34
- sizeof(float);
35
- }
36
-
37
- JSI_PROPERTY_GETTER_DECL(sampleRate);
38
- JSI_PROPERTY_GETTER_DECL(length);
39
- JSI_PROPERTY_GETTER_DECL(duration);
40
- JSI_PROPERTY_GETTER_DECL(numberOfChannels);
41
-
42
- JSI_HOST_FUNCTION_DECL(getChannelData);
43
- JSI_HOST_FUNCTION_DECL(copyFromChannel);
44
- JSI_HOST_FUNCTION_DECL(copyToChannel);
45
- };
46
- } // namespace audioapi
@@ -1,60 +0,0 @@
1
- #include <audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h>
2
-
3
- #include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
4
- #include <audioapi/core/sources/AudioBufferQueueSourceNode.h>
5
-
6
- namespace audioapi {
7
-
8
- AudioBufferQueueSourceNodeHostObject::AudioBufferQueueSourceNodeHostObject(
9
- const std::shared_ptr<AudioBufferQueueSourceNode> &node)
10
- : AudioBufferBaseSourceNodeHostObject(node) {
11
- addFunctions(
12
- JSI_EXPORT_FUNCTION(AudioBufferQueueSourceNodeHostObject, enqueueBuffer),
13
- JSI_EXPORT_FUNCTION(AudioBufferQueueSourceNodeHostObject, dequeueBuffer),
14
- JSI_EXPORT_FUNCTION(AudioBufferQueueSourceNodeHostObject, clearBuffers),
15
- JSI_EXPORT_FUNCTION(AudioBufferQueueSourceNodeHostObject, pause));
16
- }
17
-
18
- JSI_HOST_FUNCTION_IMPL(AudioBufferQueueSourceNodeHostObject, pause) {
19
- auto audioBufferQueueSourceNode =
20
- std::static_pointer_cast<AudioBufferQueueSourceNode>(node_);
21
-
22
- audioBufferQueueSourceNode->pause();
23
-
24
- return jsi::Value::undefined();
25
- }
26
-
27
- JSI_HOST_FUNCTION_IMPL(AudioBufferQueueSourceNodeHostObject, enqueueBuffer) {
28
- auto audioBufferQueueSourceNode =
29
- std::static_pointer_cast<AudioBufferQueueSourceNode>(node_);
30
-
31
- auto audioBufferHostObject =
32
- args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
33
-
34
- auto bufferId = audioBufferQueueSourceNode->enqueueBuffer(
35
- audioBufferHostObject->audioBuffer_);
36
-
37
- return jsi::String::createFromUtf8(runtime, bufferId);
38
- }
39
-
40
- JSI_HOST_FUNCTION_IMPL(AudioBufferQueueSourceNodeHostObject, dequeueBuffer) {
41
- auto audioBufferQueueSourceNode =
42
- std::static_pointer_cast<AudioBufferQueueSourceNode>(node_);
43
-
44
- auto bufferId = args[0].getNumber();
45
-
46
- audioBufferQueueSourceNode->dequeueBuffer(bufferId);
47
-
48
- return jsi::Value::undefined();
49
- }
50
-
51
- JSI_HOST_FUNCTION_IMPL(AudioBufferQueueSourceNodeHostObject, clearBuffers) {
52
- auto audioBufferQueueSourceNode =
53
- std::static_pointer_cast<AudioBufferQueueSourceNode>(node_);
54
-
55
- audioBufferQueueSourceNode->clearBuffers();
56
-
57
- return jsi::Value::undefined();
58
- }
59
-
60
- } // namespace audioapi
@@ -1,25 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h>
4
-
5
- #include <memory>
6
- #include <vector>
7
-
8
- namespace audioapi {
9
- using namespace facebook;
10
-
11
- class AudioBufferQueueSourceNode;
12
-
13
- class AudioBufferQueueSourceNodeHostObject
14
- : public AudioBufferBaseSourceNodeHostObject {
15
- public:
16
- explicit AudioBufferQueueSourceNodeHostObject(
17
- const std::shared_ptr<AudioBufferQueueSourceNode> &node);
18
-
19
- JSI_HOST_FUNCTION_DECL(pause);
20
- JSI_HOST_FUNCTION_DECL(enqueueBuffer);
21
- JSI_HOST_FUNCTION_DECL(dequeueBuffer);
22
- JSI_HOST_FUNCTION_DECL(clearBuffers);
23
- };
24
-
25
- } // namespace audioapi
@@ -1,152 +0,0 @@
1
- #include <audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h>
2
-
3
- #include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
4
- #include <audioapi/core/sources/AudioBufferSourceNode.h>
5
-
6
- namespace audioapi {
7
-
8
- AudioBufferSourceNodeHostObject::AudioBufferSourceNodeHostObject(
9
- const std::shared_ptr<AudioBufferSourceNode> &node)
10
- : AudioBufferBaseSourceNodeHostObject(node) {
11
- addGetters(
12
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferSourceNodeHostObject, loop),
13
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferSourceNodeHostObject, loopSkip),
14
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferSourceNodeHostObject, buffer),
15
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferSourceNodeHostObject, loopStart),
16
- JSI_EXPORT_PROPERTY_GETTER(AudioBufferSourceNodeHostObject, loopEnd));
17
-
18
- addSetters(
19
- JSI_EXPORT_PROPERTY_SETTER(AudioBufferSourceNodeHostObject, loop),
20
- JSI_EXPORT_PROPERTY_SETTER(AudioBufferSourceNodeHostObject, loopSkip),
21
- JSI_EXPORT_PROPERTY_SETTER(AudioBufferSourceNodeHostObject, loopStart),
22
- JSI_EXPORT_PROPERTY_SETTER(AudioBufferSourceNodeHostObject, loopEnd),
23
- JSI_EXPORT_PROPERTY_SETTER(AudioBufferSourceNodeHostObject, onLoopEnded));
24
-
25
- // start method is overridden in this class
26
- functions_->erase("start");
27
-
28
- addFunctions(
29
- JSI_EXPORT_FUNCTION(AudioBufferSourceNodeHostObject, start),
30
- JSI_EXPORT_FUNCTION(AudioBufferSourceNodeHostObject, setBuffer));
31
- }
32
-
33
- AudioBufferSourceNodeHostObject::~AudioBufferSourceNodeHostObject() {
34
- auto audioBufferSourceNode =
35
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
36
-
37
- // When JSI object is garbage collected (together with the eventual callback),
38
- // underlying source node might still be active and try to call the
39
- // non-existing callback.
40
- audioBufferSourceNode->clearOnLoopEndedCallback();
41
- }
42
-
43
- JSI_PROPERTY_GETTER_IMPL(AudioBufferSourceNodeHostObject, loop) {
44
- auto audioBufferSourceNode =
45
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
46
- auto loop = audioBufferSourceNode->getLoop();
47
- return {loop};
48
- }
49
-
50
- JSI_PROPERTY_GETTER_IMPL(AudioBufferSourceNodeHostObject, loopSkip) {
51
- auto audioBufferSourceNode =
52
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
53
- auto loopSkip = audioBufferSourceNode->getLoopSkip();
54
- return {loopSkip};
55
- }
56
-
57
- JSI_PROPERTY_GETTER_IMPL(AudioBufferSourceNodeHostObject, buffer) {
58
- auto audioBufferSourceNode =
59
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
60
- auto buffer = audioBufferSourceNode->getBuffer();
61
-
62
- if (!buffer) {
63
- return jsi::Value::null();
64
- }
65
-
66
- auto bufferHostObject = std::make_shared<AudioBufferHostObject>(buffer);
67
- return jsi::Object::createFromHostObject(runtime, bufferHostObject);
68
- }
69
-
70
- JSI_PROPERTY_GETTER_IMPL(AudioBufferSourceNodeHostObject, loopStart) {
71
- auto audioBufferSourceNode =
72
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
73
- auto loopStart = audioBufferSourceNode->getLoopStart();
74
- return {loopStart};
75
- }
76
-
77
- JSI_PROPERTY_GETTER_IMPL(AudioBufferSourceNodeHostObject, loopEnd) {
78
- auto audioBufferSourceNode =
79
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
80
- auto loopEnd = audioBufferSourceNode->getLoopEnd();
81
- return {loopEnd};
82
- }
83
-
84
- JSI_PROPERTY_SETTER_IMPL(AudioBufferSourceNodeHostObject, loop) {
85
- auto audioBufferSourceNode =
86
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
87
- audioBufferSourceNode->setLoop(value.getBool());
88
- }
89
-
90
- JSI_PROPERTY_SETTER_IMPL(AudioBufferSourceNodeHostObject, loopSkip) {
91
- auto audioBufferSourceNode =
92
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
93
- audioBufferSourceNode->setLoopSkip(value.getBool());
94
- }
95
-
96
- JSI_PROPERTY_SETTER_IMPL(AudioBufferSourceNodeHostObject, loopStart) {
97
- auto audioBufferSourceNode =
98
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
99
- audioBufferSourceNode->setLoopStart(value.getNumber());
100
- }
101
-
102
- JSI_PROPERTY_SETTER_IMPL(AudioBufferSourceNodeHostObject, loopEnd) {
103
- auto audioBufferSourceNode =
104
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
105
- audioBufferSourceNode->setLoopEnd(value.getNumber());
106
- }
107
-
108
- JSI_PROPERTY_SETTER_IMPL(AudioBufferSourceNodeHostObject, onLoopEnded) {
109
- auto audioBufferSourceNode =
110
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
111
-
112
- audioBufferSourceNode->setOnLoopEndedCallbackId(
113
- std::stoull(value.getString(runtime).utf8(runtime)));
114
- }
115
-
116
- JSI_HOST_FUNCTION_IMPL(AudioBufferSourceNodeHostObject, start) {
117
- auto when = args[0].getNumber();
118
- auto offset = args[1].getNumber();
119
-
120
- auto audioBufferSourceNode =
121
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
122
-
123
- if (args[2].isUndefined()) {
124
- audioBufferSourceNode->start(when, offset);
125
-
126
- return jsi::Value::undefined();
127
- }
128
-
129
- auto duration = args[2].getNumber();
130
- audioBufferSourceNode->start(when, offset, duration);
131
-
132
- return jsi::Value::undefined();
133
- }
134
-
135
- JSI_HOST_FUNCTION_IMPL(AudioBufferSourceNodeHostObject, setBuffer) {
136
- auto audioBufferSourceNode =
137
- std::static_pointer_cast<AudioBufferSourceNode>(node_);
138
-
139
- if (args[0].isNull()) {
140
- audioBufferSourceNode->setBuffer(std::shared_ptr<AudioBuffer>(nullptr));
141
- return jsi::Value::undefined();
142
- }
143
-
144
- auto bufferHostObject =
145
- args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
146
- thisValue.asObject(runtime).setExternalMemoryPressure(
147
- runtime, bufferHostObject->getSizeInBytes() + 16);
148
- audioBufferSourceNode->setBuffer(bufferHostObject->audioBuffer_);
149
- return jsi::Value::undefined();
150
- }
151
-
152
- } // namespace audioapi