react-native-audio-api 0.3.0-rc2 → 0.3.1
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/CMakeLists.txt +2 -2
- package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.cpp +3 -9
- package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.h +0 -2
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.h +25 -28
- package/common/cpp/HostObjects/AudioBufferHostObject.h +79 -13
- package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.h +93 -14
- package/common/cpp/HostObjects/AudioContextHostObject.h +10 -21
- package/common/cpp/HostObjects/AudioDestinationNodeHostObject.h +3 -16
- package/common/cpp/HostObjects/AudioNodeHostObject.h +48 -11
- package/common/cpp/HostObjects/AudioParamHostObject.h +56 -14
- package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.h +23 -16
- package/common/cpp/HostObjects/BaseAudioContextHostObject.h +131 -14
- package/common/cpp/HostObjects/BiquadFilterNodeHostObject.h +76 -18
- package/common/cpp/HostObjects/Constants.h +2 -0
- package/common/cpp/HostObjects/GainNodeHostObject.h +10 -15
- package/common/cpp/HostObjects/OscillatorNodeHostObject.h +40 -17
- package/common/cpp/HostObjects/PeriodicWaveHostObject.h +4 -17
- package/common/cpp/HostObjects/StereoPannerNodeHostObject.h +10 -17
- package/common/cpp/core/AudioBufferSourceNode.cpp +180 -73
- package/common/cpp/core/AudioBufferSourceNode.h +41 -1
- package/common/cpp/core/AudioDestinationNode.h +1 -1
- package/common/cpp/core/AudioScheduledSourceNode.cpp +86 -21
- package/common/cpp/core/AudioScheduledSourceNode.h +12 -4
- package/common/cpp/core/OscillatorNode.cpp +7 -2
- package/common/cpp/jsi/JsiHostObject.cpp +85 -0
- package/common/cpp/jsi/JsiHostObject.h +94 -0
- package/common/cpp/{utils → jsi}/JsiPromise.cpp +10 -9
- package/common/cpp/jsi/JsiPromise.h +48 -0
- package/common/cpp/utils/AudioUtils.cpp +26 -0
- package/common/cpp/utils/AudioUtils.h +16 -0
- package/ios/AudioAPIModule.mm +2 -6
- package/ios/AudioDecoder/AudioDecoder.m +9 -10
- package/ios/AudioPlayer/AudioPlayer.m +2 -1
- package/lib/module/core/AudioBufferSourceNode.js +15 -0
- package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
- package/lib/module/index.js +18 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/core/AudioBufferSourceNode.d.ts +7 -0
- package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +6 -2
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +4 -0
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/AudioBufferSourceNode.ts +23 -0
- package/src/index.ts +24 -0
- package/src/interfaces.ts +5 -0
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.cpp +0 -58
- package/common/cpp/AudioAPIInstaller/AudioAPIInstallerWrapper.h +0 -38
- package/common/cpp/AudioAPIInstaller/android/AudioAPIInstallerWrapper.cpp +0 -16
- package/common/cpp/AudioAPIInstaller/ios/AudioAPIInstallerWrapper.cpp +0 -12
- package/common/cpp/HostObjects/AudioBufferHostObject.cpp +0 -150
- package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.cpp +0 -79
- package/common/cpp/HostObjects/AudioContextHostObject.cpp +0 -55
- package/common/cpp/HostObjects/AudioDestinationNodeHostObject.cpp +0 -33
- package/common/cpp/HostObjects/AudioNodeHostObject.cpp +0 -102
- package/common/cpp/HostObjects/AudioParamHostObject.cpp +0 -115
- package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.cpp +0 -73
- package/common/cpp/HostObjects/BaseAudioContextHostObject.cpp +0 -250
- package/common/cpp/HostObjects/BiquadFilterNodeHostObject.cpp +0 -125
- package/common/cpp/HostObjects/GainNodeHostObject.cpp +0 -41
- package/common/cpp/HostObjects/OscillatorNodeHostObject.cpp +0 -88
- package/common/cpp/HostObjects/PeriodicWaveHostObject.cpp +0 -33
- package/common/cpp/HostObjects/StereoPannerNodeHostObject.cpp +0 -41
- package/common/cpp/utils/JsiPromise.h +0 -48
- package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.cpp +0 -45
- package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.h +0 -26
- package/common/cpp/wrappers/AudioBufferWrapper.cpp +0 -46
- package/common/cpp/wrappers/AudioBufferWrapper.h +0 -30
- package/common/cpp/wrappers/AudioContextWrapper.cpp +0 -17
- package/common/cpp/wrappers/AudioContextWrapper.h +0 -19
- package/common/cpp/wrappers/AudioDestinationNodeWrapper.h +0 -16
- package/common/cpp/wrappers/AudioNodeWrapper.cpp +0 -37
- package/common/cpp/wrappers/AudioNodeWrapper.h +0 -25
- package/common/cpp/wrappers/AudioParamWrapper.cpp +0 -42
- package/common/cpp/wrappers/AudioParamWrapper.h +0 -25
- package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.cpp +0 -23
- package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.h +0 -23
- package/common/cpp/wrappers/BaseAudioContextWrapper.cpp +0 -83
- package/common/cpp/wrappers/BaseAudioContextWrapper.h +0 -51
- package/common/cpp/wrappers/BiquadFilterNodeWrapper.cpp +0 -60
- package/common/cpp/wrappers/BiquadFilterNodeWrapper.h +0 -37
- package/common/cpp/wrappers/GainNodeWrapper.cpp +0 -14
- package/common/cpp/wrappers/GainNodeWrapper.h +0 -20
- package/common/cpp/wrappers/OscillatorNodeWrapper.cpp +0 -44
- package/common/cpp/wrappers/OscillatorNodeWrapper.h +0 -31
- package/common/cpp/wrappers/PeriodicWaveWrapper.h +0 -17
- package/common/cpp/wrappers/StereoPannerNodeWrapper.cpp +0 -16
- package/common/cpp/wrappers/StereoPannerNodeWrapper.h +0 -21
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
#include "AudioAPIInstallerHostObject.h"
|
|
2
|
-
|
|
3
|
-
namespace audioapi {
|
|
4
|
-
using namespace facebook;
|
|
5
|
-
|
|
6
|
-
AudioAPIInstallerHostObject::AudioAPIInstallerHostObject(
|
|
7
|
-
const std::shared_ptr<AudioAPIInstallerWrapper> &wrapper,
|
|
8
|
-
jsi::Runtime *runtime,
|
|
9
|
-
const std::shared_ptr<facebook::react::CallInvoker> &jsInvoker)
|
|
10
|
-
: wrapper_(wrapper) {
|
|
11
|
-
promiseVendor_ =
|
|
12
|
-
std::make_shared<JsiPromise::PromiseVendor>(runtime, jsInvoker);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
std::vector<jsi::PropNameID> AudioAPIInstallerHostObject::getPropertyNames(
|
|
16
|
-
jsi::Runtime &runtime) {
|
|
17
|
-
std::vector<jsi::PropNameID> propertyNames;
|
|
18
|
-
propertyNames.push_back(
|
|
19
|
-
jsi::PropNameID::forUtf8(runtime, "createAudioContext"));
|
|
20
|
-
return propertyNames;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
jsi::Value AudioAPIInstallerHostObject::get(
|
|
24
|
-
jsi::Runtime &runtime,
|
|
25
|
-
const jsi::PropNameID &propNameId) {
|
|
26
|
-
auto propName = propNameId.utf8(runtime);
|
|
27
|
-
|
|
28
|
-
if (propName == "createAudioContext") {
|
|
29
|
-
return jsi::Function::createFromHostFunction(
|
|
30
|
-
runtime,
|
|
31
|
-
propNameId,
|
|
32
|
-
0,
|
|
33
|
-
[this](
|
|
34
|
-
jsi::Runtime &runtime,
|
|
35
|
-
const jsi::Value &thisValue,
|
|
36
|
-
const jsi::Value *arguments,
|
|
37
|
-
size_t count) -> jsi::Value {
|
|
38
|
-
auto audioContext = wrapper_->createAudioContext();
|
|
39
|
-
auto audioContextHostObject =
|
|
40
|
-
AudioContextHostObject::createFromWrapper(
|
|
41
|
-
audioContext, promiseVendor_);
|
|
42
|
-
return jsi::Object::createFromHostObject(
|
|
43
|
-
runtime, audioContextHostObject);
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
throw std::runtime_error("Not yet implemented!");
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
void AudioAPIInstallerHostObject::set(
|
|
51
|
-
jsi::Runtime &runtime,
|
|
52
|
-
const jsi::PropNameID &propNameId,
|
|
53
|
-
const jsi::Value &value) {
|
|
54
|
-
auto propName = propNameId.utf8(runtime);
|
|
55
|
-
|
|
56
|
-
throw std::runtime_error("Not yet implemented!");
|
|
57
|
-
}
|
|
58
|
-
} // namespace audioapi
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
|
@@ -1,16 +0,0 @@
|
|
|
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
|
|
@@ -1,12 +0,0 @@
|
|
|
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
|
|
@@ -1,150 +0,0 @@
|
|
|
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
|
-
// `decodeAudioData` is a method that returns a promise to
|
|
132
|
-
// AudioBufferHostObject It seems that async/await checks for the presence of
|
|
133
|
-
// `then` method on the object
|
|
134
|
-
if (propName == "then") {
|
|
135
|
-
return jsi::Value::undefined();
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
throw std::runtime_error("Not yet implemented!");
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
void AudioBufferHostObject::set(
|
|
142
|
-
jsi::Runtime &runtime,
|
|
143
|
-
const jsi::PropNameID &propNameId,
|
|
144
|
-
const jsi::Value &value) {
|
|
145
|
-
auto propName = propNameId.utf8(runtime);
|
|
146
|
-
|
|
147
|
-
throw std::runtime_error("Not yet implemented!");
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
} // namespace audioapi
|
|
@@ -1,79 +0,0 @@
|
|
|
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
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
#include "AudioContextHostObject.h"
|
|
2
|
-
|
|
3
|
-
namespace audioapi {
|
|
4
|
-
using namespace facebook;
|
|
5
|
-
|
|
6
|
-
AudioContextHostObject::AudioContextHostObject(
|
|
7
|
-
const std::shared_ptr<AudioContextWrapper> &wrapper,
|
|
8
|
-
std::shared_ptr<JsiPromise::PromiseVendor> promiseVendor)
|
|
9
|
-
: BaseAudioContextHostObject(wrapper, promiseVendor) {}
|
|
10
|
-
|
|
11
|
-
std::vector<jsi::PropNameID> AudioContextHostObject::getPropertyNames(
|
|
12
|
-
jsi::Runtime &runtime) {
|
|
13
|
-
std::vector<jsi::PropNameID> propertyNames =
|
|
14
|
-
BaseAudioContextHostObject::getPropertyNames(runtime);
|
|
15
|
-
propertyNames.push_back(jsi::PropNameID::forUtf8(runtime, "close"));
|
|
16
|
-
return propertyNames;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
jsi::Value AudioContextHostObject::get(
|
|
20
|
-
jsi::Runtime &runtime,
|
|
21
|
-
const jsi::PropNameID &propNameId) {
|
|
22
|
-
auto propName = propNameId.utf8(runtime);
|
|
23
|
-
|
|
24
|
-
if (propName == "close") {
|
|
25
|
-
return jsi::Function::createFromHostFunction(
|
|
26
|
-
runtime,
|
|
27
|
-
propNameId,
|
|
28
|
-
0,
|
|
29
|
-
[this](
|
|
30
|
-
jsi::Runtime &runtime,
|
|
31
|
-
const jsi::Value &thisValue,
|
|
32
|
-
const jsi::Value *arguments,
|
|
33
|
-
size_t count) -> jsi::Value {
|
|
34
|
-
getAudioContextWrapperFromBaseAudioContextWrapper()->close();
|
|
35
|
-
return jsi::Value::undefined();
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return BaseAudioContextHostObject::get(runtime, propNameId);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
void AudioContextHostObject::set(
|
|
43
|
-
jsi::Runtime &runtime,
|
|
44
|
-
const jsi::PropNameID &propNameId,
|
|
45
|
-
const jsi::Value &value) {
|
|
46
|
-
auto propName = propNameId.utf8(runtime);
|
|
47
|
-
|
|
48
|
-
return BaseAudioContextHostObject::set(runtime, propNameId, value);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
std::shared_ptr<AudioContextWrapper>
|
|
52
|
-
AudioContextHostObject::getAudioContextWrapperFromBaseAudioContextWrapper() {
|
|
53
|
-
return std::static_pointer_cast<AudioContextWrapper>(wrapper_);
|
|
54
|
-
}
|
|
55
|
-
} // namespace audioapi
|
|
@@ -1,33 +0,0 @@
|
|
|
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
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
#include "AudioNodeHostObject.h"
|
|
2
|
-
#include "AudioContextHostObject.h"
|
|
3
|
-
|
|
4
|
-
namespace audioapi {
|
|
5
|
-
using namespace facebook;
|
|
6
|
-
|
|
7
|
-
AudioNodeHostObject::AudioNodeHostObject(
|
|
8
|
-
const std::shared_ptr<AudioNodeWrapper> &wrapper)
|
|
9
|
-
: wrapper_(wrapper) {}
|
|
10
|
-
|
|
11
|
-
std::vector<jsi::PropNameID> AudioNodeHostObject::getPropertyNames(
|
|
12
|
-
jsi::Runtime &runtime) {
|
|
13
|
-
std::vector<jsi::PropNameID> propertyNames;
|
|
14
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "connect"));
|
|
15
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "disconnect"));
|
|
16
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "numberOfInputs"));
|
|
17
|
-
propertyNames.push_back(
|
|
18
|
-
jsi::PropNameID::forAscii(runtime, "numberOfOutputs"));
|
|
19
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "channelCount"));
|
|
20
|
-
propertyNames.push_back(
|
|
21
|
-
jsi::PropNameID::forAscii(runtime, "channelCountMode"));
|
|
22
|
-
propertyNames.push_back(
|
|
23
|
-
jsi::PropNameID::forAscii(runtime, "channelInterpretation"));
|
|
24
|
-
return propertyNames;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
jsi::Value AudioNodeHostObject::get(
|
|
28
|
-
jsi::Runtime &runtime,
|
|
29
|
-
const jsi::PropNameID &propNameId) {
|
|
30
|
-
auto propName = propNameId.utf8(runtime);
|
|
31
|
-
|
|
32
|
-
if (propName == "connect") {
|
|
33
|
-
return jsi::Function::createFromHostFunction(
|
|
34
|
-
runtime,
|
|
35
|
-
propNameId,
|
|
36
|
-
1,
|
|
37
|
-
[this](
|
|
38
|
-
jsi::Runtime &rt,
|
|
39
|
-
const jsi::Value &thisValue,
|
|
40
|
-
const jsi::Value *args,
|
|
41
|
-
size_t count) -> jsi::Value {
|
|
42
|
-
auto node =
|
|
43
|
-
args[0].getObject(rt).getHostObject<AudioNodeHostObject>(rt);
|
|
44
|
-
wrapper_->connect(
|
|
45
|
-
std::shared_ptr<AudioNodeHostObject>(node)->wrapper_);
|
|
46
|
-
return jsi::Value::undefined();
|
|
47
|
-
});
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
if (propName == "disconnect") {
|
|
51
|
-
return jsi::Function::createFromHostFunction(
|
|
52
|
-
runtime,
|
|
53
|
-
propNameId,
|
|
54
|
-
1,
|
|
55
|
-
[this](
|
|
56
|
-
jsi::Runtime &rt,
|
|
57
|
-
const jsi::Value &thisValue,
|
|
58
|
-
const jsi::Value *args,
|
|
59
|
-
size_t count) -> jsi::Value {
|
|
60
|
-
auto node =
|
|
61
|
-
args[0].getObject(rt).getHostObject<AudioNodeHostObject>(rt);
|
|
62
|
-
wrapper_->disconnect(
|
|
63
|
-
std::shared_ptr<AudioNodeHostObject>(node)->wrapper_);
|
|
64
|
-
return jsi::Value::undefined();
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (propName == "numberOfInputs") {
|
|
69
|
-
return {wrapper_->getNumberOfInputs()};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (propName == "numberOfOutputs") {
|
|
73
|
-
return {wrapper_->getNumberOfOutputs()};
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
if (propName == "channelCount") {
|
|
77
|
-
return {wrapper_->getChannelCount()};
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (propName == "channelCountMode") {
|
|
81
|
-
return jsi::String::createFromUtf8(
|
|
82
|
-
runtime, wrapper_->getChannelCountMode());
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
if (propName == "channelInterpretation") {
|
|
86
|
-
return jsi::String::createFromUtf8(
|
|
87
|
-
runtime, wrapper_->getChannelInterpretation());
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
throw std::runtime_error("Not yet implemented!");
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
void AudioNodeHostObject::set(
|
|
94
|
-
jsi::Runtime &runtime,
|
|
95
|
-
const jsi::PropNameID &propNameId,
|
|
96
|
-
const jsi::Value &value) {
|
|
97
|
-
auto propName = propNameId.utf8(runtime);
|
|
98
|
-
|
|
99
|
-
throw std::runtime_error("Not yet implemented!");
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
} // namespace audioapi
|
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
#include "AudioParamHostObject.h"
|
|
2
|
-
|
|
3
|
-
namespace audioapi {
|
|
4
|
-
using namespace facebook;
|
|
5
|
-
|
|
6
|
-
AudioParamHostObject::AudioParamHostObject(
|
|
7
|
-
const std::shared_ptr<AudioParamWrapper> &wrapper)
|
|
8
|
-
: wrapper_(wrapper) {}
|
|
9
|
-
|
|
10
|
-
std::vector<jsi::PropNameID> AudioParamHostObject::getPropertyNames(
|
|
11
|
-
jsi::Runtime &runtime) {
|
|
12
|
-
std::vector<jsi::PropNameID> propertyNames;
|
|
13
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "value"));
|
|
14
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "defaultValue"));
|
|
15
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "minValue"));
|
|
16
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "maxValue"));
|
|
17
|
-
propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "setValueAtTime"));
|
|
18
|
-
propertyNames.push_back(
|
|
19
|
-
jsi::PropNameID::forAscii(runtime, "linearRampToValueAtTime"));
|
|
20
|
-
propertyNames.push_back(
|
|
21
|
-
jsi::PropNameID::forAscii(runtime, "exponentialRampToValueAtTime"));
|
|
22
|
-
return propertyNames;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
jsi::Value AudioParamHostObject::get(
|
|
26
|
-
jsi::Runtime &runtime,
|
|
27
|
-
const jsi::PropNameID &propNameId) {
|
|
28
|
-
auto propName = propNameId.utf8(runtime);
|
|
29
|
-
|
|
30
|
-
if (propName == "value") {
|
|
31
|
-
return {wrapper_->getValue()};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (propName == "defaultValue") {
|
|
35
|
-
return {wrapper_->getDefaultValue()};
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
if (propName == "minValue") {
|
|
39
|
-
return {wrapper_->getMinValue()};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
if (propName == "maxValue") {
|
|
43
|
-
return {wrapper_->getMaxValue()};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
if (propName == "setValueAtTime") {
|
|
47
|
-
return jsi::Function::createFromHostFunction(
|
|
48
|
-
runtime,
|
|
49
|
-
propNameId,
|
|
50
|
-
2,
|
|
51
|
-
[this](
|
|
52
|
-
jsi::Runtime &rt,
|
|
53
|
-
const jsi::Value &thisVal,
|
|
54
|
-
const jsi::Value *args,
|
|
55
|
-
size_t count) -> jsi::Value {
|
|
56
|
-
double value = args[0].getNumber();
|
|
57
|
-
double startTime = args[1].getNumber();
|
|
58
|
-
wrapper_->setValueAtTime(value, startTime);
|
|
59
|
-
return jsi::Value::undefined();
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
if (propName == "linearRampToValueAtTime") {
|
|
64
|
-
return jsi::Function::createFromHostFunction(
|
|
65
|
-
runtime,
|
|
66
|
-
propNameId,
|
|
67
|
-
2,
|
|
68
|
-
[this](
|
|
69
|
-
jsi::Runtime &rt,
|
|
70
|
-
const jsi::Value &thisVal,
|
|
71
|
-
const jsi::Value *args,
|
|
72
|
-
size_t count) -> jsi::Value {
|
|
73
|
-
double value = args[0].getNumber();
|
|
74
|
-
double endTime = args[1].getNumber();
|
|
75
|
-
wrapper_->linearRampToValueAtTime(value, endTime);
|
|
76
|
-
return jsi::Value::undefined();
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
if (propName == "exponentialRampToValueAtTime") {
|
|
81
|
-
return jsi::Function::createFromHostFunction(
|
|
82
|
-
runtime,
|
|
83
|
-
propNameId,
|
|
84
|
-
2,
|
|
85
|
-
[this](
|
|
86
|
-
jsi::Runtime &rt,
|
|
87
|
-
const jsi::Value &thisVal,
|
|
88
|
-
const jsi::Value *args,
|
|
89
|
-
size_t count) -> jsi::Value {
|
|
90
|
-
double value = args[0].getNumber();
|
|
91
|
-
double endTime = args[1].getNumber();
|
|
92
|
-
wrapper_->exponentialRampToValueAtTime(value, endTime);
|
|
93
|
-
return jsi::Value::undefined();
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
throw std::runtime_error("Not yet implemented!");
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
void AudioParamHostObject::set(
|
|
101
|
-
jsi::Runtime &runtime,
|
|
102
|
-
const jsi::PropNameID &propNameId,
|
|
103
|
-
const jsi::Value &value) {
|
|
104
|
-
auto propName = propNameId.utf8(runtime);
|
|
105
|
-
|
|
106
|
-
if (propName == "value") {
|
|
107
|
-
double paramValue = value.getNumber();
|
|
108
|
-
wrapper_->setValue(paramValue);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
throw std::runtime_error("Not yet implemented!");
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
} // namespace audioapi
|