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
|
@@ -10,30 +10,32 @@
|
|
|
10
10
|
#include <utility>
|
|
11
11
|
#include <vector>
|
|
12
12
|
|
|
13
|
-
#define JSI_HOST_FUNCTION_DECL(name)
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
#define JSI_HOST_FUNCTION_DECL(name) \
|
|
14
|
+
jsi::Value name( \
|
|
15
|
+
jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
|
|
16
|
+
#define JSI_HOST_FUNCTION_IMPL(CLASS, name) \
|
|
17
|
+
jsi::Value CLASS::name( \
|
|
18
|
+
jsi::Runtime &runtime, const jsi::Value &thisValue, const jsi::Value *args, size_t count)
|
|
19
|
+
#define JSI_EXPORT_FUNCTION(CLASS, FUNCTION) \
|
|
20
|
+
std::make_pair( \
|
|
21
|
+
std::string(#FUNCTION), \
|
|
22
|
+
static_cast<jsi::Value (JsiHostObject::*)( \
|
|
23
|
+
jsi::Runtime &, const jsi::Value &, const jsi::Value *, size_t)>(&CLASS::FUNCTION))
|
|
21
24
|
|
|
22
25
|
#define JSI_PROPERTY_GETTER_DECL(name) jsi::Value name(jsi::Runtime &runtime)
|
|
23
26
|
#define JSI_PROPERTY_GETTER_IMPL(CLASS, name) jsi::Value CLASS::name(jsi::Runtime &runtime)
|
|
24
|
-
#define JSI_EXPORT_PROPERTY_GETTER(CLASS, FUNCTION)
|
|
25
|
-
std::make_pair(
|
|
26
|
-
std::string(#FUNCTION),
|
|
27
|
-
static_cast<jsi::Value (JsiHostObject::*)(jsi::Runtime &)>(
|
|
28
|
-
&CLASS::FUNCTION))
|
|
27
|
+
#define JSI_EXPORT_PROPERTY_GETTER(CLASS, FUNCTION) \
|
|
28
|
+
std::make_pair( \
|
|
29
|
+
std::string(#FUNCTION), \
|
|
30
|
+
static_cast<jsi::Value (JsiHostObject::*)(jsi::Runtime &)>(&CLASS::FUNCTION))
|
|
29
31
|
|
|
30
32
|
#define JSI_PROPERTY_SETTER_DECL(name) void name(jsi::Runtime &runtime, const jsi::Value &value)
|
|
31
|
-
#define JSI_PROPERTY_SETTER_IMPL(CLASS, name)
|
|
33
|
+
#define JSI_PROPERTY_SETTER_IMPL(CLASS, name) \
|
|
34
|
+
void CLASS::name(jsi::Runtime &runtime, const jsi::Value &value)
|
|
32
35
|
#define JSI_EXPORT_PROPERTY_SETTER(CLASS, FUNCTION) \
|
|
33
|
-
std::make_pair(
|
|
34
|
-
std::string(#FUNCTION),
|
|
35
|
-
static_cast<void (JsiHostObject::*)(
|
|
36
|
-
jsi::Runtime &, const jsi::Value &)>(&CLASS::FUNCTION))
|
|
36
|
+
std::make_pair( \
|
|
37
|
+
std::string(#FUNCTION), \
|
|
38
|
+
static_cast<void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>(&CLASS::FUNCTION))
|
|
37
39
|
|
|
38
40
|
namespace audioapi {
|
|
39
41
|
|
|
@@ -52,10 +54,7 @@ class JsiHostObject : public jsi::HostObject {
|
|
|
52
54
|
|
|
53
55
|
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
54
56
|
|
|
55
|
-
void set(
|
|
56
|
-
jsi::Runtime &runtime,
|
|
57
|
-
const jsi::PropNameID &name,
|
|
58
|
-
const jsi::Value &value) override;
|
|
57
|
+
void set(jsi::Runtime &runtime, const jsi::PropNameID &name, const jsi::Value &value) override;
|
|
59
58
|
|
|
60
59
|
template <typename... Args>
|
|
61
60
|
void addGetters(Args... args) {
|
|
@@ -73,23 +72,17 @@ class JsiHostObject : public jsi::HostObject {
|
|
|
73
72
|
}
|
|
74
73
|
|
|
75
74
|
protected:
|
|
76
|
-
std::unique_ptr<std::unordered_map<
|
|
77
|
-
std::string,
|
|
78
|
-
jsi::Value (JsiHostObject::*)(jsi::Runtime &)>>
|
|
75
|
+
std::unique_ptr<std::unordered_map<std::string, jsi::Value (JsiHostObject::*)(jsi::Runtime &)>>
|
|
79
76
|
getters_;
|
|
80
77
|
|
|
81
78
|
std::unique_ptr<std::unordered_map<
|
|
82
79
|
std::string,
|
|
83
|
-
jsi::Value (
|
|
84
|
-
jsi::Runtime &,
|
|
85
|
-
const jsi::Value &,
|
|
86
|
-
const jsi::Value *,
|
|
87
|
-
size_t)>>
|
|
80
|
+
jsi::Value (
|
|
81
|
+
JsiHostObject::*)(jsi::Runtime &, const jsi::Value &, const jsi::Value *, size_t)>>
|
|
88
82
|
functions_;
|
|
89
83
|
|
|
90
|
-
std::unique_ptr<
|
|
91
|
-
std::string,
|
|
92
|
-
void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>>
|
|
84
|
+
std::unique_ptr<
|
|
85
|
+
std::unordered_map<std::string, void (JsiHostObject::*)(jsi::Runtime &, const jsi::Value &)>>
|
|
93
86
|
setters_;
|
|
94
87
|
|
|
95
88
|
private:
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
#include <audioapi/jsi/JsiPromise.h>
|
|
2
|
+
#include <memory>
|
|
2
3
|
#include <stdexcept>
|
|
4
|
+
#include <string>
|
|
5
|
+
#include <utility>
|
|
3
6
|
|
|
4
7
|
namespace audioapi {
|
|
5
8
|
|
|
6
9
|
using namespace facebook;
|
|
7
10
|
|
|
8
|
-
jsi::Value PromiseVendor::createAsyncPromise(
|
|
9
|
-
std::function<PromiseResolver()> &&function) {
|
|
11
|
+
jsi::Value PromiseVendor::createAsyncPromise(std::function<PromiseResolver()> &&function) {
|
|
10
12
|
auto &runtime = *runtime_;
|
|
11
13
|
auto callInvoker = callInvoker_;
|
|
12
14
|
auto threadPool = threadPool_;
|
|
@@ -32,15 +34,11 @@ jsi::Value PromiseVendor::createAsyncPromise(
|
|
|
32
34
|
return jsi::Value::undefined();
|
|
33
35
|
};
|
|
34
36
|
auto promiseFunction = jsi::Function::createFromHostFunction(
|
|
35
|
-
runtime,
|
|
36
|
-
jsi::PropNameID::forUtf8(runtime, "asyncPromise"),
|
|
37
|
-
2,
|
|
38
|
-
std::move(promiseLambda));
|
|
37
|
+
runtime, jsi::PropNameID::forUtf8(runtime, "asyncPromise"), 2, std::move(promiseLambda));
|
|
39
38
|
return promiseCtor.callAsConstructor(runtime, std::move(promiseFunction));
|
|
40
39
|
}
|
|
41
40
|
|
|
42
|
-
jsi::Value PromiseVendor::createAsyncPromise(
|
|
43
|
-
std::function<void(Promise &&)> &&function) {
|
|
41
|
+
jsi::Value PromiseVendor::createAsyncPromise(std::function<void(Promise &&)> &&function) {
|
|
44
42
|
auto &runtime = *runtime_;
|
|
45
43
|
auto callInvoker = callInvoker_;
|
|
46
44
|
auto threadPool = threadPool_;
|
|
@@ -55,20 +53,14 @@ jsi::Value PromiseVendor::createAsyncPromise(
|
|
|
55
53
|
auto resolveLocal = arguments[0].asObject(runtime).asFunction(runtime);
|
|
56
54
|
auto rejectLocal = arguments[1].asObject(runtime).asFunction(runtime);
|
|
57
55
|
|
|
58
|
-
Promise promise(
|
|
59
|
-
std::move(callInvoker),
|
|
60
|
-
std::move(resolveLocal),
|
|
61
|
-
std::move(rejectLocal));
|
|
56
|
+
Promise promise(std::move(callInvoker), std::move(resolveLocal), std::move(rejectLocal));
|
|
62
57
|
|
|
63
58
|
threadPool->schedule(std::move(function), std::move(promise));
|
|
64
59
|
|
|
65
60
|
return jsi::Value::undefined();
|
|
66
61
|
};
|
|
67
62
|
auto promiseFunction = jsi::Function::createFromHostFunction(
|
|
68
|
-
runtime,
|
|
69
|
-
jsi::PropNameID::forUtf8(runtime, "asyncPromise"),
|
|
70
|
-
2,
|
|
71
|
-
std::move(promiseLambda));
|
|
63
|
+
runtime, jsi::PropNameID::forUtf8(runtime, "asyncPromise"), 2, std::move(promiseLambda));
|
|
72
64
|
return promiseCtor.callAsConstructor(runtime, std::move(promiseFunction));
|
|
73
65
|
}
|
|
74
66
|
|
|
@@ -79,13 +71,11 @@ void PromiseVendor::asyncPromiseJob(
|
|
|
79
71
|
std::shared_ptr<jsi::Function> &&reject) {
|
|
80
72
|
auto resolver = function();
|
|
81
73
|
callInvoker->invokeAsync(
|
|
82
|
-
[resolver = std::move(resolver),
|
|
83
|
-
|
|
84
|
-
resolve = std::move(resolve)](jsi::Runtime &runtime) -> void {
|
|
74
|
+
[resolver = std::move(resolver), reject = std::move(reject), resolve = std::move(resolve)](
|
|
75
|
+
jsi::Runtime &runtime) -> void {
|
|
85
76
|
auto result = resolver(runtime);
|
|
86
77
|
if (std::holds_alternative<jsi::Value>(result)) {
|
|
87
|
-
auto valueShared = std::make_shared<jsi::Value>(
|
|
88
|
-
std::move(std::get<jsi::Value>(result)));
|
|
78
|
+
auto valueShared = std::make_shared<jsi::Value>(std::move(std::get<jsi::Value>(result)));
|
|
89
79
|
resolve->call(runtime, *valueShared);
|
|
90
80
|
} else {
|
|
91
81
|
auto errorMessage = std::get<std::string>(result);
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
#include <audioapi/core/utils/Constants.h>
|
|
5
3
|
#include <ReactCommon/CallInvoker.h>
|
|
4
|
+
#include <audioapi/core/utils/Constants.h>
|
|
5
|
+
#include <audioapi/utils/ThreadPool.hpp>
|
|
6
6
|
#include <jsi/jsi.h>
|
|
7
|
-
#include <
|
|
8
|
-
#include <thread>
|
|
7
|
+
#include <functional>
|
|
9
8
|
#include <memory>
|
|
10
9
|
#include <string>
|
|
10
|
+
#include <thread>
|
|
11
11
|
#include <utility>
|
|
12
|
-
#include <
|
|
13
|
-
#include <audioapi/utils/ThreadPool.hpp>
|
|
12
|
+
#include <variant>
|
|
14
13
|
|
|
15
14
|
namespace audioapi {
|
|
16
15
|
|
|
@@ -24,49 +23,60 @@ class Promise {
|
|
|
24
23
|
};
|
|
25
24
|
|
|
26
25
|
public:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
auto inner = inner_;
|
|
43
|
-
inner->callInvoker->invokeAsync([inner = std::move(inner), resolver = std::forward<decltype(resolver)>(resolver)](jsi::Runtime &runtime) -> void {
|
|
44
|
-
auto valueShared = std::make_shared<jsi::Value>(resolver(runtime));
|
|
45
|
-
inner->resolve.call(runtime, *valueShared);
|
|
46
|
-
});
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
void reject(const std::string &errorMessage) const {
|
|
50
|
-
auto inner = inner_;
|
|
51
|
-
inner->callInvoker->invokeAsync([inner = std::move(inner), errorMessage](jsi::Runtime &runtime) -> void {
|
|
52
|
-
auto error = jsi::JSError(runtime, errorMessage);
|
|
53
|
-
inner->reject.call(runtime, error.value());
|
|
54
|
-
});
|
|
26
|
+
explicit Promise(
|
|
27
|
+
std::shared_ptr<react::CallInvoker> &&callInvoker,
|
|
28
|
+
jsi::Function &&resolve,
|
|
29
|
+
jsi::Function &&reject)
|
|
30
|
+
: inner_(
|
|
31
|
+
std::make_shared<Inner>(
|
|
32
|
+
Inner{std::move(callInvoker), std::move(resolve), std::move(reject)})) {}
|
|
33
|
+
|
|
34
|
+
Promise(const Promise &other) {
|
|
35
|
+
inner_ = other.inner_;
|
|
36
|
+
}
|
|
37
|
+
Promise(Promise &&other) noexcept : inner_(std::move(other.inner_)) {}
|
|
38
|
+
Promise &operator=(Promise &&other) noexcept {
|
|
39
|
+
if (this != &other) {
|
|
40
|
+
inner_ = std::move(other.inner_);
|
|
55
41
|
}
|
|
42
|
+
return *this;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
void resolve(const std::function<jsi::Value(jsi::Runtime &)> &&resolver) const {
|
|
46
|
+
auto inner = inner_;
|
|
47
|
+
inner->callInvoker->invokeAsync(
|
|
48
|
+
[inner = std::move(inner),
|
|
49
|
+
resolver = std::forward<decltype(resolver)>(resolver)](jsi::Runtime &runtime) -> void {
|
|
50
|
+
auto valueShared = std::make_shared<jsi::Value>(resolver(runtime));
|
|
51
|
+
inner->resolve.call(runtime, *valueShared);
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
void reject(const std::string &errorMessage) const {
|
|
56
|
+
auto inner = inner_;
|
|
57
|
+
inner->callInvoker->invokeAsync(
|
|
58
|
+
[inner = std::move(inner), errorMessage](jsi::Runtime &runtime) -> void {
|
|
59
|
+
auto error = jsi::JSError(runtime, errorMessage);
|
|
60
|
+
inner->reject.call(runtime, error.value());
|
|
61
|
+
});
|
|
62
|
+
}
|
|
56
63
|
|
|
57
64
|
private:
|
|
58
65
|
std::shared_ptr<Inner> inner_;
|
|
59
66
|
};
|
|
60
67
|
|
|
61
|
-
using PromiseResolver = std::function<std::variant<jsi::Value, std::string>(jsi::Runtime&)>;
|
|
68
|
+
using PromiseResolver = std::function<std::variant<jsi::Value, std::string>(jsi::Runtime &)>;
|
|
62
69
|
|
|
63
70
|
class PromiseVendor {
|
|
64
71
|
public:
|
|
65
|
-
PromiseVendor(jsi::Runtime *runtime, const std::shared_ptr<react::CallInvoker> &callInvoker)
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
72
|
+
PromiseVendor(jsi::Runtime *runtime, const std::shared_ptr<react::CallInvoker> &callInvoker)
|
|
73
|
+
: runtime_(runtime),
|
|
74
|
+
callInvoker_(callInvoker),
|
|
75
|
+
threadPool_(
|
|
76
|
+
std::make_shared<ThreadPool>(
|
|
77
|
+
audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_COUNT,
|
|
78
|
+
audioapi::PROMISE_VENDOR_THREAD_POOL_LOAD_BALANCER_QUEUE_SIZE,
|
|
79
|
+
audioapi::PROMISE_VENDOR_THREAD_POOL_WORKER_QUEUE_SIZE)) {}
|
|
70
80
|
|
|
71
81
|
/// @brief Creates an asynchronous promise.
|
|
72
82
|
/// @param function The function to execute asynchronously. It should return either a jsi::Value on success or a std::string error message on failure.
|
|
@@ -94,7 +104,7 @@ class PromiseVendor {
|
|
|
94
104
|
/// @return The created promise.
|
|
95
105
|
/// @note The function is executed on a different thread, the promise should be resolved or rejected using the provided Promise object.
|
|
96
106
|
/// @note IMPORTANT: This function is not thread-safe and should be called from a single thread only. (comes from underlying ThreadPool implementation)
|
|
97
|
-
jsi::Value createAsyncPromise(std::function<void(Promise&&)> &&function);
|
|
107
|
+
jsi::Value createAsyncPromise(std::function<void(Promise &&)> &&function);
|
|
98
108
|
|
|
99
109
|
private:
|
|
100
110
|
jsi::Runtime *runtime_;
|
|
@@ -102,11 +112,10 @@ class PromiseVendor {
|
|
|
102
112
|
std::shared_ptr<ThreadPool> threadPool_;
|
|
103
113
|
|
|
104
114
|
static void asyncPromiseJob(
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
);
|
|
115
|
+
std::shared_ptr<react::CallInvoker> callInvoker,
|
|
116
|
+
std::function<PromiseResolver()> &&function,
|
|
117
|
+
std::shared_ptr<jsi::Function> &&resolve,
|
|
118
|
+
std::shared_ptr<jsi::Function> &&reject);
|
|
110
119
|
};
|
|
111
120
|
|
|
112
121
|
} // namespace audioapi
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
#include <audioapi/jsi/RuntimeLifecycleMonitor.h>
|
|
2
|
+
#include <memory>
|
|
3
|
+
#include <unordered_map>
|
|
4
|
+
#include <unordered_set>
|
|
5
|
+
#include <utility>
|
|
2
6
|
|
|
3
7
|
namespace audioapi {
|
|
4
8
|
|
|
5
|
-
static std::unordered_map<
|
|
6
|
-
jsi::Runtime *,
|
|
7
|
-
std::unordered_set<RuntimeLifecycleListener *>>
|
|
8
|
-
listeners;
|
|
9
|
+
static std::unordered_map<jsi::Runtime *, std::unordered_set<RuntimeLifecycleListener *>> listeners;
|
|
9
10
|
|
|
10
11
|
struct RuntimeLifecycleMonitorObject : public jsi::HostObject {
|
|
11
12
|
jsi::Runtime *rt_;
|
|
@@ -21,9 +22,7 @@ struct RuntimeLifecycleMonitorObject : public jsi::HostObject {
|
|
|
21
22
|
}
|
|
22
23
|
};
|
|
23
24
|
|
|
24
|
-
void RuntimeLifecycleMonitor::addListener(
|
|
25
|
-
jsi::Runtime &rt,
|
|
26
|
-
RuntimeLifecycleListener *listener) {
|
|
25
|
+
void RuntimeLifecycleMonitor::addListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener) {
|
|
27
26
|
auto listenersSet = listeners.find(&rt);
|
|
28
27
|
if (listenersSet == listeners.end()) {
|
|
29
28
|
// We install a global host object in the provided runtime, this way we can
|
|
@@ -43,9 +42,7 @@ void RuntimeLifecycleMonitor::addListener(
|
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
44
|
|
|
46
|
-
void RuntimeLifecycleMonitor::removeListener(
|
|
47
|
-
jsi::Runtime &rt,
|
|
48
|
-
RuntimeLifecycleListener *listener) {
|
|
45
|
+
void RuntimeLifecycleMonitor::removeListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener) {
|
|
49
46
|
auto listenersSet = listeners.find(&rt);
|
|
50
47
|
if (listenersSet == listeners.end()) {
|
|
51
48
|
// nothing to do here
|
|
@@ -27,9 +27,7 @@ struct RuntimeLifecycleListener {
|
|
|
27
27
|
*/
|
|
28
28
|
struct RuntimeLifecycleMonitor {
|
|
29
29
|
static void addListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener);
|
|
30
|
-
static void removeListener(
|
|
31
|
-
jsi::Runtime &rt,
|
|
32
|
-
RuntimeLifecycleListener *listener);
|
|
30
|
+
static void removeListener(jsi::Runtime &rt, RuntimeLifecycleListener *listener);
|
|
33
31
|
};
|
|
34
32
|
|
|
35
33
|
} // namespace audioapi
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#include <audioapi/dsp/VectorMath.h>
|
|
2
2
|
#include <audioapi/utils/AudioArray.h>
|
|
3
|
+
#include <algorithm>
|
|
3
4
|
|
|
4
5
|
namespace audioapi {
|
|
5
6
|
|
|
@@ -93,10 +94,7 @@ void AudioArray::sum(
|
|
|
93
94
|
size_t destinationStart,
|
|
94
95
|
size_t length) {
|
|
95
96
|
dsp::add(
|
|
96
|
-
data_ + destinationStart,
|
|
97
|
-
source->getData() + sourceStart,
|
|
98
|
-
data_ + destinationStart,
|
|
99
|
-
length);
|
|
97
|
+
data_ + destinationStart, source->getData() + sourceStart, data_ + destinationStart, length);
|
|
100
98
|
}
|
|
101
99
|
|
|
102
100
|
void AudioArray::copy(const AudioArray *source) {
|
|
@@ -112,10 +110,7 @@ void AudioArray::copy(
|
|
|
112
110
|
size_t sourceStart,
|
|
113
111
|
size_t destinationStart,
|
|
114
112
|
size_t length) {
|
|
115
|
-
memcpy(
|
|
116
|
-
data_ + destinationStart,
|
|
117
|
-
source->getData() + sourceStart,
|
|
118
|
-
length * sizeof(float));
|
|
113
|
+
memcpy(data_ + destinationStart, source->getData() + sourceStart, length * sizeof(float));
|
|
119
114
|
}
|
|
120
115
|
|
|
121
116
|
} // namespace audioapi
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include <algorithm>
|
|
4
|
-
#include <memory>
|
|
5
4
|
#include <cstddef>
|
|
6
5
|
#include <cstring>
|
|
6
|
+
#include <memory>
|
|
7
7
|
|
|
8
8
|
namespace audioapi {
|
|
9
9
|
|
|
@@ -29,19 +29,11 @@ class AudioArray {
|
|
|
29
29
|
|
|
30
30
|
void sum(const AudioArray *source);
|
|
31
31
|
void sum(const AudioArray *source, size_t start, size_t length);
|
|
32
|
-
void sum(
|
|
33
|
-
const AudioArray *source,
|
|
34
|
-
size_t sourceStart,
|
|
35
|
-
size_t destinationStart,
|
|
36
|
-
size_t length);
|
|
32
|
+
void sum(const AudioArray *source, size_t sourceStart, size_t destinationStart, size_t length);
|
|
37
33
|
|
|
38
34
|
void copy(const AudioArray *source);
|
|
39
35
|
void copy(const AudioArray *source, size_t start, size_t length);
|
|
40
|
-
void copy(
|
|
41
|
-
const AudioArray *source,
|
|
42
|
-
size_t sourceStart,
|
|
43
|
-
size_t destinationStart,
|
|
44
|
-
size_t length);
|
|
36
|
+
void copy(const AudioArray *source, size_t sourceStart, size_t destinationStart, size_t length);
|
|
45
37
|
|
|
46
38
|
protected:
|
|
47
39
|
float *data_;
|