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,11 +1,12 @@
|
|
|
1
1
|
#include <audioapi/HostObjects/AudioParamHostObject.h>
|
|
2
2
|
|
|
3
3
|
#include <audioapi/core/AudioParam.h>
|
|
4
|
+
#include <memory>
|
|
5
|
+
#include <utility>
|
|
4
6
|
|
|
5
7
|
namespace audioapi {
|
|
6
8
|
|
|
7
|
-
AudioParamHostObject::AudioParamHostObject(
|
|
8
|
-
const std::shared_ptr<AudioParam> ¶m)
|
|
9
|
+
AudioParamHostObject::AudioParamHostObject(const std::shared_ptr<AudioParam> ¶m)
|
|
9
10
|
: param_(param) {
|
|
10
11
|
addGetters(
|
|
11
12
|
JSI_EXPORT_PROPERTY_GETTER(AudioParamHostObject, value),
|
|
@@ -75,14 +76,11 @@ JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, setTargetAtTime) {
|
|
|
75
76
|
}
|
|
76
77
|
|
|
77
78
|
JSI_HOST_FUNCTION_IMPL(AudioParamHostObject, setValueCurveAtTime) {
|
|
78
|
-
auto arrayBuffer =
|
|
79
|
-
|
|
80
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
81
|
-
.getArrayBuffer(runtime);
|
|
79
|
+
auto arrayBuffer =
|
|
80
|
+
args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
82
81
|
auto rawValues = reinterpret_cast<float *>(arrayBuffer.data(runtime));
|
|
83
82
|
auto length = static_cast<int>(arrayBuffer.size(runtime));
|
|
84
|
-
auto values =
|
|
85
|
-
std::make_unique<std::vector<float>>(rawValues, rawValues + length);
|
|
83
|
+
auto values = std::make_unique<std::vector<float>>(rawValues, rawValues + length);
|
|
86
84
|
|
|
87
85
|
double startTime = args[1].getNumber();
|
|
88
86
|
double duration = args[2].getNumber();
|
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
#include <audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h>
|
|
20
20
|
#include <audioapi/core/BaseAudioContext.h>
|
|
21
21
|
|
|
22
|
+
#include <memory>
|
|
23
|
+
#include <vector>
|
|
24
|
+
|
|
22
25
|
namespace audioapi {
|
|
23
26
|
|
|
24
27
|
BaseAudioContextHostObject::BaseAudioContextHostObject(
|
|
@@ -37,8 +40,7 @@ BaseAudioContextHostObject::BaseAudioContextHostObject(
|
|
|
37
40
|
addFunctions(
|
|
38
41
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createWorkletSourceNode),
|
|
39
42
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createWorkletNode),
|
|
40
|
-
JSI_EXPORT_FUNCTION(
|
|
41
|
-
BaseAudioContextHostObject, createWorkletProcessingNode),
|
|
43
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createWorkletProcessingNode),
|
|
42
44
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createRecorderAdapter),
|
|
43
45
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createOscillator),
|
|
44
46
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createStreamer),
|
|
@@ -55,8 +57,7 @@ BaseAudioContextHostObject::BaseAudioContextHostObject(
|
|
|
55
57
|
}
|
|
56
58
|
|
|
57
59
|
JSI_PROPERTY_GETTER_IMPL(BaseAudioContextHostObject, destination) {
|
|
58
|
-
auto destination = std::make_shared<AudioDestinationNodeHostObject>(
|
|
59
|
-
context_->getDestination());
|
|
60
|
+
auto destination = std::make_shared<AudioDestinationNodeHostObject>(context_->getDestination());
|
|
60
61
|
return jsi::Object::createFromHostObject(runtime, destination);
|
|
61
62
|
}
|
|
62
63
|
|
|
@@ -75,8 +76,7 @@ JSI_PROPERTY_GETTER_IMPL(BaseAudioContextHostObject, currentTime) {
|
|
|
75
76
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createWorkletSourceNode) {
|
|
76
77
|
#if RN_AUDIO_API_ENABLE_WORKLETS
|
|
77
78
|
auto shareableWorklet =
|
|
78
|
-
worklets::extractSerializableOrThrow<worklets::SerializableWorklet>(
|
|
79
|
-
runtime, args[0]);
|
|
79
|
+
worklets::extractSerializableOrThrow<worklets::SerializableWorklet>(runtime, args[0]);
|
|
80
80
|
std::weak_ptr<worklets::WorkletRuntime> workletRuntime;
|
|
81
81
|
auto shouldUseUiRuntime = args[1].getBool();
|
|
82
82
|
auto shouldLockRuntime = shouldUseUiRuntime;
|
|
@@ -86,12 +86,11 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createWorkletSourceNode) {
|
|
|
86
86
|
workletRuntime = context_->runtimeRegistry_.audioRuntime;
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
auto workletSourceNode =
|
|
90
|
-
shareableWorklet, workletRuntime, shouldLockRuntime);
|
|
89
|
+
auto workletSourceNode =
|
|
90
|
+
context_->createWorkletSourceNode(shareableWorklet, workletRuntime, shouldLockRuntime);
|
|
91
91
|
auto workletSourceNodeHostObject =
|
|
92
92
|
std::make_shared<WorkletSourceNodeHostObject>(workletSourceNode);
|
|
93
|
-
return jsi::Object::createFromHostObject(
|
|
94
|
-
runtime, workletSourceNodeHostObject);
|
|
93
|
+
return jsi::Object::createFromHostObject(runtime, workletSourceNodeHostObject);
|
|
95
94
|
#endif
|
|
96
95
|
return jsi::Value::undefined();
|
|
97
96
|
}
|
|
@@ -99,8 +98,7 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createWorkletSourceNode) {
|
|
|
99
98
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createWorkletNode) {
|
|
100
99
|
#if RN_AUDIO_API_ENABLE_WORKLETS
|
|
101
100
|
auto shareableWorklet =
|
|
102
|
-
worklets::extractSerializableOrThrow<worklets::SerializableWorklet>(
|
|
103
|
-
runtime, args[0]);
|
|
101
|
+
worklets::extractSerializableOrThrow<worklets::SerializableWorklet>(runtime, args[0]);
|
|
104
102
|
|
|
105
103
|
std::weak_ptr<worklets::WorkletRuntime> workletRuntime;
|
|
106
104
|
auto shouldUseUiRuntime = args[1].getBool();
|
|
@@ -114,31 +112,21 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createWorkletNode) {
|
|
|
114
112
|
auto inputChannelCount = static_cast<size_t>(args[3].getNumber());
|
|
115
113
|
|
|
116
114
|
auto workletNode = context_->createWorkletNode(
|
|
117
|
-
shareableWorklet,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
inputChannelCount,
|
|
121
|
-
shouldLockRuntime);
|
|
122
|
-
auto workletNodeHostObject =
|
|
123
|
-
std::make_shared<WorkletNodeHostObject>(workletNode);
|
|
124
|
-
auto jsiObject =
|
|
125
|
-
jsi::Object::createFromHostObject(runtime, workletNodeHostObject);
|
|
115
|
+
shareableWorklet, workletRuntime, bufferLength, inputChannelCount, shouldLockRuntime);
|
|
116
|
+
auto workletNodeHostObject = std::make_shared<WorkletNodeHostObject>(workletNode);
|
|
117
|
+
auto jsiObject = jsi::Object::createFromHostObject(runtime, workletNodeHostObject);
|
|
126
118
|
jsiObject.setExternalMemoryPressure(
|
|
127
119
|
runtime,
|
|
128
|
-
sizeof(float) * bufferLength *
|
|
129
|
-
inputChannelCount); // rough estimate of underlying buffer
|
|
120
|
+
sizeof(float) * bufferLength * inputChannelCount); // rough estimate of underlying buffer
|
|
130
121
|
return jsiObject;
|
|
131
122
|
#endif
|
|
132
123
|
return jsi::Value::undefined();
|
|
133
124
|
}
|
|
134
125
|
|
|
135
|
-
JSI_HOST_FUNCTION_IMPL(
|
|
136
|
-
BaseAudioContextHostObject,
|
|
137
|
-
createWorkletProcessingNode) {
|
|
126
|
+
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createWorkletProcessingNode) {
|
|
138
127
|
#if RN_AUDIO_API_ENABLE_WORKLETS
|
|
139
128
|
auto shareableWorklet =
|
|
140
|
-
worklets::extractSerializableOrThrow<worklets::SerializableWorklet>(
|
|
141
|
-
runtime, args[0]);
|
|
129
|
+
worklets::extractSerializableOrThrow<worklets::SerializableWorklet>(runtime, args[0]);
|
|
142
130
|
|
|
143
131
|
std::weak_ptr<worklets::WorkletRuntime> workletRuntime;
|
|
144
132
|
auto shouldUseUiRuntime = args[1].getBool();
|
|
@@ -149,27 +137,24 @@ JSI_HOST_FUNCTION_IMPL(
|
|
|
149
137
|
workletRuntime = context_->runtimeRegistry_.audioRuntime;
|
|
150
138
|
}
|
|
151
139
|
|
|
152
|
-
auto workletProcessingNode =
|
|
153
|
-
shareableWorklet, workletRuntime, shouldLockRuntime);
|
|
140
|
+
auto workletProcessingNode =
|
|
141
|
+
context_->createWorkletProcessingNode(shareableWorklet, workletRuntime, shouldLockRuntime);
|
|
154
142
|
auto workletProcessingNodeHostObject =
|
|
155
143
|
std::make_shared<WorkletProcessingNodeHostObject>(workletProcessingNode);
|
|
156
|
-
return jsi::Object::createFromHostObject(
|
|
157
|
-
runtime, workletProcessingNodeHostObject);
|
|
144
|
+
return jsi::Object::createFromHostObject(runtime, workletProcessingNodeHostObject);
|
|
158
145
|
#endif
|
|
159
146
|
return jsi::Value::undefined();
|
|
160
147
|
}
|
|
161
148
|
|
|
162
149
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createRecorderAdapter) {
|
|
163
150
|
auto recorderAdapter = context_->createRecorderAdapter();
|
|
164
|
-
auto recorderAdapterHostObject =
|
|
165
|
-
std::make_shared<RecorderAdapterNodeHostObject>(recorderAdapter);
|
|
151
|
+
auto recorderAdapterHostObject = std::make_shared<RecorderAdapterNodeHostObject>(recorderAdapter);
|
|
166
152
|
return jsi::Object::createFromHostObject(runtime, recorderAdapterHostObject);
|
|
167
153
|
}
|
|
168
154
|
|
|
169
155
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createOscillator) {
|
|
170
156
|
auto oscillator = context_->createOscillator();
|
|
171
|
-
auto oscillatorHostObject =
|
|
172
|
-
std::make_shared<OscillatorNodeHostObject>(oscillator);
|
|
157
|
+
auto oscillatorHostObject = std::make_shared<OscillatorNodeHostObject>(oscillator);
|
|
173
158
|
return jsi::Object::createFromHostObject(runtime, oscillatorHostObject);
|
|
174
159
|
}
|
|
175
160
|
|
|
@@ -177,15 +162,13 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createStreamer) {
|
|
|
177
162
|
auto streamer = context_->createStreamer();
|
|
178
163
|
auto streamerHostObject = std::make_shared<StreamerNodeHostObject>(streamer);
|
|
179
164
|
auto object = jsi::Object::createFromHostObject(runtime, streamerHostObject);
|
|
180
|
-
object.setExternalMemoryPressure(
|
|
181
|
-
runtime, StreamerNodeHostObject::getSizeInBytes());
|
|
165
|
+
object.setExternalMemoryPressure(runtime, StreamerNodeHostObject::getSizeInBytes());
|
|
182
166
|
return object;
|
|
183
167
|
}
|
|
184
168
|
|
|
185
169
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createConstantSource) {
|
|
186
170
|
auto constantSource = context_->createConstantSource();
|
|
187
|
-
auto constantSourceHostObject =
|
|
188
|
-
std::make_shared<ConstantSourceNodeHostObject>(constantSource);
|
|
171
|
+
auto constantSourceHostObject = std::make_shared<ConstantSourceNodeHostObject>(constantSource);
|
|
189
172
|
return jsi::Object::createFromHostObject(runtime, constantSourceHostObject);
|
|
190
173
|
}
|
|
191
174
|
|
|
@@ -197,23 +180,20 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createGain) {
|
|
|
197
180
|
|
|
198
181
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createStereoPanner) {
|
|
199
182
|
auto stereoPanner = context_->createStereoPanner();
|
|
200
|
-
auto stereoPannerHostObject =
|
|
201
|
-
std::make_shared<StereoPannerNodeHostObject>(stereoPanner);
|
|
183
|
+
auto stereoPannerHostObject = std::make_shared<StereoPannerNodeHostObject>(stereoPanner);
|
|
202
184
|
return jsi::Object::createFromHostObject(runtime, stereoPannerHostObject);
|
|
203
185
|
}
|
|
204
186
|
|
|
205
187
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createBiquadFilter) {
|
|
206
188
|
auto biquadFilter = context_->createBiquadFilter();
|
|
207
|
-
auto biquadFilterHostObject =
|
|
208
|
-
std::make_shared<BiquadFilterNodeHostObject>(biquadFilter);
|
|
189
|
+
auto biquadFilterHostObject = std::make_shared<BiquadFilterNodeHostObject>(biquadFilter);
|
|
209
190
|
return jsi::Object::createFromHostObject(runtime, biquadFilterHostObject);
|
|
210
191
|
}
|
|
211
192
|
|
|
212
193
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createBufferSource) {
|
|
213
194
|
auto pitchCorrection = args[0].asBool();
|
|
214
195
|
auto bufferSource = context_->createBufferSource(pitchCorrection);
|
|
215
|
-
auto bufferSourceHostObject =
|
|
216
|
-
std::make_shared<AudioBufferSourceNodeHostObject>(bufferSource);
|
|
196
|
+
auto bufferSourceHostObject = std::make_shared<AudioBufferSourceNodeHostObject>(bufferSource);
|
|
217
197
|
return jsi::Object::createFromHostObject(runtime, bufferSourceHostObject);
|
|
218
198
|
}
|
|
219
199
|
|
|
@@ -222,37 +202,30 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createBufferQueueSource) {
|
|
|
222
202
|
auto bufferSource = context_->createBufferQueueSource(pitchCorrection);
|
|
223
203
|
auto bufferStreamSourceHostObject =
|
|
224
204
|
std::make_shared<AudioBufferQueueSourceNodeHostObject>(bufferSource);
|
|
225
|
-
return jsi::Object::createFromHostObject(
|
|
226
|
-
runtime, bufferStreamSourceHostObject);
|
|
205
|
+
return jsi::Object::createFromHostObject(runtime, bufferStreamSourceHostObject);
|
|
227
206
|
}
|
|
228
207
|
|
|
229
208
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createBuffer) {
|
|
230
209
|
auto numberOfChannels = static_cast<int>(args[0].getNumber());
|
|
231
210
|
auto length = static_cast<size_t>(args[1].getNumber());
|
|
232
211
|
auto sampleRate = static_cast<float>(args[2].getNumber());
|
|
233
|
-
auto buffer =
|
|
234
|
-
BaseAudioContext::createBuffer(numberOfChannels, length, sampleRate);
|
|
212
|
+
auto buffer = BaseAudioContext::createBuffer(numberOfChannels, length, sampleRate);
|
|
235
213
|
auto bufferHostObject = std::make_shared<AudioBufferHostObject>(buffer);
|
|
236
214
|
|
|
237
215
|
auto jsiObject = jsi::Object::createFromHostObject(runtime, bufferHostObject);
|
|
238
|
-
jsiObject.setExternalMemoryPressure(
|
|
239
|
-
runtime, bufferHostObject->getSizeInBytes());
|
|
216
|
+
jsiObject.setExternalMemoryPressure(runtime, bufferHostObject->getSizeInBytes());
|
|
240
217
|
|
|
241
218
|
return jsiObject;
|
|
242
219
|
}
|
|
243
220
|
|
|
244
221
|
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createPeriodicWave) {
|
|
245
|
-
auto arrayBufferReal =
|
|
246
|
-
|
|
247
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
248
|
-
.getArrayBuffer(runtime);
|
|
222
|
+
auto arrayBufferReal =
|
|
223
|
+
args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
249
224
|
auto real = reinterpret_cast<float *>(arrayBufferReal.data(runtime));
|
|
250
225
|
auto length = static_cast<int>(arrayBufferReal.size(runtime));
|
|
251
226
|
|
|
252
|
-
auto arrayBufferImag =
|
|
253
|
-
|
|
254
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
255
|
-
.getArrayBuffer(runtime);
|
|
227
|
+
auto arrayBufferImag =
|
|
228
|
+
args[1].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
256
229
|
auto imag = reinterpret_cast<float *>(arrayBufferImag.data(runtime));
|
|
257
230
|
|
|
258
231
|
auto disableNormalization = args[2].getBool();
|
|
@@ -260,14 +233,11 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createPeriodicWave) {
|
|
|
260
233
|
auto complexData = std::vector<std::complex<float>>(length);
|
|
261
234
|
|
|
262
235
|
for (size_t i = 0; i < length; i++) {
|
|
263
|
-
complexData[i] = std::complex<float>(
|
|
264
|
-
static_cast<float>(real[i]), static_cast<float>(imag[i]));
|
|
236
|
+
complexData[i] = std::complex<float>(static_cast<float>(real[i]), static_cast<float>(imag[i]));
|
|
265
237
|
}
|
|
266
238
|
|
|
267
|
-
auto periodicWave =
|
|
268
|
-
|
|
269
|
-
auto periodicWaveHostObject =
|
|
270
|
-
std::make_shared<PeriodicWaveHostObject>(periodicWave);
|
|
239
|
+
auto periodicWave = context_->createPeriodicWave(complexData, disableNormalization, length);
|
|
240
|
+
auto periodicWaveHostObject = std::make_shared<PeriodicWaveHostObject>(periodicWave);
|
|
271
241
|
|
|
272
242
|
return jsi::Object::createFromHostObject(runtime, periodicWaveHostObject);
|
|
273
243
|
}
|
|
@@ -284,20 +254,14 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createConvolver) {
|
|
|
284
254
|
if (args[0].isUndefined()) {
|
|
285
255
|
convolver = context_->createConvolver(nullptr, disableNormalization);
|
|
286
256
|
} else {
|
|
287
|
-
auto bufferHostObject =
|
|
288
|
-
|
|
289
|
-
convolver = context_->createConvolver(
|
|
290
|
-
bufferHostObject->audioBuffer_, disableNormalization);
|
|
257
|
+
auto bufferHostObject = args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
|
|
258
|
+
convolver = context_->createConvolver(bufferHostObject->audioBuffer_, disableNormalization);
|
|
291
259
|
}
|
|
292
|
-
auto convolverHostObject =
|
|
293
|
-
|
|
294
|
-
auto jsiObject =
|
|
295
|
-
jsi::Object::createFromHostObject(runtime, convolverHostObject);
|
|
260
|
+
auto convolverHostObject = std::make_shared<ConvolverNodeHostObject>(convolver);
|
|
261
|
+
auto jsiObject = jsi::Object::createFromHostObject(runtime, convolverHostObject);
|
|
296
262
|
if (!args[0].isUndefined()) {
|
|
297
|
-
auto bufferHostObject =
|
|
298
|
-
|
|
299
|
-
jsiObject.setExternalMemoryPressure(
|
|
300
|
-
runtime, bufferHostObject->getSizeInBytes());
|
|
263
|
+
auto bufferHostObject = args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
|
|
264
|
+
jsiObject.setExternalMemoryPressure(runtime, bufferHostObject->getSizeInBytes());
|
|
301
265
|
}
|
|
302
266
|
return jsiObject;
|
|
303
267
|
}
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
#include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
|
|
4
4
|
#include <audioapi/core/OfflineAudioContext.h>
|
|
5
|
+
#include <memory>
|
|
6
|
+
#include <utility>
|
|
5
7
|
|
|
6
8
|
namespace audioapi {
|
|
7
9
|
|
|
@@ -33,10 +35,8 @@ JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, suspend) {
|
|
|
33
35
|
auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
34
36
|
|
|
35
37
|
auto promise = promiseVendor_->createAsyncPromise([=](Promise &&promise) {
|
|
36
|
-
OfflineAudioContextSuspendCallback callback = [promise =
|
|
37
|
-
|
|
38
|
-
promise.resolve(
|
|
39
|
-
[](jsi::Runtime &runtime) { return jsi::Value::undefined(); });
|
|
38
|
+
OfflineAudioContextSuspendCallback callback = [promise = std::move(promise)]() {
|
|
39
|
+
promise.resolve([](jsi::Runtime &runtime) { return jsi::Value::undefined(); });
|
|
40
40
|
};
|
|
41
41
|
audioContext->suspend(when, callback);
|
|
42
42
|
});
|
|
@@ -46,21 +46,17 @@ JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, suspend) {
|
|
|
46
46
|
|
|
47
47
|
JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, startRendering) {
|
|
48
48
|
auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
49
|
-
auto promise =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return jsi::Object::createFromHostObject(
|
|
58
|
-
runtime, audioBufferHostObject);
|
|
59
|
-
});
|
|
60
|
-
};
|
|
49
|
+
auto promise = promiseVendor_->createAsyncPromise([audioContext](Promise &&promise) {
|
|
50
|
+
OfflineAudioContextResultCallback callback =
|
|
51
|
+
[promise = std::move(promise)](const std::shared_ptr<AudioBuffer> &audioBuffer) {
|
|
52
|
+
auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(audioBuffer);
|
|
53
|
+
promise.resolve([audioBufferHostObject](jsi::Runtime &runtime) {
|
|
54
|
+
return jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
|
|
55
|
+
});
|
|
56
|
+
};
|
|
61
57
|
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
audioContext->startRendering(callback);
|
|
59
|
+
});
|
|
64
60
|
|
|
65
61
|
return promise;
|
|
66
62
|
}
|
|
@@ -15,9 +15,9 @@ class OfflineAudioContext;
|
|
|
15
15
|
class OfflineAudioContextHostObject : public BaseAudioContextHostObject {
|
|
16
16
|
public:
|
|
17
17
|
explicit OfflineAudioContextHostObject(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
const std::shared_ptr<OfflineAudioContext> &offlineAudioContext,
|
|
19
|
+
jsi::Runtime *runtime,
|
|
20
|
+
const std::shared_ptr<react::CallInvoker> &callInvoker);
|
|
21
21
|
|
|
22
22
|
JSI_HOST_FUNCTION_DECL(resume);
|
|
23
23
|
JSI_HOST_FUNCTION_DECL(suspend);
|
|
@@ -12,7 +12,6 @@ using namespace facebook;
|
|
|
12
12
|
class WorkletNodeHostObject : public AudioNodeHostObject {
|
|
13
13
|
public:
|
|
14
14
|
explicit WorkletNodeHostObject(const std::shared_ptr<WorkletNode> &node)
|
|
15
|
-
: AudioNodeHostObject(node) {
|
|
16
|
-
}
|
|
15
|
+
: AudioNodeHostObject(node) {}
|
|
17
16
|
};
|
|
18
17
|
} // namespace audioapi
|
|
@@ -12,7 +12,6 @@ using namespace facebook;
|
|
|
12
12
|
class WorkletProcessingNodeHostObject : public AudioNodeHostObject {
|
|
13
13
|
public:
|
|
14
14
|
explicit WorkletProcessingNodeHostObject(const std::shared_ptr<WorkletProcessingNode> &node)
|
|
15
|
-
: AudioNodeHostObject(node) {
|
|
16
|
-
}
|
|
15
|
+
: AudioNodeHostObject(node) {}
|
|
17
16
|
};
|
|
18
17
|
} // namespace audioapi
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#include <audioapi/HostObjects/analysis/AnalyserNodeHostObject.h>
|
|
2
2
|
|
|
3
3
|
#include <audioapi/core/analysis/AnalyserNode.h>
|
|
4
|
+
#include <memory>
|
|
4
5
|
|
|
5
6
|
namespace audioapi {
|
|
6
7
|
|
|
7
|
-
AnalyserNodeHostObject::AnalyserNodeHostObject(
|
|
8
|
-
const std::shared_ptr<AnalyserNode> &node)
|
|
8
|
+
AnalyserNodeHostObject::AnalyserNodeHostObject(const std::shared_ptr<AnalyserNode> &node)
|
|
9
9
|
: AudioNodeHostObject(node) {
|
|
10
10
|
addGetters(
|
|
11
11
|
JSI_EXPORT_PROPERTY_GETTER(AnalyserNodeHostObject, fftSize),
|
|
@@ -90,10 +90,8 @@ JSI_PROPERTY_SETTER_IMPL(AnalyserNodeHostObject, window) {
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getFloatFrequencyData) {
|
|
93
|
-
auto arrayBuffer =
|
|
94
|
-
|
|
95
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
96
|
-
.getArrayBuffer(runtime);
|
|
93
|
+
auto arrayBuffer =
|
|
94
|
+
args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
97
95
|
auto data = reinterpret_cast<float *>(arrayBuffer.data(runtime));
|
|
98
96
|
auto length = static_cast<int>(arrayBuffer.size(runtime));
|
|
99
97
|
|
|
@@ -104,10 +102,8 @@ JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getFloatFrequencyData) {
|
|
|
104
102
|
}
|
|
105
103
|
|
|
106
104
|
JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getByteFrequencyData) {
|
|
107
|
-
auto arrayBuffer =
|
|
108
|
-
|
|
109
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
110
|
-
.getArrayBuffer(runtime);
|
|
105
|
+
auto arrayBuffer =
|
|
106
|
+
args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
111
107
|
auto data = arrayBuffer.data(runtime);
|
|
112
108
|
auto length = static_cast<int>(arrayBuffer.size(runtime));
|
|
113
109
|
|
|
@@ -118,10 +114,8 @@ JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getByteFrequencyData) {
|
|
|
118
114
|
}
|
|
119
115
|
|
|
120
116
|
JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getFloatTimeDomainData) {
|
|
121
|
-
auto arrayBuffer =
|
|
122
|
-
|
|
123
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
124
|
-
.getArrayBuffer(runtime);
|
|
117
|
+
auto arrayBuffer =
|
|
118
|
+
args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
125
119
|
auto data = reinterpret_cast<float *>(arrayBuffer.data(runtime));
|
|
126
120
|
auto length = static_cast<int>(arrayBuffer.size(runtime));
|
|
127
121
|
|
|
@@ -132,10 +126,8 @@ JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getFloatTimeDomainData) {
|
|
|
132
126
|
}
|
|
133
127
|
|
|
134
128
|
JSI_HOST_FUNCTION_IMPL(AnalyserNodeHostObject, getByteTimeDomainData) {
|
|
135
|
-
auto arrayBuffer =
|
|
136
|
-
|
|
137
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
138
|
-
.getArrayBuffer(runtime);
|
|
129
|
+
auto arrayBuffer =
|
|
130
|
+
args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
139
131
|
auto data = arrayBuffer.data(runtime);
|
|
140
132
|
auto length = static_cast<int>(arrayBuffer.size(runtime));
|
|
141
133
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
-
#include <audioapi/core/destinations/AudioDestinationNode.h>
|
|
4
3
|
#include <audioapi/HostObjects/AudioNodeHostObject.h>
|
|
4
|
+
#include <audioapi/core/destinations/AudioDestinationNode.h>
|
|
5
5
|
|
|
6
6
|
#include <memory>
|
|
7
7
|
#include <vector>
|
|
@@ -11,8 +11,7 @@ using namespace facebook;
|
|
|
11
11
|
|
|
12
12
|
class AudioDestinationNodeHostObject : public AudioNodeHostObject {
|
|
13
13
|
public:
|
|
14
|
-
explicit AudioDestinationNodeHostObject(
|
|
15
|
-
const std::shared_ptr<AudioDestinationNode> &node)
|
|
14
|
+
explicit AudioDestinationNodeHostObject(const std::shared_ptr<AudioDestinationNode> &node)
|
|
16
15
|
: AudioNodeHostObject(node) {}
|
|
17
16
|
};
|
|
18
17
|
} // namespace audioapi
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
#include <audioapi/HostObjects/AudioParamHostObject.h>
|
|
4
4
|
#include <audioapi/core/effects/BiquadFilterNode.h>
|
|
5
|
+
#include <memory>
|
|
5
6
|
|
|
6
7
|
namespace audioapi {
|
|
7
8
|
|
|
@@ -17,35 +18,31 @@ BiquadFilterNodeHostObject::BiquadFilterNodeHostObject(
|
|
|
17
18
|
|
|
18
19
|
addSetters(JSI_EXPORT_PROPERTY_SETTER(BiquadFilterNodeHostObject, type));
|
|
19
20
|
|
|
20
|
-
addFunctions(
|
|
21
|
-
JSI_EXPORT_FUNCTION(BiquadFilterNodeHostObject, getFrequencyResponse));
|
|
21
|
+
addFunctions(JSI_EXPORT_FUNCTION(BiquadFilterNodeHostObject, getFrequencyResponse));
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, frequency) {
|
|
25
25
|
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
26
|
-
auto frequencyParam_ =
|
|
27
|
-
biquadFilterNode->getFrequencyParam());
|
|
26
|
+
auto frequencyParam_ =
|
|
27
|
+
std::make_shared<AudioParamHostObject>(biquadFilterNode->getFrequencyParam());
|
|
28
28
|
return jsi::Object::createFromHostObject(runtime, frequencyParam_);
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, detune) {
|
|
32
32
|
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
33
|
-
auto detuneParam_ = std::make_shared<AudioParamHostObject>(
|
|
34
|
-
biquadFilterNode->getDetuneParam());
|
|
33
|
+
auto detuneParam_ = std::make_shared<AudioParamHostObject>(biquadFilterNode->getDetuneParam());
|
|
35
34
|
return jsi::Object::createFromHostObject(runtime, detuneParam_);
|
|
36
35
|
}
|
|
37
36
|
|
|
38
37
|
JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, Q) {
|
|
39
38
|
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
40
|
-
auto QParam_ =
|
|
41
|
-
std::make_shared<AudioParamHostObject>(biquadFilterNode->getQParam());
|
|
39
|
+
auto QParam_ = std::make_shared<AudioParamHostObject>(biquadFilterNode->getQParam());
|
|
42
40
|
return jsi::Object::createFromHostObject(runtime, QParam_);
|
|
43
41
|
}
|
|
44
42
|
|
|
45
43
|
JSI_PROPERTY_GETTER_IMPL(BiquadFilterNodeHostObject, gain) {
|
|
46
44
|
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
47
|
-
auto gainParam_ =
|
|
48
|
-
std::make_shared<AudioParamHostObject>(biquadFilterNode->getGainParam());
|
|
45
|
+
auto gainParam_ = std::make_shared<AudioParamHostObject>(biquadFilterNode->getGainParam());
|
|
49
46
|
return jsi::Object::createFromHostObject(runtime, gainParam_);
|
|
50
47
|
}
|
|
51
48
|
|
|
@@ -61,30 +58,21 @@ JSI_PROPERTY_SETTER_IMPL(BiquadFilterNodeHostObject, type) {
|
|
|
61
58
|
}
|
|
62
59
|
|
|
63
60
|
JSI_HOST_FUNCTION_IMPL(BiquadFilterNodeHostObject, getFrequencyResponse) {
|
|
64
|
-
auto arrayBufferFrequency =
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
.getArrayBuffer(runtime);
|
|
68
|
-
auto frequencyArray =
|
|
69
|
-
reinterpret_cast<float *>(arrayBufferFrequency.data(runtime));
|
|
61
|
+
auto arrayBufferFrequency =
|
|
62
|
+
args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
63
|
+
auto frequencyArray = reinterpret_cast<float *>(arrayBufferFrequency.data(runtime));
|
|
70
64
|
auto length = static_cast<size_t>(arrayBufferFrequency.size(runtime));
|
|
71
65
|
|
|
72
|
-
auto arrayBufferMag =
|
|
73
|
-
|
|
74
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
75
|
-
.getArrayBuffer(runtime);
|
|
66
|
+
auto arrayBufferMag =
|
|
67
|
+
args[1].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
76
68
|
auto magResponseOut = reinterpret_cast<float *>(arrayBufferMag.data(runtime));
|
|
77
69
|
|
|
78
|
-
auto arrayBufferPhase =
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
.getArrayBuffer(runtime);
|
|
82
|
-
auto phaseResponseOut =
|
|
83
|
-
reinterpret_cast<float *>(arrayBufferPhase.data(runtime));
|
|
70
|
+
auto arrayBufferPhase =
|
|
71
|
+
args[2].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
72
|
+
auto phaseResponseOut = reinterpret_cast<float *>(arrayBufferPhase.data(runtime));
|
|
84
73
|
|
|
85
74
|
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
86
|
-
biquadFilterNode->getFrequencyResponse(
|
|
87
|
-
frequencyArray, magResponseOut, phaseResponseOut, length);
|
|
75
|
+
biquadFilterNode->getFrequencyResponse(frequencyArray, magResponseOut, phaseResponseOut, length);
|
|
88
76
|
|
|
89
77
|
return jsi::Value::undefined();
|
|
90
78
|
}
|
|
@@ -13,8 +13,7 @@ class BiquadFilterNode;
|
|
|
13
13
|
|
|
14
14
|
class BiquadFilterNodeHostObject : public AudioNodeHostObject {
|
|
15
15
|
public:
|
|
16
|
-
explicit BiquadFilterNodeHostObject(
|
|
17
|
-
const std::shared_ptr<BiquadFilterNode> &node);
|
|
16
|
+
explicit BiquadFilterNodeHostObject(const std::shared_ptr<BiquadFilterNode> &node);
|
|
18
17
|
|
|
19
18
|
JSI_PROPERTY_GETTER_DECL(frequency);
|
|
20
19
|
JSI_PROPERTY_GETTER_DECL(detune);
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
#include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
|
|
4
4
|
#include <audioapi/core/effects/ConvolverNode.h>
|
|
5
|
+
#include <memory>
|
|
5
6
|
|
|
6
7
|
namespace audioapi {
|
|
7
8
|
|
|
8
|
-
ConvolverNodeHostObject::ConvolverNodeHostObject(
|
|
9
|
-
const std::shared_ptr<ConvolverNode> &node)
|
|
9
|
+
ConvolverNodeHostObject::ConvolverNodeHostObject(const std::shared_ptr<ConvolverNode> &node)
|
|
10
10
|
: AudioNodeHostObject(node) {
|
|
11
11
|
addGetters(
|
|
12
12
|
JSI_EXPORT_PROPERTY_GETTER(ConvolverNodeHostObject, normalize),
|
|
@@ -25,8 +25,7 @@ JSI_PROPERTY_GETTER_IMPL(ConvolverNodeHostObject, buffer) {
|
|
|
25
25
|
auto buffer = convolverNode->getBuffer();
|
|
26
26
|
auto bufferHostObject = std::make_shared<AudioBufferHostObject>(buffer);
|
|
27
27
|
auto jsiObject = jsi::Object::createFromHostObject(runtime, bufferHostObject);
|
|
28
|
-
jsiObject.setExternalMemoryPressure(
|
|
29
|
-
runtime, bufferHostObject->getSizeInBytes() + 16);
|
|
28
|
+
jsiObject.setExternalMemoryPressure(runtime, bufferHostObject->getSizeInBytes() + 16);
|
|
30
29
|
return jsiObject;
|
|
31
30
|
}
|
|
32
31
|
|
|
@@ -42,8 +41,7 @@ JSI_HOST_FUNCTION_IMPL(ConvolverNodeHostObject, setBuffer) {
|
|
|
42
41
|
return jsi::Value::undefined();
|
|
43
42
|
}
|
|
44
43
|
|
|
45
|
-
auto bufferHostObject =
|
|
46
|
-
args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
|
|
44
|
+
auto bufferHostObject = args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
|
|
47
45
|
convolverNode->setBuffer(bufferHostObject->audioBuffer_);
|
|
48
46
|
thisValue.asObject(runtime).setExternalMemoryPressure(
|
|
49
47
|
runtime, bufferHostObject->getSizeInBytes() + 16);
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
#include <audioapi/HostObjects/AudioParamHostObject.h>
|
|
4
4
|
#include <audioapi/core/effects/GainNode.h>
|
|
5
|
+
#include <memory>
|
|
5
6
|
|
|
6
7
|
namespace audioapi {
|
|
7
8
|
|
|
@@ -12,8 +13,7 @@ GainNodeHostObject::GainNodeHostObject(const std::shared_ptr<GainNode> &node)
|
|
|
12
13
|
|
|
13
14
|
JSI_PROPERTY_GETTER_IMPL(GainNodeHostObject, gain) {
|
|
14
15
|
auto gainNode = std::static_pointer_cast<GainNode>(node_);
|
|
15
|
-
auto gainParam =
|
|
16
|
-
std::make_shared<AudioParamHostObject>(gainNode->getGainParam());
|
|
16
|
+
auto gainParam = std::make_shared<AudioParamHostObject>(gainNode->getGainParam());
|
|
17
17
|
return jsi::Object::createFromHostObject(runtime, gainParam);
|
|
18
18
|
}
|
|
19
19
|
|