react-native-audio-api 0.8.3-nightly-ea268f4-20251005 → 0.8.3
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/README.md +39 -40
- package/RNAudioAPI.podspec +12 -17
- package/android/build.gradle +4 -44
- package/android/src/main/cpp/audioapi/CMakeLists.txt +0 -65
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +1 -29
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +0 -14
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +1 -7
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +1 -6
- package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +1 -1
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +1 -11
- package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +2 -15
- package/common/cpp/audioapi/AudioAPIModuleInstaller.h +18 -53
- package/common/cpp/audioapi/HostObjects/AnalyserNodeHostObject.h +149 -0
- package/common/cpp/audioapi/HostObjects/AudioBufferBaseSourceNodeHostObject.h +76 -0
- package/common/cpp/audioapi/HostObjects/AudioBufferHostObject.h +120 -0
- package/common/cpp/audioapi/HostObjects/AudioBufferQueueSourceNodeHostObject.h +67 -0
- package/common/cpp/audioapi/HostObjects/AudioBufferSourceNodeHostObject.h +142 -0
- package/common/cpp/audioapi/HostObjects/AudioContextHostObject.h +46 -6
- package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +6 -70
- package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.h +66 -10
- package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +91 -17
- package/common/cpp/audioapi/HostObjects/AudioRecorderHostObject.h +86 -0
- package/common/cpp/audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h +56 -0
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +6 -362
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +241 -29
- package/common/cpp/audioapi/HostObjects/BiquadFilterNodeHostObject.h +89 -0
- package/common/cpp/audioapi/HostObjects/GainNodeHostObject.h +27 -0
- package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +50 -6
- package/common/cpp/audioapi/HostObjects/OscillatorNodeHostObject.h +65 -0
- package/common/cpp/audioapi/HostObjects/{sources/RecorderAdapterNodeHostObject.h → RecorderAdapterNodeHostObject.h} +2 -1
- package/common/cpp/audioapi/HostObjects/StereoPannerNodeHostObject.h +29 -0
- package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +30 -0
- package/common/cpp/audioapi/core/AudioContext.cpp +2 -3
- package/common/cpp/audioapi/core/AudioContext.h +1 -2
- package/common/cpp/audioapi/core/AudioNode.h +1 -1
- package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
- package/common/cpp/audioapi/core/AudioParam.h +1 -1
- package/common/cpp/audioapi/core/{utils/AudioParamEventQueue.cpp → AudioParamEventQueue.cpp} +7 -13
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +3 -47
- package/common/cpp/audioapi/core/BaseAudioContext.h +4 -13
- package/common/cpp/audioapi/core/{utils/Constants.h → Constants.h} +0 -5
- package/common/cpp/audioapi/core/OfflineAudioContext.cpp +3 -4
- package/common/cpp/audioapi/core/OfflineAudioContext.h +1 -2
- package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +1 -1
- package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +1 -1
- package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +1 -1
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +2 -2
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +10 -47
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +3 -18
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +12 -94
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +2 -8
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +42 -33
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +8 -6
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +6 -1
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +1 -1
- package/common/cpp/audioapi/core/sources/StreamerNode.h +8 -0
- package/common/cpp/audioapi/dsp/Windows.cpp +1 -1
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +1 -1
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +1 -2
- package/common/cpp/audioapi/events/AudioEventHandlerRegistryHostObject.h +48 -0
- package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +1 -14
- package/common/cpp/audioapi/jsi/JsiHostObject.h +12 -6
- package/common/cpp/audioapi/jsi/JsiPromise.cpp +0 -49
- package/common/cpp/audioapi/jsi/JsiPromise.h +1 -29
- package/common/cpp/audioapi/utils/AudioBus.cpp +1 -1
- package/common/cpp/test/CMakeLists.txt +3 -11
- package/common/cpp/test/GainTest.cpp +1 -2
- package/common/cpp/test/OscillatorTest.cpp +1 -2
- package/ios/audioapi/ios/AudioAPIModule.mm +5 -32
- package/ios/audioapi/ios/core/IOSAudioPlayer.mm +1 -1
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +1 -2
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
- package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.h +7 -0
- package/ios/audioapi/ios/events/IOSAudioEventHandlerRegistry.mm +12 -0
- package/lib/commonjs/api.js +2 -36
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/api.web.js +0 -8
- package/lib/commonjs/api.web.js.map +1 -1
- package/lib/commonjs/core/AudioBufferBaseSourceNode.js +7 -7
- package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js +6 -1
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioBufferSourceNode.js +0 -15
- package/lib/commonjs/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioContext.js +1 -10
- package/lib/commonjs/core/AudioContext.js.map +1 -1
- package/lib/commonjs/core/AudioScheduledSourceNode.js +4 -4
- package/lib/commonjs/core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +11 -66
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/commonjs/core/OfflineAudioContext.js +2 -11
- package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
- package/lib/commonjs/core/OscillatorNode.js +0 -6
- package/lib/commonjs/core/OscillatorNode.js.map +1 -1
- package/lib/commonjs/hooks/{useSystemVolume.js → useSytemVolume.js} +1 -1
- package/lib/commonjs/hooks/useSytemVolume.js.map +1 -0
- package/lib/commonjs/utils/index.js +0 -9
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/web-core/AudioContext.js +0 -4
- package/lib/commonjs/web-core/AudioContext.js.map +1 -1
- package/lib/commonjs/web-core/AudioScheduledSourceNode.js +1 -1
- package/lib/commonjs/web-core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/commonjs/web-core/OfflineAudioContext.js +0 -4
- package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/module/api.js +2 -6
- package/lib/module/api.js.map +1 -1
- package/lib/module/api.web.js +0 -1
- package/lib/module/api.web.js.map +1 -1
- package/lib/module/core/AudioBufferBaseSourceNode.js +7 -7
- package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
- package/lib/module/core/AudioBufferQueueSourceNode.js +6 -1
- package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/module/core/AudioBufferSourceNode.js +0 -15
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/module/core/AudioContext.js +1 -10
- package/lib/module/core/AudioContext.js.map +1 -1
- package/lib/module/core/AudioScheduledSourceNode.js +4 -4
- package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +11 -66
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/OfflineAudioContext.js +2 -11
- package/lib/module/core/OfflineAudioContext.js.map +1 -1
- package/lib/module/core/OscillatorNode.js +0 -6
- package/lib/module/core/OscillatorNode.js.map +1 -1
- package/lib/module/hooks/{useSystemVolume.js → useSytemVolume.js} +1 -1
- package/lib/module/hooks/useSytemVolume.js.map +1 -0
- package/lib/module/utils/index.js +0 -8
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/web-core/AudioContext.js +0 -4
- package/lib/module/web-core/AudioContext.js.map +1 -1
- package/lib/module/web-core/AudioScheduledSourceNode.js +1 -1
- package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -1
- package/lib/module/web-core/OfflineAudioContext.js +0 -4
- package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/typescript/api.d.ts +4 -8
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/api.web.d.ts +0 -1
- package/lib/typescript/api.web.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts +2 -2
- package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferSourceNode.d.ts +0 -4
- package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioContext.d.ts +0 -1
- package/lib/typescript/core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +11 -19
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/OfflineAudioContext.d.ts +0 -1
- package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/OscillatorNode.d.ts +0 -3
- package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
- package/lib/typescript/events/types.d.ts +0 -2
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/lib/typescript/hooks/{useSystemVolume.d.ts → useSytemVolume.d.ts} +1 -1
- package/lib/typescript/hooks/useSytemVolume.d.ts.map +1 -0
- package/lib/typescript/interfaces.d.ts +3 -21
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +1 -2
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/index.d.ts +0 -8
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +1 -1
- package/lib/typescript/web-core/AudioContext.d.ts +2 -4
- package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +1 -1
- package/lib/typescript/web-core/BaseAudioContext.d.ts +0 -2
- package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/OfflineAudioContext.d.ts +2 -4
- package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
- package/package.json +2 -3
- package/src/api.ts +3 -12
- package/src/api.web.ts +0 -1
- package/src/core/AudioBufferBaseSourceNode.ts +9 -9
- package/src/core/AudioBufferQueueSourceNode.ts +9 -1
- package/src/core/AudioBufferSourceNode.ts +0 -28
- package/src/core/AudioContext.ts +1 -12
- package/src/core/AudioScheduledSourceNode.ts +5 -5
- package/src/core/BaseAudioContext.ts +13 -149
- package/src/core/OfflineAudioContext.ts +2 -18
- package/src/core/OscillatorNode.ts +0 -11
- package/src/events/types.ts +0 -2
- package/src/interfaces.ts +5 -59
- package/src/types.ts +1 -3
- package/src/utils/index.ts +0 -21
- package/src/web-core/AudioBufferSourceNode.tsx +1 -1
- package/src/web-core/AudioContext.tsx +2 -7
- package/src/web-core/AudioScheduledSourceNode.tsx +1 -1
- package/src/web-core/BaseAudioContext.tsx +0 -2
- package/src/web-core/OfflineAudioContext.tsx +2 -7
- package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +0 -36
- package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +0 -24
- package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +0 -57
- package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +0 -105
- package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +0 -70
- package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +0 -18
- package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +0 -18
- package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +0 -148
- package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.h +0 -37
- package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +0 -92
- package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +0 -29
- package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +0 -20
- package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.h +0 -19
- package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +0 -21
- package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +0 -21
- package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +0 -41
- package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +0 -28
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +0 -69
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +0 -33
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +0 -73
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +0 -29
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +0 -94
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +0 -46
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +0 -60
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +0 -25
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +0 -152
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +0 -37
- package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +0 -52
- package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.h +0 -25
- package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +0 -19
- package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +0 -21
- package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +0 -55
- package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +0 -27
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +0 -22
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +0 -28
- package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +0 -18
- package/common/cpp/audioapi/core/effects/WorkletNode.cpp +0 -87
- package/common/cpp/audioapi/core/effects/WorkletNode.h +0 -65
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +0 -89
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +0 -52
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +0 -51
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +0 -26
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +0 -82
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +0 -47
- package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +0 -52
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +0 -9
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +0 -73
- package/common/cpp/audioapi/utils/ThreadPool.hpp +0 -104
- package/common/cpp/test/AudioParamTest.cpp +0 -204
- package/lib/commonjs/core/ConstantSourceNode.js +0 -17
- package/lib/commonjs/core/ConstantSourceNode.js.map +0 -1
- package/lib/commonjs/core/WorkletNode.js +0 -11
- package/lib/commonjs/core/WorkletNode.js.map +0 -1
- package/lib/commonjs/core/WorkletProcessingNode.js +0 -11
- package/lib/commonjs/core/WorkletProcessingNode.js.map +0 -1
- package/lib/commonjs/core/WorkletSourceNode.js +0 -11
- package/lib/commonjs/core/WorkletSourceNode.js.map +0 -1
- package/lib/commonjs/hooks/useSystemVolume.js.map +0 -1
- package/lib/commonjs/web-core/ConstantSourceNode.js +0 -17
- package/lib/commonjs/web-core/ConstantSourceNode.js.map +0 -1
- package/lib/module/core/ConstantSourceNode.js +0 -11
- package/lib/module/core/ConstantSourceNode.js.map +0 -1
- package/lib/module/core/WorkletNode.js +0 -5
- package/lib/module/core/WorkletNode.js.map +0 -1
- package/lib/module/core/WorkletProcessingNode.js +0 -5
- package/lib/module/core/WorkletProcessingNode.js.map +0 -1
- package/lib/module/core/WorkletSourceNode.js +0 -5
- package/lib/module/core/WorkletSourceNode.js.map +0 -1
- package/lib/module/hooks/useSystemVolume.js.map +0 -1
- package/lib/module/web-core/ConstantSourceNode.js +0 -11
- package/lib/module/web-core/ConstantSourceNode.js.map +0 -1
- package/lib/typescript/core/ConstantSourceNode.d.ts +0 -9
- package/lib/typescript/core/ConstantSourceNode.d.ts.map +0 -1
- package/lib/typescript/core/WorkletNode.d.ts +0 -4
- package/lib/typescript/core/WorkletNode.d.ts.map +0 -1
- package/lib/typescript/core/WorkletProcessingNode.d.ts +0 -4
- package/lib/typescript/core/WorkletProcessingNode.d.ts.map +0 -1
- package/lib/typescript/core/WorkletSourceNode.d.ts +0 -4
- package/lib/typescript/core/WorkletSourceNode.d.ts.map +0 -1
- package/lib/typescript/hooks/useSystemVolume.d.ts.map +0 -1
- package/lib/typescript/web-core/ConstantSourceNode.d.ts +0 -8
- package/lib/typescript/web-core/ConstantSourceNode.d.ts.map +0 -1
- package/src/core/ConstantSourceNode.ts +0 -13
- package/src/core/WorkletNode.ts +0 -3
- package/src/core/WorkletProcessingNode.ts +0 -3
- package/src/core/WorkletSourceNode.ts +0 -3
- package/src/web-core/ConstantSourceNode.tsx +0 -12
- /package/common/cpp/audioapi/HostObjects/{destinations/AudioDestinationNodeHostObject.h → AudioDestinationNodeHostObject.h} +0 -0
- /package/common/cpp/audioapi/HostObjects/{effects/PeriodicWaveHostObject.h → PeriodicWaveHostObject.h} +0 -0
- /package/common/cpp/audioapi/core/{utils/AudioParamEventQueue.h → AudioParamEventQueue.h} +0 -0
- /package/src/hooks/{useSystemVolume.ts → useSytemVolume.ts} +0 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <audioapi/HostObjects/AudioNodeHostObject.h>
|
|
4
|
+
#include <audioapi/HostObjects/AudioParamHostObject.h>
|
|
5
|
+
#include <audioapi/core/effects/BiquadFilterNode.h>
|
|
6
|
+
|
|
7
|
+
#include <memory>
|
|
8
|
+
#include <string>
|
|
9
|
+
#include <vector>
|
|
10
|
+
|
|
11
|
+
namespace audioapi {
|
|
12
|
+
using namespace facebook;
|
|
13
|
+
|
|
14
|
+
class BiquadFilterNodeHostObject : public AudioNodeHostObject {
|
|
15
|
+
public:
|
|
16
|
+
explicit BiquadFilterNodeHostObject(
|
|
17
|
+
const std::shared_ptr<BiquadFilterNode> &node)
|
|
18
|
+
: AudioNodeHostObject(node) {
|
|
19
|
+
addGetters(
|
|
20
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, frequency),
|
|
21
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, detune),
|
|
22
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, Q),
|
|
23
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, gain),
|
|
24
|
+
JSI_EXPORT_PROPERTY_GETTER(BiquadFilterNodeHostObject, type));
|
|
25
|
+
|
|
26
|
+
addFunctions(
|
|
27
|
+
JSI_EXPORT_FUNCTION(BiquadFilterNodeHostObject, getFrequencyResponse));
|
|
28
|
+
|
|
29
|
+
addSetters(JSI_EXPORT_PROPERTY_SETTER(BiquadFilterNodeHostObject, type));
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
JSI_PROPERTY_GETTER(frequency) {
|
|
33
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
34
|
+
auto frequencyParam_ = std::make_shared<AudioParamHostObject>(
|
|
35
|
+
biquadFilterNode->getFrequencyParam());
|
|
36
|
+
return jsi::Object::createFromHostObject(runtime, frequencyParam_);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
JSI_PROPERTY_GETTER(detune) {
|
|
40
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
41
|
+
auto detuneParam_ = std::make_shared<AudioParamHostObject>(
|
|
42
|
+
biquadFilterNode->getDetuneParam());
|
|
43
|
+
return jsi::Object::createFromHostObject(runtime, detuneParam_);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
JSI_PROPERTY_GETTER(Q) {
|
|
47
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
48
|
+
auto QParam_ =
|
|
49
|
+
std::make_shared<AudioParamHostObject>(biquadFilterNode->getQParam());
|
|
50
|
+
return jsi::Object::createFromHostObject(runtime, QParam_);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
JSI_PROPERTY_GETTER(gain) {
|
|
54
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
55
|
+
auto gainParam_ = std::make_shared<AudioParamHostObject>(
|
|
56
|
+
biquadFilterNode->getGainParam());
|
|
57
|
+
return jsi::Object::createFromHostObject(runtime, gainParam_);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
JSI_PROPERTY_GETTER(type) {
|
|
61
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
62
|
+
auto type = biquadFilterNode->getType();
|
|
63
|
+
return jsi::String::createFromUtf8(runtime, type);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
JSI_HOST_FUNCTION(getFrequencyResponse) {
|
|
67
|
+
auto arrayBufferFrequency = args[0].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
68
|
+
auto frequencyArray = reinterpret_cast<float *>(arrayBufferFrequency.data(runtime));
|
|
69
|
+
auto length = static_cast<int>(arrayBufferFrequency.size(runtime));
|
|
70
|
+
|
|
71
|
+
auto arrayBufferMag = args[1].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
72
|
+
auto magResponseOut = reinterpret_cast<float *>(arrayBufferMag.data(runtime));
|
|
73
|
+
|
|
74
|
+
auto arrayBufferPhase = args[2].getObject(runtime).getPropertyAsObject(runtime, "buffer").getArrayBuffer(runtime);
|
|
75
|
+
auto phaseResponseOut = reinterpret_cast<float *>(arrayBufferPhase.data(runtime));
|
|
76
|
+
|
|
77
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
78
|
+
biquadFilterNode->getFrequencyResponse(
|
|
79
|
+
frequencyArray, magResponseOut, phaseResponseOut, length);
|
|
80
|
+
|
|
81
|
+
return jsi::Value::undefined();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
JSI_PROPERTY_SETTER(type) {
|
|
85
|
+
auto biquadFilterNode = std::static_pointer_cast<BiquadFilterNode>(node_);
|
|
86
|
+
biquadFilterNode->setType(value.getString(runtime).utf8(runtime));
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <audioapi/HostObjects/AudioNodeHostObject.h>
|
|
4
|
+
#include <audioapi/HostObjects/AudioParamHostObject.h>
|
|
5
|
+
#include <audioapi/core/effects/GainNode.h>
|
|
6
|
+
|
|
7
|
+
#include <memory>
|
|
8
|
+
#include <vector>
|
|
9
|
+
|
|
10
|
+
namespace audioapi {
|
|
11
|
+
using namespace facebook;
|
|
12
|
+
|
|
13
|
+
class GainNodeHostObject : public AudioNodeHostObject {
|
|
14
|
+
public:
|
|
15
|
+
explicit GainNodeHostObject(const std::shared_ptr<GainNode> &node)
|
|
16
|
+
: AudioNodeHostObject(node) {
|
|
17
|
+
addGetters(JSI_EXPORT_PROPERTY_GETTER(GainNodeHostObject, gain));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
JSI_PROPERTY_GETTER(gain) {
|
|
21
|
+
auto gainNode = std::static_pointer_cast<GainNode>(node_);
|
|
22
|
+
auto gainParam =
|
|
23
|
+
std::make_shared<AudioParamHostObject>(gainNode->getGainParam());
|
|
24
|
+
return jsi::Object::createFromHostObject(runtime, gainParam);
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
} // namespace audioapi
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
+
#include <audioapi/core/OfflineAudioContext.h>
|
|
3
4
|
#include <audioapi/HostObjects/BaseAudioContextHostObject.h>
|
|
4
5
|
|
|
5
6
|
#include <jsi/jsi.h>
|
|
@@ -10,17 +11,60 @@
|
|
|
10
11
|
namespace audioapi {
|
|
11
12
|
using namespace facebook;
|
|
12
13
|
|
|
13
|
-
class OfflineAudioContext;
|
|
14
|
-
|
|
15
14
|
class OfflineAudioContextHostObject : public BaseAudioContextHostObject {
|
|
16
15
|
public:
|
|
17
16
|
explicit OfflineAudioContextHostObject(
|
|
18
17
|
const std::shared_ptr<OfflineAudioContext> &offlineAudioContext,
|
|
19
18
|
jsi::Runtime *runtime,
|
|
20
|
-
const std::shared_ptr<react::CallInvoker> &callInvoker)
|
|
19
|
+
const std::shared_ptr<react::CallInvoker> &callInvoker)
|
|
20
|
+
: BaseAudioContextHostObject(offlineAudioContext, runtime, callInvoker) {
|
|
21
|
+
addFunctions(
|
|
22
|
+
JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, resume),
|
|
23
|
+
JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, suspend),
|
|
24
|
+
JSI_EXPORT_FUNCTION(OfflineAudioContextHostObject, startRendering));
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
JSI_HOST_FUNCTION(resume) {
|
|
28
|
+
auto promise = promiseVendor_->createPromise([this](const std::shared_ptr<Promise>& promise) {
|
|
29
|
+
auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
30
|
+
audioContext->resume();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
return promise;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
JSI_HOST_FUNCTION(suspend) {
|
|
37
|
+
double when = args[0].getNumber();
|
|
38
|
+
|
|
39
|
+
auto promise = promiseVendor_->createPromise([this, when](const std::shared_ptr<Promise>& promise) {
|
|
40
|
+
auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
41
|
+
OfflineAudioContextSuspendCallback callback = [promise]() {
|
|
42
|
+
promise->resolve([](jsi::Runtime &runtime) {
|
|
43
|
+
return jsi::Value::undefined();
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
audioContext->suspend(when, callback);
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
return promise;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
JSI_HOST_FUNCTION(startRendering) {
|
|
53
|
+
auto promise = promiseVendor_->createPromise([this](const std::shared_ptr<Promise>& promise) {
|
|
54
|
+
auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
55
|
+
|
|
56
|
+
OfflineAudioContextResultCallback callback =
|
|
57
|
+
[promise](const std::shared_ptr<AudioBuffer>& audioBuffer) -> void {
|
|
58
|
+
auto audioBufferHostObject = std::make_shared<AudioBufferHostObject>(audioBuffer);
|
|
59
|
+
promise->resolve([audioBufferHostObject = std::move(audioBufferHostObject)](jsi::Runtime &runtime) {
|
|
60
|
+
return jsi::Object::createFromHostObject(runtime, audioBufferHostObject);
|
|
61
|
+
});
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
audioContext->startRendering(callback);
|
|
65
|
+
});
|
|
21
66
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
JSI_HOST_FUNCTION_DECL(startRendering);
|
|
67
|
+
return promise;
|
|
68
|
+
}
|
|
25
69
|
};
|
|
26
70
|
} // namespace audioapi
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h>
|
|
4
|
+
#include <audioapi/HostObjects/AudioParamHostObject.h>
|
|
5
|
+
#include <audioapi/HostObjects/PeriodicWaveHostObject.h>
|
|
6
|
+
#include <audioapi/core/sources/OscillatorNode.h>
|
|
7
|
+
|
|
8
|
+
#include <memory>
|
|
9
|
+
#include <string>
|
|
10
|
+
#include <vector>
|
|
11
|
+
|
|
12
|
+
namespace audioapi {
|
|
13
|
+
using namespace facebook;
|
|
14
|
+
|
|
15
|
+
class OscillatorNodeHostObject : public AudioScheduledSourceNodeHostObject {
|
|
16
|
+
public:
|
|
17
|
+
explicit OscillatorNodeHostObject(
|
|
18
|
+
const std::shared_ptr<OscillatorNode> &node)
|
|
19
|
+
: AudioScheduledSourceNodeHostObject(node) {
|
|
20
|
+
addGetters(
|
|
21
|
+
JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, frequency),
|
|
22
|
+
JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, detune),
|
|
23
|
+
JSI_EXPORT_PROPERTY_GETTER(OscillatorNodeHostObject, type));
|
|
24
|
+
|
|
25
|
+
addFunctions(
|
|
26
|
+
JSI_EXPORT_FUNCTION(OscillatorNodeHostObject, setPeriodicWave));
|
|
27
|
+
|
|
28
|
+
addSetters(JSI_EXPORT_PROPERTY_SETTER(OscillatorNodeHostObject, type));
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
JSI_PROPERTY_GETTER(frequency) {
|
|
32
|
+
auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
|
|
33
|
+
auto frequencyParam_ = std::make_shared<AudioParamHostObject>(
|
|
34
|
+
oscillatorNode->getFrequencyParam());
|
|
35
|
+
return jsi::Object::createFromHostObject(runtime, frequencyParam_);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
JSI_PROPERTY_GETTER(detune) {
|
|
39
|
+
auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
|
|
40
|
+
auto detuneParam_ = std::make_shared<AudioParamHostObject>(
|
|
41
|
+
oscillatorNode->getDetuneParam());
|
|
42
|
+
return jsi::Object::createFromHostObject(runtime, detuneParam_);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
JSI_PROPERTY_GETTER(type) {
|
|
46
|
+
auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
|
|
47
|
+
auto waveType = oscillatorNode->getType();
|
|
48
|
+
return jsi::String::createFromUtf8(runtime, waveType);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
JSI_HOST_FUNCTION(setPeriodicWave) {
|
|
52
|
+
auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
|
|
53
|
+
auto periodicWave =
|
|
54
|
+
args[0].getObject(runtime).getHostObject<PeriodicWaveHostObject>(
|
|
55
|
+
runtime);
|
|
56
|
+
oscillatorNode->setPeriodicWave(periodicWave->periodicWave_);
|
|
57
|
+
return jsi::Value::undefined();
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
JSI_PROPERTY_SETTER(type) {
|
|
61
|
+
auto oscillatorNode = std::static_pointer_cast<OscillatorNode>(node_);
|
|
62
|
+
oscillatorNode->setType(value.getString(runtime).utf8(runtime));
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
} // namespace audioapi
|
|
@@ -16,7 +16,8 @@ class RecorderAdapterNodeHostObject : public AudioNodeHostObject {
|
|
|
16
16
|
public:
|
|
17
17
|
explicit RecorderAdapterNodeHostObject(
|
|
18
18
|
const std::shared_ptr<RecorderAdapterNode> &node)
|
|
19
|
-
: AudioNodeHostObject(node) {
|
|
19
|
+
: AudioNodeHostObject(node) {
|
|
20
|
+
}
|
|
20
21
|
|
|
21
22
|
private:
|
|
22
23
|
friend class AudioRecorderHostObject;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <audioapi/HostObjects/AudioNodeHostObject.h>
|
|
4
|
+
#include <audioapi/HostObjects/AudioParamHostObject.h>
|
|
5
|
+
#include <audioapi/core/effects/StereoPannerNode.h>
|
|
6
|
+
|
|
7
|
+
#include <memory>
|
|
8
|
+
#include <string>
|
|
9
|
+
#include <vector>
|
|
10
|
+
|
|
11
|
+
namespace audioapi {
|
|
12
|
+
using namespace facebook;
|
|
13
|
+
|
|
14
|
+
class StereoPannerNodeHostObject : public AudioNodeHostObject {
|
|
15
|
+
public:
|
|
16
|
+
explicit StereoPannerNodeHostObject(
|
|
17
|
+
const std::shared_ptr<StereoPannerNode> &node)
|
|
18
|
+
: AudioNodeHostObject(node) {
|
|
19
|
+
addGetters(JSI_EXPORT_PROPERTY_GETTER(StereoPannerNodeHostObject, pan));
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
JSI_PROPERTY_GETTER(pan) {
|
|
23
|
+
auto stereoPannerNode = std::static_pointer_cast<StereoPannerNode>(node_);
|
|
24
|
+
auto panParam_ =
|
|
25
|
+
std::make_shared<AudioParamHostObject>(stereoPannerNode->getPanParam());
|
|
26
|
+
return jsi::Object::createFromHostObject(runtime, panParam_);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h>
|
|
4
|
+
#include <audioapi/HostObjects/AudioParamHostObject.h>
|
|
5
|
+
#include <audioapi/HostObjects/PeriodicWaveHostObject.h>
|
|
6
|
+
#include <audioapi/core/sources/StreamerNode.h>
|
|
7
|
+
|
|
8
|
+
#include <memory>
|
|
9
|
+
#include <string>
|
|
10
|
+
#include <vector>
|
|
11
|
+
|
|
12
|
+
namespace audioapi {
|
|
13
|
+
using namespace facebook;
|
|
14
|
+
|
|
15
|
+
class StreamerNodeHostObject : public AudioScheduledSourceNodeHostObject {
|
|
16
|
+
public:
|
|
17
|
+
explicit StreamerNodeHostObject(
|
|
18
|
+
const std::shared_ptr<StreamerNode> &node)
|
|
19
|
+
: AudioScheduledSourceNodeHostObject(node) {
|
|
20
|
+
addFunctions(JSI_EXPORT_FUNCTION(StreamerNodeHostObject, initialize));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
JSI_HOST_FUNCTION(initialize) {
|
|
24
|
+
auto streamerNode = std::static_pointer_cast<StreamerNode>(node_);
|
|
25
|
+
auto path = args[0].getString(runtime).utf8(runtime);
|
|
26
|
+
auto result = streamerNode->initialize(path);
|
|
27
|
+
return jsi::Value(result);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
} // namespace audioapi
|
|
@@ -14,9 +14,8 @@ AudioContext::AudioContext(
|
|
|
14
14
|
float sampleRate,
|
|
15
15
|
bool initSuspended,
|
|
16
16
|
const std::shared_ptr<IAudioEventHandlerRegistry>
|
|
17
|
-
&audioEventHandlerRegistry
|
|
18
|
-
|
|
19
|
-
: BaseAudioContext(audioEventHandlerRegistry, runtimeRegistry) {
|
|
17
|
+
&audioEventHandlerRegistry)
|
|
18
|
+
: BaseAudioContext(audioEventHandlerRegistry) {
|
|
20
19
|
#ifdef ANDROID
|
|
21
20
|
audioPlayer_ = std::make_shared<AudioPlayer>(
|
|
22
21
|
this->renderAudio(), sampleRate, destination_->getChannelCount());
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include <audioapi/core/BaseAudioContext.h>
|
|
4
|
-
#include <audioapi/core/utils/worklets/SafeIncludes.h>
|
|
5
4
|
|
|
6
5
|
#include <memory>
|
|
7
6
|
#include <functional>
|
|
@@ -15,7 +14,7 @@ class IOSAudioPlayer;
|
|
|
15
14
|
|
|
16
15
|
class AudioContext : public BaseAudioContext {
|
|
17
16
|
public:
|
|
18
|
-
explicit AudioContext(float sampleRate, bool initSuspended, const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry
|
|
17
|
+
explicit AudioContext(float sampleRate, bool initSuspended, const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry);
|
|
19
18
|
~AudioContext() override;
|
|
20
19
|
|
|
21
20
|
void close();
|
|
@@ -219,9 +219,9 @@ void AudioParam::setValueCurveAtTime(
|
|
|
219
219
|
(time - startTime)));
|
|
220
220
|
// Calculate interpolation factor between adjacent array elements
|
|
221
221
|
auto factor = static_cast<float>(
|
|
222
|
+
k -
|
|
222
223
|
(time - startTime) * static_cast<double>(length - 1) /
|
|
223
|
-
(endTime - startTime)
|
|
224
|
-
k);
|
|
224
|
+
(endTime - startTime));
|
|
225
225
|
return dsp::linearInterpolate(values->data(), k, k + 1, factor);
|
|
226
226
|
}
|
|
227
227
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
#include <audioapi/core/utils/ParamChangeEvent.h>
|
|
5
5
|
#include <audioapi/utils/AudioBus.h>
|
|
6
6
|
#include <audioapi/core/AudioNode.h>
|
|
7
|
-
#include <audioapi/core/
|
|
7
|
+
#include <audioapi/core/AudioParamEventQueue.h>
|
|
8
8
|
|
|
9
9
|
#include <cstddef>
|
|
10
10
|
#include <utility>
|
package/common/cpp/audioapi/core/{utils/AudioParamEventQueue.cpp → AudioParamEventQueue.cpp}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#include <audioapi/core/
|
|
1
|
+
#include <audioapi/core/AudioParamEventQueue.h>
|
|
2
2
|
|
|
3
3
|
namespace audioapi {
|
|
4
4
|
|
|
@@ -31,12 +31,12 @@ bool AudioParamEventQueue::popFront(ParamChangeEvent &event) {
|
|
|
31
31
|
|
|
32
32
|
void AudioParamEventQueue::cancelScheduledValues(double cancelTime) {
|
|
33
33
|
while (!eventQueue_.isEmpty()) {
|
|
34
|
-
auto &
|
|
35
|
-
if (
|
|
34
|
+
auto &front = eventQueue_.peekBack();
|
|
35
|
+
if (front.getEndTime() < cancelTime) {
|
|
36
36
|
break;
|
|
37
37
|
}
|
|
38
|
-
if (
|
|
39
|
-
|
|
38
|
+
if (front.getStartTime() >= cancelTime ||
|
|
39
|
+
front.getType() == ParamChangeEventType::SET_VALUE_CURVE) {
|
|
40
40
|
eventQueue_.popBack();
|
|
41
41
|
}
|
|
42
42
|
}
|
|
@@ -46,8 +46,8 @@ void AudioParamEventQueue::cancelAndHoldAtTime(
|
|
|
46
46
|
double cancelTime,
|
|
47
47
|
double &endTimeCache) {
|
|
48
48
|
while (!eventQueue_.isEmpty()) {
|
|
49
|
-
auto &
|
|
50
|
-
if (
|
|
49
|
+
auto &front = eventQueue_.peekBack();
|
|
50
|
+
if (front.getEndTime() < cancelTime || front.getStartTime() <= cancelTime) {
|
|
51
51
|
break;
|
|
52
52
|
}
|
|
53
53
|
eventQueue_.popBack();
|
|
@@ -59,12 +59,6 @@ void AudioParamEventQueue::cancelAndHoldAtTime(
|
|
|
59
59
|
}
|
|
60
60
|
|
|
61
61
|
auto &back = eventQueue_.peekBackMut();
|
|
62
|
-
back.setEndValue(back.getCalculateValue()(
|
|
63
|
-
back.getStartTime(),
|
|
64
|
-
back.getEndTime(),
|
|
65
|
-
back.getStartValue(),
|
|
66
|
-
back.getEndValue(),
|
|
67
|
-
cancelTime));
|
|
68
62
|
back.setEndTime(std::min(cancelTime, back.getEndTime()));
|
|
69
63
|
}
|
|
70
64
|
|
|
@@ -4,19 +4,14 @@
|
|
|
4
4
|
#include <audioapi/core/effects/BiquadFilterNode.h>
|
|
5
5
|
#include <audioapi/core/effects/GainNode.h>
|
|
6
6
|
#include <audioapi/core/effects/StereoPannerNode.h>
|
|
7
|
-
#include <audioapi/core/effects/WorkletNode.h>
|
|
8
|
-
#include <audioapi/core/effects/WorkletProcessingNode.h>
|
|
9
7
|
#include <audioapi/core/sources/AudioBuffer.h>
|
|
10
8
|
#include <audioapi/core/sources/AudioBufferQueueSourceNode.h>
|
|
11
9
|
#include <audioapi/core/sources/AudioBufferSourceNode.h>
|
|
12
|
-
#include <audioapi/core/sources/ConstantSourceNode.h>
|
|
13
10
|
#include <audioapi/core/sources/OscillatorNode.h>
|
|
14
11
|
#include <audioapi/core/sources/RecorderAdapterNode.h>
|
|
15
12
|
#include <audioapi/core/sources/StreamerNode.h>
|
|
16
|
-
#include <audioapi/core/sources/WorkletSourceNode.h>
|
|
17
13
|
#include <audioapi/core/utils/AudioDecoder.h>
|
|
18
14
|
#include <audioapi/core/utils/AudioNodeManager.h>
|
|
19
|
-
#include <audioapi/core/utils/worklets/SafeIncludes.h>
|
|
20
15
|
#include <audioapi/events/AudioEventHandlerRegistry.h>
|
|
21
16
|
#include <audioapi/utils/AudioArray.h>
|
|
22
17
|
#include <audioapi/utils/AudioBus.h>
|
|
@@ -26,13 +21,11 @@ namespace audioapi {
|
|
|
26
21
|
|
|
27
22
|
BaseAudioContext::BaseAudioContext(
|
|
28
23
|
const std::shared_ptr<IAudioEventHandlerRegistry>
|
|
29
|
-
&audioEventHandlerRegistry
|
|
30
|
-
const RuntimeRegistry &runtimeRegistry) {
|
|
24
|
+
&audioEventHandlerRegistry) {
|
|
31
25
|
nodeManager_ = std::make_shared<AudioNodeManager>();
|
|
32
26
|
destination_ = std::make_shared<AudioDestinationNode>(this);
|
|
33
27
|
|
|
34
28
|
audioEventHandlerRegistry_ = audioEventHandlerRegistry;
|
|
35
|
-
runtimeRegistry_ = runtimeRegistry;
|
|
36
29
|
}
|
|
37
30
|
|
|
38
31
|
std::string BaseAudioContext::getState() {
|
|
@@ -65,36 +58,6 @@ std::shared_ptr<AudioDestinationNode> BaseAudioContext::getDestination() {
|
|
|
65
58
|
return destination_;
|
|
66
59
|
}
|
|
67
60
|
|
|
68
|
-
std::shared_ptr<WorkletSourceNode> BaseAudioContext::createWorkletSourceNode(
|
|
69
|
-
std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
|
|
70
|
-
std::weak_ptr<worklets::WorkletRuntime> runtime) {
|
|
71
|
-
auto workletSourceNode =
|
|
72
|
-
std::make_shared<WorkletSourceNode>(this, shareableWorklet, runtime);
|
|
73
|
-
nodeManager_->addSourceNode(workletSourceNode);
|
|
74
|
-
return workletSourceNode;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
std::shared_ptr<WorkletNode> BaseAudioContext::createWorkletNode(
|
|
78
|
-
std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
|
|
79
|
-
std::weak_ptr<worklets::WorkletRuntime> runtime,
|
|
80
|
-
size_t bufferLength,
|
|
81
|
-
size_t inputChannelCount) {
|
|
82
|
-
auto workletNode = std::make_shared<WorkletNode>(
|
|
83
|
-
this, shareableWorklet, runtime, bufferLength, inputChannelCount);
|
|
84
|
-
nodeManager_->addProcessingNode(workletNode);
|
|
85
|
-
return workletNode;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
std::shared_ptr<WorkletProcessingNode>
|
|
89
|
-
BaseAudioContext::createWorkletProcessingNode(
|
|
90
|
-
std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet,
|
|
91
|
-
std::weak_ptr<worklets::WorkletRuntime> runtime) {
|
|
92
|
-
auto workletProcessingNode =
|
|
93
|
-
std::make_shared<WorkletProcessingNode>(this, shareableWorklet, runtime);
|
|
94
|
-
nodeManager_->addProcessingNode(workletProcessingNode);
|
|
95
|
-
return workletProcessingNode;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
61
|
std::shared_ptr<RecorderAdapterNode> BaseAudioContext::createRecorderAdapter() {
|
|
99
62
|
auto recorderAdapter = std::make_shared<RecorderAdapterNode>(this);
|
|
100
63
|
nodeManager_->addProcessingNode(recorderAdapter);
|
|
@@ -107,12 +70,6 @@ std::shared_ptr<OscillatorNode> BaseAudioContext::createOscillator() {
|
|
|
107
70
|
return oscillator;
|
|
108
71
|
}
|
|
109
72
|
|
|
110
|
-
std::shared_ptr<ConstantSourceNode> BaseAudioContext::createConstantSource() {
|
|
111
|
-
auto constantSource = std::make_shared<ConstantSourceNode>(this);
|
|
112
|
-
nodeManager_->addSourceNode(constantSource);
|
|
113
|
-
return constantSource;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
73
|
#ifndef AUDIO_API_TEST_SUITE
|
|
117
74
|
std::shared_ptr<StreamerNode> BaseAudioContext::createStreamer() {
|
|
118
75
|
auto streamer = std::make_shared<StreamerNode>(this);
|
|
@@ -148,9 +105,8 @@ std::shared_ptr<AudioBufferSourceNode> BaseAudioContext::createBufferSource(
|
|
|
148
105
|
}
|
|
149
106
|
|
|
150
107
|
std::shared_ptr<AudioBufferQueueSourceNode>
|
|
151
|
-
BaseAudioContext::createBufferQueueSource(
|
|
152
|
-
auto bufferSource =
|
|
153
|
-
std::make_shared<AudioBufferQueueSourceNode>(this, pitchCorrection);
|
|
108
|
+
BaseAudioContext::createBufferQueueSource() {
|
|
109
|
+
auto bufferSource = std::make_shared<AudioBufferQueueSourceNode>(this);
|
|
154
110
|
nodeManager_->addSourceNode(bufferSource);
|
|
155
111
|
return bufferSource;
|
|
156
112
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
#include <audioapi/core/types/ContextState.h>
|
|
4
4
|
#include <audioapi/core/types/OscillatorType.h>
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
|
|
7
7
|
#include <functional>
|
|
8
8
|
#include <memory>
|
|
@@ -20,7 +20,6 @@ class GainNode;
|
|
|
20
20
|
class AudioBuffer;
|
|
21
21
|
class PeriodicWave;
|
|
22
22
|
class OscillatorNode;
|
|
23
|
-
class ConstantSourceNode;
|
|
24
23
|
class StereoPannerNode;
|
|
25
24
|
class AudioNodeManager;
|
|
26
25
|
class BiquadFilterNode;
|
|
@@ -32,14 +31,11 @@ class AnalyserNode;
|
|
|
32
31
|
class AudioEventHandlerRegistry;
|
|
33
32
|
class IAudioEventHandlerRegistry;
|
|
34
33
|
class RecorderAdapterNode;
|
|
35
|
-
class WorkletSourceNode;
|
|
36
|
-
class WorkletNode;
|
|
37
|
-
class WorkletProcessingNode;
|
|
38
34
|
class StreamerNode;
|
|
39
35
|
|
|
40
36
|
class BaseAudioContext {
|
|
41
37
|
public:
|
|
42
|
-
explicit BaseAudioContext(const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry
|
|
38
|
+
explicit BaseAudioContext(const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry);
|
|
43
39
|
virtual ~BaseAudioContext() = default;
|
|
44
40
|
|
|
45
41
|
std::string getState();
|
|
@@ -49,17 +45,13 @@ class BaseAudioContext {
|
|
|
49
45
|
std::shared_ptr<AudioDestinationNode> getDestination();
|
|
50
46
|
|
|
51
47
|
std::shared_ptr<RecorderAdapterNode> createRecorderAdapter();
|
|
52
|
-
std::shared_ptr<WorkletSourceNode> createWorkletSourceNode(std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet, std::weak_ptr<worklets::WorkletRuntime> runtime);
|
|
53
|
-
std::shared_ptr<WorkletNode> createWorkletNode(std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet, std::weak_ptr<worklets::WorkletRuntime> runtime, size_t bufferLength, size_t inputChannelCount);
|
|
54
|
-
std::shared_ptr<WorkletProcessingNode> createWorkletProcessingNode(std::shared_ptr<worklets::SerializableWorklet> &shareableWorklet, std::weak_ptr<worklets::WorkletRuntime> runtime);
|
|
55
48
|
std::shared_ptr<OscillatorNode> createOscillator();
|
|
56
|
-
std::shared_ptr<ConstantSourceNode> createConstantSource();
|
|
57
49
|
std::shared_ptr<StreamerNode> createStreamer();
|
|
58
50
|
std::shared_ptr<GainNode> createGain();
|
|
59
51
|
std::shared_ptr<StereoPannerNode> createStereoPanner();
|
|
60
52
|
std::shared_ptr<BiquadFilterNode> createBiquadFilter();
|
|
61
53
|
std::shared_ptr<AudioBufferSourceNode> createBufferSource(bool pitchCorrection);
|
|
62
|
-
std::shared_ptr<AudioBufferQueueSourceNode> createBufferQueueSource(
|
|
54
|
+
std::shared_ptr<AudioBufferQueueSourceNode> createBufferQueueSource();
|
|
63
55
|
static std::shared_ptr<AudioBuffer>
|
|
64
56
|
createBuffer(int numberOfChannels, size_t length, float sampleRate);
|
|
65
57
|
std::shared_ptr<PeriodicWave> createPeriodicWave(
|
|
@@ -97,11 +89,10 @@ class BaseAudioContext {
|
|
|
97
89
|
std::shared_ptr<PeriodicWave> cachedSawtoothWave_ = nullptr;
|
|
98
90
|
std::shared_ptr<PeriodicWave> cachedTriangleWave_ = nullptr;
|
|
99
91
|
|
|
100
|
-
|
|
92
|
+
virtual bool isDriverRunning() const = 0;
|
|
101
93
|
|
|
102
94
|
public:
|
|
103
95
|
std::shared_ptr<IAudioEventHandlerRegistry> audioEventHandlerRegistry_;
|
|
104
|
-
RuntimeRegistry runtimeRegistry_;
|
|
105
96
|
};
|
|
106
97
|
|
|
107
98
|
} // namespace audioapi
|
|
@@ -16,9 +16,4 @@ static constexpr float MOST_NEGATIVE_SINGLE_FLOAT = static_cast<float>(std::nume
|
|
|
16
16
|
static float LOG2_MOST_POSITIVE_SINGLE_FLOAT = std::log2(MOST_POSITIVE_SINGLE_FLOAT);
|
|
17
17
|
static float LOG10_MOST_POSITIVE_SINGLE_FLOAT = std::log10(MOST_POSITIVE_SINGLE_FLOAT);
|
|
18
18
|
static constexpr float PI = static_cast<float>(M_PI);
|
|
19
|
-
|
|
20
|
-
// buffer sizes
|
|
21
|
-
static constexpr size_t PROMISE_VENDOR_THREAD_POOL_WORKER_COUNT = 4;
|
|
22
|
-
static constexpr size_t PROMISE_VENDOR_THREAD_POOL_LOAD_BALANCER_QUEUE_SIZE = 32;
|
|
23
|
-
static constexpr size_t PROMISE_VENDOR_THREAD_POOL_WORKER_QUEUE_SIZE = 32;
|
|
24
19
|
} // namespace audioapi
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
#include "OfflineAudioContext.h"
|
|
2
2
|
|
|
3
3
|
#include <audioapi/core/AudioContext.h>
|
|
4
|
+
#include <audioapi/core/Constants.h>
|
|
4
5
|
#include <audioapi/core/destinations/AudioDestinationNode.h>
|
|
5
6
|
#include <audioapi/core/sources/AudioBuffer.h>
|
|
6
7
|
#include <audioapi/core/utils/AudioDecoder.h>
|
|
7
8
|
#include <audioapi/core/utils/AudioNodeManager.h>
|
|
8
|
-
#include <audioapi/core/utils/Constants.h>
|
|
9
9
|
#include <audioapi/core/utils/Locker.h>
|
|
10
10
|
#include <audioapi/utils/AudioArray.h>
|
|
11
11
|
#include <audioapi/utils/AudioBus.h>
|
|
@@ -23,9 +23,8 @@ OfflineAudioContext::OfflineAudioContext(
|
|
|
23
23
|
size_t length,
|
|
24
24
|
float sampleRate,
|
|
25
25
|
const std::shared_ptr<IAudioEventHandlerRegistry>
|
|
26
|
-
&audioEventHandlerRegistry
|
|
27
|
-
|
|
28
|
-
: BaseAudioContext(audioEventHandlerRegistry, runtimeRegistry),
|
|
26
|
+
&audioEventHandlerRegistry)
|
|
27
|
+
: BaseAudioContext(audioEventHandlerRegistry),
|
|
29
28
|
length_(length),
|
|
30
29
|
numberOfChannels_(numberOfChannels),
|
|
31
30
|
currentSampleFrame_(0) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include "BaseAudioContext.h"
|
|
4
|
-
#include <audioapi/core/utils/worklets/SafeIncludes.h>
|
|
5
4
|
|
|
6
5
|
#include <mutex>
|
|
7
6
|
#include <map>
|
|
@@ -15,7 +14,7 @@ using OfflineAudioContextResultCallback = std::function<void(std::shared_ptr<Aud
|
|
|
15
14
|
|
|
16
15
|
class OfflineAudioContext : public BaseAudioContext {
|
|
17
16
|
public:
|
|
18
|
-
explicit OfflineAudioContext(int numberOfChannels, size_t length, float sampleRate, const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry
|
|
17
|
+
explicit OfflineAudioContext(int numberOfChannels, size_t length, float sampleRate, const std::shared_ptr<IAudioEventHandlerRegistry> &audioEventHandlerRegistry);
|
|
19
18
|
~OfflineAudioContext() override;
|
|
20
19
|
|
|
21
20
|
void resume();
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
27
27
|
*/
|
|
28
28
|
|
|
29
|
+
#include <audioapi/core/Constants.h>
|
|
29
30
|
#include <audioapi/core/effects/PeriodicWave.h>
|
|
30
|
-
#include <audioapi/core/utils/Constants.h>
|
|
31
31
|
#include <audioapi/dsp/VectorMath.h>
|
|
32
32
|
|
|
33
33
|
constexpr unsigned NumberOfOctaveBands = 3;
|