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.
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +10 -16
- package/android/src/main/cpp/audioapi/android/OnLoad.cpp +1 -2
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +4 -4
- package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +11 -20
- package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +24 -46
- package/common/cpp/audioapi/AudioAPIModuleInstaller.h +48 -78
- package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +20 -21
- package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +3 -4
- package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +6 -8
- package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +2 -2
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +42 -78
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +1 -1
- package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +14 -18
- package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +3 -3
- package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +10 -18
- package/common/cpp/audioapi/HostObjects/destinations/AudioDestinationNodeHostObject.h +2 -3
- package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +16 -28
- package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.cpp +4 -6
- package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +2 -2
- package/common/cpp/audioapi/HostObjects/effects/PeriodicWaveHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +2 -2
- package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +6 -12
- package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +7 -7
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +8 -10
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +1 -1
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +13 -27
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +11 -12
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +15 -22
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +5 -7
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +7 -12
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +8 -9
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +16 -30
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +2 -4
- package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +6 -10
- package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +2 -2
- package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +6 -8
- package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/sources/RecorderAdapterNodeHostObject.h +4 -5
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +2 -2
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +5 -6
- package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +39 -60
- package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +4 -8
- package/common/cpp/audioapi/core/AudioContext.cpp +4 -4
- package/common/cpp/audioapi/core/AudioContext.h +5 -2
- package/common/cpp/audioapi/core/AudioNode.cpp +13 -19
- package/common/cpp/audioapi/core/AudioNode.h +14 -7
- package/common/cpp/audioapi/core/AudioParam.cpp +66 -98
- package/common/cpp/audioapi/core/AudioParam.h +20 -12
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +22 -34
- package/common/cpp/audioapi/core/BaseAudioContext.h +19 -15
- package/common/cpp/audioapi/core/OfflineAudioContext.cpp +12 -17
- package/common/cpp/audioapi/core/OfflineAudioContext.h +10 -5
- package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +13 -21
- package/common/cpp/audioapi/core/analysis/AnalyserNode.h +8 -6
- package/common/cpp/audioapi/core/destinations/AudioDestinationNode.cpp +1 -0
- package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +5 -3
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +17 -36
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +2 -9
- package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +18 -28
- package/common/cpp/audioapi/core/effects/ConvolverNode.h +19 -10
- package/common/cpp/audioapi/core/effects/GainNode.cpp +1 -0
- package/common/cpp/audioapi/core/effects/GainNode.h +3 -1
- package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +22 -35
- package/common/cpp/audioapi/core/effects/PeriodicWave.h +4 -9
- package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +4 -5
- package/common/cpp/audioapi/core/effects/StereoPannerNode.h +4 -2
- package/common/cpp/audioapi/core/effects/WorkletNode.cpp +11 -13
- package/common/cpp/audioapi/core/effects/WorkletNode.h +15 -12
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +4 -4
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +15 -14
- package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +9 -8
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +4 -5
- package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +4 -6
- package/common/cpp/audioapi/core/sources/AudioBuffer.h +4 -7
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +31 -53
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +35 -33
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +19 -20
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +38 -36
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +25 -40
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +3 -1
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +9 -9
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +3 -3
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +3 -4
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +3 -1
- package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +12 -23
- package/common/cpp/audioapi/core/sources/OscillatorNode.h +6 -4
- package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +3 -4
- package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +18 -16
- package/common/cpp/audioapi/core/sources/StreamerNode.cpp +7 -4
- package/common/cpp/audioapi/core/sources/StreamerNode.h +38 -30
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +5 -7
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +15 -13
- package/common/cpp/audioapi/core/types/AudioFormat.h +1 -11
- package/common/cpp/audioapi/core/utils/AudioDecoder.h +15 -6
- package/common/cpp/audioapi/core/utils/AudioNodeDestructor.cpp +5 -6
- package/common/cpp/audioapi/core/utils/AudioNodeDestructor.h +7 -10
- package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +13 -22
- package/common/cpp/audioapi/core/utils/AudioNodeManager.h +8 -11
- package/common/cpp/audioapi/core/utils/AudioParamEventQueue.cpp +3 -3
- package/common/cpp/audioapi/core/utils/AudioParamEventQueue.h +5 -5
- package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +6 -6
- package/common/cpp/audioapi/core/utils/Constants.h +5 -3
- package/common/cpp/audioapi/core/utils/ParamChangeEvent.cpp +1 -0
- package/common/cpp/audioapi/core/utils/ParamChangeEvent.h +9 -9
- package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +29 -34
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +14 -16
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +23 -19
- package/common/cpp/audioapi/dsp/AudioUtils.cpp +3 -9
- package/common/cpp/audioapi/dsp/AudioUtils.h +1 -1
- package/common/cpp/audioapi/dsp/Convolver.cpp +13 -25
- package/common/cpp/audioapi/dsp/Convolver.h +26 -24
- package/common/cpp/audioapi/dsp/FFT.cpp +1 -1
- package/common/cpp/audioapi/dsp/FFT.h +5 -13
- package/common/cpp/audioapi/dsp/VectorMath.cpp +9 -43
- package/common/cpp/audioapi/dsp/VectorMath.h +35 -8
- package/common/cpp/audioapi/dsp/Windows.cpp +4 -9
- package/common/cpp/audioapi/dsp/Windows.h +24 -23
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +12 -17
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +44 -39
- package/common/cpp/audioapi/events/IAudioEventHandlerRegistry.h +15 -7
- package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +4 -5
- package/common/cpp/audioapi/jsi/JsiHostObject.cpp +11 -13
- package/common/cpp/audioapi/jsi/JsiHostObject.h +26 -33
- package/common/cpp/audioapi/jsi/JsiPromise.cpp +11 -21
- package/common/cpp/audioapi/jsi/JsiPromise.h +55 -46
- package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.cpp +7 -10
- package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.h +1 -3
- package/common/cpp/audioapi/utils/AudioArray.cpp +3 -8
- package/common/cpp/audioapi/utils/AudioArray.h +3 -11
- package/common/cpp/audioapi/utils/AudioBus.cpp +51 -149
- package/common/cpp/audioapi/utils/AudioBus.h +15 -15
- package/common/cpp/audioapi/utils/CircularAudioArray.cpp +6 -18
- package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.cpp +6 -10
- package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.h +2 -2
- package/common/cpp/test/src/AudioParamTest.cpp +3 -2
- package/common/cpp/test/src/AudioScheduledSourceTest.cpp +14 -35
- package/common/cpp/test/src/ConstantSourceTest.cpp +4 -6
- package/common/cpp/test/src/GainTest.cpp +3 -4
- package/common/cpp/test/src/MockAudioEventHandlerRegistry.h +19 -11
- package/common/cpp/test/src/OscillatorTest.cpp +1 -0
- package/common/cpp/test/src/StereoPannerTest.cpp +5 -8
- package/common/cpp/test/src/biquad/BiquadFilterChromium.cpp +10 -27
- package/common/cpp/test/src/biquad/BiquadFilterChromium.h +7 -6
- package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +16 -28
- package/common/cpp/test/src/biquad/BiquadFilterTest.h +13 -6
- package/ios/audioapi/ios/AudioAPIModule.h +4 -6
- package/ios/audioapi/ios/AudioAPIModule.mm +31 -46
- package/ios/audioapi/ios/core/IOSAudioPlayer.mm +24 -33
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +1 -2
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +4 -6
- package/ios/audioapi/ios/core/NativeAudioPlayer.m +3 -5
- package/ios/audioapi/ios/core/NativeAudioRecorder.h +1 -2
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +21 -33
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +17 -37
- package/ios/audioapi/ios/system/AudioEngine.h +2 -4
- package/ios/audioapi/ios/system/AudioEngine.mm +7 -19
- package/ios/audioapi/ios/system/AudioSessionManager.h +2 -4
- package/ios/audioapi/ios/system/AudioSessionManager.mm +17 -32
- package/ios/audioapi/ios/system/LockScreenManager.mm +73 -105
- package/ios/audioapi/ios/system/NotificationManager.mm +43 -68
- 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_ =
|
|
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
|
-
|
|
18
|
-
|
|
19
|
-
: AudioNodeHostObject(node) {}
|
|
17
|
+
explicit RecorderAdapterNodeHostObject(const std::shared_ptr<RecorderAdapterNode> &node)
|
|
18
|
+
: AudioNodeHostObject(node) {}
|
|
20
19
|
|
|
21
20
|
private:
|
|
22
|
-
|
|
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
|
-
|
|
20
|
-
|
|
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
|
-
|
|
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 =
|
|
25
|
-
|
|
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
|
-
|
|
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
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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
|
-
|
|
46
|
-
std::make_shared<AudioBufferHostObject>(result);
|
|
40
|
+
auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(result);
|
|
47
41
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
77
|
-
std::make_shared<AudioBufferHostObject>(result);
|
|
65
|
+
auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(result);
|
|
78
66
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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
|
-
|
|
117
|
-
|
|
118
|
-
|
|
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(
|
|
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_ =
|
|
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> ¶m) {
|
|
|
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> ¶m);
|
|
35
|
-
virtual std::shared_ptr<AudioBus> processAudio(
|
|
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
|
-
|
|
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(
|
|
73
|
-
|
|
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
|
|
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);
|