react-native-audio-api 0.3.0-rc2 → 0.3.2

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.
Files changed (197) hide show
  1. package/RNAudioAPI.podspec +40 -29
  2. package/android/CMakeLists.txt +17 -21
  3. package/android/build.gradle +26 -9
  4. package/android/src/main/cpp/OnLoad.cpp +1 -1
  5. package/android/src/main/cpp/core/AudioAPIInstaller.cpp +37 -0
  6. package/android/src/main/cpp/{AudioAPIInstaller → core}/AudioAPIInstaller.h +5 -16
  7. package/android/src/main/cpp/{AudioDecoder → core}/AudioDecoder.cpp +0 -8
  8. package/android/src/main/java/com/swmansion/audioapi/AudioAPIPackage.kt +2 -0
  9. package/android/src/main/java/com/swmansion/audioapi/nativemodules/AudioAPIModule.kt +6 -4
  10. package/common/cpp/HostObjects/AudioAPIInstallerHostObject.h +48 -0
  11. package/common/cpp/HostObjects/AudioBufferHostObject.h +79 -13
  12. package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.h +93 -14
  13. package/common/cpp/HostObjects/AudioContextHostObject.h +10 -21
  14. package/common/cpp/HostObjects/AudioDestinationNodeHostObject.h +3 -16
  15. package/common/cpp/HostObjects/AudioNodeHostObject.h +48 -11
  16. package/common/cpp/HostObjects/AudioParamHostObject.h +93 -14
  17. package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.h +23 -16
  18. package/common/cpp/HostObjects/BaseAudioContextHostObject.h +131 -14
  19. package/common/cpp/HostObjects/BiquadFilterNodeHostObject.h +76 -18
  20. package/common/cpp/HostObjects/GainNodeHostObject.h +10 -15
  21. package/common/cpp/HostObjects/OscillatorNodeHostObject.h +40 -17
  22. package/common/cpp/HostObjects/PeriodicWaveHostObject.h +4 -17
  23. package/common/cpp/HostObjects/StereoPannerNodeHostObject.h +10 -17
  24. package/common/cpp/core/AudioBufferSourceNode.cpp +181 -73
  25. package/common/cpp/core/AudioBufferSourceNode.h +41 -1
  26. package/{android/src/main/cpp/AudioDecoder → common/cpp/core}/AudioDecoder.h +1 -3
  27. package/common/cpp/core/AudioDestinationNode.h +1 -1
  28. package/common/cpp/core/AudioParam.cpp +218 -58
  29. package/common/cpp/core/AudioParam.h +19 -15
  30. package/common/cpp/core/AudioScheduledSourceNode.cpp +94 -21
  31. package/common/cpp/core/AudioScheduledSourceNode.h +16 -5
  32. package/common/cpp/core/BaseAudioContext.cpp +3 -13
  33. package/common/cpp/core/BaseAudioContext.h +2 -4
  34. package/common/cpp/core/BiquadFilterNode.cpp +5 -7
  35. package/common/cpp/{HostObjects → core}/Constants.h +2 -2
  36. package/common/cpp/core/GainNode.cpp +1 -1
  37. package/common/cpp/core/OscillatorNode.cpp +11 -5
  38. package/common/cpp/core/ParamChangeEvent.cpp +58 -0
  39. package/common/cpp/core/{ParamChange.h → ParamChangeEvent.h} +11 -5
  40. package/common/cpp/core/StereoPannerNode.cpp +1 -1
  41. package/common/cpp/jsi/JsiHostObject.cpp +90 -0
  42. package/common/cpp/jsi/JsiHostObject.h +100 -0
  43. package/common/cpp/{utils → jsi}/JsiPromise.cpp +10 -9
  44. package/common/cpp/jsi/JsiPromise.h +48 -0
  45. package/common/cpp/jsi/RuntimeAwareCache.h +57 -0
  46. package/common/cpp/jsi/RuntimeLifecycleMonitor.cpp +61 -0
  47. package/common/cpp/jsi/RuntimeLifecycleMonitor.h +32 -0
  48. package/common/cpp/types/BiquadFilterType.h +0 -4
  49. package/common/cpp/types/ChannelCountMode.h +0 -3
  50. package/common/cpp/types/ChannelInterpretation.h +0 -3
  51. package/common/cpp/types/ContextState.h +0 -3
  52. package/common/cpp/types/OscillatorType.h +0 -4
  53. package/common/cpp/types/ParamChangeEventType.h +13 -0
  54. package/common/cpp/utils/AudioUtils.cpp +26 -0
  55. package/common/cpp/utils/AudioUtils.h +12 -0
  56. package/common/cpp/utils/{ios/FFTFrame.cpp → FFTFrame.cpp} +30 -3
  57. package/common/cpp/utils/VectorMath.h +7 -33
  58. package/ios/AudioAPIModule.h +4 -12
  59. package/ios/AudioAPIModule.mm +26 -25
  60. package/ios/core/AudioDecoder.mm +45 -0
  61. package/ios/{AudioPlayer → core}/AudioPlayer.m +2 -1
  62. package/lib/module/core/AudioBuffer.js +3 -1
  63. package/lib/module/core/AudioBuffer.js.map +1 -1
  64. package/lib/module/core/AudioBufferSourceNode.js +19 -2
  65. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  66. package/lib/module/core/AudioContext.js +3 -1
  67. package/lib/module/core/AudioContext.js.map +1 -1
  68. package/lib/module/core/AudioDestinationNode.js +4 -6
  69. package/lib/module/core/AudioDestinationNode.js.map +1 -1
  70. package/lib/module/core/AudioNode.js +3 -1
  71. package/lib/module/core/AudioNode.js.map +1 -1
  72. package/lib/module/core/AudioParam.js +27 -1
  73. package/lib/module/core/AudioParam.js.map +1 -1
  74. package/lib/module/core/AudioScheduledSourceNode.js +4 -5
  75. package/lib/module/core/AudioScheduledSourceNode.js.map +1 -1
  76. package/lib/module/core/BaseAudioContext.js +11 -9
  77. package/lib/module/core/BaseAudioContext.js.map +1 -1
  78. package/lib/module/core/BiquadFilterNode.js +5 -3
  79. package/lib/module/core/BiquadFilterNode.js.map +1 -1
  80. package/lib/module/core/GainNode.js +4 -2
  81. package/lib/module/core/GainNode.js.map +1 -1
  82. package/lib/module/core/OscillatorNode.js +5 -3
  83. package/lib/module/core/OscillatorNode.js.map +1 -1
  84. package/lib/module/core/PeriodicWave.js +2 -0
  85. package/lib/module/core/PeriodicWave.js.map +1 -1
  86. package/lib/module/core/StereoPannerNode.js +4 -2
  87. package/lib/module/core/StereoPannerNode.js.map +1 -1
  88. package/lib/module/core/types.js +1 -1
  89. package/lib/module/errors/IndexSizeError.js +2 -0
  90. package/lib/module/errors/IndexSizeError.js.map +1 -1
  91. package/lib/module/errors/InvalidAccessError.js +2 -0
  92. package/lib/module/errors/InvalidAccessError.js.map +1 -1
  93. package/lib/module/errors/InvalidStateError.js +2 -0
  94. package/lib/module/errors/InvalidStateError.js.map +1 -1
  95. package/lib/module/errors/RangeError.js +2 -0
  96. package/lib/module/errors/RangeError.js.map +1 -1
  97. package/lib/module/errors/index.js +6 -4
  98. package/lib/module/errors/index.js.map +1 -1
  99. package/lib/module/index.js +35 -10
  100. package/lib/module/index.js.map +1 -1
  101. package/lib/module/index.native.js +16 -14
  102. package/lib/module/index.native.js.map +1 -1
  103. package/lib/module/interfaces.js +2 -0
  104. package/lib/module/specs/global.d.js +4 -0
  105. package/lib/module/{modules → specs}/global.d.js.map +1 -1
  106. package/lib/module/{utils → specs}/install.js +5 -9
  107. package/lib/module/specs/install.js.map +1 -0
  108. package/lib/typescript/core/AudioBuffer.d.ts +2 -0
  109. package/lib/typescript/core/AudioBuffer.d.ts.map +1 -1
  110. package/lib/typescript/core/AudioBufferSourceNode.d.ts +7 -0
  111. package/lib/typescript/core/AudioBufferSourceNode.d.ts.map +1 -1
  112. package/lib/typescript/core/AudioDestinationNode.d.ts +0 -3
  113. package/lib/typescript/core/AudioDestinationNode.d.ts.map +1 -1
  114. package/lib/typescript/core/AudioParam.d.ts +4 -0
  115. package/lib/typescript/core/AudioParam.d.ts.map +1 -1
  116. package/lib/typescript/core/AudioScheduledSourceNode.d.ts +0 -3
  117. package/lib/typescript/core/AudioScheduledSourceNode.d.ts.map +1 -1
  118. package/lib/typescript/core/PeriodicWave.d.ts +2 -0
  119. package/lib/typescript/core/PeriodicWave.d.ts.map +1 -1
  120. package/lib/typescript/index.d.ts +13 -3
  121. package/lib/typescript/index.d.ts.map +1 -1
  122. package/lib/typescript/interfaces.d.ts +8 -0
  123. package/lib/typescript/interfaces.d.ts.map +1 -1
  124. package/lib/typescript/{utils → specs}/install.d.ts.map +1 -1
  125. package/metro-config/index.d.ts +5 -0
  126. package/metro-config/index.js +41 -0
  127. package/metro-config/tsconfig.json +3 -0
  128. package/package.json +50 -16
  129. package/scripts/audioapi_utils.rb +56 -0
  130. package/src/core/AudioBufferSourceNode.ts +23 -0
  131. package/src/core/AudioDestinationNode.ts +1 -7
  132. package/src/core/AudioParam.ts +48 -0
  133. package/src/core/AudioScheduledSourceNode.ts +0 -5
  134. package/src/index.native.ts +1 -1
  135. package/src/index.ts +54 -13
  136. package/src/interfaces.ts +17 -0
  137. package/src/{modules → specs}/global.d.ts +2 -0
  138. package/src/{utils → specs}/install.ts +4 -11
  139. package/android/src/main/cpp/AudioAPIInstaller/AudioAPIInstaller.cpp +0 -26
  140. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.cpp +0 -58
  141. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerHostObject.h +0 -51
  142. package/common/cpp/AudioAPIInstaller/AudioAPIInstallerWrapper.h +0 -38
  143. package/common/cpp/AudioAPIInstaller/android/AudioAPIInstallerWrapper.cpp +0 -16
  144. package/common/cpp/AudioAPIInstaller/ios/AudioAPIInstallerWrapper.cpp +0 -12
  145. package/common/cpp/HostObjects/AudioBufferHostObject.cpp +0 -150
  146. package/common/cpp/HostObjects/AudioBufferSourceNodeHostObject.cpp +0 -79
  147. package/common/cpp/HostObjects/AudioContextHostObject.cpp +0 -55
  148. package/common/cpp/HostObjects/AudioDestinationNodeHostObject.cpp +0 -33
  149. package/common/cpp/HostObjects/AudioNodeHostObject.cpp +0 -102
  150. package/common/cpp/HostObjects/AudioParamHostObject.cpp +0 -115
  151. package/common/cpp/HostObjects/AudioScheduledSourceNodeHostObject.cpp +0 -73
  152. package/common/cpp/HostObjects/BaseAudioContextHostObject.cpp +0 -250
  153. package/common/cpp/HostObjects/BiquadFilterNodeHostObject.cpp +0 -125
  154. package/common/cpp/HostObjects/GainNodeHostObject.cpp +0 -41
  155. package/common/cpp/HostObjects/OscillatorNodeHostObject.cpp +0 -88
  156. package/common/cpp/HostObjects/PeriodicWaveHostObject.cpp +0 -33
  157. package/common/cpp/HostObjects/StereoPannerNodeHostObject.cpp +0 -41
  158. package/common/cpp/core/ParamChange.cpp +0 -46
  159. package/common/cpp/utils/JsiPromise.h +0 -48
  160. package/common/cpp/utils/android/FFTFrame.cpp +0 -23
  161. package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.cpp +0 -45
  162. package/common/cpp/wrappers/AudioBufferSourceNodeWrapper.h +0 -26
  163. package/common/cpp/wrappers/AudioBufferWrapper.cpp +0 -46
  164. package/common/cpp/wrappers/AudioBufferWrapper.h +0 -30
  165. package/common/cpp/wrappers/AudioContextWrapper.cpp +0 -17
  166. package/common/cpp/wrappers/AudioContextWrapper.h +0 -19
  167. package/common/cpp/wrappers/AudioDestinationNodeWrapper.h +0 -16
  168. package/common/cpp/wrappers/AudioNodeWrapper.cpp +0 -37
  169. package/common/cpp/wrappers/AudioNodeWrapper.h +0 -25
  170. package/common/cpp/wrappers/AudioParamWrapper.cpp +0 -42
  171. package/common/cpp/wrappers/AudioParamWrapper.h +0 -25
  172. package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.cpp +0 -23
  173. package/common/cpp/wrappers/AudioScheduledSourceNodeWrapper.h +0 -23
  174. package/common/cpp/wrappers/BaseAudioContextWrapper.cpp +0 -83
  175. package/common/cpp/wrappers/BaseAudioContextWrapper.h +0 -51
  176. package/common/cpp/wrappers/BiquadFilterNodeWrapper.cpp +0 -60
  177. package/common/cpp/wrappers/BiquadFilterNodeWrapper.h +0 -37
  178. package/common/cpp/wrappers/GainNodeWrapper.cpp +0 -14
  179. package/common/cpp/wrappers/GainNodeWrapper.h +0 -20
  180. package/common/cpp/wrappers/OscillatorNodeWrapper.cpp +0 -44
  181. package/common/cpp/wrappers/OscillatorNodeWrapper.h +0 -31
  182. package/common/cpp/wrappers/PeriodicWaveWrapper.h +0 -17
  183. package/common/cpp/wrappers/StereoPannerNodeWrapper.cpp +0 -16
  184. package/common/cpp/wrappers/StereoPannerNodeWrapper.h +0 -21
  185. package/ios/AudioDecoder/AudioDecoder.h +0 -17
  186. package/ios/AudioDecoder/AudioDecoder.m +0 -80
  187. package/ios/AudioDecoder/IOSAudioDecoder.h +0 -28
  188. package/ios/AudioDecoder/IOSAudioDecoder.mm +0 -46
  189. package/lib/module/modules/global.d.js +0 -2
  190. package/lib/module/utils/install.js.map +0 -1
  191. /package/android/src/main/cpp/{AudioPlayer → core}/AudioPlayer.cpp +0 -0
  192. /package/android/src/main/cpp/{AudioPlayer → core}/AudioPlayer.h +0 -0
  193. /package/{android/libs/include → common/cpp/libs}/miniaudio.h +0 -0
  194. /package/ios/{AudioPlayer → core}/AudioPlayer.h +0 -0
  195. /package/ios/{AudioPlayer → core}/IOSAudioPlayer.h +0 -0
  196. /package/ios/{AudioPlayer → core}/IOSAudioPlayer.mm +0 -0
  197. /package/lib/typescript/{utils → specs}/install.d.ts +0 -0
@@ -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
@@ -1,73 +0,0 @@
1
- #include "AudioScheduledSourceNodeHostObject.h"
2
-
3
- namespace audioapi {
4
- using namespace facebook;
5
-
6
- std::shared_ptr<AudioScheduledSourceNodeWrapper>
7
- AudioScheduledSourceNodeHostObject::
8
- getAudioScheduledSourceNodeWrapperFromAudioNodeWrapper() {
9
- return std::static_pointer_cast<AudioScheduledSourceNodeWrapper>(wrapper_);
10
- }
11
-
12
- std::vector<jsi::PropNameID>
13
- AudioScheduledSourceNodeHostObject::getPropertyNames(jsi::Runtime &runtime) {
14
- std::vector<jsi::PropNameID> propertyNames =
15
- AudioNodeHostObject::getPropertyNames(runtime);
16
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "start"));
17
- propertyNames.push_back(jsi::PropNameID::forAscii(runtime, "stop"));
18
- return propertyNames;
19
- }
20
-
21
- jsi::Value AudioScheduledSourceNodeHostObject::get(
22
- jsi::Runtime &runtime,
23
- const jsi::PropNameID &propNameId) {
24
- auto propName = propNameId.utf8(runtime);
25
-
26
- if (propName == "start") {
27
- return jsi::Function::createFromHostFunction(
28
- runtime,
29
- propNameId,
30
- 1,
31
- [this](
32
- jsi::Runtime &rt,
33
- const jsi::Value &thisValue,
34
- const jsi::Value *args,
35
- size_t count) -> jsi::Value {
36
- auto time = args[0].getNumber();
37
- auto wrapper =
38
- getAudioScheduledSourceNodeWrapperFromAudioNodeWrapper();
39
- wrapper->start(time);
40
- return jsi::Value::undefined();
41
- });
42
- }
43
-
44
- if (propName == "stop") {
45
- return jsi::Function::createFromHostFunction(
46
- runtime,
47
- propNameId,
48
- 1,
49
- [this](
50
- jsi::Runtime &rt,
51
- const jsi::Value &thisValue,
52
- const jsi::Value *args,
53
- size_t count) -> jsi::Value {
54
- auto time = args[0].getNumber();
55
- auto wrapper =
56
- getAudioScheduledSourceNodeWrapperFromAudioNodeWrapper();
57
- wrapper->stop(time);
58
- return jsi::Value::undefined();
59
- });
60
- }
61
-
62
- return AudioNodeHostObject::get(runtime, propNameId);
63
- }
64
-
65
- void AudioScheduledSourceNodeHostObject::set(
66
- jsi::Runtime &runtime,
67
- const jsi::PropNameID &propNameId,
68
- const jsi::Value &value) {
69
- auto propName = propNameId.utf8(runtime);
70
-
71
- return AudioNodeHostObject::set(runtime, propNameId, value);
72
- }
73
- } // namespace audioapi