react-native-audio-api 0.0.1 → 0.2.0
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 +60 -1
- package/RNAudioAPI.podspec +46 -0
- package/android/CMakeLists.txt +74 -0
- package/android/build.gradle +194 -0
- package/android/gradle.properties +5 -0
- package/android/libs/fftw3/arm64-v8a/libfftw3.a +0 -0
- package/android/libs/fftw3/armeabi-v7a/libfftw3.a +0 -0
- package/android/libs/fftw3/x86/libfftw3.a +0 -0
- package/android/libs/fftw3/x86_64/libfftw3.a +0 -0
- package/android/libs/include/fftw3/fftw3.h +413 -0
- package/android/src/main/AndroidManifest.xml +3 -0
- package/android/src/main/AndroidManifestNew.xml +2 -0
- package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.cpp +22 -0
- package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.h +48 -0
- package/android/src/main/cpp/AudioPlayer/AudioPlayer.cpp +66 -0
- package/android/src/main/cpp/AudioPlayer/AudioPlayer.h +33 -0
- package/android/src/main/cpp/OnLoad.cpp +9 -0
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +14 -0
- package/android/src/main/java/com/swmansion/audioapi/module/AudioAPIInstaller.kt +21 -0
- package/android/src/main/java/com/swmansion/audioapi/nativemodules/AudioAPIModule.kt +25 -0
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.cpp +52 -0
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.h +45 -0
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerWrapper.h +38 -0
- package/common/cpp/AudioAPIInstaller/android/AudioAPIInstallerWrapper.cpp +16 -0
- package/common/cpp/AudioAPIInstaller/ios/AudioAPIInstallerWrapper.cpp +12 -0
- package/common/cpp/HostObjects/AudioBufferHostObject.cpp +143 -0
- package/common/cpp/HostObjects/AudioBufferHostObject.h +33 -0
- package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.cpp +79 -0
- package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.h +37 -0
- package/common/cpp/HostObjects/AudioContextHostObject.cpp +54 -0
- package/common/cpp/HostObjects/AudioContextHostObject.h +36 -0
- package/common/cpp/HostObjects/AudioDestinationNodeHostObject.cpp +33 -0
- package/common/cpp/HostObjects/AudioDestinationNodeHostObject.h +31 -0
- package/common/cpp/HostObjects/AudioNodeHostObject.cpp +102 -0
- package/common/cpp/HostObjects/AudioNodeHostObject.h +29 -0
- package/common/cpp/HostObjects/AudioParamHostObject.cpp +115 -0
- package/common/cpp/HostObjects/AudioParamHostObject.h +34 -0
- package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.cpp +73 -0
- package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.h +31 -0
- package/common/cpp/HostObjects/BaseAudioContextHostObject.cpp +214 -0
- package/common/cpp/HostObjects/BaseAudioContextHostObject.h +39 -0
- package/common/cpp/HostObjects/BiquadFilterNodeHostObject.cpp +125 -0
- package/common/cpp/HostObjects/BiquadFilterNodeHostObject.h +42 -0
- package/common/cpp/HostObjects/Constants.h +22 -0
- package/common/cpp/HostObjects/GainNodeHostObject.cpp +41 -0
- package/common/cpp/HostObjects/GainNodeHostObject.h +32 -0
- package/common/cpp/HostObjects/OscillatorNodeHostObject.cpp +88 -0
- package/common/cpp/HostObjects/OscillatorNodeHostObject.h +41 -0
- package/common/cpp/HostObjects/PeriodicWaveHostObject.cpp +33 -0
- package/common/cpp/HostObjects/PeriodicWaveHostObject.h +33 -0
- package/common/cpp/HostObjects/StereoPannerNodeHostObject.cpp +41 -0
- package/common/cpp/HostObjects/StereoPannerNodeHostObject.h +36 -0
- package/common/cpp/core/AudioArray.cpp +103 -0
- package/common/cpp/core/AudioArray.h +42 -0
- package/common/cpp/core/AudioBuffer.cpp +55 -0
- package/common/cpp/core/AudioBuffer.h +40 -0
- package/common/cpp/core/AudioBufferSourceNode.cpp +135 -0
- package/common/cpp/core/AudioBufferSourceNode.h +30 -0
- package/common/cpp/core/AudioBus.cpp +357 -0
- package/common/cpp/core/AudioBus.h +63 -0
- package/common/cpp/core/AudioContext.cpp +24 -0
- package/common/cpp/core/AudioContext.h +16 -0
- package/common/cpp/core/AudioDestinationNode.cpp +45 -0
- package/common/cpp/core/AudioDestinationNode.h +32 -0
- package/common/cpp/core/AudioNode.cpp +222 -0
- package/common/cpp/core/AudioNode.h +74 -0
- package/common/cpp/core/AudioNodeManager.cpp +72 -0
- package/common/cpp/core/AudioNodeManager.h +35 -0
- package/common/cpp/core/AudioParam.cpp +133 -0
- package/common/cpp/core/AudioParam.h +50 -0
- package/common/cpp/core/AudioScheduledSourceNode.cpp +53 -0
- package/common/cpp/core/AudioScheduledSourceNode.h +34 -0
- package/common/cpp/core/BaseAudioContext.cpp +157 -0
- package/common/cpp/core/BaseAudioContext.h +80 -0
- package/common/cpp/core/BiquadFilterNode.cpp +385 -0
- package/common/cpp/core/BiquadFilterNode.h +124 -0
- package/common/cpp/core/GainNode.cpp +30 -0
- package/common/cpp/core/GainNode.h +25 -0
- package/common/cpp/core/OscillatorNode.cpp +75 -0
- package/common/cpp/core/OscillatorNode.h +72 -0
- package/common/cpp/core/ParamChange.cpp +46 -0
- package/common/cpp/core/ParamChange.h +34 -0
- package/common/cpp/core/PeriodicWave.cpp +362 -0
- package/common/cpp/core/PeriodicWave.h +119 -0
- package/common/cpp/core/StereoPannerNode.cpp +56 -0
- package/common/cpp/core/StereoPannerNode.h +26 -0
- package/common/cpp/types/BiquadFilterType.h +19 -0
- package/common/cpp/types/ChannelCountMode.h +10 -0
- package/common/cpp/types/ChannelInterpretation.h +10 -0
- package/common/cpp/types/ContextState.h +10 -0
- package/common/cpp/types/OscillatorType.h +11 -0
- package/common/cpp/utils/FFTFrame.h +63 -0
- package/common/cpp/utils/Locker.h +47 -0
- package/common/cpp/utils/VectorMath.cpp +678 -0
- package/common/cpp/utils/VectorMath.h +71 -0
- package/common/cpp/utils/android/FFTFrame.cpp +22 -0
- package/common/cpp/utils/ios/FFTFrame.cpp +24 -0
- package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.cpp +45 -0
- package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.h +26 -0
- package/common/cpp/wrappers/AudioBufferWrapper.cpp +46 -0
- package/common/cpp/wrappers/AudioBufferWrapper.h +30 -0
- package/common/cpp/wrappers/AudioContextWrapper.cpp +17 -0
- package/common/cpp/wrappers/AudioContextWrapper.h +19 -0
- package/common/cpp/wrappers/AudioDestinationNodeWrapper.h +16 -0
- package/common/cpp/wrappers/AudioNodeWrapper.cpp +37 -0
- package/common/cpp/wrappers/AudioNodeWrapper.h +25 -0
- package/common/cpp/wrappers/AudioParamWrapper.cpp +42 -0
- package/common/cpp/wrappers/AudioParamWrapper.h +25 -0
- package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.cpp +23 -0
- package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.h +23 -0
- package/common/cpp/wrappers/BaseAudioContextWrapper.cpp +76 -0
- package/common/cpp/wrappers/BaseAudioContextWrapper.h +49 -0
- package/common/cpp/wrappers/BiquadFilterNodeWrapper.cpp +60 -0
- package/common/cpp/wrappers/BiquadFilterNodeWrapper.h +37 -0
- package/common/cpp/wrappers/GainNodeWrapper.cpp +14 -0
- package/common/cpp/wrappers/GainNodeWrapper.h +20 -0
- package/common/cpp/wrappers/OscillatorNodeWrapper.cpp +44 -0
- package/common/cpp/wrappers/OscillatorNodeWrapper.h +31 -0
- package/common/cpp/wrappers/PeriodicWaveWrapper.h +17 -0
- package/common/cpp/wrappers/StereoPannerNodeWrapper.cpp +16 -0
- package/common/cpp/wrappers/StereoPannerNodeWrapper.h +21 -0
- package/ios/AudioAPIModule.h +24 -0
- package/ios/AudioAPIModule.mm +44 -0
- package/ios/AudioPlayer/AudioPlayer.h +28 -0
- package/ios/AudioPlayer/AudioPlayer.m +119 -0
- package/ios/AudioPlayer/IOSAudioPlayer.h +33 -0
- package/ios/AudioPlayer/IOSAudioPlayer.mm +57 -0
- package/lib/module/core/AudioBuffer.js +37 -0
- package/lib/module/core/AudioBuffer.js.map +1 -0
- package/lib/module/core/AudioBufferSourceNode.js +28 -0
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -0
- package/lib/module/core/AudioContext.js +10 -0
- package/lib/module/core/AudioContext.js.map +1 -0
- package/lib/module/core/AudioDestinationNode.js +7 -0
- package/lib/module/core/AudioDestinationNode.js.map +1 -0
- package/lib/module/core/AudioNode.js +22 -0
- package/lib/module/core/AudioNode.js.map +1 -0
- package/lib/module/core/AudioParam.js +35 -0
- package/lib/module/core/AudioParam.js.map +1 -0
- package/lib/module/core/AudioScheduledSourceNode.js +28 -0
- package/lib/module/core/AudioScheduledSourceNode.js.map +1 -0
- package/lib/module/core/BaseAudioContext.js +57 -0
- package/lib/module/core/BaseAudioContext.js.map +1 -0
- package/lib/module/core/BiquadFilterNode.js +25 -0
- package/lib/module/core/BiquadFilterNode.js.map +1 -0
- package/lib/module/core/GainNode.js +9 -0
- package/lib/module/core/GainNode.js.map +1 -0
- package/lib/module/core/OscillatorNode.js +24 -0
- package/lib/module/core/OscillatorNode.js.map +1 -0
- package/lib/module/core/PeriodicWave.js +8 -0
- package/lib/module/core/PeriodicWave.js.map +1 -0
- package/lib/module/core/StereoPannerNode.js +9 -0
- package/lib/module/core/StereoPannerNode.js.map +1 -0
- package/lib/module/core/types.js +2 -0
- package/lib/module/core/types.js.map +1 -0
- package/lib/module/errors/IndexSizeError.js +8 -0
- package/lib/module/errors/IndexSizeError.js.map +1 -0
- package/lib/module/errors/InvalidAccessError.js +8 -0
- package/lib/module/errors/InvalidAccessError.js.map +1 -0
- package/lib/module/errors/InvalidStateError.js +8 -0
- package/lib/module/errors/InvalidStateError.js.map +1 -0
- package/lib/module/errors/RangeError.js +8 -0
- package/lib/module/errors/RangeError.js.map +1 -0
- package/lib/module/errors/index.js +5 -0
- package/lib/module/errors/index.js.map +1 -0
- package/lib/module/index.js +18 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/interfaces.js +2 -0
- package/lib/module/interfaces.js.map +1 -0
- package/lib/module/modules/global.d.js +2 -0
- package/lib/module/modules/global.d.js.map +1 -0
- package/lib/module/utils/install.js +22 -0
- package/lib/module/utils/install.js.map +1 -0
- package/lib/typescript/core/AudioBuffer.d.ts +12 -0
- package/lib/typescript/core/AudioBuffer.d.ts.map +1 -0
- package/lib/typescript/core/AudioBufferSourceNode.d.ts +12 -0
- package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -0
- package/lib/typescript/core/AudioContext.d.ts +6 -0
- package/lib/typescript/core/AudioContext.d.ts.map +1 -0
- package/lib/typescript/core/AudioDestinationNode.d.ts +7 -0
- package/lib/typescript/core/AudioDestinationNode.d.ts.map +1 -0
- package/lib/typescript/core/AudioNode.d.ts +16 -0
- package/lib/typescript/core/AudioNode.d.ts.map +1 -0
- package/lib/typescript/core/AudioParam.d.ts +14 -0
- package/lib/typescript/core/AudioParam.d.ts.map +1 -0
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts +10 -0
- package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -0
- package/lib/typescript/core/BaseAudioContext.d.ts +26 -0
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -0
- package/lib/typescript/core/BiquadFilterNode.d.ts +16 -0
- package/lib/typescript/core/BiquadFilterNode.d.ts.map +1 -0
- package/lib/typescript/core/GainNode.d.ts +9 -0
- package/lib/typescript/core/GainNode.d.ts.map +1 -0
- package/lib/typescript/core/OscillatorNode.d.ts +15 -0
- package/lib/typescript/core/OscillatorNode.d.ts.map +1 -0
- package/lib/typescript/core/PeriodicWave.d.ts +5 -0
- package/lib/typescript/core/PeriodicWave.d.ts.map +1 -0
- package/lib/typescript/core/StereoPannerNode.d.ts +9 -0
- package/lib/typescript/core/StereoPannerNode.d.ts.map +1 -0
- package/lib/typescript/core/types.d.ts +9 -0
- package/lib/typescript/core/types.d.ts.map +1 -0
- package/lib/typescript/errors/IndexSizeError.d.ts +5 -0
- package/lib/typescript/errors/IndexSizeError.d.ts.map +1 -0
- package/lib/typescript/errors/InvalidAccessError.d.ts +5 -0
- package/lib/typescript/errors/InvalidAccessError.d.ts.map +1 -0
- package/lib/typescript/errors/InvalidStateError.d.ts +5 -0
- package/lib/typescript/errors/InvalidStateError.d.ts.map +1 -0
- package/lib/typescript/errors/RangeError.d.ts +5 -0
- package/lib/typescript/errors/RangeError.d.ts.map +1 -0
- package/lib/typescript/errors/index.d.ts +5 -0
- package/lib/typescript/errors/index.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +14 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/interfaces.d.ts +78 -0
- package/lib/typescript/interfaces.d.ts.map +1 -0
- package/lib/typescript/utils/install.d.ts +7 -0
- package/lib/typescript/utils/install.d.ts.map +1 -0
- package/package.json +104 -5
- package/src/core/AudioBuffer.ts +68 -0
- package/src/core/AudioBufferSourceNode.ts +35 -0
- package/src/core/AudioContext.ts +12 -0
- package/src/core/AudioDestinationNode.ts +9 -0
- package/src/core/AudioNode.ts +38 -0
- package/src/core/AudioParam.ts +55 -0
- package/src/core/AudioScheduledSourceNode.ts +43 -0
- package/src/core/BaseAudioContext.ts +97 -0
- package/src/core/BiquadFilterNode.ts +49 -0
- package/src/core/GainNode.ts +13 -0
- package/src/core/OscillatorNode.ts +37 -0
- package/src/core/PeriodicWave.ts +10 -0
- package/src/core/StereoPannerNode.ts +13 -0
- package/src/core/types.ts +26 -0
- package/src/errors/IndexSizeError.ts +8 -0
- package/src/errors/InvalidAccessError.ts +8 -0
- package/src/errors/InvalidStateError.ts +8 -0
- package/src/errors/RangeError.ts +8 -0
- package/src/errors/index.ts +4 -0
- package/src/index.ts +25 -0
- package/src/interfaces.ts +120 -0
- package/src/modules/global.d.ts +10 -0
- package/src/utils/install.ts +39 -0
- package/index.ts +0 -1
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#include "AudioAPIInstallerHostObject.h"
|
|
2
|
+
|
|
3
|
+
namespace audioapi {
|
|
4
|
+
using namespace facebook;
|
|
5
|
+
|
|
6
|
+
AudioAPIInstallerHostObject::AudioAPIInstallerHostObject(
|
|
7
|
+
const std::shared_ptr<AudioAPIInstallerWrapper> &wrapper)
|
|
8
|
+
: wrapper_(wrapper) {}
|
|
9
|
+
|
|
10
|
+
std::vector<jsi::PropNameID> AudioAPIInstallerHostObject::getPropertyNames(
|
|
11
|
+
jsi::Runtime &runtime) {
|
|
12
|
+
std::vector<jsi::PropNameID> propertyNames;
|
|
13
|
+
propertyNames.push_back(
|
|
14
|
+
jsi::PropNameID::forUtf8(runtime, "createAudioContext"));
|
|
15
|
+
return propertyNames;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
jsi::Value AudioAPIInstallerHostObject::get(
|
|
19
|
+
jsi::Runtime &runtime,
|
|
20
|
+
const jsi::PropNameID &propNameId) {
|
|
21
|
+
auto propName = propNameId.utf8(runtime);
|
|
22
|
+
|
|
23
|
+
if (propName == "createAudioContext") {
|
|
24
|
+
return jsi::Function::createFromHostFunction(
|
|
25
|
+
runtime,
|
|
26
|
+
propNameId,
|
|
27
|
+
0,
|
|
28
|
+
[this](
|
|
29
|
+
jsi::Runtime &runtime,
|
|
30
|
+
const jsi::Value &thisValue,
|
|
31
|
+
const jsi::Value *arguments,
|
|
32
|
+
size_t count) -> jsi::Value {
|
|
33
|
+
auto audioContext = wrapper_->createAudioContext();
|
|
34
|
+
auto audioContextHostObject =
|
|
35
|
+
AudioContextHostObject::createFromWrapper(audioContext);
|
|
36
|
+
return jsi::Object::createFromHostObject(
|
|
37
|
+
runtime, audioContextHostObject);
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
throw std::runtime_error("Not yet implemented!");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
void AudioAPIInstallerHostObject::set(
|
|
45
|
+
jsi::Runtime &runtime,
|
|
46
|
+
const jsi::PropNameID &propNameId,
|
|
47
|
+
const jsi::Value &value) {
|
|
48
|
+
auto propName = propNameId.utf8(runtime);
|
|
49
|
+
|
|
50
|
+
throw std::runtime_error("Not yet implemented!");
|
|
51
|
+
}
|
|
52
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <jsi/jsi.h>
|
|
4
|
+
#include <memory>
|
|
5
|
+
#include <utility>
|
|
6
|
+
#include <vector>
|
|
7
|
+
|
|
8
|
+
#include "AudioAPIInstallerWrapper.h"
|
|
9
|
+
#include "AudioContextHostObject.h"
|
|
10
|
+
|
|
11
|
+
namespace audioapi {
|
|
12
|
+
using namespace facebook;
|
|
13
|
+
|
|
14
|
+
class AudioAPIInstallerWrapper;
|
|
15
|
+
|
|
16
|
+
class AudioAPIInstallerHostObject : public jsi::HostObject {
|
|
17
|
+
public:
|
|
18
|
+
explicit AudioAPIInstallerHostObject(
|
|
19
|
+
const std::shared_ptr<AudioAPIInstallerWrapper> &wrapper);
|
|
20
|
+
|
|
21
|
+
#ifdef ANDROID
|
|
22
|
+
static void createAndInstallFromWrapper(
|
|
23
|
+
const std::shared_ptr<AudioAPIInstallerWrapper> &wrapper,
|
|
24
|
+
jlong jsContext) {
|
|
25
|
+
auto runtime = reinterpret_cast<jsi::Runtime *>(jsContext);
|
|
26
|
+
auto hostObject = std::make_shared<AudioAPIInstallerHostObject>(wrapper);
|
|
27
|
+
auto object = jsi::Object::createFromHostObject(*runtime, hostObject);
|
|
28
|
+
runtime->global().setProperty(
|
|
29
|
+
*runtime, "__AudioAPIInstaller", std::move(object));
|
|
30
|
+
}
|
|
31
|
+
#endif
|
|
32
|
+
|
|
33
|
+
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
34
|
+
|
|
35
|
+
void set(
|
|
36
|
+
jsi::Runtime &runtime,
|
|
37
|
+
const jsi::PropNameID &name,
|
|
38
|
+
const jsi::Value &value) override;
|
|
39
|
+
|
|
40
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
41
|
+
|
|
42
|
+
private:
|
|
43
|
+
std::shared_ptr<AudioAPIInstallerWrapper> wrapper_;
|
|
44
|
+
};
|
|
45
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <memory>
|
|
4
|
+
#include <string>
|
|
5
|
+
#include <utility>
|
|
6
|
+
|
|
7
|
+
#include "AudioContextWrapper.h"
|
|
8
|
+
|
|
9
|
+
#ifdef ANDROID
|
|
10
|
+
#include "AudioAPIInstaller.h"
|
|
11
|
+
#else
|
|
12
|
+
#include "AudioContext.h"
|
|
13
|
+
#endif
|
|
14
|
+
|
|
15
|
+
namespace audioapi {
|
|
16
|
+
|
|
17
|
+
#ifdef ANDROID
|
|
18
|
+
class AudioAPIInstaller;
|
|
19
|
+
#endif
|
|
20
|
+
|
|
21
|
+
class AudioAPIInstallerWrapper {
|
|
22
|
+
#ifdef ANDROID
|
|
23
|
+
|
|
24
|
+
public:
|
|
25
|
+
explicit AudioAPIInstallerWrapper(AudioAPIInstaller *audioAPIInstaller);
|
|
26
|
+
|
|
27
|
+
private:
|
|
28
|
+
AudioAPIInstaller *audioAPIInstaller_;
|
|
29
|
+
#else
|
|
30
|
+
|
|
31
|
+
public:
|
|
32
|
+
AudioAPIInstallerWrapper() = default;
|
|
33
|
+
#endif
|
|
34
|
+
|
|
35
|
+
public:
|
|
36
|
+
std::shared_ptr<AudioContextWrapper> createAudioContext() const;
|
|
37
|
+
};
|
|
38
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
#ifdef ANDROID
|
|
2
|
+
#include "AudioAPIInstallerWrapper.h"
|
|
3
|
+
|
|
4
|
+
namespace audioapi {
|
|
5
|
+
|
|
6
|
+
AudioAPIInstallerWrapper::AudioAPIInstallerWrapper(
|
|
7
|
+
AudioAPIInstaller *audioAPIInstaller)
|
|
8
|
+
: audioAPIInstaller_(audioAPIInstaller) {}
|
|
9
|
+
|
|
10
|
+
std::shared_ptr<AudioContextWrapper>
|
|
11
|
+
AudioAPIInstallerWrapper::createAudioContext() const {
|
|
12
|
+
auto audioContext = audioAPIInstaller_->createAudioContext();
|
|
13
|
+
return std::make_shared<AudioContextWrapper>(audioContext);
|
|
14
|
+
}
|
|
15
|
+
} // namespace audioapi
|
|
16
|
+
#endif
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
#ifndef ANDROID
|
|
2
|
+
#include "AudioAPIInstallerWrapper.h"
|
|
3
|
+
|
|
4
|
+
namespace audioapi {
|
|
5
|
+
|
|
6
|
+
std::shared_ptr<AudioContextWrapper>
|
|
7
|
+
AudioAPIInstallerWrapper::createAudioContext() const {
|
|
8
|
+
auto audioContext = std::make_shared<AudioContext>();
|
|
9
|
+
return std::make_shared<audioapi::AudioContextWrapper>(audioContext);
|
|
10
|
+
}
|
|
11
|
+
} // namespace audioapi
|
|
12
|
+
#endif
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#include "AudioBufferHostObject.h"
|
|
2
|
+
|
|
3
|
+
namespace audioapi {
|
|
4
|
+
using namespace facebook;
|
|
5
|
+
|
|
6
|
+
AudioBufferHostObject::AudioBufferHostObject(
|
|
7
|
+
const std::shared_ptr<AudioBufferWrapper> &wrapper)
|
|
8
|
+
: wrapper_(wrapper) {}
|
|
9
|
+
|
|
10
|
+
std::vector<jsi::PropNameID> AudioBufferHostObject::getPropertyNames(
|
|
11
|
+
jsi::Runtime &runtime) {
|
|
12
|
+
std::vector<jsi::PropNameID> propertyNames;
|
|
13
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "buffer"));
|
|
14
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "sampleRate"));
|
|
15
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "length"));
|
|
16
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "duration"));
|
|
17
|
+
propertyNames.push_back(
|
|
18
|
+
jsi::PropNameID::forAscii(runtime, "numberOfChannels"));
|
|
19
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "getChannelData"));
|
|
20
|
+
propertyNames.push_back(
|
|
21
|
+
jsi::PropNameID::forAscii(runtime, "copyFromChannel"));
|
|
22
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "copyToChannel"));
|
|
23
|
+
return propertyNames;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
jsi::Value AudioBufferHostObject::get(
|
|
27
|
+
jsi::Runtime &runtime,
|
|
28
|
+
const jsi::PropNameID &propNameId) {
|
|
29
|
+
auto propName = propNameId.utf8(runtime);
|
|
30
|
+
|
|
31
|
+
if (propName == "sampleRate") {
|
|
32
|
+
return {wrapper_->getSampleRate()};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if (propName == "length") {
|
|
36
|
+
return {wrapper_->getLength()};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (propName == "duration") {
|
|
40
|
+
return {wrapper_->getDuration()};
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (propName == "numberOfChannels") {
|
|
44
|
+
return {wrapper_->getNumberOfChannels()};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (propName == "getChannelData") {
|
|
48
|
+
return jsi::Function::createFromHostFunction(
|
|
49
|
+
runtime,
|
|
50
|
+
propNameId,
|
|
51
|
+
1,
|
|
52
|
+
[this](
|
|
53
|
+
jsi::Runtime &rt,
|
|
54
|
+
const jsi::Value &thisVal,
|
|
55
|
+
const jsi::Value *args,
|
|
56
|
+
size_t count) -> jsi::Value {
|
|
57
|
+
int channel = static_cast<int>(args[0].getNumber());
|
|
58
|
+
float *channelData = wrapper_->getChannelData(channel);
|
|
59
|
+
|
|
60
|
+
auto array = jsi::Array(rt, wrapper_->getLength());
|
|
61
|
+
for (int i = 0; i < wrapper_->getLength(); i++) {
|
|
62
|
+
array.setValueAtIndex(rt, i, jsi::Value(channelData[i]));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return array;
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (propName == "copyFromChannel") {
|
|
70
|
+
return jsi::Function::createFromHostFunction(
|
|
71
|
+
runtime,
|
|
72
|
+
propNameId,
|
|
73
|
+
3,
|
|
74
|
+
[this](
|
|
75
|
+
jsi::Runtime &rt,
|
|
76
|
+
const jsi::Value &thisVal,
|
|
77
|
+
const jsi::Value *args,
|
|
78
|
+
size_t count) -> jsi::Value {
|
|
79
|
+
auto destination = args[0].getObject(rt).asArray(rt);
|
|
80
|
+
auto destinationLength = static_cast<int>(
|
|
81
|
+
destination.getProperty(rt, "length").asNumber());
|
|
82
|
+
auto channelNumber = static_cast<int>(args[1].getNumber());
|
|
83
|
+
auto startInChannel = static_cast<int>(args[2].getNumber());
|
|
84
|
+
|
|
85
|
+
auto *destinationData = new float[destinationLength];
|
|
86
|
+
|
|
87
|
+
wrapper_->copyFromChannel(
|
|
88
|
+
destinationData,
|
|
89
|
+
destinationLength,
|
|
90
|
+
channelNumber,
|
|
91
|
+
startInChannel);
|
|
92
|
+
|
|
93
|
+
for (int i = 0; i < destinationLength; i++) {
|
|
94
|
+
destination.setValueAtIndex(rt, i, jsi::Value(destinationData[i]));
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return jsi::Value::undefined();
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
if (propName == "copyToChannel") {
|
|
102
|
+
return jsi::Function::createFromHostFunction(
|
|
103
|
+
runtime,
|
|
104
|
+
propNameId,
|
|
105
|
+
3,
|
|
106
|
+
[this](
|
|
107
|
+
jsi::Runtime &rt,
|
|
108
|
+
const jsi::Value &thisVal,
|
|
109
|
+
const jsi::Value *args,
|
|
110
|
+
size_t count) -> jsi::Value {
|
|
111
|
+
auto source = args[0].getObject(rt).asArray(rt);
|
|
112
|
+
auto sourceLength =
|
|
113
|
+
static_cast<int>(source.getProperty(rt, "length").asNumber());
|
|
114
|
+
auto channelNumber = static_cast<int>(args[1].getNumber());
|
|
115
|
+
auto startInChannel = static_cast<int>(args[2].getNumber());
|
|
116
|
+
|
|
117
|
+
auto *sourceData = new float[sourceLength];
|
|
118
|
+
|
|
119
|
+
for (int i = 0; i < sourceLength; i++) {
|
|
120
|
+
sourceData[i] =
|
|
121
|
+
static_cast<float>(source.getValueAtIndex(rt, i).getNumber());
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
wrapper_->copyToChannel(
|
|
125
|
+
sourceData, sourceLength, channelNumber, startInChannel);
|
|
126
|
+
|
|
127
|
+
return jsi::Value::undefined();
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
throw std::runtime_error("Not yet implemented!");
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
void AudioBufferHostObject::set(
|
|
135
|
+
jsi::Runtime &runtime,
|
|
136
|
+
const jsi::PropNameID &propNameId,
|
|
137
|
+
const jsi::Value &value) {
|
|
138
|
+
auto propName = propNameId.utf8(runtime);
|
|
139
|
+
|
|
140
|
+
throw std::runtime_error("Not yet implemented!");
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <jsi/jsi.h>
|
|
4
|
+
#include <memory>
|
|
5
|
+
#include <vector>
|
|
6
|
+
|
|
7
|
+
#include "AudioBufferWrapper.h"
|
|
8
|
+
|
|
9
|
+
namespace audioapi {
|
|
10
|
+
using namespace facebook;
|
|
11
|
+
|
|
12
|
+
class AudioBufferHostObject : public jsi::HostObject {
|
|
13
|
+
public:
|
|
14
|
+
std::shared_ptr<AudioBufferWrapper> wrapper_;
|
|
15
|
+
|
|
16
|
+
explicit AudioBufferHostObject(
|
|
17
|
+
const std::shared_ptr<AudioBufferWrapper> &wrapper);
|
|
18
|
+
|
|
19
|
+
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
20
|
+
|
|
21
|
+
void set(
|
|
22
|
+
jsi::Runtime &runtime,
|
|
23
|
+
const jsi::PropNameID &name,
|
|
24
|
+
const jsi::Value &value) override;
|
|
25
|
+
|
|
26
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
27
|
+
|
|
28
|
+
static std::shared_ptr<AudioBufferHostObject> createFromWrapper(
|
|
29
|
+
const std::shared_ptr<AudioBufferWrapper> &wrapper) {
|
|
30
|
+
return std::make_shared<AudioBufferHostObject>(wrapper);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#include "AudioBufferSourceNodeHostObject.h"
|
|
2
|
+
|
|
3
|
+
namespace audioapi {
|
|
4
|
+
using namespace facebook;
|
|
5
|
+
|
|
6
|
+
AudioBufferSourceNodeHostObject::AudioBufferSourceNodeHostObject(
|
|
7
|
+
const std::shared_ptr<AudioBufferSourceNodeWrapper> &wrapper)
|
|
8
|
+
: AudioScheduledSourceNodeHostObject(wrapper) {}
|
|
9
|
+
|
|
10
|
+
std::shared_ptr<AudioBufferSourceNodeWrapper> AudioBufferSourceNodeHostObject::
|
|
11
|
+
getAudioBufferSourceNodeWrapperFromAudioNodeWrapper() {
|
|
12
|
+
return std::static_pointer_cast<AudioBufferSourceNodeWrapper>(wrapper_);
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
std::vector<jsi::PropNameID> AudioBufferSourceNodeHostObject::getPropertyNames(
|
|
16
|
+
jsi::Runtime &runtime) {
|
|
17
|
+
std::vector<jsi::PropNameID> propertyNames =
|
|
18
|
+
AudioScheduledSourceNodeHostObject::getPropertyNames(runtime);
|
|
19
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "loop"));
|
|
20
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "buffer"));
|
|
21
|
+
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "resetBuffer"));
|
|
22
|
+
return propertyNames;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
jsi::Value AudioBufferSourceNodeHostObject::get(
|
|
26
|
+
jsi::Runtime &runtime,
|
|
27
|
+
const jsi::PropNameID &propNameId) {
|
|
28
|
+
auto propName = propNameId.utf8(runtime);
|
|
29
|
+
|
|
30
|
+
if (propName == "loop") {
|
|
31
|
+
auto wrapper = getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
|
|
32
|
+
auto loop = wrapper->getLoop();
|
|
33
|
+
return {loop};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (propName == "buffer") {
|
|
37
|
+
auto wrapper = getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
|
|
38
|
+
auto buffer = wrapper->getBuffer();
|
|
39
|
+
|
|
40
|
+
if (!buffer) {
|
|
41
|
+
return jsi::Value::null();
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
auto bufferHostObject = AudioBufferHostObject::createFromWrapper(buffer);
|
|
45
|
+
return jsi::Object::createFromHostObject(runtime, bufferHostObject);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return AudioScheduledSourceNodeHostObject::get(runtime, propNameId);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
void AudioBufferSourceNodeHostObject::set(
|
|
52
|
+
jsi::Runtime &runtime,
|
|
53
|
+
const jsi::PropNameID &propNameId,
|
|
54
|
+
const jsi::Value &value) {
|
|
55
|
+
auto propName = propNameId.utf8(runtime);
|
|
56
|
+
|
|
57
|
+
if (propName == "loop") {
|
|
58
|
+
auto wrapper = getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
|
|
59
|
+
wrapper->setLoop(value.getBool());
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (propName == "buffer") {
|
|
64
|
+
auto wrapper = getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
|
|
65
|
+
|
|
66
|
+
if (value.isNull()) {
|
|
67
|
+
wrapper->setBuffer(std::shared_ptr<AudioBufferWrapper>(nullptr));
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
auto bufferHostObject =
|
|
72
|
+
value.getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
|
|
73
|
+
wrapper->setBuffer(bufferHostObject->wrapper_);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
AudioScheduledSourceNodeHostObject::set(runtime, propNameId, value);
|
|
78
|
+
}
|
|
79
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <memory>
|
|
4
|
+
#include <vector>
|
|
5
|
+
|
|
6
|
+
#include "AudioBufferHostObject.h"
|
|
7
|
+
#include "AudioBufferSourceNodeWrapper.h"
|
|
8
|
+
#include "AudioScheduledSourceNodeHostObject.h"
|
|
9
|
+
|
|
10
|
+
namespace audioapi {
|
|
11
|
+
using namespace facebook;
|
|
12
|
+
|
|
13
|
+
class AudioBufferSourceNodeHostObject
|
|
14
|
+
: public AudioScheduledSourceNodeHostObject {
|
|
15
|
+
public:
|
|
16
|
+
explicit AudioBufferSourceNodeHostObject(
|
|
17
|
+
const std::shared_ptr<AudioBufferSourceNodeWrapper> &wrapper);
|
|
18
|
+
|
|
19
|
+
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
20
|
+
|
|
21
|
+
void set(
|
|
22
|
+
jsi::Runtime &runtime,
|
|
23
|
+
const jsi::PropNameID &name,
|
|
24
|
+
const jsi::Value &value) override;
|
|
25
|
+
|
|
26
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
27
|
+
|
|
28
|
+
static std::shared_ptr<AudioBufferSourceNodeHostObject> createFromWrapper(
|
|
29
|
+
const std::shared_ptr<AudioBufferSourceNodeWrapper> &wrapper) {
|
|
30
|
+
return std::make_shared<AudioBufferSourceNodeHostObject>(wrapper);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
private:
|
|
34
|
+
std::shared_ptr<AudioBufferSourceNodeWrapper>
|
|
35
|
+
getAudioBufferSourceNodeWrapperFromAudioNodeWrapper();
|
|
36
|
+
};
|
|
37
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
#include "AudioContextHostObject.h"
|
|
2
|
+
|
|
3
|
+
namespace audioapi {
|
|
4
|
+
using namespace facebook;
|
|
5
|
+
|
|
6
|
+
AudioContextHostObject::AudioContextHostObject(
|
|
7
|
+
const std::shared_ptr<AudioContextWrapper> &wrapper)
|
|
8
|
+
: BaseAudioContextHostObject(wrapper) {}
|
|
9
|
+
|
|
10
|
+
std::vector<jsi::PropNameID> AudioContextHostObject::getPropertyNames(
|
|
11
|
+
jsi::Runtime &runtime) {
|
|
12
|
+
std::vector<jsi::PropNameID> propertyNames =
|
|
13
|
+
BaseAudioContextHostObject::getPropertyNames(runtime);
|
|
14
|
+
propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "close"));
|
|
15
|
+
return propertyNames;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
jsi::Value AudioContextHostObject::get(
|
|
19
|
+
jsi::Runtime &runtime,
|
|
20
|
+
const jsi::PropNameID &propNameId) {
|
|
21
|
+
auto propName = propNameId.utf8(runtime);
|
|
22
|
+
|
|
23
|
+
if (propName == "close") {
|
|
24
|
+
return jsi::Function::createFromHostFunction(
|
|
25
|
+
runtime,
|
|
26
|
+
propNameId,
|
|
27
|
+
0,
|
|
28
|
+
[this](
|
|
29
|
+
jsi::Runtime &runtime,
|
|
30
|
+
const jsi::Value &thisValue,
|
|
31
|
+
const jsi::Value *arguments,
|
|
32
|
+
size_t count) -> jsi::Value {
|
|
33
|
+
getAudioContextWrapperFromBaseAudioContextWrapper()->close();
|
|
34
|
+
return jsi::Value::undefined();
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return BaseAudioContextHostObject::get(runtime, propNameId);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
void AudioContextHostObject::set(
|
|
42
|
+
jsi::Runtime &runtime,
|
|
43
|
+
const jsi::PropNameID &propNameId,
|
|
44
|
+
const jsi::Value &value) {
|
|
45
|
+
auto propName = propNameId.utf8(runtime);
|
|
46
|
+
|
|
47
|
+
return BaseAudioContextHostObject::set(runtime, propNameId, value);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
std::shared_ptr<AudioContextWrapper>
|
|
51
|
+
AudioContextHostObject::getAudioContextWrapperFromBaseAudioContextWrapper() {
|
|
52
|
+
return std::static_pointer_cast<AudioContextWrapper>(wrapper_);
|
|
53
|
+
}
|
|
54
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <jsi/jsi.h>
|
|
4
|
+
#include <memory>
|
|
5
|
+
#include <vector>
|
|
6
|
+
|
|
7
|
+
#include "AudioContextWrapper.h"
|
|
8
|
+
#include "BaseAudioContextHostObject.h"
|
|
9
|
+
|
|
10
|
+
namespace audioapi {
|
|
11
|
+
using namespace facebook;
|
|
12
|
+
|
|
13
|
+
class AudioContextHostObject : public BaseAudioContextHostObject {
|
|
14
|
+
public:
|
|
15
|
+
explicit AudioContextHostObject(
|
|
16
|
+
const std::shared_ptr<AudioContextWrapper> &wrapper);
|
|
17
|
+
|
|
18
|
+
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
19
|
+
|
|
20
|
+
void set(
|
|
21
|
+
jsi::Runtime &runtime,
|
|
22
|
+
const jsi::PropNameID &name,
|
|
23
|
+
const jsi::Value &value) override;
|
|
24
|
+
|
|
25
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
26
|
+
|
|
27
|
+
static std::shared_ptr<AudioContextHostObject> createFromWrapper(
|
|
28
|
+
const std::shared_ptr<AudioContextWrapper> &wrapper) {
|
|
29
|
+
return std::make_shared<AudioContextHostObject>(wrapper);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
private:
|
|
33
|
+
std::shared_ptr<AudioContextWrapper>
|
|
34
|
+
getAudioContextWrapperFromBaseAudioContextWrapper();
|
|
35
|
+
};
|
|
36
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#include "AudioDestinationNodeHostObject.h"
|
|
2
|
+
|
|
3
|
+
namespace audioapi {
|
|
4
|
+
using namespace facebook;
|
|
5
|
+
|
|
6
|
+
AudioDestinationNodeHostObject::AudioDestinationNodeHostObject(
|
|
7
|
+
const std::shared_ptr<AudioDestinationNodeWrapper> &wrapper)
|
|
8
|
+
: AudioNodeHostObject(wrapper) {}
|
|
9
|
+
|
|
10
|
+
std::vector<jsi::PropNameID> AudioDestinationNodeHostObject::getPropertyNames(
|
|
11
|
+
jsi::Runtime &runtime) {
|
|
12
|
+
std::vector<jsi::PropNameID> propertyNames;
|
|
13
|
+
return propertyNames;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
jsi::Value AudioDestinationNodeHostObject::get(
|
|
17
|
+
jsi::Runtime &runtime,
|
|
18
|
+
const jsi::PropNameID &propNameId) {
|
|
19
|
+
auto propName = propNameId.utf8(runtime);
|
|
20
|
+
|
|
21
|
+
return AudioNodeHostObject::get(runtime, propNameId);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
void AudioDestinationNodeHostObject::set(
|
|
25
|
+
jsi::Runtime &runtime,
|
|
26
|
+
const jsi::PropNameID &propNameId,
|
|
27
|
+
const jsi::Value &value) {
|
|
28
|
+
auto propName = propNameId.utf8(runtime);
|
|
29
|
+
|
|
30
|
+
return AudioNodeHostObject::set(runtime, propNameId, value);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <memory>
|
|
4
|
+
#include <vector>
|
|
5
|
+
|
|
6
|
+
#include "AudioDestinationNodeWrapper.h"
|
|
7
|
+
#include "AudioNodeHostObject.h"
|
|
8
|
+
|
|
9
|
+
namespace audioapi {
|
|
10
|
+
using namespace facebook;
|
|
11
|
+
|
|
12
|
+
class AudioDestinationNodeHostObject : public AudioNodeHostObject {
|
|
13
|
+
public:
|
|
14
|
+
explicit AudioDestinationNodeHostObject(
|
|
15
|
+
const std::shared_ptr<AudioDestinationNodeWrapper> &wrapper);
|
|
16
|
+
|
|
17
|
+
jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override;
|
|
18
|
+
|
|
19
|
+
void set(
|
|
20
|
+
jsi::Runtime &runtime,
|
|
21
|
+
const jsi::PropNameID &name,
|
|
22
|
+
const jsi::Value &value) override;
|
|
23
|
+
|
|
24
|
+
std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
|
|
25
|
+
|
|
26
|
+
static std::shared_ptr<AudioDestinationNodeHostObject> createFromWrapper(
|
|
27
|
+
const std::shared_ptr<AudioDestinationNodeWrapper> &wrapper) {
|
|
28
|
+
return std::make_shared<AudioDestinationNodeHostObject>(wrapper);
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
} // namespace audioapi
|