react-native-audio-api 0.11.0-nightly-141c86f-20251118 → 0.11.0-nightly-4e6f25c-20251119

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 (167) hide show
  1. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +10 -16
  2. package/android/src/main/cpp/audioapi/android/OnLoad.cpp +1 -2
  3. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +4 -4
  4. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +11 -20
  5. package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +24 -46
  6. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +48 -78
  7. package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +20 -21
  8. package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +3 -4
  9. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +6 -8
  10. package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +2 -2
  11. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +42 -78
  12. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +1 -1
  13. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +14 -18
  14. package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +3 -3
  15. package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +1 -2
  16. package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +1 -2
  17. package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +10 -18
  18. package/common/cpp/audioapi/HostObjects/destinations/AudioDestinationNodeHostObject.h +2 -3
  19. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +16 -28
  20. package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +1 -2
  21. package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.cpp +4 -6
  22. package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +2 -2
  23. package/common/cpp/audioapi/HostObjects/effects/PeriodicWaveHostObject.h +1 -2
  24. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +2 -2
  25. package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +1 -2
  26. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +6 -12
  27. package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +7 -7
  28. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +8 -10
  29. package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +1 -1
  30. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +13 -27
  31. package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +11 -12
  32. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +15 -22
  33. package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +5 -7
  34. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +7 -12
  35. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +8 -9
  36. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +16 -30
  37. package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +2 -4
  38. package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +6 -10
  39. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +2 -2
  40. package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +1 -2
  41. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +6 -8
  42. package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +1 -2
  43. package/common/cpp/audioapi/HostObjects/sources/RecorderAdapterNodeHostObject.h +4 -5
  44. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +2 -2
  45. package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +5 -6
  46. package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +1 -2
  47. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +39 -60
  48. package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +4 -8
  49. package/common/cpp/audioapi/core/AudioContext.cpp +4 -4
  50. package/common/cpp/audioapi/core/AudioContext.h +5 -2
  51. package/common/cpp/audioapi/core/AudioNode.cpp +13 -19
  52. package/common/cpp/audioapi/core/AudioNode.h +14 -7
  53. package/common/cpp/audioapi/core/AudioParam.cpp +66 -98
  54. package/common/cpp/audioapi/core/AudioParam.h +20 -12
  55. package/common/cpp/audioapi/core/BaseAudioContext.cpp +22 -34
  56. package/common/cpp/audioapi/core/BaseAudioContext.h +19 -15
  57. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +12 -17
  58. package/common/cpp/audioapi/core/OfflineAudioContext.h +10 -5
  59. package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +13 -21
  60. package/common/cpp/audioapi/core/analysis/AnalyserNode.h +8 -6
  61. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.cpp +1 -0
  62. package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +5 -3
  63. package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +17 -36
  64. package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +2 -9
  65. package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +18 -28
  66. package/common/cpp/audioapi/core/effects/ConvolverNode.h +19 -10
  67. package/common/cpp/audioapi/core/effects/GainNode.cpp +1 -0
  68. package/common/cpp/audioapi/core/effects/GainNode.h +3 -1
  69. package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +22 -35
  70. package/common/cpp/audioapi/core/effects/PeriodicWave.h +4 -9
  71. package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +4 -5
  72. package/common/cpp/audioapi/core/effects/StereoPannerNode.h +4 -2
  73. package/common/cpp/audioapi/core/effects/WorkletNode.cpp +11 -13
  74. package/common/cpp/audioapi/core/effects/WorkletNode.h +15 -12
  75. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +4 -4
  76. package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +15 -14
  77. package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +9 -8
  78. package/common/cpp/audioapi/core/inputs/AudioRecorder.h +4 -5
  79. package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +4 -6
  80. package/common/cpp/audioapi/core/sources/AudioBuffer.h +4 -7
  81. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +31 -53
  82. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +35 -33
  83. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +19 -20
  84. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +38 -36
  85. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +25 -40
  86. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +3 -1
  87. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +9 -9
  88. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +3 -3
  89. package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +3 -4
  90. package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +3 -1
  91. package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +12 -23
  92. package/common/cpp/audioapi/core/sources/OscillatorNode.h +6 -4
  93. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +3 -4
  94. package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +18 -16
  95. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +7 -4
  96. package/common/cpp/audioapi/core/sources/StreamerNode.h +38 -30
  97. package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +5 -7
  98. package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +15 -13
  99. package/common/cpp/audioapi/core/types/AudioFormat.h +1 -11
  100. package/common/cpp/audioapi/core/utils/AudioDecoder.h +15 -6
  101. package/common/cpp/audioapi/core/utils/AudioNodeDestructor.cpp +5 -6
  102. package/common/cpp/audioapi/core/utils/AudioNodeDestructor.h +7 -10
  103. package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +13 -22
  104. package/common/cpp/audioapi/core/utils/AudioNodeManager.h +8 -11
  105. package/common/cpp/audioapi/core/utils/AudioParamEventQueue.cpp +3 -3
  106. package/common/cpp/audioapi/core/utils/AudioParamEventQueue.h +5 -5
  107. package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +6 -6
  108. package/common/cpp/audioapi/core/utils/Constants.h +5 -3
  109. package/common/cpp/audioapi/core/utils/ParamChangeEvent.cpp +1 -0
  110. package/common/cpp/audioapi/core/utils/ParamChangeEvent.h +9 -9
  111. package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +29 -34
  112. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +14 -16
  113. package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +23 -19
  114. package/common/cpp/audioapi/dsp/AudioUtils.cpp +3 -9
  115. package/common/cpp/audioapi/dsp/AudioUtils.h +1 -1
  116. package/common/cpp/audioapi/dsp/Convolver.cpp +13 -25
  117. package/common/cpp/audioapi/dsp/Convolver.h +26 -24
  118. package/common/cpp/audioapi/dsp/FFT.cpp +1 -1
  119. package/common/cpp/audioapi/dsp/FFT.h +5 -13
  120. package/common/cpp/audioapi/dsp/VectorMath.cpp +9 -43
  121. package/common/cpp/audioapi/dsp/VectorMath.h +35 -8
  122. package/common/cpp/audioapi/dsp/Windows.cpp +4 -9
  123. package/common/cpp/audioapi/dsp/Windows.h +24 -23
  124. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +12 -17
  125. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +44 -39
  126. package/common/cpp/audioapi/events/IAudioEventHandlerRegistry.h +15 -7
  127. package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +4 -5
  128. package/common/cpp/audioapi/jsi/JsiHostObject.cpp +11 -13
  129. package/common/cpp/audioapi/jsi/JsiHostObject.h +26 -33
  130. package/common/cpp/audioapi/jsi/JsiPromise.cpp +11 -21
  131. package/common/cpp/audioapi/jsi/JsiPromise.h +55 -46
  132. package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.cpp +7 -10
  133. package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.h +1 -3
  134. package/common/cpp/audioapi/utils/AudioArray.cpp +3 -8
  135. package/common/cpp/audioapi/utils/AudioArray.h +3 -11
  136. package/common/cpp/audioapi/utils/AudioBus.cpp +51 -149
  137. package/common/cpp/audioapi/utils/AudioBus.h +15 -15
  138. package/common/cpp/audioapi/utils/CircularAudioArray.cpp +6 -18
  139. package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.cpp +6 -10
  140. package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.h +2 -2
  141. package/common/cpp/test/src/AudioParamTest.cpp +3 -2
  142. package/common/cpp/test/src/AudioScheduledSourceTest.cpp +14 -35
  143. package/common/cpp/test/src/ConstantSourceTest.cpp +4 -6
  144. package/common/cpp/test/src/GainTest.cpp +3 -4
  145. package/common/cpp/test/src/MockAudioEventHandlerRegistry.h +19 -11
  146. package/common/cpp/test/src/OscillatorTest.cpp +1 -0
  147. package/common/cpp/test/src/StereoPannerTest.cpp +5 -8
  148. package/common/cpp/test/src/biquad/BiquadFilterChromium.cpp +10 -27
  149. package/common/cpp/test/src/biquad/BiquadFilterChromium.h +7 -6
  150. package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +16 -28
  151. package/common/cpp/test/src/biquad/BiquadFilterTest.h +13 -6
  152. package/ios/audioapi/ios/AudioAPIModule.h +4 -6
  153. package/ios/audioapi/ios/AudioAPIModule.mm +31 -46
  154. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +24 -33
  155. package/ios/audioapi/ios/core/IOSAudioRecorder.h +1 -2
  156. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +4 -6
  157. package/ios/audioapi/ios/core/NativeAudioPlayer.m +3 -5
  158. package/ios/audioapi/ios/core/NativeAudioRecorder.h +1 -2
  159. package/ios/audioapi/ios/core/NativeAudioRecorder.m +21 -33
  160. package/ios/audioapi/ios/core/utils/AudioDecoder.mm +17 -37
  161. package/ios/audioapi/ios/system/AudioEngine.h +2 -4
  162. package/ios/audioapi/ios/system/AudioEngine.mm +7 -19
  163. package/ios/audioapi/ios/system/AudioSessionManager.h +2 -4
  164. package/ios/audioapi/ios/system/AudioSessionManager.mm +17 -32
  165. package/ios/audioapi/ios/system/LockScreenManager.mm +73 -105
  166. package/ios/audioapi/ios/system/NotificationManager.mm +43 -68
  167. package/package.json +2 -2
@@ -10,30 +10,32 @@
10
10
  #include <utility>
11
11
  #include <vector>
12
12
 
13
- #define JSI_HOST_FUNCTION_DECL(name) jsi::Value name(jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
14
- #define JSI_HOST_FUNCTION_IMPL(CLASS, name) jsi::Value CLASS::name(jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
15
- #define JSI_EXPORT_FUNCTION(CLASS, FUNCTION) \
16
- std::make_pair( \
17
- std::string(#FUNCTION), \
18
- static_cast<jsi::Value (JsiHostObject::*)( \
19
- jsi::Runtime &, const jsi::Value &, const jsi::Value *, size_t)>( \
20
- &CLASS::FUNCTION))
13
+ #define JSI_HOST_FUNCTION_DECL(name) \
14
+ jsi::Value name( \
15
+ jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
16
+ #define JSI_HOST_FUNCTION_IMPL(CLASS, name) \
17
+ jsi::Value CLASS::name( \
18
+ jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
19
+ #define JSI_EXPORT_FUNCTION(CLASS, FUNCTION) \
20
+ std::make_pair( \
21
+ std::string(#FUNCTION), \
22
+ static_cast<jsi::Value (JsiHostObject::*)( \
23
+ jsi::Runtime &, const jsi::Value &, const jsi::Value *, size_t)>(&CLASS::FUNCTION))
21
24
 
22
25
  #define JSI_PROPERTY_GETTER_DECL(name) jsi::Value name(jsi::Runtime &runtime)
23
26
  #define JSI_PROPERTY_GETTER_IMPL(CLASS, name) jsi::Value CLASS::name(jsi::Runtime &runtime)
24
- #define JSI_EXPORT_PROPERTY_GETTER(CLASS, FUNCTION) \
25
- std::make_pair( \
26
- std::string(#FUNCTION), \
27
- static_cast<jsi::Value (JsiHostObject::*)(jsi::Runtime &)>( \
28
- &CLASS::FUNCTION))
27
+ #define JSI_EXPORT_PROPERTY_GETTER(CLASS, FUNCTION) \
28
+ std::make_pair( \
29
+ std::string(#FUNCTION), \
30
+ static_cast<jsi::Value (JsiHostObject::*)(jsi::Runtime &)>(&CLASS::FUNCTION))
29
31
 
30
32
  #define JSI_PROPERTY_SETTER_DECL(name) void name(jsi::Runtime &runtime, const jsi::Value &value)
31
- #define JSI_PROPERTY_SETTER_IMPL(CLASS, name) void CLASS::name(jsi::Runtime &runtime, const jsi::Value &value)
33
+ #define JSI_PROPERTY_SETTER_IMPL(CLASS, name) \
34
+ void CLASS::name(jsi::Runtime &runtime, const jsi::Value &value)
32
35
  #define JSI_EXPORT_PROPERTY_SETTER(CLASS, FUNCTION) \
33
- std::make_pair( \
34
- std::string(#FUNCTION), \
35
- static_cast<void (JsiHostObject::*)( \
36
- jsi::Runtime &, const jsi::Value &)>(&CLASS::FUNCTION))
36
+ std::make_pair( \
37
+ std::string(#FUNCTION), \
38
+ static_cast<void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>(&CLASS::FUNCTION))
37
39
 
38
40
  namespace audioapi {
39
41
 
@@ -52,10 +54,7 @@ class JsiHostObject : public jsi::HostObject {
52
54
 
53
55
  jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
54
56
 
55
- void set(
56
- jsi::Runtime &runtime,
57
- const jsi::PropNameID &name,
58
- const jsi::Value &value) override;
57
+ void set(jsi::Runtime &runtime, const jsi::PropNameID &name, const jsi::Value &value) override;
59
58
 
60
59
  template <typename... Args>
61
60
  void addGetters(Args... args) {
@@ -73,23 +72,17 @@ class JsiHostObject : public jsi::HostObject {
73
72
  }
74
73
 
75
74
  protected:
76
- std::unique_ptr<std::unordered_map<
77
- std::string,
78
- jsi::Value (JsiHostObject::*)(jsi::Runtime &)>>
75
+ std::unique_ptr<std::unordered_map<std::string, jsi::Value (JsiHostObject::*)(jsi::Runtime &)>>
79
76
  getters_;
80
77
 
81
78
  std::unique_ptr<std::unordered_map<
82
79
  std::string,
83
- jsi::Value (JsiHostObject::*)(
84
- jsi::Runtime &,
85
- const jsi::Value &,
86
- const jsi::Value *,
87
- size_t)>>
80
+ jsi::Value (
81
+ JsiHostObject::*)(jsi::Runtime &, const jsi::Value &, const jsi::Value *, size_t)>>
88
82
  functions_;
89
83
 
90
- std::unique_ptr<std::unordered_map<
91
- std::string,
92
- void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>>
84
+ std::unique_ptr<
85
+ std::unordered_map<std::string, void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>>
93
86
  setters_;
94
87
 
95
88
  private:
@@ -1,12 +1,14 @@
1
1
  #include <audioapi/jsi/JsiPromise.h>
2
+ #include <memory>
2
3
  #include <stdexcept>
4
+ #include <string>
5
+ #include <utility>
3
6
 
4
7
  namespace audioapi {
5
8
 
6
9
  using namespace facebook;
7
10
 
8
- jsi::Value PromiseVendor::createAsyncPromise(
9
- std::function<PromiseResolver()> &&function) {
11
+ jsi::Value PromiseVendor::createAsyncPromise(std::function<PromiseResolver()> &&function) {
10
12
  auto &runtime = *runtime_;
11
13
  auto callInvoker = callInvoker_;
12
14
  auto threadPool = threadPool_;
@@ -32,15 +34,11 @@ jsi::Value PromiseVendor::createAsyncPromise(
32
34
  return jsi::Value::undefined();
33
35
  };
34
36
  auto promiseFunction = jsi::Function::createFromHostFunction(
35
- runtime,
36
- jsi::PropNameID::forUtf8(runtime, "asyncPromise"),
37
- 2,
38
- std::move(promiseLambda));
37
+ runtime, jsi::PropNameID::forUtf8(runtime, "asyncPromise"), 2, std::move(promiseLambda));
39
38
  return promiseCtor.callAsConstructor(runtime, std::move(promiseFunction));
40
39
  }
41
40
 
42
- jsi::Value PromiseVendor::createAsyncPromise(
43
- std::function<void(Promise &&)> &&function) {
41
+ jsi::Value PromiseVendor::createAsyncPromise(std::function<void(Promise &&)> &&function) {
44
42
  auto &runtime = *runtime_;
45
43
  auto callInvoker = callInvoker_;
46
44
  auto threadPool = threadPool_;
@@ -55,20 +53,14 @@ jsi::Value PromiseVendor::createAsyncPromise(
55
53
  auto resolveLocal = arguments[0].asObject(runtime).asFunction(runtime);
56
54
  auto rejectLocal = arguments[1].asObject(runtime).asFunction(runtime);
57
55
 
58
- Promise promise(
59
- std::move(callInvoker),
60
- std::move(resolveLocal),
61
- std::move(rejectLocal));
56
+ Promise promise(std::move(callInvoker), std::move(resolveLocal), std::move(rejectLocal));
62
57
 
63
58
  threadPool->schedule(std::move(function), std::move(promise));
64
59
 
65
60
  return jsi::Value::undefined();
66
61
  };
67
62
  auto promiseFunction = jsi::Function::createFromHostFunction(
68
- runtime,
69
- jsi::PropNameID::forUtf8(runtime, "asyncPromise"),
70
- 2,
71
- std::move(promiseLambda));
63
+ runtime, jsi::PropNameID::forUtf8(runtime, "asyncPromise"), 2, std::move(promiseLambda));
72
64
  return promiseCtor.callAsConstructor(runtime, std::move(promiseFunction));
73
65
  }
74
66
 
@@ -79,13 +71,11 @@ void PromiseVendor::asyncPromiseJob(
79
71
  std::shared_ptr<jsi::Function> &&reject) {
80
72
  auto resolver = function();
81
73
  callInvoker->invokeAsync(
82
- [resolver = std::move(resolver),
83
- reject = std::move(reject),
84
- resolve = std::move(resolve)](jsi::Runtime &runtime) -> void {
74
+ [resolver = std::move(resolver), reject = std::move(reject), resolve = std::move(resolve)](
75
+ jsi::Runtime &runtime) -> void {
85
76
  auto result = resolver(runtime);
86
77
  if (std::holds_alternative<jsi::Value>(result)) {
87
- auto valueShared = std::make_shared<jsi::Value>(
88
- std::move(std::get<jsi::Value>(result)));
78
+ auto valueShared = std::make_shared<jsi::Value>(std::move(std::get<jsi::Value>(result)));
89
79
  resolve->call(runtime, *valueShared);
90
80
  } else {
91
81
  auto errorMessage = std::get<std::string>(result);
@@ -1,16 +1,15 @@
1
1
  #pragma once
2
2
 
3
-
4
- #include <audioapi/core/utils/Constants.h>
5
3
  #include <ReactCommon/CallInvoker.h>
4
+ #include <audioapi/core/utils/Constants.h>
5
+ #include <audioapi/utils/ThreadPool.hpp>
6
6
  #include <jsi/jsi.h>
7
- #include <variant>
8
- #include <thread>
7
+ #include <functional>
9
8
  #include <memory>
10
9
  #include <string>
10
+ #include <thread>
11
11
  #include <utility>
12
- #include <functional>
13
- #include <audioapi/utils/ThreadPool.hpp>
12
+ #include <variant>
14
13
 
15
14
  namespace audioapi {
16
15
 
@@ -24,49 +23,60 @@ class Promise {
24
23
  };
25
24
 
26
25
  public:
27
- explicit Promise(std::shared_ptr<react::CallInvoker> &&callInvoker, jsi::Function &&resolve, jsi::Function &&reject):
28
- inner_(std::make_shared<Inner>(Inner{std::move(callInvoker), std::move(resolve), std::move(reject)})) {}
29
-
30
- Promise(const Promise &other) {
31
- inner_ = other.inner_;
32
- }
33
- Promise(Promise &&other) noexcept : inner_(std::move(other.inner_)) {}
34
- Promise& operator=(Promise &&other) noexcept {
35
- if (this != &other) {
36
- inner_ = std::move(other.inner_);
37
- }
38
- return *this;
39
- }
40
-
41
- void resolve(const std::function<jsi::Value(jsi::Runtime&)> &&resolver) const {
42
- auto inner = inner_;
43
- inner->callInvoker->invokeAsync([inner = std::move(inner), resolver = std::forward<decltype(resolver)>(resolver)](jsi::Runtime &runtime) -> void {
44
- auto valueShared = std::make_shared<jsi::Value>(resolver(runtime));
45
- inner->resolve.call(runtime, *valueShared);
46
- });
47
- }
48
-
49
- void reject(const std::string &errorMessage) const {
50
- auto inner = inner_;
51
- inner->callInvoker->invokeAsync([inner = std::move(inner), errorMessage](jsi::Runtime &runtime) -> void {
52
- auto error = jsi::JSError(runtime, errorMessage);
53
- inner->reject.call(runtime, error.value());
54
- });
26
+ explicit Promise(
27
+ std::shared_ptr<react::CallInvoker> &&callInvoker,
28
+ jsi::Function &&resolve,
29
+ jsi::Function &&reject)
30
+ : inner_(
31
+ std::make_shared<Inner>(
32
+ Inner{std::move(callInvoker), std::move(resolve), std::move(reject)})) {}
33
+
34
+ Promise(const Promise &other) {
35
+ inner_ = other.inner_;
36
+ }
37
+ Promise(Promise &&other) noexcept : inner_(std::move(other.inner_)) {}
38
+ Promise &operator=(Promise &&other) noexcept {
39
+ if (this != &other) {
40
+ inner_ = std::move(other.inner_);
55
41
  }
42
+ return *this;
43
+ }
44
+
45
+ void resolve(const std::function<jsi::Value(jsi::Runtime &)> &&resolver) const {
46
+ auto inner = inner_;
47
+ inner->callInvoker->invokeAsync(
48
+ [inner = std::move(inner),
49
+ resolver = std::forward<decltype(resolver)>(resolver)](jsi::Runtime &runtime) -> void {
50
+ auto valueShared = std::make_shared<jsi::Value>(resolver(runtime));
51
+ inner->resolve.call(runtime, *valueShared);
52
+ });
53
+ }
54
+
55
+ void reject(const std::string &errorMessage) const {
56
+ auto inner = inner_;
57
+ inner->callInvoker->invokeAsync(
58
+ [inner = std::move(inner), errorMessage](jsi::Runtime &runtime) -> void {
59
+ auto error = jsi::JSError(runtime, errorMessage);
60
+ inner->reject.call(runtime, error.value());
61
+ });
62
+ }
56
63
 
57
64
  private:
58
65
  std::shared_ptr<Inner> inner_;
59
66
  };
60
67
 
61
- using PromiseResolver = std::function<std::variant<jsi::Value, std::string>(jsi::Runtime&)>;
68
+ using PromiseResolver = std::function<std::variant<jsi::Value, std::string>(jsi::Runtime &)>;
62
69
 
63
70
  class PromiseVendor {
64
71
  public:
65
- PromiseVendor(jsi::Runtime *runtime, const std::shared_ptr<react::CallInvoker> &callInvoker):
66
- runtime_(runtime), callInvoker_(callInvoker), threadPool_(std::make_shared<ThreadPool>(
67
- audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_COUNT,
68
- audioapi::PROMISE_VENDOR_THREAD_POOL_LOAD_BALANCER_QUEUE_SIZE,
69
- audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_QUEUE_SIZE)) {}
72
+ PromiseVendor(jsi::Runtime *runtime, const std::shared_ptr<react::CallInvoker> &callInvoker)
73
+ : runtime_(runtime),
74
+ callInvoker_(callInvoker),
75
+ threadPool_(
76
+ std::make_shared<ThreadPool>(
77
+ audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_COUNT,
78
+ audioapi::PROMISE_VENDOR_THREAD_POOL_LOAD_BALANCER_QUEUE_SIZE,
79
+ audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_QUEUE_SIZE)) {}
70
80
 
71
81
  /// @brief Creates an asynchronous promise.
72
82
  /// @param function The function to execute asynchronously. It should return either a jsi::Value on success or a std::string error message on failure.
@@ -94,7 +104,7 @@ class PromiseVendor {
94
104
  /// @return The created promise.
95
105
  /// @note The function is executed on a different thread, the promise should be resolved or rejected using the provided Promise object.
96
106
  /// @note IMPORTANT: This function is not thread-safe and should be called from a single thread only. (comes from underlying ThreadPool implementation)
97
- jsi::Value createAsyncPromise(std::function<void(Promise&&)> &&function);
107
+ jsi::Value createAsyncPromise(std::function<void(Promise &&)> &&function);
98
108
 
99
109
  private:
100
110
  jsi::Runtime *runtime_;
@@ -102,11 +112,10 @@ class PromiseVendor {
102
112
  std::shared_ptr<ThreadPool> threadPool_;
103
113
 
104
114
  static void asyncPromiseJob(
105
- std::shared_ptr<react::CallInvoker> callInvoker,
106
- std::function<PromiseResolver()> &&function,
107
- std::shared_ptr<jsi::Function> &&resolve,
108
- std::shared_ptr<jsi::Function> &&reject
109
- );
115
+ std::shared_ptr<react::CallInvoker> callInvoker,
116
+ std::function<PromiseResolver()> &&function,
117
+ std::shared_ptr<jsi::Function> &&resolve,
118
+ std::shared_ptr<jsi::Function> &&reject);
110
119
  };
111
120
 
112
121
  } // namespace audioapi
@@ -1,11 +1,12 @@
1
1
  #include <audioapi/jsi/RuntimeLifecycleMonitor.h>
2
+ #include <memory>
3
+ #include <unordered_map>
4
+ #include <unordered_set>
5
+ #include <utility>
2
6
 
3
7
  namespace audioapi {
4
8
 
5
- static std::unordered_map<
6
- jsi::Runtime *,
7
- std::unordered_set<RuntimeLifecycleListener *>>
8
- listeners;
9
+ static std::unordered_map<jsi::Runtime *, std::unordered_set<RuntimeLifecycleListener *>> listeners;
9
10
 
10
11
  struct RuntimeLifecycleMonitorObject : public jsi::HostObject {
11
12
  jsi::Runtime *rt_;
@@ -21,9 +22,7 @@ struct RuntimeLifecycleMonitorObject : public jsi::HostObject {
21
22
  }
22
23
  };
23
24
 
24
- void RuntimeLifecycleMonitor::addListener(
25
- jsi::Runtime &rt,
26
- RuntimeLifecycleListener *listener) {
25
+ void RuntimeLifecycleMonitor::addListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener) {
27
26
  auto listenersSet = listeners.find(&rt);
28
27
  if (listenersSet == listeners.end()) {
29
28
  // We install a global host object in the provided runtime, this way we can
@@ -43,9 +42,7 @@ void RuntimeLifecycleMonitor::addListener(
43
42
  }
44
43
  }
45
44
 
46
- void RuntimeLifecycleMonitor::removeListener(
47
- jsi::Runtime &rt,
48
- RuntimeLifecycleListener *listener) {
45
+ void RuntimeLifecycleMonitor::removeListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener) {
49
46
  auto listenersSet = listeners.find(&rt);
50
47
  if (listenersSet == listeners.end()) {
51
48
  // nothing to do here
@@ -27,9 +27,7 @@ struct RuntimeLifecycleListener {
27
27
  */
28
28
  struct RuntimeLifecycleMonitor {
29
29
  static void addListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener);
30
- static void removeListener(
31
- jsi::Runtime &rt,
32
- RuntimeLifecycleListener *listener);
30
+ static void removeListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener);
33
31
  };
34
32
 
35
33
  } // namespace audioapi
@@ -1,5 +1,6 @@
1
1
  #include <audioapi/dsp/VectorMath.h>
2
2
  #include <audioapi/utils/AudioArray.h>
3
+ #include <algorithm>
3
4
 
4
5
  namespace audioapi {
5
6
 
@@ -93,10 +94,7 @@ void AudioArray::sum(
93
94
  size_t destinationStart,
94
95
  size_t length) {
95
96
  dsp::add(
96
- data_ + destinationStart,
97
- source->getData() + sourceStart,
98
- data_ + destinationStart,
99
- length);
97
+ data_ + destinationStart, source->getData() + sourceStart, data_ + destinationStart, length);
100
98
  }
101
99
 
102
100
  void AudioArray::copy(const AudioArray *source) {
@@ -112,10 +110,7 @@ void AudioArray::copy(
112
110
  size_t sourceStart,
113
111
  size_t destinationStart,
114
112
  size_t length) {
115
- memcpy(
116
- data_ + destinationStart,
117
- source->getData() + sourceStart,
118
- length * sizeof(float));
113
+ memcpy(data_ + destinationStart, source->getData() + sourceStart, length * sizeof(float));
119
114
  }
120
115
 
121
116
  } // namespace audioapi
@@ -1,9 +1,9 @@
1
1
  #pragma once
2
2
 
3
3
  #include <algorithm>
4
- #include <memory>
5
4
  #include <cstddef>
6
5
  #include <cstring>
6
+ #include <memory>
7
7
 
8
8
  namespace audioapi {
9
9
 
@@ -29,19 +29,11 @@ class AudioArray {
29
29
 
30
30
  void sum(const AudioArray *source);
31
31
  void sum(const AudioArray *source, size_t start, size_t length);
32
- void sum(
33
- const AudioArray *source,
34
- size_t sourceStart,
35
- size_t destinationStart,
36
- size_t length);
32
+ void sum(const AudioArray *source, size_t sourceStart, size_t destinationStart, size_t length);
37
33
 
38
34
  void copy(const AudioArray *source);
39
35
  void copy(const AudioArray *source, size_t start, size_t length);
40
- void copy(
41
- const AudioArray *source,
42
- size_t sourceStart,
43
- size_t destinationStart,
44
- size_t length);
36
+ void copy(const AudioArray *source, size_t sourceStart, size_t destinationStart, size_t length);
45
37
 
46
38
  protected:
47
39
  float *data_;