react-native-audio-api 0.4.8-rc2 → 0.4.9

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 (147) hide show
  1. package/android/CMakeLists.txt +2 -5
  2. package/android/build.gradle +25 -2
  3. package/android/src/main/cpp/core/AudioDecoder.cpp +10 -1
  4. package/android/src/main/cpp/core/AudioPlayer.cpp +6 -3
  5. package/android/src/main/cpp/libs/pffft.c +1906 -0
  6. package/android/src/main/cpp/libs/pffft.h +198 -0
  7. package/common/cpp/core/AnalyserNode.cpp +11 -10
  8. package/common/cpp/core/AnalyserNode.h +2 -0
  9. package/common/cpp/core/AudioBuffer.cpp +1 -1
  10. package/common/cpp/core/AudioBufferSourceNode.cpp +26 -16
  11. package/common/cpp/core/AudioBus.cpp +105 -13
  12. package/common/cpp/core/AudioBus.h +6 -4
  13. package/common/cpp/core/AudioContext.cpp +4 -3
  14. package/common/cpp/core/AudioContext.h +4 -4
  15. package/common/cpp/core/AudioDestinationNode.cpp +2 -3
  16. package/common/cpp/core/AudioNode.cpp +78 -58
  17. package/common/cpp/core/AudioNode.h +10 -1
  18. package/common/cpp/core/AudioNodeManager.cpp +13 -1
  19. package/common/cpp/core/AudioNodeManager.h +2 -0
  20. package/common/cpp/core/AudioScheduledSourceNode.cpp +5 -1
  21. package/common/cpp/core/BaseAudioContext.cpp +4 -1
  22. package/common/cpp/core/BaseAudioContext.h +4 -2
  23. package/common/cpp/core/PeriodicWave.cpp +9 -3
  24. package/common/cpp/core/StereoPannerNode.cpp +9 -12
  25. package/common/cpp/utils/FFTFrame.cpp +44 -37
  26. package/common/cpp/utils/FFTFrame.h +5 -14
  27. package/ios/core/AudioDecoder.mm +10 -1
  28. package/ios/core/AudioPlayer.m +23 -23
  29. package/ios/core/IOSAudioPlayer.mm +3 -3
  30. package/lib/module/core/AudioBufferSourceNode.js +2 -2
  31. package/lib/module/core/AudioBufferSourceNode.js.map +1 -1
  32. package/lib/module/index.js +19 -335
  33. package/lib/module/index.js.map +1 -1
  34. package/lib/module/index.web.js +18 -0
  35. package/lib/module/index.web.js.map +1 -0
  36. package/lib/module/types.js.map +1 -0
  37. package/lib/module/web-core/AnalyserNode.js +48 -0
  38. package/lib/module/web-core/AnalyserNode.js.map +1 -0
  39. package/lib/module/web-core/AudioBuffer.js +43 -0
  40. package/lib/module/web-core/AudioBuffer.js.map +1 -0
  41. package/lib/module/web-core/AudioBufferSourceNode.js +62 -0
  42. package/lib/module/web-core/AudioBufferSourceNode.js.map +1 -0
  43. package/lib/module/web-core/AudioContext.js +69 -0
  44. package/lib/module/web-core/AudioContext.js.map +1 -0
  45. package/lib/module/web-core/AudioDestinationNode.js +5 -0
  46. package/lib/module/web-core/AudioDestinationNode.js.map +1 -0
  47. package/lib/module/web-core/AudioNode.js +27 -0
  48. package/lib/module/web-core/AudioNode.js.map +1 -0
  49. package/lib/module/web-core/AudioParam.js +60 -0
  50. package/lib/module/web-core/AudioParam.js.map +1 -0
  51. package/lib/module/web-core/AudioScheduledSourceNode.js +27 -0
  52. package/lib/module/web-core/AudioScheduledSourceNode.js.map +1 -0
  53. package/lib/module/web-core/BaseAudioContext.js +2 -0
  54. package/lib/module/{core/types.js.map → web-core/BaseAudioContext.js.map} +1 -1
  55. package/lib/module/web-core/BiquadFilterNode.js +35 -0
  56. package/lib/module/web-core/BiquadFilterNode.js.map +1 -0
  57. package/lib/module/web-core/GainNode.js +11 -0
  58. package/lib/module/web-core/GainNode.js.map +1 -0
  59. package/lib/module/web-core/OscillatorNode.js +25 -0
  60. package/lib/module/web-core/OscillatorNode.js.map +1 -0
  61. package/lib/module/web-core/PeriodicWave.js +10 -0
  62. package/lib/module/web-core/PeriodicWave.js.map +1 -0
  63. package/lib/module/web-core/StereoPannerNode.js +11 -0
  64. package/lib/module/web-core/StereoPannerNode.js.map +1 -0
  65. package/lib/typescript/core/AnalyserNode.d.ts +1 -1
  66. package/lib/typescript/core/AnalyserNode.d.ts.map +1 -1
  67. package/lib/typescript/core/AudioNode.d.ts +1 -1
  68. package/lib/typescript/core/AudioNode.d.ts.map +1 -1
  69. package/lib/typescript/core/BaseAudioContext.d.ts +1 -1
  70. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  71. package/lib/typescript/core/BiquadFilterNode.d.ts +1 -1
  72. package/lib/typescript/core/BiquadFilterNode.d.ts.map +1 -1
  73. package/lib/typescript/core/OscillatorNode.d.ts +1 -1
  74. package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
  75. package/lib/typescript/index.d.ts +15 -126
  76. package/lib/typescript/index.d.ts.map +1 -1
  77. package/lib/typescript/index.web.d.ts +16 -0
  78. package/lib/typescript/index.web.d.ts.map +1 -0
  79. package/lib/typescript/interfaces.d.ts +1 -1
  80. package/lib/typescript/interfaces.d.ts.map +1 -1
  81. package/lib/typescript/types.d.ts.map +1 -0
  82. package/lib/typescript/web-core/AnalyserNode.d.ts +18 -0
  83. package/lib/typescript/web-core/AnalyserNode.d.ts.map +1 -0
  84. package/lib/typescript/web-core/AudioBuffer.d.ts +13 -0
  85. package/lib/typescript/web-core/AudioBuffer.d.ts.map +1 -0
  86. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts +19 -0
  87. package/lib/typescript/web-core/AudioBufferSourceNode.d.ts.map +1 -0
  88. package/lib/typescript/web-core/AudioContext.d.ts +30 -0
  89. package/lib/typescript/web-core/AudioContext.d.ts.map +1 -0
  90. package/lib/typescript/web-core/AudioDestinationNode.d.ts +4 -0
  91. package/lib/typescript/web-core/AudioDestinationNode.d.ts.map +1 -0
  92. package/lib/typescript/web-core/AudioNode.d.ts +15 -0
  93. package/lib/typescript/web-core/AudioNode.d.ts.map +1 -0
  94. package/lib/typescript/web-core/AudioParam.d.ts +17 -0
  95. package/lib/typescript/web-core/AudioParam.d.ts.map +1 -0
  96. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts +7 -0
  97. package/lib/typescript/web-core/AudioScheduledSourceNode.d.ts.map +1 -0
  98. package/lib/typescript/web-core/BaseAudioContext.d.ts +27 -0
  99. package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -0
  100. package/lib/typescript/web-core/BiquadFilterNode.d.ts +15 -0
  101. package/lib/typescript/web-core/BiquadFilterNode.d.ts.map +1 -0
  102. package/lib/typescript/web-core/GainNode.d.ts +8 -0
  103. package/lib/typescript/web-core/GainNode.d.ts.map +1 -0
  104. package/lib/typescript/web-core/OscillatorNode.d.ts +14 -0
  105. package/lib/typescript/web-core/OscillatorNode.d.ts.map +1 -0
  106. package/lib/typescript/web-core/PeriodicWave.d.ts +6 -0
  107. package/lib/typescript/web-core/PeriodicWave.d.ts.map +1 -0
  108. package/lib/typescript/web-core/StereoPannerNode.d.ts +8 -0
  109. package/lib/typescript/web-core/StereoPannerNode.d.ts.map +1 -0
  110. package/package.json +1 -1
  111. package/src/core/AnalyserNode.ts +1 -1
  112. package/src/core/AudioBufferSourceNode.ts +2 -2
  113. package/src/core/AudioNode.ts +1 -1
  114. package/src/core/BaseAudioContext.ts +1 -1
  115. package/src/core/BiquadFilterNode.ts +1 -1
  116. package/src/core/OscillatorNode.ts +1 -1
  117. package/src/index.ts +30 -568
  118. package/src/index.web.ts +30 -0
  119. package/src/interfaces.ts +1 -1
  120. package/src/web-core/AnalyserNode.tsx +69 -0
  121. package/src/web-core/AudioBuffer.tsx +79 -0
  122. package/src/web-core/AudioBufferSourceNode.tsx +94 -0
  123. package/src/web-core/AudioContext.tsx +114 -0
  124. package/src/web-core/AudioDestinationNode.tsx +3 -0
  125. package/src/web-core/AudioNode.tsx +40 -0
  126. package/src/web-core/AudioParam.tsx +106 -0
  127. package/src/web-core/AudioScheduledSourceNode.tsx +37 -0
  128. package/src/web-core/BaseAudioContext.tsx +37 -0
  129. package/src/web-core/BiquadFilterNode.tsx +62 -0
  130. package/src/web-core/GainNode.tsx +12 -0
  131. package/src/web-core/OscillatorNode.tsx +36 -0
  132. package/src/web-core/PeriodicWave.tsx +8 -0
  133. package/src/web-core/StereoPannerNode.tsx +12 -0
  134. package/android/libs/arm64-v8a/libfftw3.a +0 -0
  135. package/android/libs/armeabi-v7a/libfftw3.a +0 -0
  136. package/android/libs/include/fftw3.h +0 -413
  137. package/android/libs/x86/libfftw3.a +0 -0
  138. package/android/libs/x86_64/libfftw3.a +0 -0
  139. package/lib/module/index.native.js +0 -21
  140. package/lib/module/index.native.js.map +0 -1
  141. package/lib/typescript/core/types.d.ts.map +0 -1
  142. package/lib/typescript/index.native.d.ts +0 -15
  143. package/lib/typescript/index.native.d.ts.map +0 -1
  144. package/src/index.native.ts +0 -27
  145. /package/lib/module/{core/types.js → types.js} +0 -0
  146. /package/lib/typescript/{core/types.d.ts → types.d.ts} +0 -0
  147. /package/src/{core/types.ts → types.ts} +0 -0
@@ -15,9 +15,10 @@ include("${REACT_NATIVE_DIR}/ReactAndroid/cmake-utils/folly-flags.cmake")
15
15
  add_compile_options(${folly_FLAGS})
16
16
 
17
17
  file(GLOB_RECURSE ANDROID_CPP_SOURCES CONFIGURE_DEPENDS "src/main/cpp/*.cpp")
18
+ file(GLOB_RECURSE ANDROID_C_SOURCES CONFIGURE_DEPENDS "src/main/cpp/*.c")
18
19
  file(GLOB_RECURSE COMMON_CPP_SOURCES CONFIGURE_DEPENDS "../common/cpp/*.cpp")
19
20
 
20
- add_library(react-native-audio-api SHARED ${ANDROID_CPP_SOURCES} ${COMMON_CPP_SOURCES})
21
+ add_library(react-native-audio-api SHARED ${ANDROID_CPP_SOURCES} ${ANDROID_C_SOURCES} ${COMMON_CPP_SOURCES})
21
22
 
22
23
  file(GLOB ANDROID_CPP_DIR CONFIGURE_DEPENDS "src/main/cpp/**")
23
24
  file(GLOB COMMON_CPP_DIR CONFIGURE_DEPENDS "../common/cpp/**")
@@ -36,11 +37,8 @@ target_include_directories(
36
37
  "${REACT_NATIVE_DIR}/ReactAndroid/src/main/jni/react/turbomodule"
37
38
  "${REACT_NATIVE_DIR}/ReactCommon/react/nativemodule/core/ReactCommon"
38
39
  "${REACT_NATIVE_DIR}/ReactCommon/callinvoker"
39
- "${CMAKE_CURRENT_SOURCE_DIR}/libs/include"
40
40
  )
41
41
 
42
- set(fftw3 ${CMAKE_CURRENT_SOURCE_DIR}/libs/${ANDROID_ABI}/libfftw3.a)
43
-
44
42
  find_package(ReactAndroid REQUIRED CONFIG)
45
43
  find_package(fbjni REQUIRED CONFIG)
46
44
  find_package(oboe REQUIRED CONFIG)
@@ -51,7 +49,6 @@ set(LINK_LIBRARIES
51
49
  android
52
50
  log
53
51
  oboe::oboe
54
- ${fftw3}
55
52
  )
56
53
 
57
54
  if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
@@ -118,13 +118,36 @@ android {
118
118
  "-DREACT_NATIVE_MINOR_VERSION=${REACT_NATIVE_MINOR_VERSION}",
119
119
  "-DANDROID_TOOLCHAIN=clang",
120
120
  "-DREACT_NATIVE_DIR=${toPlatformFileString(reactNativeRootDir.path)}",
121
- "-DIS_NEW_ARCHITECTURE_ENABLED=${IS_NEW_ARCHITECTURE_ENABLED}"
121
+ "-DIS_NEW_ARCHITECTURE_ENABLED=${IS_NEW_ARCHITECTURE_ENABLED}",
122
+ "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
122
123
  }
123
124
  }
124
125
  }
125
126
 
126
127
  packagingOptions {
127
- excludes = ["**/libc++_shared.so", "**/libfbjni.so", "**/libjsi.so", "**/libreactnativejni.so", "**/libfolly_json.so", "**/libreanimated.so", "**/libjscexecutor.so", "**/libhermes.so"]
128
+ excludes = [
129
+ "META-INF",
130
+ "META-INF/**",
131
+ "**/libc++_shared.so",
132
+ "**/libfbjni.so",
133
+ "**/libjsi.so",
134
+ "**/libfolly_json.so",
135
+ "**/libfolly_runtime.so",
136
+ "**/libglog.so",
137
+ "**/libhermes.so",
138
+ "**/libhermes-executor-debug.so",
139
+ "**/libhermes_executor.so",
140
+ "**/libhermestooling.so",
141
+ "**/libreactnativejni.so",
142
+ "**/libturbomodulejsijni.so",
143
+ "**/libreactnative.so",
144
+ "**/libreact_nativemodule_core.so",
145
+ "**/libreact_render*.so",
146
+ "**/librrc_root.so",
147
+ "**/libjscexecutor.so",
148
+ "**/libv8executor.so",
149
+ "**/libreanimated.so"
150
+ ]
128
151
  }
129
152
 
130
153
  externalNativeBuild {
@@ -20,6 +20,9 @@ AudioBus *AudioDecoder::decodeWithFilePath(const std::string &path) const {
20
20
  "AudioDecoder",
21
21
  "Failed to initialize decoder for file: %s",
22
22
  path.c_str());
23
+
24
+ ma_decoder_uninit(&decoder);
25
+
23
26
  return nullptr;
24
27
  }
25
28
 
@@ -27,7 +30,7 @@ AudioBus *AudioDecoder::decodeWithFilePath(const std::string &path) const {
27
30
  ma_decoder_get_length_in_pcm_frames(&decoder, &totalFrameCount);
28
31
 
29
32
  auto *audioBus =
30
- new AudioBus(sampleRate_, static_cast<int>(totalFrameCount), 2);
33
+ new AudioBus(static_cast<int>(totalFrameCount), 2, sampleRate_);
31
34
  auto *buffer = new float[totalFrameCount * 2];
32
35
 
33
36
  ma_uint64 framesDecoded;
@@ -38,6 +41,12 @@ AudioBus *AudioDecoder::decodeWithFilePath(const std::string &path) const {
38
41
  "AudioDecoder",
39
42
  "Failed to decode audio file: %s",
40
43
  path.c_str());
44
+
45
+ delete[] buffer;
46
+ delete audioBus;
47
+ ma_decoder_uninit(&decoder);
48
+
49
+ return nullptr;
41
50
  }
42
51
 
43
52
  for (int i = 0; i < decoder.outputChannels; ++i) {
@@ -1,8 +1,9 @@
1
+ #include <cassert>
1
2
 
2
- #include "AudioPlayer.h"
3
3
  #include "AudioArray.h"
4
4
  #include "AudioBus.h"
5
5
  #include "AudioContext.h"
6
+ #include "AudioPlayer.h"
6
7
  #include "Constants.h"
7
8
 
8
9
  namespace audioapi {
@@ -23,7 +24,7 @@ AudioPlayer::AudioPlayer(
23
24
 
24
25
  sampleRate_ = static_cast<float>(mStream_->getSampleRate());
25
26
  mBus_ = std::make_shared<AudioBus>(
26
- sampleRate_, RENDER_QUANTUM_SIZE, CHANNEL_COUNT);
27
+ RENDER_QUANTUM_SIZE, CHANNEL_COUNT, sampleRate_);
27
28
  isInitialized_ = true;
28
29
  }
29
30
 
@@ -45,7 +46,7 @@ AudioPlayer::AudioPlayer(
45
46
 
46
47
  sampleRate_ = sampleRate;
47
48
  mBus_ = std::make_shared<AudioBus>(
48
- sampleRate_, RENDER_QUANTUM_SIZE, CHANNEL_COUNT);
49
+ RENDER_QUANTUM_SIZE, CHANNEL_COUNT, sampleRate_);
49
50
  isInitialized_ = true;
50
51
  }
51
52
 
@@ -80,6 +81,8 @@ DataCallbackResult AudioPlayer::onAudioReady(
80
81
  auto buffer = static_cast<float *>(audioData);
81
82
  int processedFrames = 0;
82
83
 
84
+ assert(buffer != nullptr);
85
+
83
86
  while (processedFrames < numFrames) {
84
87
  int framesToProcess =
85
88
  std::min(numFrames - processedFrames, RENDER_QUANTUM_SIZE);