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
@@ -1,14 +1,14 @@
1
1
  #include <audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h>
2
2
 
3
3
  #include <audioapi/core/sources/AudioScheduledSourceNode.h>
4
+ #include <memory>
4
5
 
5
6
  namespace audioapi {
6
7
 
7
8
  AudioScheduledSourceNodeHostObject::AudioScheduledSourceNodeHostObject(
8
9
  const std::shared_ptr<AudioScheduledSourceNode> &node)
9
10
  : AudioNodeHostObject(node) {
10
- addSetters(
11
- JSI_EXPORT_PROPERTY_SETTER(AudioScheduledSourceNodeHostObject, onEnded));
11
+ addSetters(JSI_EXPORT_PROPERTY_SETTER(AudioScheduledSourceNodeHostObject, onEnded));
12
12
 
13
13
  addFunctions(
14
14
  JSI_EXPORT_FUNCTION(AudioScheduledSourceNodeHostObject, start),
@@ -16,8 +16,7 @@ AudioScheduledSourceNodeHostObject::AudioScheduledSourceNodeHostObject(
16
16
  }
17
17
 
18
18
  AudioScheduledSourceNodeHostObject::~AudioScheduledSourceNodeHostObject() {
19
- auto audioScheduledSourceNode =
20
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
19
+ auto audioScheduledSourceNode = std::static_pointer_cast<AudioScheduledSourceNode>(node_);
21
20
 
22
21
  // When JSI object is garbage collected (together with the eventual callback),
23
22
  // underlying source node might still be active and try to call the
@@ -26,8 +25,7 @@ AudioScheduledSourceNodeHostObject::~AudioScheduledSourceNodeHostObject() {
26
25
  }
27
26
 
28
27
  JSI_PROPERTY_SETTER_IMPL(AudioScheduledSourceNodeHostObject, onEnded) {
29
- auto audioScheduleSourceNode =
30
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
28
+ auto audioScheduleSourceNode = std::static_pointer_cast<AudioScheduledSourceNode>(node_);
31
29
 
32
30
  audioScheduleSourceNode->setOnEndedCallbackId(
33
31
  std::stoull(value.getString(runtime).utf8(runtime)));
@@ -35,16 +33,14 @@ JSI_PROPERTY_SETTER_IMPL(AudioScheduledSourceNodeHostObject, onEnded) {
35
33
 
36
34
  JSI_HOST_FUNCTION_IMPL(AudioScheduledSourceNodeHostObject, start) {
37
35
  auto when = args[0].getNumber();
38
- auto audioScheduleSourceNode =
39
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
36
+ auto audioScheduleSourceNode = std::static_pointer_cast<AudioScheduledSourceNode>(node_);
40
37
  audioScheduleSourceNode->start(when);
41
38
  return jsi::Value::undefined();
42
39
  }
43
40
 
44
41
  JSI_HOST_FUNCTION_IMPL(AudioScheduledSourceNodeHostObject, stop) {
45
42
  auto time = args[0].getNumber();
46
- auto audioScheduleSourceNode =
47
- std::static_pointer_cast<AudioScheduledSourceNode>(node_);
43
+ auto audioScheduleSourceNode = std::static_pointer_cast<AudioScheduledSourceNode>(node_);
48
44
  audioScheduleSourceNode->stop(time);
49
45
  return jsi::Value::undefined();
50
46
  }
@@ -1,6 +1,7 @@
1
1
  #include <audioapi/HostObjects/AudioParamHostObject.h>
2
2
  #include <audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h>
3
3
  #include <audioapi/core/sources/ConstantSourceNode.h>
4
+ #include <memory>
4
5
 
5
6
  namespace audioapi {
6
7
 
@@ -12,8 +13,7 @@ ConstantSourceNodeHostObject::ConstantSourceNodeHostObject(
12
13
 
13
14
  JSI_PROPERTY_GETTER_IMPL(ConstantSourceNodeHostObject, offset) {
14
15
  auto constantSourceNode = std::static_pointer_cast<ConstantSourceNode>(node_);
15
- auto offsetParam_ = std::make_shared<AudioParamHostObject>(
16
- constantSourceNode->getOffsetParam());
16
+ auto offsetParam_ = std::make_shared<AudioParamHostObject>(constantSourceNode->getOffsetParam());
17
17
  return jsi::Object::createFromHostObject(runtime, offsetParam_);
18
18
  }
19
19
  } // namespace audioapi
@@ -13,8 +13,7 @@ class ConstantSourceNode;
13
13
 
14
14
  class ConstantSourceNodeHostObject : public AudioScheduledSourceNodeHostObject {
15
15
  public:
16
- explicit ConstantSourceNodeHostObject(
17
- const std::shared_ptr<ConstantSourceNode> &node);
16
+ explicit ConstantSourceNodeHostObject(const std::shared_ptr<ConstantSourceNode> &node);
18
17
 
19
18
  JSI_PROPERTY_GETTER_DECL(offset);
20
19
  };
@@ -3,11 +3,11 @@
3
3
  #include <audioapi/HostObjects/AudioParamHostObject.h>
4
4
  #include <audioapi/HostObjects/effects/PeriodicWaveHostObject.h>
5
5
  #include <audioapi/core/sources/OscillatorNode.h>
6
+ #include <memory>
6
7
 
7
8
  namespace audioapi {
8
9
 
9
- OscillatorNodeHostObject::OscillatorNodeHostObject(
10
- const std::shared_ptr<OscillatorNode> &node)
10
+ OscillatorNodeHostObject::OscillatorNodeHostObject(const std::shared_ptr<OscillatorNode> &node)
11
11
  : AudioScheduledSourceNodeHostObject(node) {
12
12
  addGetters(
13
13
  JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, frequency),
@@ -21,15 +21,14 @@ OscillatorNodeHostObject::OscillatorNodeHostObject(
21
21
 
22
22
  JSI_PROPERTY_GETTER_IMPL(OscillatorNodeHostObject, frequency) {
23
23
  auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
24
- auto frequencyParam_ = std::make_shared<AudioParamHostObject>(
25
- oscillatorNode->getFrequencyParam());
24
+ auto frequencyParam_ =
25
+ std::make_shared<AudioParamHostObject>(oscillatorNode->getFrequencyParam());
26
26
  return jsi::Object::createFromHostObject(runtime, frequencyParam_);
27
27
  }
28
28
 
29
29
  JSI_PROPERTY_GETTER_IMPL(OscillatorNodeHostObject, detune) {
30
30
  auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
31
- auto detuneParam_ =
32
- std::make_shared<AudioParamHostObject>(oscillatorNode->getDetuneParam());
31
+ auto detuneParam_ = std::make_shared<AudioParamHostObject>(oscillatorNode->getDetuneParam());
33
32
  return jsi::Object::createFromHostObject(runtime, detuneParam_);
34
33
  }
35
34
 
@@ -41,8 +40,7 @@ JSI_PROPERTY_GETTER_IMPL(OscillatorNodeHostObject, type) {
41
40
 
42
41
  JSI_HOST_FUNCTION_IMPL(OscillatorNodeHostObject, setPeriodicWave) {
43
42
  auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
44
- auto periodicWave =
45
- args[0].getObject(runtime).getHostObject<PeriodicWaveHostObject>(runtime);
43
+ auto periodicWave = args[0].getObject(runtime).getHostObject<PeriodicWaveHostObject>(runtime);
46
44
  oscillatorNode->setPeriodicWave(periodicWave->periodicWave_);
47
45
  return jsi::Value::undefined();
48
46
  }
@@ -13,8 +13,7 @@ class OscillatorNode;
13
13
 
14
14
  class OscillatorNodeHostObject : public AudioScheduledSourceNodeHostObject {
15
15
  public:
16
- explicit OscillatorNodeHostObject(
17
- const std::shared_ptr<OscillatorNode> &node);
16
+ explicit OscillatorNodeHostObject(const std::shared_ptr<OscillatorNode> &node);
18
17
 
19
18
  JSI_PROPERTY_GETTER_DECL(frequency);
20
19
  JSI_PROPERTY_GETTER_DECL(detune);
@@ -1,7 +1,7 @@
1
1
  #pragma once
2
2
 
3
- #include <audioapi/core/sources/RecorderAdapterNode.h>
4
3
  #include <audioapi/HostObjects/AudioNodeHostObject.h>
4
+ #include <audioapi/core/sources/RecorderAdapterNode.h>
5
5
 
6
6
  #include <memory>
7
7
  #include <string>
@@ -14,12 +14,11 @@ class AudioRecorderHostObject;
14
14
 
15
15
  class RecorderAdapterNodeHostObject : public AudioNodeHostObject {
16
16
  public:
17
- explicit RecorderAdapterNodeHostObject(
18
- const std::shared_ptr<RecorderAdapterNode> &node)
19
- : AudioNodeHostObject(node) {}
17
+ explicit RecorderAdapterNodeHostObject(const std::shared_ptr<RecorderAdapterNode> &node)
18
+ : AudioNodeHostObject(node) {}
20
19
 
21
20
  private:
22
- friend class AudioRecorderHostObject;
21
+ friend class AudioRecorderHostObject;
23
22
  };
24
23
 
25
24
  } // namespace audioapi
@@ -3,11 +3,11 @@
3
3
  #include <audioapi/HostObjects/AudioParamHostObject.h>
4
4
  #include <audioapi/HostObjects/effects/PeriodicWaveHostObject.h>
5
5
  #include <audioapi/core/sources/StreamerNode.h>
6
+ #include <memory>
6
7
 
7
8
  namespace audioapi {
8
9
 
9
- StreamerNodeHostObject::StreamerNodeHostObject(
10
- const std::shared_ptr<StreamerNode> &node)
10
+ StreamerNodeHostObject::StreamerNodeHostObject(const std::shared_ptr<StreamerNode> &node)
11
11
  : AudioScheduledSourceNodeHostObject(node) {
12
12
  addFunctions(JSI_EXPORT_FUNCTION(StreamerNodeHostObject, initialize));
13
13
  }
@@ -13,16 +13,15 @@ class StreamerNode;
13
13
 
14
14
  class StreamerNodeHostObject : public AudioScheduledSourceNodeHostObject {
15
15
  public:
16
- explicit StreamerNodeHostObject(
17
- const std::shared_ptr<StreamerNode> &node);
16
+ explicit StreamerNodeHostObject(const std::shared_ptr<StreamerNode> &node);
18
17
 
19
- [[nodiscard]] static inline size_t getSizeInBytes() {
20
- return SIZE;
21
- }
18
+ [[nodiscard]] static inline size_t getSizeInBytes() {
19
+ return SIZE;
20
+ }
22
21
 
23
22
  JSI_HOST_FUNCTION_DECL(initialize);
24
23
 
25
24
  private:
26
- static constexpr size_t SIZE = 4'000'000; // 4MB
25
+ static constexpr size_t SIZE = 4'000'000; // 4MB
27
26
  };
28
27
  } // namespace audioapi
@@ -12,7 +12,6 @@ using namespace facebook;
12
12
  class WorkletSourceNodeHostObject : public AudioScheduledSourceNodeHostObject {
13
13
  public:
14
14
  explicit WorkletSourceNodeHostObject(const std::shared_ptr<WorkletSourceNode> &node)
15
- : AudioScheduledSourceNodeHostObject(node) {
16
- }
15
+ : AudioScheduledSourceNodeHostObject(node) {}
17
16
  };
18
17
  } // namespace audioapi
@@ -21,40 +21,31 @@ AudioDecoderHostObject::AudioDecoderHostObject(
21
21
  }
22
22
 
23
23
  JSI_HOST_FUNCTION_IMPL(AudioDecoderHostObject, decodeWithMemoryBlock) {
24
- auto arrayBuffer = args[0]
25
- .getObject(runtime)
26
- .getPropertyAsObject(runtime, "buffer")
27
- .getArrayBuffer(runtime);
24
+ auto arrayBuffer =
25
+ args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
28
26
  auto data = arrayBuffer.data(runtime);
29
27
  auto size = static_cast<int>(arrayBuffer.size(runtime));
30
28
 
31
29
  auto sampleRate = args[1].getNumber();
32
30
 
33
- auto promise = promiseVendor_->createAsyncPromise(
34
- [data, size, sampleRate]() -> PromiseResolver {
35
- auto result =
36
- AudioDecoder::decodeWithMemoryBlock(data, size, sampleRate);
31
+ auto promise = promiseVendor_->createAsyncPromise([data, size, sampleRate]() -> PromiseResolver {
32
+ auto result = AudioDecoder::decodeWithMemoryBlock(data, size, sampleRate);
37
33
 
38
- if (!result) {
39
- return [](jsi::Runtime &runtime)
40
- -> std::variant<jsi::Value, std::string> {
41
- return std::string("Failed to decode audio data.");
42
- };
43
- }
34
+ if (!result) {
35
+ return [](jsi::Runtime &runtime) -> std::variant<jsi::Value, std::string> {
36
+ return std::string("Failed to decode audio data.");
37
+ };
38
+ }
44
39
 
45
- auto audioBufferHostObject =
46
- std::make_shared<AudioBufferHostObject>(result);
40
+ auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(result);
47
41
 
48
- return [audioBufferHostObject =
49
- std::move(audioBufferHostObject)](jsi::Runtime &runtime)
50
- -> std::variant<jsi::Value, std::string> {
51
- auto jsiObject =
52
- jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
53
- jsiObject.setExternalMemoryPressure(
54
- runtime, audioBufferHostObject->getSizeInBytes());
55
- return jsiObject;
56
- };
57
- });
42
+ return [audioBufferHostObject = std::move(audioBufferHostObject)](
43
+ jsi::Runtime &runtime) -> std::variant<jsi::Value, std::string> {
44
+ auto jsiObject = jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
45
+ jsiObject.setExternalMemoryPressure(runtime, audioBufferHostObject->getSizeInBytes());
46
+ return jsiObject;
47
+ };
48
+ });
58
49
  return promise;
59
50
  }
60
51
 
@@ -62,30 +53,24 @@ JSI_HOST_FUNCTION_IMPL(AudioDecoderHostObject, decodeWithFilePath) {
62
53
  auto sourcePath = args[0].getString(runtime).utf8(runtime);
63
54
  auto sampleRate = args[1].getNumber();
64
55
 
65
- auto promise = promiseVendor_->createAsyncPromise(
66
- [sourcePath, sampleRate]() -> PromiseResolver {
67
- auto result = AudioDecoder::decodeWithFilePath(sourcePath, sampleRate);
56
+ auto promise = promiseVendor_->createAsyncPromise([sourcePath, sampleRate]() -> PromiseResolver {
57
+ auto result = AudioDecoder::decodeWithFilePath(sourcePath, sampleRate);
68
58
 
69
- if (!result) {
70
- return [](jsi::Runtime &runtime)
71
- -> std::variant<jsi::Value, std::string> {
72
- return std::string("Failed to decode audio data source.");
73
- };
74
- }
59
+ if (!result) {
60
+ return [](jsi::Runtime &runtime) -> std::variant<jsi::Value, std::string> {
61
+ return std::string("Failed to decode audio data source.");
62
+ };
63
+ }
75
64
 
76
- auto audioBufferHostObject =
77
- std::make_shared<AudioBufferHostObject>(result);
65
+ auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(result);
78
66
 
79
- return [audioBufferHostObject =
80
- std::move(audioBufferHostObject)](jsi::Runtime &runtime)
81
- -> std::variant<jsi::Value, std::string> {
82
- auto jsiObject =
83
- jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
84
- jsiObject.setExternalMemoryPressure(
85
- runtime, audioBufferHostObject->getSizeInBytes());
86
- return jsiObject;
87
- };
88
- });
67
+ return [audioBufferHostObject = std::move(audioBufferHostObject)](
68
+ jsi::Runtime &runtime) -> std::variant<jsi::Value, std::string> {
69
+ auto jsiObject = jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
70
+ jsiObject.setExternalMemoryPressure(runtime, audioBufferHostObject->getSizeInBytes());
71
+ return jsiObject;
72
+ };
73
+ });
89
74
 
90
75
  return promise;
91
76
  }
@@ -97,28 +82,22 @@ JSI_HOST_FUNCTION_IMPL(AudioDecoderHostObject, decodeWithPCMInBase64) {
97
82
  auto interleaved = args[3].getBool();
98
83
 
99
84
  auto promise = promiseVendor_->createAsyncPromise(
100
- [b64, inputSampleRate, inputChannelCount, interleaved]()
101
- -> PromiseResolver {
85
+ [b64, inputSampleRate, inputChannelCount, interleaved]() -> PromiseResolver {
102
86
  auto result = AudioDecoder::decodeWithPCMInBase64(
103
87
  b64, inputSampleRate, inputChannelCount, interleaved);
104
88
 
105
89
  if (!result) {
106
- return [](jsi::Runtime &runtime)
107
- -> std::variant<jsi::Value, std::string> {
90
+ return [](jsi::Runtime &runtime) -> std::variant<jsi::Value, std::string> {
108
91
  return std::string("Failed to decode audio data source.");
109
92
  };
110
93
  }
111
94
 
112
- auto audioBufferHostObject =
113
- std::make_shared<AudioBufferHostObject>(result);
95
+ auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(result);
114
96
 
115
- return [audioBufferHostObject =
116
- std::move(audioBufferHostObject)](jsi::Runtime &runtime)
117
- -> std::variant<jsi::Value, std::string> {
118
- auto jsiObject =
119
- jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
120
- jsiObject.setExternalMemoryPressure(
121
- runtime, audioBufferHostObject->getSizeInBytes());
97
+ return [audioBufferHostObject = std::move(audioBufferHostObject)](
98
+ jsi::Runtime &runtime) -> std::variant<jsi::Value, std::string> {
99
+ auto jsiObject = jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
100
+ jsiObject.setExternalMemoryPressure(runtime, audioBufferHostObject->getSizeInBytes());
122
101
  return jsiObject;
123
102
  };
124
103
  });
@@ -15,18 +15,15 @@ AudioStretcherHostObject::AudioStretcherHostObject(
15
15
  jsi::Runtime *runtime,
16
16
  const std::shared_ptr<react::CallInvoker> &callInvoker) {
17
17
  promiseVendor_ = std::make_shared<PromiseVendor>(runtime, callInvoker);
18
- addFunctions(
19
- JSI_EXPORT_FUNCTION(AudioStretcherHostObject, changePlaybackSpeed));
18
+ addFunctions(JSI_EXPORT_FUNCTION(AudioStretcherHostObject, changePlaybackSpeed));
20
19
  }
21
20
 
22
21
  JSI_HOST_FUNCTION_IMPL(AudioStretcherHostObject, changePlaybackSpeed) {
23
- auto audioBuffer =
24
- args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
22
+ auto audioBuffer = args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
25
23
  auto playbackSpeed = static_cast<float>(args[1].asNumber());
26
24
 
27
25
  auto promise = promiseVendor_->createAsyncPromise([=]() -> PromiseResolver {
28
- auto result = AudioStretcher::changePlaybackSpeed(
29
- *audioBuffer->audioBuffer_, playbackSpeed);
26
+ auto result = AudioStretcher::changePlaybackSpeed(*audioBuffer->audioBuffer_, playbackSpeed);
30
27
 
31
28
  if (result == nullptr) {
32
29
  return [](jsi::Runtime &runtime) {
@@ -34,8 +31,7 @@ JSI_HOST_FUNCTION_IMPL(AudioStretcherHostObject, changePlaybackSpeed) {
34
31
  };
35
32
  }
36
33
  return [result](jsi::Runtime &runtime) {
37
- auto audioBufferHostObject =
38
- std::make_shared<AudioBufferHostObject>(result);
34
+ auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(result);
39
35
  return jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
40
36
  };
41
37
  });
@@ -7,12 +7,13 @@
7
7
  #include <audioapi/core/AudioContext.h>
8
8
  #include <audioapi/core/destinations/AudioDestinationNode.h>
9
9
  #include <audioapi/core/utils/AudioNodeManager.h>
10
+ #include <memory>
11
+ #include <string>
10
12
 
11
13
  namespace audioapi {
12
14
  AudioContext::AudioContext(
13
15
  float sampleRate,
14
- const std::shared_ptr<IAudioEventHandlerRegistry>
15
- &audioEventHandlerRegistry,
16
+ const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry,
16
17
  const RuntimeRegistry &runtimeRegistry)
17
18
  : BaseAudioContext(audioEventHandlerRegistry, runtimeRegistry) {
18
19
  #ifdef ANDROID
@@ -89,8 +90,7 @@ bool AudioContext::start() {
89
90
  return false;
90
91
  }
91
92
 
92
- std::function<void(std::shared_ptr<AudioBus>, int)>
93
- AudioContext::renderAudio() {
93
+ std::function<void(std::shared_ptr<AudioBus>, int)> AudioContext::renderAudio() {
94
94
  return [this](const std::shared_ptr<AudioBus> &data, int frames) {
95
95
  destination_->renderAudio(data, frames);
96
96
  };
@@ -3,8 +3,8 @@
3
3
  #include <audioapi/core/BaseAudioContext.h>
4
4
  #include <audioapi/core/utils/worklets/SafeIncludes.h>
5
5
 
6
- #include <memory>
7
6
  #include <functional>
7
+ #include <memory>
8
8
 
9
9
  namespace audioapi {
10
10
  #ifdef ANDROID
@@ -15,7 +15,10 @@ class IOSAudioPlayer;
15
15
 
16
16
  class AudioContext : public BaseAudioContext {
17
17
  public:
18
- explicit AudioContext(float sampleRate, const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry, const RuntimeRegistry &runtimeRegistry);
18
+ explicit AudioContext(
19
+ float sampleRate,
20
+ const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry,
21
+ const RuntimeRegistry &runtimeRegistry);
19
22
  ~AudioContext() override;
20
23
 
21
24
  void close();
@@ -4,12 +4,15 @@
4
4
  #include <audioapi/core/utils/AudioNodeManager.h>
5
5
  #include <audioapi/utils/AudioArray.h>
6
6
  #include <audioapi/utils/AudioBus.h>
7
+ #include <memory>
8
+ #include <string>
9
+ #include <utility>
7
10
 
8
11
  namespace audioapi {
9
12
 
10
13
  AudioNode::AudioNode(BaseAudioContext *context) : context_(context) {
11
- audioBus_ = std::make_shared<AudioBus>(
12
- RENDER_QUANTUM_SIZE, channelCount_, context->getSampleRate());
14
+ audioBus_ =
15
+ std::make_shared<AudioBus>(RENDER_QUANTUM_SIZE, channelCount_, context->getSampleRate());
13
16
  }
14
17
 
15
18
  AudioNode::~AudioNode() {
@@ -50,9 +53,7 @@ void AudioNode::connect(const std::shared_ptr<AudioParam> &param) {
50
53
 
51
54
  void AudioNode::disconnect() {
52
55
  context_->getNodeManager()->addPendingNodeConnection(
53
- shared_from_this(),
54
- nullptr,
55
- AudioNodeManager::ConnectionType::DISCONNECT_ALL);
56
+ shared_from_this(), nullptr, AudioNodeManager::ConnectionType::DISCONNECT_ALL);
56
57
  }
57
58
 
58
59
  void AudioNode::disconnect(const std::shared_ptr<AudioNode> &node) {
@@ -76,8 +77,7 @@ void AudioNode::enable() {
76
77
 
77
78
  isEnabled_ = true;
78
79
 
79
- for (auto it = outputNodes_.begin(), end = outputNodes_.end(); it != end;
80
- ++it) {
80
+ for (auto it = outputNodes_.begin(), end = outputNodes_.end(); it != end; ++it) {
81
81
  it->get()->onInputEnabled();
82
82
  }
83
83
  }
@@ -89,8 +89,7 @@ void AudioNode::disable() {
89
89
 
90
90
  isEnabled_ = false;
91
91
 
92
- for (auto it = outputNodes_.begin(), end = outputNodes_.end(); it != end;
93
- ++it) {
92
+ for (auto it = outputNodes_.begin(), end = outputNodes_.end(); it != end; ++it) {
94
93
  it->get()->onInputDisabled();
95
94
  }
96
95
  }
@@ -132,8 +131,7 @@ std::shared_ptr<AudioBus> AudioNode::processAudio(
132
131
  }
133
132
 
134
133
  // Process inputs and return the bus with the most channels.
135
- auto processingBus =
136
- processInputs(outputBus, framesToProcess, checkIsAlreadyProcessed);
134
+ auto processingBus = processInputs(outputBus, framesToProcess, checkIsAlreadyProcessed);
137
135
 
138
136
  // Apply channel count mode.
139
137
  processingBus = applyChannelCountMode(processingBus);
@@ -172,8 +170,7 @@ std::shared_ptr<AudioBus> AudioNode::processInputs(
172
170
  processingBus->zero();
173
171
 
174
172
  int maxNumberOfChannels = 0;
175
- for (auto it = inputNodes_.begin(), end = inputNodes_.end(); it != end;
176
- ++it) {
173
+ for (auto it = inputNodes_.begin(), end = inputNodes_.end(); it != end; ++it) {
177
174
  auto inputNode = *it;
178
175
  assert(inputNode != nullptr);
179
176
 
@@ -181,8 +178,7 @@ std::shared_ptr<AudioBus> AudioNode::processInputs(
181
178
  continue;
182
179
  }
183
180
 
184
- auto inputBus = inputNode->processAudio(
185
- outputBus, framesToProcess, checkIsAlreadyProcessed);
181
+ auto inputBus = inputNode->processAudio(outputBus, framesToProcess, checkIsAlreadyProcessed);
186
182
  inputBuses_.push_back(inputBus);
187
183
 
188
184
  if (maxNumberOfChannels < inputBus->getNumberOfChannels()) {
@@ -215,8 +211,7 @@ std::shared_ptr<AudioBus> AudioNode::applyChannelCountMode(
215
211
  void AudioNode::mixInputsBuses(const std::shared_ptr<AudioBus> &processingBus) {
216
212
  assert(processingBus != nullptr);
217
213
 
218
- for (auto it = inputBuses_.begin(), end = inputBuses_.end(); it != end;
219
- ++it) {
214
+ for (auto it = inputBuses_.begin(), end = inputBuses_.end(); it != end; ++it) {
220
215
  processingBus->sum(it->get(), channelInterpretation_);
221
216
  }
222
217
 
@@ -306,8 +301,7 @@ void AudioNode::onInputDisconnected(AudioNode *node) {
306
301
  void AudioNode::cleanup() {
307
302
  isInitialized_ = false;
308
303
 
309
- for (auto it = outputNodes_.begin(), end = outputNodes_.end(); it != end;
310
- ++it) {
304
+ for (auto it = outputNodes_.begin(), end = outputNodes_.end(); it != end; ++it) {
311
305
  it->get()->onInputDisconnected(this);
312
306
  }
313
307
 
@@ -4,12 +4,12 @@
4
4
  #include <audioapi/core/types/ChannelInterpretation.h>
5
5
  #include <audioapi/core/utils/Constants.h>
6
6
 
7
+ #include <cassert>
8
+ #include <cstddef>
7
9
  #include <memory>
8
10
  #include <string>
9
11
  #include <unordered_set>
10
- #include <cstddef>
11
12
  #include <vector>
12
- #include <cassert>
13
13
 
14
14
  namespace audioapi {
15
15
 
@@ -32,7 +32,10 @@ class AudioNode : public std::enable_shared_from_this<AudioNode> {
32
32
  void disconnect();
33
33
  void disconnect(const std::shared_ptr<AudioNode> &node);
34
34
  void disconnect(const std::shared_ptr<AudioParam> &param);
35
- virtual std::shared_ptr<AudioBus> processAudio(const std::shared_ptr<AudioBus> &outputBus, int framesToProcess, bool checkIsAlreadyProcessed);
35
+ virtual std::shared_ptr<AudioBus> processAudio(
36
+ const std::shared_ptr<AudioBus> &outputBus,
37
+ int framesToProcess,
38
+ bool checkIsAlreadyProcessed);
36
39
 
37
40
  bool isEnabled() const;
38
41
  void enable();
@@ -51,7 +54,8 @@ class AudioNode : public std::enable_shared_from_this<AudioNode> {
51
54
  int channelCount_ = 2;
52
55
  ChannelCountMode channelCountMode_ = ChannelCountMode::MAX;
53
56
  ChannelInterpretation channelInterpretation_ =
54
- ChannelInterpretation::SPEAKERS;
57
+
58
+ ChannelInterpretation::SPEAKERS;
55
59
 
56
60
  std::unordered_set<AudioNode *> inputNodes_ = {};
57
61
  std::unordered_set<std::shared_ptr<AudioNode>> outputNodes_ = {};
@@ -69,12 +73,15 @@ class AudioNode : public std::enable_shared_from_this<AudioNode> {
69
73
  static std::string toString(ChannelCountMode mode);
70
74
  static std::string toString(ChannelInterpretation interpretation);
71
75
 
72
- virtual std::shared_ptr<AudioBus> processInputs(const std::shared_ptr<AudioBus>& outputBus, int framesToProcess, bool checkIsAlreadyProcessed);
73
- virtual std::shared_ptr<AudioBus> processNode(const std::shared_ptr<AudioBus>&, int) = 0;
76
+ virtual std::shared_ptr<AudioBus> processInputs(
77
+ const std::shared_ptr<AudioBus> &outputBus,
78
+ int framesToProcess,
79
+ bool checkIsAlreadyProcessed);
80
+ virtual std::shared_ptr<AudioBus> processNode(const std::shared_ptr<AudioBus> &, int) = 0;
74
81
 
75
82
  bool isAlreadyProcessed();
76
83
  std::shared_ptr<AudioBus> applyChannelCountMode(const std::shared_ptr<AudioBus> &processingBus);
77
- void mixInputsBuses(const std::shared_ptr<AudioBus>& processingBus);
84
+ void mixInputsBuses(const std::shared_ptr<AudioBus> &processingBus);
78
85
 
79
86
  void connectNode(const std::shared_ptr<AudioNode> &node);
80
87
  void disconnectNode(const std::shared_ptr<AudioNode> &node);