react-native-audio-api 0.12.0-nightly-6a44b58-20260126 → 0.12.0-nightly-1a3c43b-20260128

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 (142) hide show
  1. package/RNAudioAPI.podspec +8 -0
  2. package/android/src/main/cpp/audioapi/CMakeLists.txt +0 -13
  3. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +3 -2
  4. package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +1 -1
  5. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +12 -1
  6. package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +5 -1
  7. package/android/src/main/java/com/swmansion/audioapi/system/AudioEvent.kt +28 -0
  8. package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +4 -4
  9. package/android/src/main/java/com/swmansion/audioapi/system/VolumeChangeListener.kt +1 -1
  10. package/android/src/main/java/com/swmansion/audioapi/system/notification/PlaybackNotification.kt +27 -18
  11. package/android/src/main/java/com/swmansion/audioapi/system/notification/PlaybackNotificationReceiver.kt +13 -8
  12. package/android/src/main/java/com/swmansion/audioapi/system/notification/RecordingNotificationReceiver.kt +3 -2
  13. package/android/src/oldarch/NativeAudioAPIModuleSpec.java +2 -2
  14. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +9 -12
  15. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +4 -2
  16. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +5 -1
  17. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +38 -38
  18. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +4 -2
  19. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +8 -4
  20. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +7 -1
  21. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +6 -4
  22. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.h +6 -2
  23. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +8 -5
  24. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +5 -3
  25. package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.cpp +5 -3
  26. package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.h +5 -2
  27. package/common/cpp/audioapi/HostObjects/effects/DelayNodeHostObject.cpp +4 -3
  28. package/common/cpp/audioapi/HostObjects/effects/DelayNodeHostObject.h +5 -2
  29. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +6 -2
  30. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.h +5 -2
  31. package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.cpp +6 -2
  32. package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.h +5 -2
  33. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +5 -2
  34. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +5 -2
  35. package/common/cpp/audioapi/HostObjects/effects/WaveShaperNodeHostObject.cpp +9 -4
  36. package/common/cpp/audioapi/HostObjects/effects/WaveShaperNodeHostObject.h +5 -2
  37. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +3 -2
  38. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +2 -1
  39. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +9 -6
  40. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +4 -2
  41. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +5 -2
  42. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +5 -2
  43. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +5 -2
  44. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +5 -2
  45. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +7 -3
  46. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +5 -2
  47. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +6 -2
  48. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +5 -2
  49. package/common/cpp/audioapi/HostObjects/utils/JsEnumParser.cpp +63 -0
  50. package/common/cpp/audioapi/HostObjects/utils/JsEnumParser.h +5 -0
  51. package/common/cpp/audioapi/core/AudioContext.cpp +2 -4
  52. package/common/cpp/audioapi/core/AudioNode.cpp +4 -4
  53. package/common/cpp/audioapi/core/AudioNode.h +6 -6
  54. package/common/cpp/audioapi/core/BaseAudioContext.cpp +7 -22
  55. package/common/cpp/audioapi/core/BaseAudioContext.h +20 -22
  56. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +3 -6
  57. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +5 -2
  58. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +4 -2
  59. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.cpp +1 -1
  60. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +1 -1
  61. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +6 -6
  62. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +2 -2
  63. package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +1 -1
  64. package/common/cpp/audioapi/core/effects/ConvolverNode.h +2 -2
  65. package/common/cpp/audioapi/core/effects/DelayNode.cpp +1 -1
  66. package/common/cpp/audioapi/core/effects/DelayNode.h +2 -2
  67. package/common/cpp/audioapi/core/effects/GainNode.cpp +1 -1
  68. package/common/cpp/audioapi/core/effects/GainNode.h +2 -2
  69. package/common/cpp/audioapi/core/effects/IIRFilterNode.cpp +5 -3
  70. package/common/cpp/audioapi/core/effects/IIRFilterNode.h +2 -2
  71. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +5 -2
  72. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +2 -2
  73. package/common/cpp/audioapi/core/effects/WaveShaperNode.cpp +4 -2
  74. package/common/cpp/audioapi/core/effects/WaveShaperNode.h +2 -2
  75. package/common/cpp/audioapi/core/sources/AudioBuffer.h +1 -1
  76. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +10 -4
  77. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +2 -2
  78. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +13 -13
  79. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +2 -2
  80. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +6 -5
  81. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +2 -2
  82. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +2 -2
  83. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +10 -2
  84. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +2 -2
  85. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +11 -6
  86. package/common/cpp/audioapi/core/sources/OscillatorNode.h +2 -2
  87. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +17 -4
  88. package/common/cpp/audioapi/core/sources/StreamerNode.h +4 -2
  89. package/common/cpp/audioapi/core/utils/AudioFileWriter.cpp +2 -3
  90. package/common/cpp/audioapi/core/utils/AudioRecorderCallback.cpp +3 -4
  91. package/common/cpp/audioapi/events/AudioEvent.h +30 -0
  92. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +9 -20
  93. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +7 -34
  94. package/common/cpp/audioapi/events/IAudioEventHandlerRegistry.h +5 -4
  95. package/common/cpp/audioapi/jsi/JsiUtils.cpp +21 -0
  96. package/common/cpp/audioapi/jsi/JsiUtils.h +17 -0
  97. package/{android/src/main/cpp/audioapi/android/core → common/cpp/audioapi}/utils/MiniaudioImplementation.cpp +1 -2
  98. package/common/cpp/test/src/MockAudioEventHandlerRegistry.h +5 -10
  99. package/ios/audioapi/ios/AudioAPIModule.h +3 -1
  100. package/ios/audioapi/ios/AudioAPIModule.mm +7 -6
  101. package/ios/audioapi/ios/core/utils/AudioDecoder.mm +1 -3
  102. package/ios/audioapi/ios/system/AudioSessionManager.h +3 -1
  103. package/ios/audioapi/ios/system/AudioSessionManager.mm +8 -1
  104. package/ios/audioapi/ios/system/SystemNotificationManager.mm +17 -8
  105. package/ios/audioapi/ios/system/notification/PlaybackNotification.mm +36 -33
  106. package/lib/commonjs/core/AudioDecoder.js +2 -2
  107. package/lib/commonjs/core/AudioDecoder.js.map +1 -1
  108. package/lib/commonjs/core/AudioRecorder.js +1 -1
  109. package/lib/commonjs/core/AudioRecorder.js.map +1 -1
  110. package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
  111. package/lib/commonjs/specs/NativeAudioAPIModule.web.js.map +1 -1
  112. package/lib/commonjs/system/AudioManager.js +1 -1
  113. package/lib/commonjs/system/AudioManager.js.map +1 -1
  114. package/lib/module/core/AudioDecoder.js +2 -2
  115. package/lib/module/core/AudioDecoder.js.map +1 -1
  116. package/lib/module/core/AudioRecorder.js +1 -1
  117. package/lib/module/core/AudioRecorder.js.map +1 -1
  118. package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
  119. package/lib/module/specs/NativeAudioAPIModule.web.js.map +1 -1
  120. package/lib/module/system/AudioManager.js +1 -1
  121. package/lib/module/system/AudioManager.js.map +1 -1
  122. package/lib/typescript/core/AudioDecoder.d.ts.map +1 -1
  123. package/lib/typescript/events/types.d.ts +1 -17
  124. package/lib/typescript/events/types.d.ts.map +1 -1
  125. package/lib/typescript/specs/NativeAudioAPIModule.d.ts +1 -1
  126. package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
  127. package/lib/typescript/specs/NativeAudioAPIModule.web.d.ts +1 -1
  128. package/lib/typescript/specs/NativeAudioAPIModule.web.d.ts.map +1 -1
  129. package/lib/typescript/system/AudioManager.d.ts.map +1 -1
  130. package/lib/typescript/system/notification/types.d.ts +4 -3
  131. package/lib/typescript/system/notification/types.d.ts.map +1 -1
  132. package/lib/typescript/system/types.d.ts +8 -0
  133. package/lib/typescript/system/types.d.ts.map +1 -1
  134. package/package.json +1 -1
  135. package/src/core/AudioDecoder.ts +2 -2
  136. package/src/core/AudioRecorder.ts +1 -1
  137. package/src/events/types.ts +1 -18
  138. package/src/specs/NativeAudioAPIModule.ts +3 -2
  139. package/src/specs/NativeAudioAPIModule.web.ts +2 -1
  140. package/src/system/AudioManager.ts +2 -1
  141. package/src/system/notification/types.ts +6 -4
  142. package/src/system/types.ts +8 -0
@@ -1,5 +1,4 @@
1
1
  #include <audioapi/HostObjects/BaseAudioContextHostObject.h>
2
-
3
2
  #include <audioapi/HostObjects/WorkletNodeHostObject.h>
4
3
  #include <audioapi/HostObjects/WorkletProcessingNodeHostObject.h>
5
4
  #include <audioapi/HostObjects/analysis/AnalyserNodeHostObject.h>
@@ -20,9 +19,10 @@
20
19
  #include <audioapi/HostObjects/sources/RecorderAdapterNodeHostObject.h>
21
20
  #include <audioapi/HostObjects/sources/StreamerNodeHostObject.h>
22
21
  #include <audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h>
22
+ #include <audioapi/HostObjects/utils/JsEnumParser.h>
23
+ #include <audioapi/HostObjects/utils/NodeOptionsParser.h>
23
24
  #include <audioapi/core/BaseAudioContext.h>
24
25
 
25
- #include <audioapi/HostObjects/utils/NodeOptionsParser.h>
26
26
  #include <memory>
27
27
  #include <utility>
28
28
  #include <vector>
@@ -33,8 +33,11 @@ BaseAudioContextHostObject::BaseAudioContextHostObject(
33
33
  const std::shared_ptr<BaseAudioContext> &context,
34
34
  jsi::Runtime *runtime,
35
35
  const std::shared_ptr<react::CallInvoker> &callInvoker)
36
- : context_(context), callInvoker_(callInvoker) {
37
- promiseVendor_ = std::make_shared<PromiseVendor>(runtime, callInvoker);
36
+ : context_(context),
37
+ promiseVendor_(std::make_shared<PromiseVendor>(runtime, callInvoker)),
38
+ callInvoker_(callInvoker) {
39
+ context_->initialize();
40
+ destination_ = std::make_shared<AudioDestinationNodeHostObject>(context_->getDestination());
38
41
 
39
42
  addGetters(
40
43
  JSI_EXPORT_PROPERTY_GETTER(BaseAudioContextHostObject, destination),
@@ -71,12 +74,11 @@ BaseAudioContextHostObject::BaseAudioContextHostObject(
71
74
  BaseAudioContextHostObject::~BaseAudioContextHostObject() = default;
72
75
 
73
76
  JSI_PROPERTY_GETTER_IMPL(BaseAudioContextHostObject, destination) {
74
- auto destination = std::make_shared<AudioDestinationNodeHostObject>(context_->getDestination());
75
- return jsi::Object::createFromHostObject(runtime, destination);
77
+ return jsi::Object::createFromHostObject(runtime, destination_);
76
78
  }
77
79
 
78
80
  JSI_PROPERTY_GETTER_IMPL(BaseAudioContextHostObject, state) {
79
- return jsi::String::createFromUtf8(runtime, context_->getState());
81
+ return jsi::String::createFromUtf8(runtime, js_enum_parser::contextStateToString(context_->getState()));
80
82
  }
81
83
 
82
84
  JSI_PROPERTY_GETTER_IMPL(BaseAudioContextHostObject, sampleRate) {
@@ -169,8 +171,8 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createRecorderAdapter) {
169
171
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createOscillator) {
170
172
  const auto options = args[0].asObject(runtime);
171
173
  const auto oscillatorOptions = audioapi::option_parser::parseOscillatorOptions(runtime, options);
172
- auto oscillator = context_->createOscillator(oscillatorOptions);
173
- auto oscillatorHostObject = std::make_shared<OscillatorNodeHostObject>(oscillator);
174
+ auto oscillatorHostObject =
175
+ std::make_shared<OscillatorNodeHostObject>(context_, oscillatorOptions);
174
176
  return jsi::Object::createFromHostObject(runtime, oscillatorHostObject);
175
177
  }
176
178
 
@@ -181,8 +183,7 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createStreamer) {
181
183
  const auto options = args[0].asObject(runtime);
182
184
  streamerOptions = audioapi::option_parser::parseStreamerOptions(runtime, options);
183
185
  }
184
- auto streamer = context_->createStreamer(streamerOptions);
185
- auto streamerHostObject = std::make_shared<StreamerNodeHostObject>(streamer);
186
+ auto streamerHostObject = std::make_shared<StreamerNodeHostObject>(context_, streamerOptions);
186
187
  auto object = jsi::Object::createFromHostObject(runtime, streamerHostObject);
187
188
  object.setExternalMemoryPressure(runtime, StreamerNodeHostObject::getSizeInBytes());
188
189
  return object;
@@ -195,24 +196,22 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createConstantSource) {
195
196
  const auto options = args[0].asObject(runtime);
196
197
  const auto constantSourceOptions =
197
198
  audioapi::option_parser::parseConstantSourceOptions(runtime, options);
198
- auto constantSource = context_->createConstantSource(constantSourceOptions);
199
- auto constantSourceHostObject = std::make_shared<ConstantSourceNodeHostObject>(constantSource);
199
+ auto constantSourceHostObject =
200
+ std::make_shared<ConstantSourceNodeHostObject>(context_, constantSourceOptions);
200
201
  return jsi::Object::createFromHostObject(runtime, constantSourceHostObject);
201
202
  }
202
203
 
203
204
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createGain) {
204
205
  const auto options = args[0].asObject(runtime);
205
206
  const auto gainOptions = audioapi::option_parser::parseGainOptions(runtime, options);
206
- auto gain = context_->createGain(std::move(gainOptions));
207
- auto gainHostObject = std::make_shared<GainNodeHostObject>(gain);
207
+ auto gainHostObject = std::make_shared<GainNodeHostObject>(context_, gainOptions);
208
208
  return jsi::Object::createFromHostObject(runtime, gainHostObject);
209
209
  }
210
210
 
211
211
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createDelay) {
212
212
  const auto options = args[0].asObject(runtime);
213
213
  const auto delayOptions = audioapi::option_parser::parseDelayOptions(runtime, options);
214
- auto delayNode = context_->createDelay(delayOptions);
215
- auto delayNodeHostObject = std::make_shared<DelayNodeHostObject>(delayNode);
214
+ auto delayNodeHostObject = std::make_shared<DelayNodeHostObject>(context_, delayOptions);
216
215
  auto jsiObject = jsi::Object::createFromHostObject(runtime, delayNodeHostObject);
217
216
  jsiObject.setExternalMemoryPressure(runtime, delayNodeHostObject->getSizeInBytes());
218
217
  return jsiObject;
@@ -220,25 +219,26 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createDelay) {
220
219
 
221
220
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createStereoPanner) {
222
221
  const auto options = args[0].asObject(runtime);
223
- const auto stereoPannerOptions = audioapi::option_parser::parseStereoPannerOptions(runtime, options);
224
- auto stereoPanner = context_->createStereoPanner(stereoPannerOptions);
225
- auto stereoPannerHostObject = std::make_shared<StereoPannerNodeHostObject>(stereoPanner);
222
+ const auto stereoPannerOptions =
223
+ audioapi::option_parser::parseStereoPannerOptions(runtime, options);
224
+ auto stereoPannerHostObject =
225
+ std::make_shared<StereoPannerNodeHostObject>(context_, stereoPannerOptions);
226
226
  return jsi::Object::createFromHostObject(runtime, stereoPannerHostObject);
227
227
  }
228
228
 
229
229
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createBiquadFilter) {
230
230
  const auto options = args[0].asObject(runtime);
231
- const auto biquadFilterOptions = audioapi::option_parser::parseBiquadFilterOptions(runtime, options);
232
- auto biquadFilter = context_->createBiquadFilter(biquadFilterOptions);
233
- auto biquadFilterHostObject = std::make_shared<BiquadFilterNodeHostObject>(biquadFilter);
231
+ const auto biquadFilterOptions =
232
+ audioapi::option_parser::parseBiquadFilterOptions(runtime, options);
233
+ auto biquadFilterHostObject =
234
+ std::make_shared<BiquadFilterNodeHostObject>(context_, biquadFilterOptions);
234
235
  return jsi::Object::createFromHostObject(runtime, biquadFilterHostObject);
235
236
  }
236
237
 
237
238
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createIIRFilter) {
238
239
  const auto options = args[0].asObject(runtime);
239
240
  const auto iirFilterOptions = audioapi::option_parser::parseIIRFilterOptions(runtime, options);
240
- auto iirFilter = context_->createIIRFilter(iirFilterOptions);
241
- auto iirFilterHostObject = std::make_shared<IIRFilterNodeHostObject>(iirFilter);
241
+ auto iirFilterHostObject = std::make_shared<IIRFilterNodeHostObject>(context_, iirFilterOptions);
242
242
  return jsi::Object::createFromHostObject(runtime, iirFilterHostObject);
243
243
  }
244
244
 
@@ -246,8 +246,8 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createBufferSource) {
246
246
  const auto options = args[0].asObject(runtime);
247
247
  const auto audioBufferSourceOptions =
248
248
  audioapi::option_parser::parseAudioBufferSourceOptions(runtime, options);
249
- auto bufferSource = context_->createBufferSource(audioBufferSourceOptions);
250
- auto bufferSourceHostObject = std::make_shared<AudioBufferSourceNodeHostObject>(bufferSource);
249
+ auto bufferSourceHostObject =
250
+ std::make_shared<AudioBufferSourceNodeHostObject>(context_, audioBufferSourceOptions);
251
251
  return jsi::Object::createFromHostObject(runtime, bufferSourceHostObject);
252
252
  }
253
253
 
@@ -255,15 +255,15 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createBufferQueueSource) {
255
255
  const auto options = args[0].asObject(runtime);
256
256
  const auto baseAudioBufferSourceOptions =
257
257
  audioapi::option_parser::parseBaseAudioBufferSourceOptions(runtime, options);
258
- auto bufferSource = context_->createBufferQueueSource(baseAudioBufferSourceOptions);
259
- auto bufferStreamSourceHostObject =
260
- std::make_shared<AudioBufferQueueSourceNodeHostObject>(bufferSource);
258
+ auto bufferStreamSourceHostObject = std::make_shared<AudioBufferQueueSourceNodeHostObject>(
259
+ context_, baseAudioBufferSourceOptions);
261
260
  return jsi::Object::createFromHostObject(runtime, bufferStreamSourceHostObject);
262
261
  }
263
262
 
264
263
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createBuffer) {
265
264
  const auto options = args[0].asObject(runtime);
266
- const auto audioBufferOptions = audioapi::option_parser::parseAudioBufferOptions(runtime, options);
265
+ const auto audioBufferOptions =
266
+ audioapi::option_parser::parseAudioBufferOptions(runtime, options);
267
267
  auto buffer = BaseAudioContext::createBuffer(audioBufferOptions);
268
268
  auto bufferHostObject = std::make_shared<AudioBufferHostObject>(buffer);
269
269
 
@@ -300,19 +300,19 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createPeriodicWave) {
300
300
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createAnalyser) {
301
301
  const auto options = args[0].asObject(runtime);
302
302
  const auto analyserOptions = audioapi::option_parser::parseAnalyserOptions(runtime, options);
303
- auto analyser = context_->createAnalyser(analyserOptions);
304
- auto analyserHostObject = std::make_shared<AnalyserNodeHostObject>(analyser);
303
+ auto analyserHostObject = std::make_shared<AnalyserNodeHostObject>(context_, analyserOptions);
305
304
  return jsi::Object::createFromHostObject(runtime, analyserHostObject);
306
305
  }
307
306
 
308
307
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createConvolver) {
309
308
  const auto options = args[0].asObject(runtime);
310
309
  const auto convolverOptions = audioapi::option_parser::parseConvolverOptions(runtime, options);
311
- auto convolver = context_->createConvolver(convolverOptions);
312
- auto convolverHostObject = std::make_shared<ConvolverNodeHostObject>(convolver);
310
+ auto convolverHostObject = std::make_shared<ConvolverNodeHostObject>(context_, convolverOptions);
313
311
  auto jsiObject = jsi::Object::createFromHostObject(runtime, convolverHostObject);
314
312
  if (convolverOptions.bus != nullptr) {
315
- auto bufferHostObject = options.getProperty(runtime, "buffer").getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
313
+ auto bufferHostObject = options.getProperty(runtime, "buffer")
314
+ .getObject(runtime)
315
+ .asHostObject<AudioBufferHostObject>(runtime);
316
316
  jsiObject.setExternalMemoryPressure(runtime, bufferHostObject->getSizeInBytes());
317
317
  }
318
318
  return jsiObject;
@@ -321,8 +321,8 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createConvolver) {
321
321
  JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createWaveShaper) {
322
322
  const auto options = args[0].asObject(runtime);
323
323
  const auto waveShaperOptions = audioapi::option_parser::parseWaveShaperOptions(runtime, options);
324
- auto waveShaper = context_->createWaveShaper(waveShaperOptions);
325
- auto waveShaperHostObject = std::make_shared<WaveShaperNodeHostObject>(waveShaper);
324
+ auto waveShaperHostObject =
325
+ std::make_shared<WaveShaperNodeHostObject>(context_, waveShaperOptions);
326
326
  return jsi::Object::createFromHostObject(runtime, waveShaperHostObject);
327
327
  }
328
328
  } // namespace audioapi
@@ -13,6 +13,7 @@ namespace audioapi {
13
13
  using namespace facebook;
14
14
 
15
15
  class BaseAudioContext;
16
+ class AudioDestinationNodeHostObject;
16
17
 
17
18
  class BaseAudioContextHostObject : public JsiHostObject {
18
19
  public:
@@ -48,10 +49,11 @@ class BaseAudioContextHostObject : public JsiHostObject {
48
49
  JSI_HOST_FUNCTION_DECL(createWaveShaper);
49
50
  JSI_HOST_FUNCTION_DECL(createDelay);
50
51
 
51
- std::shared_ptr<BaseAudioContext> context_;
52
-
53
52
  protected:
53
+ std::shared_ptr<BaseAudioContext> context_;
54
54
  std::shared_ptr<PromiseVendor> promiseVendor_;
55
55
  std::shared_ptr<react::CallInvoker> callInvoker_;
56
+
57
+ std::shared_ptr<AudioDestinationNodeHostObject> destination_;
56
58
  };
57
59
  } // namespace audioapi
@@ -8,10 +8,14 @@
8
8
  namespace audioapi {
9
9
 
10
10
  OfflineAudioContextHostObject::OfflineAudioContextHostObject(
11
- const std::shared_ptr<OfflineAudioContext> &offlineAudioContext,
12
- jsi::Runtime *runtime,
13
- const std::shared_ptr<react::CallInvoker> &callInvoker)
14
- : BaseAudioContextHostObject(offlineAudioContext, runtime, callInvoker) {
11
+ int numberOfChannels,
12
+ size_t length,
13
+ float sampleRate,
14
+ const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry,
15
+ const RuntimeRegistry &runtimeRegistry,
16
+ jsi::Runtime *runtime,
17
+ const std::shared_ptr<react::CallInvoker> &callInvoker)
18
+ : BaseAudioContextHostObject(std::make_shared<OfflineAudioContext>(numberOfChannels, length, sampleRate, audioEventHandlerRegistry, runtimeRegistry), runtime, callInvoker) {
15
19
  addFunctions(
16
20
  JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, resume),
17
21
  JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, suspend),
@@ -1,6 +1,8 @@
1
1
  #pragma once
2
2
 
3
3
  #include <audioapi/HostObjects/BaseAudioContextHostObject.h>
4
+ #include <audioapi/core/utils/worklets/SafeIncludes.h>
5
+ #include <audioapi/events/IAudioEventHandlerRegistry.h>
4
6
 
5
7
  #include <jsi/jsi.h>
6
8
  #include <memory>
@@ -15,7 +17,11 @@ class OfflineAudioContext;
15
17
  class OfflineAudioContextHostObject : public BaseAudioContextHostObject {
16
18
  public:
17
19
  explicit OfflineAudioContextHostObject(
18
- const std::shared_ptr<OfflineAudioContext> &offlineAudioContext,
20
+ int numberOfChannels,
21
+ size_t length,
22
+ float sampleRate,
23
+ const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry,
24
+ const RuntimeRegistry &runtimeRegistry,
19
25
  jsi::Runtime *runtime,
20
26
  const std::shared_ptr<react::CallInvoker> &callInvoker);
21
27
 
@@ -1,13 +1,15 @@
1
1
  #include <audioapi/HostObjects/analysis/AnalyserNodeHostObject.h>
2
-
3
- #include <audioapi/core/analysis/AnalyserNode.h>
2
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
4
3
  #include <audioapi/HostObjects/utils/JsEnumParser.h>
4
+ #include <audioapi/core/BaseAudioContext.h>
5
+ #include <audioapi/core/analysis/AnalyserNode.h>
6
+
5
7
  #include <memory>
6
8
 
7
9
  namespace audioapi {
8
10
 
9
- AnalyserNodeHostObject::AnalyserNodeHostObject(const std::shared_ptr<AnalyserNode> &node)
10
- : AudioNodeHostObject(node) {
11
+ AnalyserNodeHostObject::AnalyserNodeHostObject(const std::shared_ptr<BaseAudioContext>& context, const AnalyserOptions &options)
12
+ : AudioNodeHostObject(context->createAnalyser(options)) {
11
13
  addGetters(
12
14
  JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, fftSize),
13
15
  JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, frequencyBinCount),
@@ -1,7 +1,6 @@
1
1
  #pragma once
2
2
 
3
3
  #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
- #include <audioapi/core/analysis/AnalyserNode.h>
5
4
 
6
5
  #include <memory>
7
6
  #include <string>
@@ -10,9 +9,14 @@
10
9
  namespace audioapi {
11
10
  using namespace facebook;
12
11
 
12
+ struct AnalyserOptions;
13
+ class BaseAudioContext;
14
+
13
15
  class AnalyserNodeHostObject : public AudioNodeHostObject {
14
16
  public:
15
- explicit AnalyserNodeHostObject(const std::shared_ptr<AnalyserNode> &node);
17
+ explicit AnalyserNodeHostObject(
18
+ const std::shared_ptr<BaseAudioContext> &context,
19
+ const AnalyserOptions &options);
16
20
 
17
21
  JSI_PROPERTY_GETTER_DECL(fftSize);
18
22
  JSI_PROPERTY_GETTER_DECL(frequencyBinCount);
@@ -1,15 +1,18 @@
1
1
  #include <audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h>
2
-
3
2
  #include <audioapi/HostObjects/AudioParamHostObject.h>
4
- #include <audioapi/core/effects/BiquadFilterNode.h>
5
3
  #include <audioapi/HostObjects/utils/JsEnumParser.h>
4
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
5
+ #include <audioapi/core/BaseAudioContext.h>
6
+ #include <audioapi/core/effects/BiquadFilterNode.h>
7
+ #include <audioapi/core/types/BiquadFilterType.h>
8
+
6
9
  #include <memory>
7
10
 
8
11
  namespace audioapi {
9
12
 
10
- BiquadFilterNodeHostObject::BiquadFilterNodeHostObject(
11
- const std::shared_ptr<BiquadFilterNode> &node)
12
- : AudioNodeHostObject(node) {
13
+ BiquadFilterNodeHostObject::BiquadFilterNodeHostObject(const std::shared_ptr<BaseAudioContext>& context,
14
+ const BiquadFilterOptions &options)
15
+ : AudioNodeHostObject(context->createBiquadFilter(options)) {
13
16
  addGetters(
14
17
  JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, frequency),
15
18
  JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, detune),
@@ -1,7 +1,6 @@
1
1
  #pragma once
2
2
 
3
3
  #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
- #include <audioapi/core/types/BiquadFilterType.h>
5
4
 
6
5
  #include <memory>
7
6
  #include <string>
@@ -10,11 +9,14 @@
10
9
  namespace audioapi {
11
10
  using namespace facebook;
12
11
 
13
- class BiquadFilterNode;
12
+ struct BiquadFilterOptions;
13
+ class BaseAudioContext;
14
14
 
15
15
  class BiquadFilterNodeHostObject : public AudioNodeHostObject {
16
16
  public:
17
- explicit BiquadFilterNodeHostObject(const std::shared_ptr<BiquadFilterNode> &node);
17
+ explicit BiquadFilterNodeHostObject(
18
+ const std::shared_ptr<BaseAudioContext> &context,
19
+ const BiquadFilterOptions &options);
18
20
 
19
21
  JSI_PROPERTY_GETTER_DECL(frequency);
20
22
  JSI_PROPERTY_GETTER_DECL(detune);
@@ -1,13 +1,15 @@
1
1
  #include <audioapi/HostObjects/effects/ConvolverNodeHostObject.h>
2
-
3
2
  #include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
3
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
4
+ #include <audioapi/core/BaseAudioContext.h>
4
5
  #include <audioapi/core/effects/ConvolverNode.h>
6
+
5
7
  #include <memory>
6
8
 
7
9
  namespace audioapi {
8
10
 
9
- ConvolverNodeHostObject::ConvolverNodeHostObject(const std::shared_ptr<ConvolverNode> &node)
10
- : AudioNodeHostObject(node) {
11
+ ConvolverNodeHostObject::ConvolverNodeHostObject(const std::shared_ptr<BaseAudioContext>& context, const ConvolverOptions &options)
12
+ : AudioNodeHostObject(context->createConvolver(options)) {
11
13
  addGetters(
12
14
  JSI_EXPORT_PROPERTY_GETTER(ConvolverNodeHostObject, normalize),
13
15
  JSI_EXPORT_PROPERTY_GETTER(ConvolverNodeHostObject, buffer));
@@ -7,11 +7,14 @@
7
7
  namespace audioapi {
8
8
  using namespace facebook;
9
9
 
10
- class ConvolverNode;
10
+ struct ConvolverOptions;
11
+ class BaseAudioContext;
11
12
 
12
13
  class ConvolverNodeHostObject : public AudioNodeHostObject {
13
14
  public:
14
- explicit ConvolverNodeHostObject(const std::shared_ptr<ConvolverNode> &node);
15
+ explicit ConvolverNodeHostObject(
16
+ const std::shared_ptr<BaseAudioContext> &context,
17
+ const ConvolverOptions &options);
15
18
  JSI_PROPERTY_GETTER_DECL(normalize);
16
19
  JSI_PROPERTY_GETTER_DECL(buffer);
17
20
  JSI_PROPERTY_SETTER_DECL(normalize);
@@ -1,14 +1,15 @@
1
1
  #include <audioapi/HostObjects/effects/DelayNodeHostObject.h>
2
-
3
2
  #include <audioapi/HostObjects/AudioParamHostObject.h>
4
3
  #include <audioapi/core/BaseAudioContext.h>
5
4
  #include <audioapi/core/effects/DelayNode.h>
5
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
6
+
6
7
  #include <memory>
7
8
 
8
9
  namespace audioapi {
9
10
 
10
- DelayNodeHostObject::DelayNodeHostObject(const std::shared_ptr<DelayNode> &node)
11
- : AudioNodeHostObject(node) {
11
+ DelayNodeHostObject::DelayNodeHostObject(const std::shared_ptr<BaseAudioContext>& context, const DelayOptions &options)
12
+ : AudioNodeHostObject(context->createDelay(options)) {
12
13
  addGetters(JSI_EXPORT_PROPERTY_GETTER(DelayNodeHostObject, delayTime));
13
14
  }
14
15
 
@@ -8,11 +8,14 @@
8
8
  namespace audioapi {
9
9
  using namespace facebook;
10
10
 
11
- class DelayNode;
11
+ struct DelayOptions;
12
+ class BaseAudioContext;
12
13
 
13
14
  class DelayNodeHostObject : public AudioNodeHostObject {
14
15
  public:
15
- explicit DelayNodeHostObject(const std::shared_ptr<DelayNode> &node);
16
+ explicit DelayNodeHostObject(
17
+ const std::shared_ptr<BaseAudioContext> &context,
18
+ const DelayOptions &options);
16
19
 
17
20
  [[nodiscard]] size_t getSizeInBytes() const;
18
21
 
@@ -1,13 +1,17 @@
1
1
  #include <audioapi/HostObjects/effects/GainNodeHostObject.h>
2
2
 
3
3
  #include <audioapi/HostObjects/AudioParamHostObject.h>
4
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
5
+ #include <audioapi/core/BaseAudioContext.h>
4
6
  #include <audioapi/core/effects/GainNode.h>
5
7
  #include <memory>
6
8
 
7
9
  namespace audioapi {
8
10
 
9
- GainNodeHostObject::GainNodeHostObject(const std::shared_ptr<GainNode> &node)
10
- : AudioNodeHostObject(node) {
11
+ GainNodeHostObject::GainNodeHostObject(
12
+ const std::shared_ptr<BaseAudioContext> &context,
13
+ const GainOptions &options)
14
+ : AudioNodeHostObject(context->createGain(options)) {
11
15
  addGetters(JSI_EXPORT_PROPERTY_GETTER(GainNodeHostObject, gain));
12
16
  }
13
17
 
@@ -8,11 +8,14 @@
8
8
  namespace audioapi {
9
9
  using namespace facebook;
10
10
 
11
- class GainNode;
11
+ struct GainOptions;
12
+ class BaseAudioContext;
12
13
 
13
14
  class GainNodeHostObject : public AudioNodeHostObject {
14
15
  public:
15
- explicit GainNodeHostObject(const std::shared_ptr<GainNode> &node);
16
+ explicit GainNodeHostObject(
17
+ const std::shared_ptr<BaseAudioContext> &context,
18
+ const GainOptions &options);
16
19
 
17
20
  JSI_PROPERTY_GETTER_DECL(gain);
18
21
  };
@@ -1,11 +1,15 @@
1
1
  #include <audioapi/HostObjects/effects/IIRFilterNodeHostObject.h>
2
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
3
+ #include <audioapi/core/BaseAudioContext.h>
2
4
  #include <audioapi/core/effects/IIRFilterNode.h>
3
5
  #include <memory>
4
6
 
5
7
  namespace audioapi {
6
8
 
7
- IIRFilterNodeHostObject::IIRFilterNodeHostObject(const std::shared_ptr<IIRFilterNode> &node)
8
- : AudioNodeHostObject(node) {
9
+ IIRFilterNodeHostObject::IIRFilterNodeHostObject(
10
+ const std::shared_ptr<BaseAudioContext> &context,
11
+ const IIRFilterOptions &options)
12
+ : AudioNodeHostObject(context->createIIRFilter(options)) {
9
13
 
10
14
  addFunctions(JSI_EXPORT_FUNCTION(IIRFilterNodeHostObject, getFrequencyResponse));
11
15
  }
@@ -9,11 +9,14 @@
9
9
  namespace audioapi {
10
10
  using namespace facebook;
11
11
 
12
- class IIRFilterNode;
12
+ struct IIRFilterOptions;
13
+ class BaseAudioContext;
13
14
 
14
15
  class IIRFilterNodeHostObject : public AudioNodeHostObject {
15
16
  public:
16
- explicit IIRFilterNodeHostObject(const std::shared_ptr<IIRFilterNode> &node);
17
+ explicit IIRFilterNodeHostObject(
18
+ const std::shared_ptr<BaseAudioContext> &context,
19
+ const IIRFilterOptions &options);
17
20
 
18
21
  JSI_HOST_FUNCTION_DECL(getFrequencyResponse);
19
22
  };
@@ -1,14 +1,17 @@
1
1
  #include <audioapi/HostObjects/effects/StereoPannerNodeHostObject.h>
2
2
 
3
3
  #include <audioapi/HostObjects/AudioParamHostObject.h>
4
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
5
+ #include <audioapi/core/BaseAudioContext.h>
4
6
  #include <audioapi/core/effects/StereoPannerNode.h>
5
7
  #include <memory>
6
8
 
7
9
  namespace audioapi {
8
10
 
9
11
  StereoPannerNodeHostObject::StereoPannerNodeHostObject(
10
- const std::shared_ptr<StereoPannerNode> &node)
11
- : AudioNodeHostObject(node) {
12
+ const std::shared_ptr<BaseAudioContext> &context,
13
+ const StereoPannerOptions &options)
14
+ : AudioNodeHostObject(context->createStereoPanner(options)) {
12
15
  addGetters(JSI_EXPORT_PROPERTY_GETTER(StereoPannerNodeHostObject, pan));
13
16
  }
14
17
 
@@ -9,11 +9,14 @@
9
9
  namespace audioapi {
10
10
  using namespace facebook;
11
11
 
12
- class StereoPannerNode;
12
+ struct StereoPannerOptions;
13
+ class BaseAudioContext;
13
14
 
14
15
  class StereoPannerNodeHostObject : public AudioNodeHostObject {
15
16
  public:
16
- explicit StereoPannerNodeHostObject(const std::shared_ptr<StereoPannerNode> &node);
17
+ explicit StereoPannerNodeHostObject(
18
+ const std::shared_ptr<BaseAudioContext> &context,
19
+ const StereoPannerOptions &options);
17
20
 
18
21
  JSI_PROPERTY_GETTER_DECL(pan);
19
22
  };
@@ -1,15 +1,19 @@
1
1
  #include <audioapi/HostObjects/effects/WaveShaperNodeHostObject.h>
2
+ #include <audioapi/HostObjects/utils/JsEnumParser.h>
3
+ #include <audioapi/HostObjects/utils/NodeOptions.h>
4
+ #include <audioapi/core/BaseAudioContext.h>
2
5
  #include <audioapi/core/effects/WaveShaperNode.h>
3
6
  #include <audioapi/jsi/AudioArrayBuffer.h>
4
- #include <audioapi/HostObjects/utils/JsEnumParser.h>
5
7
 
6
8
  #include <memory>
7
9
  #include <string>
8
10
 
9
11
  namespace audioapi {
10
12
 
11
- WaveShaperNodeHostObject::WaveShaperNodeHostObject(const std::shared_ptr<WaveShaperNode> &node)
12
- : AudioNodeHostObject(node) {
13
+ WaveShaperNodeHostObject::WaveShaperNodeHostObject(
14
+ const std::shared_ptr<BaseAudioContext> &context,
15
+ const WaveShaperOptions &options)
16
+ : AudioNodeHostObject(context->createWaveShaper(options)) {
13
17
  addGetters(
14
18
  JSI_EXPORT_PROPERTY_GETTER(WaveShaperNodeHostObject, oversample),
15
19
  JSI_EXPORT_PROPERTY_GETTER(WaveShaperNodeHostObject, curve));
@@ -20,7 +24,8 @@ WaveShaperNodeHostObject::WaveShaperNodeHostObject(const std::shared_ptr<WaveSha
20
24
 
21
25
  JSI_PROPERTY_GETTER_IMPL(WaveShaperNodeHostObject, oversample) {
22
26
  auto waveShaperNode = std::static_pointer_cast<WaveShaperNode>(node_);
23
- return jsi::String::createFromUtf8(runtime, js_enum_parser::overSampleTypeToString(waveShaperNode->getOversample()));
27
+ return jsi::String::createFromUtf8(
28
+ runtime, js_enum_parser::overSampleTypeToString(waveShaperNode->getOversample()));
24
29
  }
25
30
 
26
31
  JSI_PROPERTY_GETTER_IMPL(WaveShaperNodeHostObject, curve) {
@@ -10,11 +10,14 @@
10
10
  namespace audioapi {
11
11
  using namespace facebook;
12
12
 
13
- class WaveShaperNode;
13
+ struct WaveShaperOptions;
14
+ class BaseAudioContext;
14
15
 
15
16
  class WaveShaperNodeHostObject : public AudioNodeHostObject {
16
17
  public:
17
- explicit WaveShaperNodeHostObject(const std::shared_ptr<WaveShaperNode> &node);
18
+ explicit WaveShaperNodeHostObject(
19
+ const std::shared_ptr<BaseAudioContext> &context,
20
+ const WaveShaperOptions &options);
18
21
 
19
22
  JSI_PROPERTY_GETTER_DECL(oversample);
20
23
  JSI_PROPERTY_GETTER_DECL(curve);
@@ -1,6 +1,7 @@
1
1
  #include <audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h>
2
2
 
3
3
  #include <audioapi/events/AudioEventHandlerRegistry.h>
4
+ #include <audioapi/HostObjects/utils/JsEnumParser.h>
4
5
  #include <memory>
5
6
 
6
7
  namespace audioapi {
@@ -18,7 +19,7 @@ JSI_HOST_FUNCTION_IMPL(AudioEventHandlerRegistryHostObject, addAudioEventListene
18
19
  auto eventName = args[0].getString(runtime).utf8(runtime);
19
20
  auto callback = std::make_shared<jsi::Function>(args[1].getObject(runtime).getFunction(runtime));
20
21
 
21
- auto listenerId = eventHandlerRegistry_->registerHandler(eventName, callback);
22
+ auto listenerId = eventHandlerRegistry_->registerHandler(js_enum_parser::audioEventFromString(eventName), callback);
22
23
 
23
24
  return jsi::String::createFromUtf8(runtime, std::to_string(listenerId));
24
25
  }
@@ -27,7 +28,7 @@ JSI_HOST_FUNCTION_IMPL(AudioEventHandlerRegistryHostObject, removeAudioEventList
27
28
  auto eventName = args[0].getString(runtime).utf8(runtime);
28
29
  uint64_t listenerId = std::stoull(args[1].getString(runtime).utf8(runtime));
29
30
 
30
- eventHandlerRegistry_->unregisterHandler(eventName, listenerId);
31
+ eventHandlerRegistry_->unregisterHandler(js_enum_parser::audioEventFromString(eventName), listenerId);
31
32
 
32
33
  return jsi::Value::undefined();
33
34
  }
@@ -6,6 +6,7 @@
6
6
  #include <audioapi/core/sources/AudioBuffer.h>
7
7
  #include <audioapi/events/AudioEventHandlerRegistry.h>
8
8
  #include <audioapi/utils/AudioFileProperties.h>
9
+ #include <audioapi/jsi/JsiUtils.h>
9
10
  #ifdef ANDROID
10
11
  #include <audioapi/android/core/AndroidAudioRecorder.h>
11
12
  #else
@@ -41,7 +42,7 @@ AudioRecorderHostObject::AudioRecorderHostObject(
41
42
  }
42
43
 
43
44
  JSI_HOST_FUNCTION_IMPL(AudioRecorderHostObject, start) {
44
- auto fileNameOverride = count > 0 ? args[0].getString(runtime).utf8(runtime) : "";
45
+ auto fileNameOverride = jsiutils::argToString(runtime, args, count, 0, "");
45
46
  auto result = audioRecorder_->start(fileNameOverride);
46
47
  auto jsResult = jsi::Object(runtime);
47
48