react-native-audio-api 0.8.3 → 0.9.0-nightly-7ecb495-20251008

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 (323) hide show
  1. package/README.md +40 -39
  2. package/RNAudioAPI.podspec +17 -12
  3. package/android/build.gradle +44 -4
  4. package/android/src/main/cpp/audioapi/CMakeLists.txt +65 -0
  5. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +29 -1
  6. package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +14 -0
  7. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +7 -1
  8. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +6 -1
  9. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +1 -1
  10. package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +36 -0
  11. package/android/src/main/cpp/audioapi/android/core/{AudioDecoder.cpp → utils/AudioDecoder.cpp} +79 -75
  12. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +11 -1
  13. package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +24 -0
  14. package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +15 -2
  15. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +154 -38
  16. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +57 -0
  17. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +6 -46
  18. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +70 -6
  19. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.h +10 -66
  20. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +105 -0
  21. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +17 -91
  22. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +262 -6
  23. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +26 -241
  24. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +70 -0
  25. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +6 -50
  26. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +18 -0
  27. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +18 -0
  28. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +148 -0
  29. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.h +37 -0
  30. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +92 -0
  31. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +29 -0
  32. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +20 -0
  33. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.h +19 -0
  34. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +21 -0
  35. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +21 -0
  36. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +41 -0
  37. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +28 -0
  38. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +69 -0
  39. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +33 -0
  40. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +73 -0
  41. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +29 -0
  42. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +94 -0
  43. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +46 -0
  44. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +60 -0
  45. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +25 -0
  46. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +152 -0
  47. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +37 -0
  48. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +52 -0
  49. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h +25 -0
  50. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +19 -0
  51. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +21 -0
  52. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +55 -0
  53. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +27 -0
  54. package/common/cpp/audioapi/HostObjects/{RecorderAdapterNodeHostObject.h → sources/RecorderAdapterNodeHostObject.h} +1 -2
  55. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +22 -0
  56. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +28 -0
  57. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +18 -0
  58. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +133 -0
  59. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.h +28 -0
  60. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +58 -0
  61. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.h +26 -0
  62. package/common/cpp/audioapi/core/AudioContext.cpp +3 -4
  63. package/common/cpp/audioapi/core/AudioContext.h +2 -1
  64. package/common/cpp/audioapi/core/AudioNode.cpp +3 -3
  65. package/common/cpp/audioapi/core/AudioNode.h +2 -2
  66. package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
  67. package/common/cpp/audioapi/core/AudioParam.h +1 -1
  68. package/common/cpp/audioapi/core/BaseAudioContext.cpp +47 -38
  69. package/common/cpp/audioapi/core/BaseAudioContext.h +17 -16
  70. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +4 -5
  71. package/common/cpp/audioapi/core/OfflineAudioContext.h +2 -1
  72. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +3 -1
  73. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +1 -1
  74. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +1 -1
  75. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +3 -1
  76. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +1 -1
  77. package/common/cpp/audioapi/core/effects/GainNode.cpp +3 -1
  78. package/common/cpp/audioapi/core/effects/GainNode.h +1 -1
  79. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +1 -1
  80. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +18 -13
  81. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +1 -1
  82. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +89 -0
  83. package/common/cpp/audioapi/core/effects/WorkletNode.h +65 -0
  84. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +91 -0
  85. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +52 -0
  86. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +1 -1
  87. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +2 -2
  88. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +47 -10
  89. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +18 -3
  90. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +98 -14
  91. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +9 -3
  92. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +37 -44
  93. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +7 -9
  94. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +1 -6
  95. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +1 -1
  96. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +53 -0
  97. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +26 -0
  98. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +7 -2
  99. package/common/cpp/audioapi/core/sources/OscillatorNode.h +1 -1
  100. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +3 -1
  101. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +1 -1
  102. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +9 -1
  103. package/common/cpp/audioapi/core/sources/StreamerNode.h +1 -9
  104. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +84 -0
  105. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +47 -0
  106. package/common/cpp/audioapi/core/types/AudioFormat.h +16 -0
  107. package/common/cpp/audioapi/core/utils/AudioDecoder.h +36 -91
  108. package/common/cpp/audioapi/core/{AudioParamEventQueue.cpp → utils/AudioParamEventQueue.cpp} +13 -7
  109. package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +75 -0
  110. package/common/cpp/audioapi/core/utils/AudioStretcher.h +30 -0
  111. package/common/cpp/audioapi/core/{Constants.h → utils/Constants.h} +9 -0
  112. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +52 -0
  113. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +9 -0
  114. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +73 -0
  115. package/common/cpp/audioapi/dsp/Windows.cpp +1 -1
  116. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +1 -1
  117. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +2 -1
  118. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +14 -1
  119. package/common/cpp/audioapi/jsi/JsiHostObject.h +6 -12
  120. package/common/cpp/audioapi/jsi/JsiPromise.cpp +49 -0
  121. package/common/cpp/audioapi/jsi/JsiPromise.h +29 -1
  122. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +241 -282
  123. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +57 -19
  124. package/common/cpp/audioapi/utils/AudioBus.cpp +1 -1
  125. package/common/cpp/audioapi/utils/ThreadPool.hpp +104 -0
  126. package/common/cpp/test/AudioParamTest.cpp +204 -0
  127. package/common/cpp/test/CMakeLists.txt +13 -4
  128. package/common/cpp/test/GainTest.cpp +11 -10
  129. package/common/cpp/test/OscillatorTest.cpp +2 -1
  130. package/common/cpp/test/StereoPannerTest.cpp +129 -0
  131. package/ios/audioapi/ios/AudioAPIModule.mm +32 -5
  132. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +1 -1
  133. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
  134. package/ios/audioapi/ios/core/utils/AudioDecoder.mm +160 -0
  135. package/lib/commonjs/api.js +57 -3
  136. package/lib/commonjs/api.js.map +1 -1
  137. package/lib/commonjs/api.web.js +8 -0
  138. package/lib/commonjs/api.web.js.map +1 -1
  139. package/lib/commonjs/core/AudioBufferBaseSourceNode.js +7 -7
  140. package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
  141. package/lib/commonjs/core/AudioBufferQueueSourceNode.js +1 -6
  142. package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
  143. package/lib/commonjs/core/AudioBufferSourceNode.js +15 -0
  144. package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
  145. package/lib/commonjs/core/AudioContext.js +10 -1
  146. package/lib/commonjs/core/AudioContext.js.map +1 -1
  147. package/lib/commonjs/core/AudioDecoder.js +48 -0
  148. package/lib/commonjs/core/AudioDecoder.js.map +1 -0
  149. package/lib/commonjs/core/AudioScheduledSourceNode.js +4 -4
  150. package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
  151. package/lib/commonjs/core/AudioStretcher.js +31 -0
  152. package/lib/commonjs/core/AudioStretcher.js.map +1 -0
  153. package/lib/commonjs/core/BaseAudioContext.js +76 -28
  154. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  155. package/lib/commonjs/core/ConstantSourceNode.js +17 -0
  156. package/lib/commonjs/core/ConstantSourceNode.js.map +1 -0
  157. package/lib/commonjs/core/OfflineAudioContext.js +11 -2
  158. package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
  159. package/lib/commonjs/core/OscillatorNode.js +6 -0
  160. package/lib/commonjs/core/OscillatorNode.js.map +1 -1
  161. package/lib/commonjs/core/WorkletNode.js +11 -0
  162. package/lib/commonjs/core/WorkletNode.js.map +1 -0
  163. package/lib/commonjs/core/WorkletProcessingNode.js +11 -0
  164. package/lib/commonjs/core/WorkletProcessingNode.js.map +1 -0
  165. package/lib/commonjs/core/WorkletSourceNode.js +11 -0
  166. package/lib/commonjs/core/WorkletSourceNode.js.map +1 -0
  167. package/lib/commonjs/hooks/{useSytemVolume.js → useSystemVolume.js} +1 -1
  168. package/lib/commonjs/hooks/useSystemVolume.js.map +1 -0
  169. package/lib/commonjs/utils/index.js +9 -0
  170. package/lib/commonjs/utils/index.js.map +1 -1
  171. package/lib/commonjs/web-core/AudioContext.js +4 -0
  172. package/lib/commonjs/web-core/AudioContext.js.map +1 -1
  173. package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -1
  174. package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
  175. package/lib/commonjs/web-core/ConstantSourceNode.js +17 -0
  176. package/lib/commonjs/web-core/ConstantSourceNode.js.map +1 -0
  177. package/lib/commonjs/web-core/OfflineAudioContext.js +4 -0
  178. package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
  179. package/lib/module/api.js +9 -3
  180. package/lib/module/api.js.map +1 -1
  181. package/lib/module/api.web.js +1 -0
  182. package/lib/module/api.web.js.map +1 -1
  183. package/lib/module/core/AudioBufferBaseSourceNode.js +7 -7
  184. package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
  185. package/lib/module/core/AudioBufferQueueSourceNode.js +1 -6
  186. package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
  187. package/lib/module/core/AudioBufferSourceNode.js +15 -0
  188. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  189. package/lib/module/core/AudioContext.js +10 -1
  190. package/lib/module/core/AudioContext.js.map +1 -1
  191. package/lib/module/core/AudioDecoder.js +42 -0
  192. package/lib/module/core/AudioDecoder.js.map +1 -0
  193. package/lib/module/core/AudioScheduledSourceNode.js +4 -4
  194. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  195. package/lib/module/core/AudioStretcher.js +26 -0
  196. package/lib/module/core/AudioStretcher.js.map +1 -0
  197. package/lib/module/core/BaseAudioContext.js +76 -28
  198. package/lib/module/core/BaseAudioContext.js.map +1 -1
  199. package/lib/module/core/ConstantSourceNode.js +11 -0
  200. package/lib/module/core/ConstantSourceNode.js.map +1 -0
  201. package/lib/module/core/OfflineAudioContext.js +11 -2
  202. package/lib/module/core/OfflineAudioContext.js.map +1 -1
  203. package/lib/module/core/OscillatorNode.js +6 -0
  204. package/lib/module/core/OscillatorNode.js.map +1 -1
  205. package/lib/module/core/WorkletNode.js +5 -0
  206. package/lib/module/core/WorkletNode.js.map +1 -0
  207. package/lib/module/core/WorkletProcessingNode.js +5 -0
  208. package/lib/module/core/WorkletProcessingNode.js.map +1 -0
  209. package/lib/module/core/WorkletSourceNode.js +5 -0
  210. package/lib/module/core/WorkletSourceNode.js.map +1 -0
  211. package/lib/module/hooks/{useSytemVolume.js → useSystemVolume.js} +1 -1
  212. package/lib/module/hooks/useSystemVolume.js.map +1 -0
  213. package/lib/module/utils/index.js +8 -0
  214. package/lib/module/utils/index.js.map +1 -1
  215. package/lib/module/web-core/AudioContext.js +4 -0
  216. package/lib/module/web-core/AudioContext.js.map +1 -1
  217. package/lib/module/web-core/AudioScheduledSourceNode.js +1 -1
  218. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
  219. package/lib/module/web-core/ConstantSourceNode.js +11 -0
  220. package/lib/module/web-core/ConstantSourceNode.js.map +1 -0
  221. package/lib/module/web-core/OfflineAudioContext.js +4 -0
  222. package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
  223. package/lib/typescript/api.d.ts +13 -5
  224. package/lib/typescript/api.d.ts.map +1 -1
  225. package/lib/typescript/api.web.d.ts +1 -0
  226. package/lib/typescript/api.web.d.ts.map +1 -1
  227. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +2 -2
  228. package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
  229. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
  230. package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
  231. package/lib/typescript/core/AudioBufferSourceNode.d.ts +4 -0
  232. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  233. package/lib/typescript/core/AudioContext.d.ts +1 -0
  234. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  235. package/lib/typescript/core/AudioDecoder.d.ts +4 -0
  236. package/lib/typescript/core/AudioDecoder.d.ts.map +1 -0
  237. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -1
  238. package/lib/typescript/core/AudioStretcher.d.ts +3 -0
  239. package/lib/typescript/core/AudioStretcher.d.ts.map +1 -0
  240. package/lib/typescript/core/BaseAudioContext.d.ts +21 -16
  241. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  242. package/lib/typescript/core/ConstantSourceNode.d.ts +9 -0
  243. package/lib/typescript/core/ConstantSourceNode.d.ts.map +1 -0
  244. package/lib/typescript/core/OfflineAudioContext.d.ts +1 -0
  245. package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
  246. package/lib/typescript/core/OscillatorNode.d.ts +3 -0
  247. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  248. package/lib/typescript/core/WorkletNode.d.ts +4 -0
  249. package/lib/typescript/core/WorkletNode.d.ts.map +1 -0
  250. package/lib/typescript/core/WorkletProcessingNode.d.ts +4 -0
  251. package/lib/typescript/core/WorkletProcessingNode.d.ts.map +1 -0
  252. package/lib/typescript/core/WorkletSourceNode.d.ts +4 -0
  253. package/lib/typescript/core/WorkletSourceNode.d.ts.map +1 -0
  254. package/lib/typescript/events/types.d.ts +2 -0
  255. package/lib/typescript/events/types.d.ts.map +1 -1
  256. package/lib/typescript/hooks/{useSytemVolume.d.ts → useSystemVolume.d.ts} +1 -1
  257. package/lib/typescript/hooks/useSystemVolume.d.ts.map +1 -0
  258. package/lib/typescript/interfaces.d.ts +31 -6
  259. package/lib/typescript/interfaces.d.ts.map +1 -1
  260. package/lib/typescript/types.d.ts +2 -1
  261. package/lib/typescript/types.d.ts.map +1 -1
  262. package/lib/typescript/utils/index.d.ts +8 -0
  263. package/lib/typescript/utils/index.d.ts.map +1 -1
  264. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +1 -1
  265. package/lib/typescript/web-core/AudioContext.d.ts +4 -2
  266. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
  267. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -1
  268. package/lib/typescript/web-core/BaseAudioContext.d.ts +2 -0
  269. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
  270. package/lib/typescript/web-core/ConstantSourceNode.d.ts +8 -0
  271. package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +1 -0
  272. package/lib/typescript/web-core/OfflineAudioContext.d.ts +4 -2
  273. package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
  274. package/package.json +3 -2
  275. package/src/api.ts +22 -3
  276. package/src/api.web.ts +1 -0
  277. package/src/core/AudioBufferBaseSourceNode.ts +9 -9
  278. package/src/core/AudioBufferQueueSourceNode.ts +1 -9
  279. package/src/core/AudioBufferSourceNode.ts +28 -0
  280. package/src/core/AudioContext.ts +12 -1
  281. package/src/core/AudioDecoder.ts +78 -0
  282. package/src/core/AudioScheduledSourceNode.ts +5 -5
  283. package/src/core/AudioStretcher.ts +43 -0
  284. package/src/core/BaseAudioContext.ts +174 -41
  285. package/src/core/ConstantSourceNode.ts +13 -0
  286. package/src/core/OfflineAudioContext.ts +18 -2
  287. package/src/core/OscillatorNode.ts +11 -0
  288. package/src/core/WorkletNode.ts +3 -0
  289. package/src/core/WorkletProcessingNode.ts +3 -0
  290. package/src/core/WorkletSourceNode.ts +3 -0
  291. package/src/events/types.ts +2 -0
  292. package/src/interfaces.ts +85 -11
  293. package/src/types.ts +3 -1
  294. package/src/utils/index.ts +21 -0
  295. package/src/web-core/AudioBufferSourceNode.tsx +1 -1
  296. package/src/web-core/AudioContext.tsx +7 -2
  297. package/src/web-core/AudioScheduledSourceNode.tsx +1 -1
  298. package/src/web-core/BaseAudioContext.tsx +2 -0
  299. package/src/web-core/ConstantSourceNode.tsx +12 -0
  300. package/src/web-core/OfflineAudioContext.tsx +7 -2
  301. package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +0 -149
  302. package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +0 -76
  303. package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +0 -120
  304. package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +0 -67
  305. package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +0 -142
  306. package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +0 -86
  307. package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +0 -56
  308. package/common/cpp/audioapi/HostObjects/BiquadFilterNodeHostObject.h +0 -89
  309. package/common/cpp/audioapi/HostObjects/GainNodeHostObject.h +0 -27
  310. package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +0 -65
  311. package/common/cpp/audioapi/HostObjects/StereoPannerNodeHostObject.h +0 -29
  312. package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +0 -30
  313. package/common/cpp/audioapi/events/AudioEventHandlerRegistryHostObject.h +0 -48
  314. package/ios/audioapi/ios/core/AudioDecoder.mm +0 -156
  315. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.h +0 -7
  316. package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.mm +0 -12
  317. package/lib/commonjs/hooks/useSytemVolume.js.map +0 -1
  318. package/lib/module/hooks/useSytemVolume.js.map +0 -1
  319. package/lib/typescript/hooks/useSytemVolume.d.ts.map +0 -1
  320. /package/common/cpp/audioapi/HostObjects/{AudioDestinationNodeHostObject.h → destinations/AudioDestinationNodeHostObject.h} +0 -0
  321. /package/common/cpp/audioapi/HostObjects/{PeriodicWaveHostObject.h → effects/PeriodicWaveHostObject.h} +0 -0
  322. /package/common/cpp/audioapi/core/{AudioParamEventQueue.h → utils/AudioParamEventQueue.h} +0 -0
  323. /package/src/hooks/{useSytemVolume.ts → useSystemVolume.ts} +0 -0
@@ -1,86 +0,0 @@
1
- #pragma once
2
-
3
- #include <jsi/jsi.h>
4
-
5
- #include <audioapi/core/sources/AudioBuffer.h>
6
- #include <audioapi/HostObjects/AudioBufferHostObject.h>
7
- #include <audioapi/core/inputs/AudioRecorder.h>
8
- #include <audioapi/HostObjects/RecorderAdapterNodeHostObject.h>
9
-
10
- #ifdef ANDROID
11
- #include <audioapi/android/core/AndroidAudioRecorder.h>
12
- #else
13
- #include <audioapi/ios/core/IOSAudioRecorder.h>
14
- #endif
15
-
16
- #include <memory>
17
- #include <utility>
18
- #include <vector>
19
- #include <cstdio>
20
-
21
- namespace audioapi {
22
- using namespace facebook;
23
-
24
- class AudioRecorderHostObject : public JsiHostObject {
25
- public:
26
- explicit AudioRecorderHostObject(
27
- jsi::Runtime *runtime,
28
- const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry,
29
- float sampleRate,
30
- int bufferLength) {
31
- #ifdef ANDROID
32
- audioRecorder_ = std::make_shared<AndroidAudioRecorder>(
33
- sampleRate,
34
- bufferLength,
35
- audioEventHandlerRegistry
36
- );
37
- #else
38
- audioRecorder_ = std::make_shared<IOSAudioRecorder>(
39
- sampleRate,
40
- bufferLength,
41
- audioEventHandlerRegistry
42
- );
43
- #endif
44
-
45
- addSetters(JSI_EXPORT_PROPERTY_SETTER(AudioRecorderHostObject, onAudioReady));
46
-
47
- addFunctions(
48
- JSI_EXPORT_FUNCTION(AudioRecorderHostObject, start),
49
- JSI_EXPORT_FUNCTION(AudioRecorderHostObject, stop),
50
- JSI_EXPORT_FUNCTION(AudioRecorderHostObject, connect),
51
- JSI_EXPORT_FUNCTION(AudioRecorderHostObject, disconnect)
52
- );
53
- }
54
-
55
- JSI_HOST_FUNCTION(connect) {
56
- auto adapterNodeHostObject = args[0].getObject(runtime).getHostObject<RecorderAdapterNodeHostObject>(runtime);
57
- audioRecorder_->connect(
58
- std::static_pointer_cast<RecorderAdapterNode>(adapterNodeHostObject->node_));
59
- return jsi::Value::undefined();
60
- }
61
-
62
- JSI_HOST_FUNCTION(disconnect) {
63
- audioRecorder_->disconnect();
64
- return jsi::Value::undefined();
65
- }
66
-
67
- JSI_HOST_FUNCTION(start) {
68
- audioRecorder_->start();
69
-
70
- return jsi::Value::undefined();
71
- }
72
-
73
- JSI_HOST_FUNCTION(stop) {
74
- audioRecorder_->stop();
75
-
76
- return jsi::Value::undefined();
77
- }
78
-
79
- JSI_PROPERTY_SETTER(onAudioReady) {
80
- audioRecorder_->setOnAudioReadyCallbackId(std::stoull(value.getString(runtime).utf8(runtime)));
81
- }
82
-
83
- private:
84
- std::shared_ptr<AudioRecorder> audioRecorder_;
85
- };
86
- } // namespace audioapi
@@ -1,56 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
- #include <audioapi/core/sources/AudioScheduledSourceNode.h>
5
-
6
- #include <memory>
7
- #include <vector>
8
-
9
- namespace audioapi {
10
- using namespace facebook;
11
-
12
- class AudioScheduledSourceNodeHostObject : public AudioNodeHostObject {
13
- public:
14
- explicit AudioScheduledSourceNodeHostObject(
15
- const std::shared_ptr<AudioScheduledSourceNode> &node)
16
- : AudioNodeHostObject(node) {
17
- addSetters(
18
- JSI_EXPORT_PROPERTY_SETTER(AudioScheduledSourceNodeHostObject, onEnded));
19
- addFunctions(
20
- JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, start),
21
- JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, stop));
22
- }
23
-
24
- ~AudioScheduledSourceNodeHostObject() {
25
- auto audioScheduledSourceNode =
26
- std::static_pointer_cast<AudioScheduledSourceNode>(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 non-existing callback.
30
- audioScheduledSourceNode->clearOnEndedCallback();
31
- }
32
-
33
- JSI_PROPERTY_SETTER(onEnded) {
34
- auto audioScheduleSourceNode =
35
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
36
-
37
- audioScheduleSourceNode->setOnEndedCallbackId(std::stoull(value.getString(runtime).utf8(runtime)));
38
- }
39
-
40
- JSI_HOST_FUNCTION(start) {
41
- auto when = args[0].getNumber();
42
- auto audioScheduleSourceNode =
43
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
44
- audioScheduleSourceNode->start(when);
45
- return jsi::Value::undefined();
46
- }
47
-
48
- JSI_HOST_FUNCTION(stop) {
49
- auto time = args[0].getNumber();
50
- auto audioScheduleSourceNode =
51
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
52
- audioScheduleSourceNode->stop(time);
53
- return jsi::Value::undefined();
54
- }
55
- };
56
- } // namespace audioapi
@@ -1,89 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
- #include <audioapi/HostObjects/AudioParamHostObject.h>
5
- #include <audioapi/core/effects/BiquadFilterNode.h>
6
-
7
- #include <memory>
8
- #include <string>
9
- #include <vector>
10
-
11
- namespace audioapi {
12
- using namespace facebook;
13
-
14
- class BiquadFilterNodeHostObject : public AudioNodeHostObject {
15
- public:
16
- explicit BiquadFilterNodeHostObject(
17
- const std::shared_ptr<BiquadFilterNode> &node)
18
- : AudioNodeHostObject(node) {
19
- addGetters(
20
- JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, frequency),
21
- JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, detune),
22
- JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, Q),
23
- JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, gain),
24
- JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, type));
25
-
26
- addFunctions(
27
- JSI_EXPORT_FUNCTION(BiquadFilterNodeHostObject, getFrequencyResponse));
28
-
29
- addSetters(JSI_EXPORT_PROPERTY_SETTER(BiquadFilterNodeHostObject, type));
30
- }
31
-
32
- JSI_PROPERTY_GETTER(frequency) {
33
- auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
34
- auto frequencyParam_ = std::make_shared<AudioParamHostObject>(
35
- biquadFilterNode->getFrequencyParam());
36
- return jsi::Object::createFromHostObject(runtime, frequencyParam_);
37
- }
38
-
39
- JSI_PROPERTY_GETTER(detune) {
40
- auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
41
- auto detuneParam_ = std::make_shared<AudioParamHostObject>(
42
- biquadFilterNode->getDetuneParam());
43
- return jsi::Object::createFromHostObject(runtime, detuneParam_);
44
- }
45
-
46
- JSI_PROPERTY_GETTER(Q) {
47
- auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
48
- auto QParam_ =
49
- std::make_shared<AudioParamHostObject>(biquadFilterNode->getQParam());
50
- return jsi::Object::createFromHostObject(runtime, QParam_);
51
- }
52
-
53
- JSI_PROPERTY_GETTER(gain) {
54
- auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
55
- auto gainParam_ = std::make_shared<AudioParamHostObject>(
56
- biquadFilterNode->getGainParam());
57
- return jsi::Object::createFromHostObject(runtime, gainParam_);
58
- }
59
-
60
- JSI_PROPERTY_GETTER(type) {
61
- auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
62
- auto type = biquadFilterNode->getType();
63
- return jsi::String::createFromUtf8(runtime, type);
64
- }
65
-
66
- JSI_HOST_FUNCTION(getFrequencyResponse) {
67
- auto arrayBufferFrequency = args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
68
- auto frequencyArray = reinterpret_cast<float *>(arrayBufferFrequency.data(runtime));
69
- auto length = static_cast<int>(arrayBufferFrequency.size(runtime));
70
-
71
- auto arrayBufferMag = args[1].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
72
- auto magResponseOut = reinterpret_cast<float *>(arrayBufferMag.data(runtime));
73
-
74
- auto arrayBufferPhase = args[2].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
75
- auto phaseResponseOut = reinterpret_cast<float *>(arrayBufferPhase.data(runtime));
76
-
77
- auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
78
- biquadFilterNode->getFrequencyResponse(
79
- frequencyArray, magResponseOut, phaseResponseOut, length);
80
-
81
- return jsi::Value::undefined();
82
- }
83
-
84
- JSI_PROPERTY_SETTER(type) {
85
- auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
86
- biquadFilterNode->setType(value.getString(runtime).utf8(runtime));
87
- }
88
- };
89
- } // namespace audioapi
@@ -1,27 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
- #include <audioapi/HostObjects/AudioParamHostObject.h>
5
- #include <audioapi/core/effects/GainNode.h>
6
-
7
- #include <memory>
8
- #include <vector>
9
-
10
- namespace audioapi {
11
- using namespace facebook;
12
-
13
- class GainNodeHostObject : public AudioNodeHostObject {
14
- public:
15
- explicit GainNodeHostObject(const std::shared_ptr<GainNode> &node)
16
- : AudioNodeHostObject(node) {
17
- addGetters(JSI_EXPORT_PROPERTY_GETTER(GainNodeHostObject, gain));
18
- }
19
-
20
- JSI_PROPERTY_GETTER(gain) {
21
- auto gainNode = std::static_pointer_cast<GainNode>(node_);
22
- auto gainParam =
23
- std::make_shared<AudioParamHostObject>(gainNode->getGainParam());
24
- return jsi::Object::createFromHostObject(runtime, gainParam);
25
- }
26
- };
27
- } // namespace audioapi
@@ -1,65 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h>
4
- #include <audioapi/HostObjects/AudioParamHostObject.h>
5
- #include <audioapi/HostObjects/PeriodicWaveHostObject.h>
6
- #include <audioapi/core/sources/OscillatorNode.h>
7
-
8
- #include <memory>
9
- #include <string>
10
- #include <vector>
11
-
12
- namespace audioapi {
13
- using namespace facebook;
14
-
15
- class OscillatorNodeHostObject : public AudioScheduledSourceNodeHostObject {
16
- public:
17
- explicit OscillatorNodeHostObject(
18
- const std::shared_ptr<OscillatorNode> &node)
19
- : AudioScheduledSourceNodeHostObject(node) {
20
- addGetters(
21
- JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, frequency),
22
- JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, detune),
23
- JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, type));
24
-
25
- addFunctions(
26
- JSI_EXPORT_FUNCTION(OscillatorNodeHostObject, setPeriodicWave));
27
-
28
- addSetters(JSI_EXPORT_PROPERTY_SETTER(OscillatorNodeHostObject, type));
29
- }
30
-
31
- JSI_PROPERTY_GETTER(frequency) {
32
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
33
- auto frequencyParam_ = std::make_shared<AudioParamHostObject>(
34
- oscillatorNode->getFrequencyParam());
35
- return jsi::Object::createFromHostObject(runtime, frequencyParam_);
36
- }
37
-
38
- JSI_PROPERTY_GETTER(detune) {
39
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
40
- auto detuneParam_ = std::make_shared<AudioParamHostObject>(
41
- oscillatorNode->getDetuneParam());
42
- return jsi::Object::createFromHostObject(runtime, detuneParam_);
43
- }
44
-
45
- JSI_PROPERTY_GETTER(type) {
46
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
47
- auto waveType = oscillatorNode->getType();
48
- return jsi::String::createFromUtf8(runtime, waveType);
49
- }
50
-
51
- JSI_HOST_FUNCTION(setPeriodicWave) {
52
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
53
- auto periodicWave =
54
- args[0].getObject(runtime).getHostObject<PeriodicWaveHostObject>(
55
- runtime);
56
- oscillatorNode->setPeriodicWave(periodicWave->periodicWave_);
57
- return jsi::Value::undefined();
58
- }
59
-
60
- JSI_PROPERTY_SETTER(type) {
61
- auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
62
- oscillatorNode->setType(value.getString(runtime).utf8(runtime));
63
- }
64
- };
65
- } // namespace audioapi
@@ -1,29 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
- #include <audioapi/HostObjects/AudioParamHostObject.h>
5
- #include <audioapi/core/effects/StereoPannerNode.h>
6
-
7
- #include <memory>
8
- #include <string>
9
- #include <vector>
10
-
11
- namespace audioapi {
12
- using namespace facebook;
13
-
14
- class StereoPannerNodeHostObject : public AudioNodeHostObject {
15
- public:
16
- explicit StereoPannerNodeHostObject(
17
- const std::shared_ptr<StereoPannerNode> &node)
18
- : AudioNodeHostObject(node) {
19
- addGetters(JSI_EXPORT_PROPERTY_GETTER(StereoPannerNodeHostObject, pan));
20
- }
21
-
22
- JSI_PROPERTY_GETTER(pan) {
23
- auto stereoPannerNode = std::static_pointer_cast<StereoPannerNode>(node_);
24
- auto panParam_ =
25
- std::make_shared<AudioParamHostObject>(stereoPannerNode->getPanParam());
26
- return jsi::Object::createFromHostObject(runtime, panParam_);
27
- }
28
- };
29
- } // namespace audioapi
@@ -1,30 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h>
4
- #include <audioapi/HostObjects/AudioParamHostObject.h>
5
- #include <audioapi/HostObjects/PeriodicWaveHostObject.h>
6
- #include <audioapi/core/sources/StreamerNode.h>
7
-
8
- #include <memory>
9
- #include <string>
10
- #include <vector>
11
-
12
- namespace audioapi {
13
- using namespace facebook;
14
-
15
- class StreamerNodeHostObject : public AudioScheduledSourceNodeHostObject {
16
- public:
17
- explicit StreamerNodeHostObject(
18
- const std::shared_ptr<StreamerNode> &node)
19
- : AudioScheduledSourceNodeHostObject(node) {
20
- addFunctions(JSI_EXPORT_FUNCTION(StreamerNodeHostObject, initialize));
21
- }
22
-
23
- JSI_HOST_FUNCTION(initialize) {
24
- auto streamerNode = std::static_pointer_cast<StreamerNode>(node_);
25
- auto path = args[0].getString(runtime).utf8(runtime);
26
- auto result = streamerNode->initialize(path);
27
- return jsi::Value(result);
28
- }
29
- };
30
- } // namespace audioapi
@@ -1,48 +0,0 @@
1
- #pragma once
2
-
3
- #include <audioapi/jsi/JsiHostObject.h>
4
- #include <audioapi/events/AudioEventHandlerRegistry.h>
5
-
6
- #include <jsi/jsi.h>
7
- #include <ReactCommon/CallInvoker.h>
8
- #include <memory>
9
- #include <unordered_map>
10
- #include <vector>
11
- #include <string>
12
-
13
- namespace audioapi {
14
- using namespace facebook;
15
-
16
- class AudioEventHandlerRegistryHostObject : public JsiHostObject {
17
- public:
18
- explicit AudioEventHandlerRegistryHostObject(const std::shared_ptr<AudioEventHandlerRegistry>& eventHandlerRegistry) {
19
- eventHandlerRegistry_ = eventHandlerRegistry;
20
-
21
- addFunctions(
22
- JSI_EXPORT_FUNCTION(AudioEventHandlerRegistryHostObject, addAudioEventListener),
23
- JSI_EXPORT_FUNCTION(AudioEventHandlerRegistryHostObject, removeAudioEventListener));
24
- }
25
-
26
- JSI_HOST_FUNCTION(addAudioEventListener) {
27
- auto eventName = args[0].getString(runtime).utf8(runtime);
28
- auto callback = std::make_shared<jsi::Function>(args[1].getObject(runtime).getFunction(runtime));
29
-
30
- auto listenerId = eventHandlerRegistry_->registerHandler(eventName, callback);
31
-
32
- return jsi::String::createFromUtf8(runtime, std::to_string(listenerId));
33
- }
34
-
35
- JSI_HOST_FUNCTION(removeAudioEventListener) {
36
- auto eventName = args[0].getString(runtime).utf8(runtime);
37
- uint64_t listenerId = std::stoull(args[1].getString(runtime).utf8(runtime));
38
-
39
- eventHandlerRegistry_->unregisterHandler(eventName, listenerId);
40
-
41
- return jsi::Value::undefined();
42
- }
43
-
44
- private:
45
- std::shared_ptr<AudioEventHandlerRegistry> eventHandlerRegistry_;
46
- };
47
- } // namespace audioapi
48
-
@@ -1,156 +0,0 @@
1
- #define MINIAUDIO_IMPLEMENTATION
2
- #import <audioapi/libs/miniaudio/miniaudio.h>
3
-
4
- #include <audioapi/libs/miniaudio/decoders/libopus/miniaudio_libopus.h>
5
- #include <audioapi/libs/miniaudio/decoders/libvorbis/miniaudio_libvorbis.h>
6
-
7
- #include <audioapi/core/utils/AudioDecoder.h>
8
- #include <audioapi/dsp/VectorMath.h>
9
- #include <audioapi/libs/audio-stretch/stretch.h>
10
- #include <audioapi/libs/base64/base64.h>
11
- #include <audioapi/libs/ffmpeg/FFmpegDecoding.h>
12
- #include <audioapi/utils/AudioArray.h>
13
- #include <audioapi/utils/AudioBus.h>
14
-
15
- namespace audioapi {
16
-
17
- // Decoding audio in fixed-size chunks because total frame count can't be
18
- // determined in advance. Note: ma_decoder_get_length_in_pcm_frames() always
19
- // returns 0 for Vorbis decoders.
20
- std::vector<int16_t> AudioDecoder::readAllPcmFrames(ma_decoder &decoder, int numChannels, ma_uint64 &outFramesRead)
21
- {
22
- std::vector<int16_t> buffer;
23
- std::vector<int16_t> temp(CHUNK_SIZE * numChannels);
24
- outFramesRead = 0;
25
-
26
- while (true) {
27
- ma_uint64 tempFramesDecoded = 0;
28
- ma_decoder_read_pcm_frames(&decoder, temp.data(), CHUNK_SIZE, &tempFramesDecoded);
29
- if (tempFramesDecoded == 0) {
30
- break;
31
- }
32
-
33
- buffer.insert(buffer.end(), temp.data(), temp.data() + tempFramesDecoded * numChannels);
34
- outFramesRead += tempFramesDecoded;
35
- }
36
-
37
- return buffer;
38
- }
39
-
40
- std::shared_ptr<AudioBus>
41
- AudioDecoder::makeAudioBusFromInt16Buffer(const std::vector<int16_t> &buffer, int numChannels, float sampleRate)
42
- {
43
- auto outputFrames = buffer.size() / numChannels;
44
- auto audioBus = std::make_shared<AudioBus>(outputFrames, numChannels, sampleRate);
45
-
46
- for (int ch = 0; ch < numChannels; ++ch) {
47
- auto channelData = audioBus->getChannel(ch)->getData();
48
- for (int i = 0; i < outputFrames; ++i) {
49
- channelData[i] = int16ToFloat(buffer[i * numChannels + ch]);
50
- }
51
- }
52
- return audioBus;
53
- }
54
-
55
- std::shared_ptr<AudioBus> AudioDecoder::decodeWithFilePath(const std::string &path) const
56
- {
57
- std::vector<int16_t> buffer;
58
- if (AudioDecoder::pathHasExtension(path, {".mp4", ".m4a", ".aac"})) {
59
- buffer = ffmpegdecoding::decodeWithFilePath(path, numChannels_, static_cast<int>(sampleRate_));
60
- if (buffer.empty()) {
61
- NSLog(@"Failed to decode with FFmpeg: %s", path.c_str());
62
- return nullptr;
63
- }
64
- return makeAudioBusFromInt16Buffer(buffer, numChannels_, sampleRate_);
65
- }
66
- ma_decoding_backend_vtable *customBackends[] = {ma_decoding_backend_libvorbis, ma_decoding_backend_libopus};
67
-
68
- ma_decoder decoder;
69
- ma_decoder_config config = ma_decoder_config_init(ma_format_s16, numChannels_, static_cast<int>(sampleRate_));
70
- config.ppCustomBackendVTables = customBackends;
71
- config.customBackendCount = sizeof(customBackends) / sizeof(customBackends[0]);
72
-
73
- if (ma_decoder_init_file(path.c_str(), &config, &decoder) != MA_SUCCESS) {
74
- NSLog(@"Failed to initialize decoder for file: %s", path.c_str());
75
- ma_decoder_uninit(&decoder);
76
- return nullptr;
77
- }
78
-
79
- ma_uint64 framesRead = 0;
80
- buffer = readAllPcmFrames(decoder, numChannels_, framesRead);
81
- if (framesRead == 0) {
82
- NSLog(@"Failed to decode");
83
- ma_decoder_uninit(&decoder);
84
- return nullptr;
85
- }
86
-
87
- ma_decoder_uninit(&decoder);
88
- return makeAudioBusFromInt16Buffer(buffer, numChannels_, sampleRate_);
89
- }
90
-
91
- std::shared_ptr<AudioBus> AudioDecoder::decodeWithMemoryBlock(const void *data, size_t size) const
92
- {
93
- std::vector<int16_t> buffer;
94
- const AudioFormat format = AudioDecoder::detectAudioFormat(data, size);
95
- if (format == AudioFormat::MP4 || format == AudioFormat::M4A || format == AudioFormat::AAC) {
96
- buffer = ffmpegdecoding::decodeWithMemoryBlock(data, size, numChannels_, static_cast<int>(sampleRate_));
97
- if (buffer.empty()) {
98
- NSLog(@"Failed to decode with FFmpeg");
99
- return nullptr;
100
- }
101
- return makeAudioBusFromInt16Buffer(buffer, numChannels_, sampleRate_);
102
- }
103
- ma_decoding_backend_vtable *customBackends[] = {ma_decoding_backend_libvorbis, ma_decoding_backend_libopus};
104
-
105
- ma_decoder decoder;
106
- ma_decoder_config config = ma_decoder_config_init(ma_format_s16, numChannels_, static_cast<int>(sampleRate_));
107
- config.ppCustomBackendVTables = customBackends;
108
- config.customBackendCount = sizeof(customBackends) / sizeof(customBackends[0]);
109
-
110
- if (ma_decoder_init_memory(data, size, &config, &decoder) != MA_SUCCESS) {
111
- NSLog(@"Failed to initialize decoder for memory block");
112
- ma_decoder_uninit(&decoder);
113
- return nullptr;
114
- }
115
-
116
- ma_uint64 framesRead = 0;
117
- buffer = readAllPcmFrames(decoder, numChannels_, framesRead);
118
- if (framesRead == 0) {
119
- NSLog(@"Failed to decode");
120
- ma_decoder_uninit(&decoder);
121
- return nullptr;
122
- }
123
-
124
- ma_decoder_uninit(&decoder);
125
- return makeAudioBusFromInt16Buffer(buffer, numChannels_, sampleRate_);
126
- }
127
-
128
- std::shared_ptr<AudioBus> AudioDecoder::decodeWithPCMInBase64(const std::string &data, float playbackSpeed) const
129
- {
130
- auto decodedData = base64_decode(data, false);
131
-
132
- const auto uint8Data = reinterpret_cast<uint8_t *>(decodedData.data());
133
- size_t framesDecoded = decodedData.size() / 2;
134
-
135
- std::vector<int16_t> buffer(framesDecoded);
136
- for (size_t i = 0; i < framesDecoded; ++i) {
137
- buffer[i] = static_cast<int16_t>((uint8Data[i * 2 + 1] << 8) | uint8Data[i * 2]);
138
- }
139
-
140
- changePlaybackSpeedIfNeeded(buffer, framesDecoded, 1, playbackSpeed);
141
- auto outputFrames = buffer.size();
142
-
143
- auto audioBus = std::make_shared<AudioBus>(outputFrames, numChannels_, sampleRate_);
144
- auto leftChannelData = audioBus->getChannel(0)->getData();
145
- auto rightChannelData = audioBus->getChannel(1)->getData();
146
-
147
- for (size_t i = 0; i < outputFrames; ++i) {
148
- auto sample = int16ToFloat(buffer[i]);
149
- leftChannelData[i] = sample;
150
- rightChannelData[i] = sample;
151
- }
152
-
153
- return audioBus;
154
- }
155
-
156
- } // namespace audioapi
@@ -1,7 +0,0 @@
1
- #pragma once
2
-
3
- #import <Foundation/Foundation.h>
4
-
5
- @interface IOSAudioEventHandlerRegistry : NSObject
6
-
7
- -
@@ -1,12 +0,0 @@
1
- // #import <audioapi/ios/events/IOSAudioEventHandlerRegistry.h>
2
- //
3
- // #include <memory>
4
- // #include
5
- //
6
- //@implementation IOSAudioEventHandlerRegistry {
7
- // std::shared_ptr<AudioEventHandlerRegistry> _eventHandler;
8
- //
9
- //
10
- // }
11
- //
12
- //@end
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","_AudioManager","_interopRequireDefault","e","__esModule","default","useSystemVolume","volume","setVolume","useState","useEffect","AudioManager","observeVolumeChanges","listener","addSystemEventListener","parseFloat","value","toFixed","remove"],"sourceRoot":"../../../src","sources":["hooks/useSytemVolume.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAkD,SAAAE,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnC,SAASG,eAAeA,CAAA,EAAG;EACxC,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAC,CAAC,CAAC;EAEvC,IAAAC,gBAAS,EAAC,MAAM;IACdC,qBAAY,CAACC,oBAAoB,CAAC,IAAI,CAAC;IACvC,MAAMC,QAAQ,GAAGF,qBAAY,CAACG,sBAAsB,CAClD,cAAc,EACbX,CAAC,IAAK;MACLK,SAAS,CAACO,UAAU,CAACZ,CAAC,CAACa,KAAK,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CACF,CAAC;IACD,OAAO,MAAM;MACXJ,QAAQ,EAAEK,MAAM,CAAC,CAAC;MAElBP,qBAAY,CAACC,oBAAoB,CAAC,KAAK,CAAC;IAC1C,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOL,MAAM;AACf","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useState","AudioManager","useSystemVolume","volume","setVolume","observeVolumeChanges","listener","addSystemEventListener","e","parseFloat","value","toFixed","remove"],"sourceRoot":"../../../src","sources":["hooks/useSytemVolume.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAC3C,OAAOC,YAAY,MAAM,2BAAwB;AAEjD,eAAe,SAASC,eAAeA,CAAA,EAAG;EACxC,MAAM,CAACC,MAAM,EAAEC,SAAS,CAAC,GAAGJ,QAAQ,CAAC,CAAC,CAAC;EAEvCD,SAAS,CAAC,MAAM;IACdE,YAAY,CAACI,oBAAoB,CAAC,IAAI,CAAC;IACvC,MAAMC,QAAQ,GAAGL,YAAY,CAACM,sBAAsB,CAClD,cAAc,EACbC,CAAC,IAAK;MACLJ,SAAS,CAACK,UAAU,CAACD,CAAC,CAACE,KAAK,CAACC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CACF,CAAC;IACD,OAAO,MAAM;MACXL,QAAQ,EAAEM,MAAM,CAAC,CAAC;MAElBX,YAAY,CAACI,oBAAoB,CAAC,KAAK,CAAC;IAC1C,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,OAAOF,MAAM;AACf","ignoreList":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSytemVolume.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSytemVolume.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,eAAe,WAmBtC"}