react-native-audio-api 0.8.0-nightly-5a12f24-20250901 → 0.8.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.
Files changed (225) hide show
  1. package/RNAudioAPI.podspec +15 -6
  2. package/android/build.gradle +11 -2
  3. package/android/src/main/cpp/audioapi/CMakeLists.txt +24 -17
  4. package/android/src/main/cpp/audioapi/android/core/AudioDecoder.cpp +51 -21
  5. package/android/src/main/jniLibs/arm64-v8a/libavcodec.so +0 -0
  6. package/android/src/main/jniLibs/arm64-v8a/libavformat.so +0 -0
  7. package/android/src/main/jniLibs/arm64-v8a/libavutil.so +0 -0
  8. package/android/src/main/jniLibs/arm64-v8a/libswresample.so +0 -0
  9. package/android/src/main/jniLibs/armeabi-v7a/libavcodec.so +0 -0
  10. package/android/src/main/jniLibs/armeabi-v7a/libavformat.so +0 -0
  11. package/android/src/main/jniLibs/armeabi-v7a/libavutil.so +0 -0
  12. package/android/src/main/jniLibs/armeabi-v7a/libswresample.so +0 -0
  13. package/android/src/main/jniLibs/x86/libavcodec.so +0 -0
  14. package/android/src/main/jniLibs/x86/libavformat.so +0 -0
  15. package/android/src/main/jniLibs/x86/libavutil.so +0 -0
  16. package/android/src/main/jniLibs/x86/libswresample.so +0 -0
  17. package/android/src/main/jniLibs/x86_64/libavcodec.so +0 -0
  18. package/android/src/main/jniLibs/x86_64/libavformat.so +0 -0
  19. package/android/src/main/jniLibs/x86_64/libavutil.so +0 -0
  20. package/android/src/main/jniLibs/x86_64/libswresample.so +0 -0
  21. package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +11 -0
  22. package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +30 -0
  23. package/common/cpp/audioapi/core/BaseAudioContext.cpp +9 -0
  24. package/common/cpp/audioapi/core/BaseAudioContext.h +2 -0
  25. package/common/cpp/audioapi/core/sources/StreamerNode.cpp +299 -0
  26. package/common/cpp/audioapi/core/sources/StreamerNode.h +123 -0
  27. package/common/cpp/audioapi/core/utils/AudioDecoder.h +61 -0
  28. package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +14 -2
  29. package/common/cpp/audioapi/core/utils/AudioNodeManager.h +3 -0
  30. package/common/cpp/audioapi/external/arm64-v8a/libcrypto.a +0 -0
  31. package/common/cpp/audioapi/external/arm64-v8a/libssl.a +0 -0
  32. package/common/cpp/audioapi/external/armeabi-v7a/libcrypto.a +0 -0
  33. package/common/cpp/audioapi/external/armeabi-v7a/libssl.a +0 -0
  34. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/ac3_parser.h +36 -0
  35. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/adts_parser.h +37 -0
  36. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avcodec.h +2947 -0
  37. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avdct.h +88 -0
  38. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/bsf.h +332 -0
  39. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec.h +367 -0
  40. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_desc.h +134 -0
  41. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_id.h +681 -0
  42. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_par.h +248 -0
  43. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/d3d11va.h +109 -0
  44. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/defs.h +359 -0
  45. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dirac.h +135 -0
  46. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dv_profile.h +82 -0
  47. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dxva2.h +90 -0
  48. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/jni.h +67 -0
  49. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/mediacodec.h +103 -0
  50. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/packet.h +907 -0
  51. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/qsv.h +109 -0
  52. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/vdpau.h +138 -0
  53. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version.h +45 -0
  54. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version_major.h +55 -0
  55. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/videotoolbox.h +85 -0
  56. package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/vorbis_parser.h +74 -0
  57. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avformat.h +3004 -0
  58. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avio.h +831 -0
  59. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version.h +47 -0
  60. package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version_major.h +50 -0
  61. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/adler32.h +63 -0
  62. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/aes.h +69 -0
  63. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/aes_ctr.h +99 -0
  64. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ambient_viewing_environment.h +72 -0
  65. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/attributes.h +175 -0
  66. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/audio_fifo.h +187 -0
  67. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avassert.h +120 -0
  68. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avconfig.h +6 -0
  69. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avstring.h +428 -0
  70. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avutil.h +364 -0
  71. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/base64.h +72 -0
  72. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/blowfish.h +82 -0
  73. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/bprint.h +254 -0
  74. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/bswap.h +105 -0
  75. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/buffer.h +322 -0
  76. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/camellia.h +70 -0
  77. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/cast5.h +80 -0
  78. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/channel_layout.h +762 -0
  79. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/common.h +589 -0
  80. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/container_fifo.h +130 -0
  81. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/cpu.h +150 -0
  82. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/crc.h +102 -0
  83. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/csp.h +192 -0
  84. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/des.h +81 -0
  85. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/detection_bbox.h +108 -0
  86. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dict.h +242 -0
  87. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/display.h +109 -0
  88. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dovi_meta.h +396 -0
  89. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/downmix_info.h +115 -0
  90. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/encryption_info.h +205 -0
  91. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/error.h +129 -0
  92. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/eval.h +140 -0
  93. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/executor.h +67 -0
  94. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ffversion.h +5 -0
  95. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/fifo.h +242 -0
  96. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/file.h +62 -0
  97. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/film_grain_params.h +282 -0
  98. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/frame.h +1163 -0
  99. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hash.h +264 -0
  100. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_metadata.h +376 -0
  101. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_vivid_metadata.h +292 -0
  102. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hmac.h +99 -0
  103. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext.h +601 -0
  104. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_amf.h +46 -0
  105. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_cuda.h +74 -0
  106. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_d3d11va.h +178 -0
  107. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_d3d12va.h +142 -0
  108. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_drm.h +169 -0
  109. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_dxva2.h +75 -0
  110. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_mediacodec.h +61 -0
  111. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_oh.h +34 -0
  112. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_opencl.h +100 -0
  113. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_qsv.h +87 -0
  114. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vaapi.h +117 -0
  115. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vdpau.h +44 -0
  116. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_videotoolbox.h +106 -0
  117. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vulkan.h +377 -0
  118. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/iamf.h +694 -0
  119. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/imgutils.h +377 -0
  120. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/intfloat.h +77 -0
  121. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/intreadwrite.h +677 -0
  122. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lfg.h +81 -0
  123. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/log.h +427 -0
  124. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lzo.h +66 -0
  125. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/macros.h +80 -0
  126. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mastering_display_metadata.h +137 -0
  127. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mathematics.h +300 -0
  128. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/md5.h +89 -0
  129. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mem.h +607 -0
  130. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/motion_vector.h +57 -0
  131. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/murmur3.h +115 -0
  132. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/opt.h +1194 -0
  133. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/parseutils.h +197 -0
  134. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixdesc.h +440 -0
  135. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixelutils.h +51 -0
  136. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixfmt.h +797 -0
  137. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/random_seed.h +57 -0
  138. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rational.h +225 -0
  139. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rc4.h +69 -0
  140. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/refstruct.h +297 -0
  141. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/replaygain.h +50 -0
  142. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ripemd.h +83 -0
  143. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/samplefmt.h +269 -0
  144. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/sha.h +90 -0
  145. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/sha512.h +92 -0
  146. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/spherical.h +243 -0
  147. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/stereo3d.h +325 -0
  148. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tdrdi.h +164 -0
  149. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tea.h +71 -0
  150. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/threadmessage.h +115 -0
  151. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/timecode.h +199 -0
  152. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/timestamp.h +85 -0
  153. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tree.h +137 -0
  154. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/twofish.h +70 -0
  155. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tx.h +210 -0
  156. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/uuid.h +146 -0
  157. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/version.h +119 -0
  158. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_enc_params.h +171 -0
  159. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_hint.h +107 -0
  160. package/common/cpp/audioapi/external/ffmpeg_include/libavutil/xtea.h +94 -0
  161. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/swresample.h +587 -0
  162. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version.h +46 -0
  163. package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version_major.h +31 -0
  164. package/common/cpp/audioapi/external/libavcodec.xcframework/Info.plist +44 -0
  165. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/Info.plist +1 -0
  166. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/libavcodec +0 -0
  167. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/Info.plist +1 -0
  168. package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
  169. package/common/cpp/audioapi/external/libavformat.xcframework/Info.plist +44 -0
  170. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/Info.plist +1 -0
  171. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/libavformat +0 -0
  172. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/Info.plist +1 -0
  173. package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
  174. package/common/cpp/audioapi/external/libavutil.xcframework/Info.plist +44 -0
  175. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/Info.plist +1 -0
  176. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/libavutil +0 -0
  177. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/Info.plist +1 -0
  178. package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
  179. package/common/cpp/audioapi/external/libswresample.xcframework/Info.plist +44 -0
  180. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/Info.plist +1 -0
  181. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/libswresample +0 -0
  182. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/Info.plist +1 -0
  183. package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
  184. package/common/cpp/audioapi/external/x86/libcrypto.a +0 -0
  185. package/common/cpp/audioapi/external/x86/libssl.a +0 -0
  186. package/common/cpp/audioapi/external/x86_64/libcrypto.a +0 -0
  187. package/common/cpp/audioapi/external/x86_64/libssl.a +0 -0
  188. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +402 -0
  189. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +27 -0
  190. package/common/cpp/audioapi/libs/ffmpeg/INSTRUCTIONS.md +26 -0
  191. package/common/cpp/audioapi/libs/ffmpeg/create_xcframework.sh +111 -0
  192. package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +361 -0
  193. package/common/cpp/audioapi/utils/SpscChannel.hpp +47 -38
  194. package/common/cpp/test/CMakeLists.txt +7 -1
  195. package/ios/audioapi/ios/core/AudioDecoder.mm +22 -2
  196. package/lib/commonjs/api.js +7 -0
  197. package/lib/commonjs/api.js.map +1 -1
  198. package/lib/commonjs/core/AudioContext.js.map +1 -1
  199. package/lib/commonjs/core/BaseAudioContext.js +4 -0
  200. package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
  201. package/lib/commonjs/core/StreamerNode.js +15 -0
  202. package/lib/commonjs/core/StreamerNode.js.map +1 -0
  203. package/lib/module/api.js +1 -0
  204. package/lib/module/api.js.map +1 -1
  205. package/lib/module/core/AudioContext.js.map +1 -1
  206. package/lib/module/core/BaseAudioContext.js +4 -0
  207. package/lib/module/core/BaseAudioContext.js.map +1 -1
  208. package/lib/module/core/StreamerNode.js +9 -0
  209. package/lib/module/core/StreamerNode.js.map +1 -0
  210. package/lib/typescript/api.d.ts +1 -0
  211. package/lib/typescript/api.d.ts.map +1 -1
  212. package/lib/typescript/core/AudioContext.d.ts +1 -1
  213. package/lib/typescript/core/AudioContext.d.ts.map +1 -1
  214. package/lib/typescript/core/BaseAudioContext.d.ts +2 -0
  215. package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
  216. package/lib/typescript/core/StreamerNode.d.ts +5 -0
  217. package/lib/typescript/core/StreamerNode.d.ts.map +1 -0
  218. package/lib/typescript/interfaces.d.ts +5 -1
  219. package/lib/typescript/interfaces.d.ts.map +1 -1
  220. package/package.json +1 -1
  221. package/src/api.ts +1 -0
  222. package/src/core/AudioContext.ts +1 -1
  223. package/src/core/BaseAudioContext.ts +5 -0
  224. package/src/core/StreamerNode.ts +8 -0
  225. package/src/interfaces.ts +6 -1
@@ -35,10 +35,20 @@ Pod::Spec.new do |s|
35
35
 
36
36
  s.compiler_flags = "#{folly_flags}"
37
37
 
38
- external_dir = File.join(__dir__, "common/cpp/audioapi/external")
39
- lib_dir = "#{external_dir}/$(PLATFORM_NAME)"
40
-
38
+ # s.prepare_command = <<-CMD TODO: re-add when we have prebuilt libs put somewhere public
39
+ # ruby -r './scripts/download-audioapi-libs.rb'
40
+ # CMD
41
41
 
42
+ external_dir = File.join(__dir__, "common/cpp/audioapi/external")
43
+ lib_dir = "#{external_dir}/$(PLATFORM_NAME)"
44
+
45
+ s.ios.vendored_frameworks = [
46
+ 'common/cpp/audioapi/external/libavcodec.xcframework',
47
+ 'common/cpp/audioapi/external/libavformat.xcframework',
48
+ 'common/cpp/audioapi/external/libavutil.xcframework',
49
+ 'common/cpp/audioapi/external/libswresample.xcframework'
50
+ ]
51
+
42
52
  s.pod_target_xcconfig = {
43
53
  "USE_HEADERMAP" => "YES",
44
54
  "CLANG_CXX_LANGUAGE_STANDARD" => "c++20",
@@ -49,6 +59,7 @@ s.pod_target_xcconfig = {
49
59
  #{external_dir}/include
50
60
  #{external_dir}/include/opus
51
61
  #{external_dir}/include/vorbis
62
+ $(PODS_TARGET_SRCROOT)/common/cpp/audioapi/external/ffmpeg_include
52
63
  ].join(" "),
53
64
  'OTHER_CFLAGS' => "$(inherited) #{folly_flags} #{fabric_flags} #{version_flag}"
54
65
  }
@@ -67,6 +78,4 @@ s.user_target_xcconfig = {
67
78
  # Use install_modules_dependencies helper to install the dependencies if React Native version >=0.71.0.
68
79
  # See https://github.com/facebook/react-native/blob/febf6b7f33fdb4904669f99d795eba4c0f95d7bf/scripts/cocoapods/new_architecture.rb#L79.
69
80
  install_modules_dependencies(s)
70
- end
71
-
72
-
81
+ end
@@ -1,6 +1,5 @@
1
1
  import com.android.Version
2
2
  import org.apache.tools.ant.taskdefs.condition.Os
3
- import com.android.build.gradle.tasks.ExternalNativeBuildJsonTask
4
3
 
5
4
  buildscript {
6
5
  repositories {
@@ -92,6 +91,11 @@ def REACT_NATIVE_MINOR_VERSION = REACT_NATIVE_VERSION.startsWith("0.0.0-") ? 100
92
91
  def IS_NEW_ARCHITECTURE_ENABLED = isNewArchitectureEnabled()
93
92
 
94
93
  android {
94
+ sourceSets {
95
+ main {
96
+ jniLibs.srcDirs = ['src/main/jniLibs']
97
+ }
98
+ }
95
99
  if (supportsNamespace()) {
96
100
  namespace "com.swmansion.audioapi"
97
101
 
@@ -125,6 +129,9 @@ android {
125
129
  }
126
130
 
127
131
  packagingOptions {
132
+ jniLibs {
133
+ useLegacyPackaging = false // enables 16KB alignment
134
+ }
128
135
  excludes = [
129
136
  "META-INF",
130
137
  "META-INF/**",
@@ -223,15 +230,17 @@ dependencies {
223
230
 
224
231
  def assertMinimalReactNativeVersion = task assertMinimalReactNativeVersionTask {
225
232
  // If you change the minimal React Native version remember to update Compatibility Table in docs
226
- def minimalReactNativeVersion = 75
233
+ def minimalReactNativeVersion = 76
227
234
  onlyIf { REACT_NATIVE_MINOR_VERSION < minimalReactNativeVersion }
228
235
  doFirst {
229
236
  throw new GradleException("[AudioAPI] Unsupported React Native version. Please use $minimalReactNativeVersion. or newer.")
230
237
  }
231
238
  }
232
239
 
240
+ // Make preBuild depend on the download task
233
241
  tasks.preBuild {
234
242
  dependsOn assertMinimalReactNativeVersion
243
+ // dependsOn downloadStaticPrebuiltLibraries TODO: re-add when we have prebuilt libs put somewhere public
235
244
  }
236
245
 
237
246
  task cleanCmakeCache() {
@@ -3,17 +3,26 @@ cmake_minimum_required(VERSION 3.12.0)
3
3
  file(GLOB_RECURSE ANDROID_CPP_SOURCES CONFIGURE_DEPENDS "${ANDROID_CPP_DIR}/audioapi/*.cpp")
4
4
  file(GLOB_RECURSE COMMON_CPP_SOURCES CONFIGURE_DEPENDS "${COMMON_CPP_DIR}/audioapi/*.cpp" "${COMMON_CPP_DIR}/audioapi/*.c")
5
5
 
6
+ set(INCLUDE_DIR ${COMMON_CPP_DIR}/audioapi/external/include)
7
+ set(FFMPEG_INCLUDE_DIR ${COMMON_CPP_DIR}/audioapi/external/ffmpeg_include)
6
8
  set(EXTERNAL_DIR ${COMMON_CPP_DIR}/audioapi/external)
7
- set(ARCH_LIB_DIR ${EXTERNAL_DIR}/${ANDROID_ABI})
8
- set(INCLUDE_DIR ${EXTERNAL_DIR}/include)
9
+ set(JNI_LIBS_DIR ${COMMON_CPP_DIR}/../../android/src/main/jniLibs)
10
+
11
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-Bsymbolic")
12
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wl,-Bsymbolic")
9
13
 
10
14
  add_library(react-native-audio-api SHARED ${ANDROID_CPP_SOURCES} ${COMMON_CPP_SOURCES})
11
15
 
12
- foreach(lib IN ITEMS opus opusfile ogg vorbis vorbisenc vorbisfile)
16
+ foreach(lib IN ITEMS opus opusfile ogg vorbis vorbisenc vorbisfile crypto ssl)
13
17
  add_library(${lib} STATIC IMPORTED)
14
- set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION ${ARCH_LIB_DIR}/lib${lib}.a)
18
+ set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION ${EXTERNAL_DIR}/${ANDROID_ABI}/lib${lib}.a)
15
19
  endforeach()
16
20
 
21
+ foreach (lib IN ITEMS avcodec avformat avutil swresample)
22
+ add_library(${lib} SHARED IMPORTED)
23
+ set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION ${JNI_LIBS_DIR}/${ANDROID_ABI}/lib${lib}.so)
24
+ endforeach()
25
+
17
26
  find_package(ReactAndroid REQUIRED CONFIG)
18
27
  find_package(fbjni REQUIRED CONFIG)
19
28
  find_package(oboe REQUIRED CONFIG)
@@ -25,7 +34,7 @@ target_include_directories(
25
34
  "${ANDROID_CPP_DIR}"
26
35
  "${INCLUDE_DIR}"
27
36
  "${INCLUDE_DIR}/opus"
28
- "${INCLUDE_DIR}/vorbis"
37
+ "${FFMPEG_INCLUDE_DIR}"
29
38
  "${REACT_NATIVE_DIR}/ReactCommon"
30
39
  "${REACT_NATIVE_DIR}/ReactAndroid/src/main/jni/react/turbomodule"
31
40
  "${REACT_NATIVE_DIR}/ReactCommon/callinvoker"
@@ -39,18 +48,9 @@ set(LINK_LIBRARIES
39
48
  oboe::oboe
40
49
  )
41
50
 
42
- if(ReactAndroid_VERSION_MINOR GREATER_EQUAL 76)
43
- set(RN_VERSION_LINK_LIBRARIES
44
- ReactAndroid::reactnative
45
- )
46
- else()
47
- set(RN_VERSION_LINK_LIBRARIES
48
- ReactAndroid::folly_runtime
49
- ReactAndroid::react_nativemodule_core
50
- ReactAndroid::glog
51
- ReactAndroid::reactnativejni
52
- )
53
- endif()
51
+ set(RN_VERSION_LINK_LIBRARIES
52
+ ReactAndroid::reactnative
53
+ )
54
54
 
55
55
  target_link_libraries(react-native-audio-api
56
56
  ${LINK_LIBRARIES}
@@ -61,4 +61,11 @@ target_link_libraries(react-native-audio-api
61
61
  vorbis
62
62
  vorbisenc
63
63
  vorbisfile
64
+ avcodec
65
+ avformat
66
+ avutil
67
+ swresample
68
+ crypto
69
+ ssl
70
+ z
64
71
  )
@@ -7,11 +7,13 @@
7
7
  #define MINIAUDIO_IMPLEMENTATION
8
8
  #include <audioapi/libs/miniaudio/miniaudio.h>
9
9
 
10
+ #ifndef AUDIO_API_TEST_SUITE
11
+ #include <android/log.h>
12
+ #include <audioapi/libs/ffmpeg/FFmpegDecoding.h>
13
+ #endif
10
14
  #include <audioapi/libs/miniaudio/decoders/libopus/miniaudio_libopus.h>
11
15
  #include <audioapi/libs/miniaudio/decoders/libvorbis/miniaudio_libvorbis.h>
12
16
 
13
- // #include <android/log.h>
14
-
15
17
  namespace audioapi {
16
18
 
17
19
  // Decoding audio in fixed-size chunks because total frame count can't be
@@ -62,77 +64,105 @@ std::shared_ptr<AudioBus> AudioDecoder::makeAudioBusFromInt16Buffer(
62
64
 
63
65
  std::shared_ptr<AudioBus> AudioDecoder::decodeWithFilePath(
64
66
  const std::string &path) const {
67
+ #ifndef AUDIO_API_TEST_SUITE
68
+ std::vector<int16_t> buffer;
69
+ if (AudioDecoder::pathHasExtension(path, {".mp4", ".m4a", ".aac"})) {
70
+ buffer =
71
+ ffmpegdecoding::decodeWithFilePath(path, static_cast<int>(sampleRate_));
72
+ if (buffer.empty()) {
73
+ __android_log_print(
74
+ ANDROID_LOG_ERROR,
75
+ "AudioDecoder",
76
+ "Failed to decode with FFmpeg: %s",
77
+ path.c_str());
78
+ return nullptr;
79
+ }
80
+ return makeAudioBusFromInt16Buffer(buffer, numChannels_, sampleRate_);
81
+ }
65
82
  ma_decoder decoder;
66
83
  ma_decoder_config config = ma_decoder_config_init(
67
84
  ma_format_s16, numChannels_, static_cast<int>(sampleRate_));
68
- #ifndef AUDIO_API_TEST_SUITE
69
85
  ma_decoding_backend_vtable *customBackends[] = {
70
86
  ma_decoding_backend_libvorbis, ma_decoding_backend_libopus};
71
87
 
72
88
  config.ppCustomBackendVTables = customBackends;
73
89
  config.customBackendCount =
74
90
  sizeof(customBackends) / sizeof(customBackends[0]);
75
- #endif
76
91
 
77
92
  if (ma_decoder_init_file(path.c_str(), &config, &decoder) != MA_SUCCESS) {
78
- // __android_log_print(
79
- // ANDROID_LOG_ERROR,
80
- // "AudioDecoder",
81
- // "Failed to initialize decoder for file: %s",
82
- // path.c_str());
93
+ __android_log_print(
94
+ ANDROID_LOG_ERROR,
95
+ "AudioDecoder",
96
+ "Failed to initialize decoder for file: %s",
97
+ path.c_str());
83
98
  ma_decoder_uninit(&decoder);
84
99
  return nullptr;
85
100
  }
86
101
 
87
102
  ma_uint64 framesRead = 0;
88
- auto buffer = readAllPcmFrames(decoder, numChannels_, framesRead);
103
+ buffer = readAllPcmFrames(decoder, numChannels_, framesRead);
89
104
  if (framesRead == 0) {
90
- // __android_log_print(ANDROID_LOG_ERROR, "AudioDecoder", "Failed to
91
- // decode");
105
+ __android_log_print(ANDROID_LOG_ERROR, "AudioDecoder", "Failed to decode");
92
106
  ma_decoder_uninit(&decoder);
93
107
  return nullptr;
94
108
  }
95
109
 
96
110
  ma_decoder_uninit(&decoder);
97
111
  return makeAudioBusFromInt16Buffer(buffer, numChannels_, sampleRate_);
112
+ #else
113
+ return nullptr;
114
+ #endif
98
115
  }
99
116
 
100
117
  std::shared_ptr<AudioBus> AudioDecoder::decodeWithMemoryBlock(
101
118
  const void *data,
102
119
  size_t size) const {
120
+ #ifndef AUDIO_API_TEST_SUITE
121
+ std::vector<int16_t> buffer;
122
+ const AudioFormat format = AudioDecoder::detectAudioFormat(data, size);
123
+ if (format == AudioFormat::MP4 || format == AudioFormat::M4A ||
124
+ format == AudioFormat::AAC) {
125
+ buffer = ffmpegdecoding::decodeWithMemoryBlock(data, size, sampleRate_);
126
+ if (buffer.empty()) {
127
+ __android_log_print(
128
+ ANDROID_LOG_ERROR, "AudioDecoder", "Failed to decode with FFmpeg");
129
+ return nullptr;
130
+ }
131
+ return makeAudioBusFromInt16Buffer(buffer, numChannels_, sampleRate_);
132
+ }
103
133
  ma_decoder decoder;
104
134
  ma_decoder_config config = ma_decoder_config_init(
105
135
  ma_format_s16, numChannels_, static_cast<int>(sampleRate_));
106
136
 
107
- #ifndef AUDIO_API_TEST_SUITE
108
137
  ma_decoding_backend_vtable *customBackends[] = {
109
138
  ma_decoding_backend_libvorbis, ma_decoding_backend_libopus};
110
139
 
111
140
  config.ppCustomBackendVTables = customBackends;
112
141
  config.customBackendCount =
113
142
  sizeof(customBackends) / sizeof(customBackends[0]);
114
- #endif
115
143
 
116
144
  if (ma_decoder_init_memory(data, size, &config, &decoder) != MA_SUCCESS) {
117
- // __android_log_print(
118
- // ANDROID_LOG_ERROR,
119
- // "AudioDecoder",
120
- // "Failed to initialize decoder for memory block");
145
+ __android_log_print(
146
+ ANDROID_LOG_ERROR,
147
+ "AudioDecoder",
148
+ "Failed to initialize decoder for memory block");
121
149
  ma_decoder_uninit(&decoder);
122
150
  return nullptr;
123
151
  }
124
152
 
125
153
  ma_uint64 framesRead = 0;
126
- auto buffer = readAllPcmFrames(decoder, numChannels_, framesRead);
154
+ buffer = readAllPcmFrames(decoder, numChannels_, framesRead);
127
155
  if (framesRead == 0) {
128
- // __android_log_print(ANDROID_LOG_ERROR, "AudioDecoder", "Failed to
129
- // decode");
156
+ __android_log_print(ANDROID_LOG_ERROR, "AudioDecoder", "Failed to decode");
130
157
  ma_decoder_uninit(&decoder);
131
158
  return nullptr;
132
159
  }
133
160
 
134
161
  ma_decoder_uninit(&decoder);
135
162
  return makeAudioBusFromInt16Buffer(buffer, numChannels_, sampleRate_);
163
+ #else
164
+ return nullptr;
165
+ #endif
136
166
  }
137
167
 
138
168
  std::shared_ptr<AudioBus> AudioDecoder::decodeWithPCMInBase64(
@@ -14,6 +14,7 @@
14
14
  #include <audioapi/HostObjects/StereoPannerNodeHostObject.h>
15
15
  #include <audioapi/HostObjects/AnalyserNodeHostObject.h>
16
16
  #include <audioapi/HostObjects/RecorderAdapterNodeHostObject.h>
17
+ #include <audioapi/HostObjects/StreamerNodeHostObject.h>
17
18
 
18
19
  #include <jsi/jsi.h>
19
20
  #include <memory>
@@ -42,6 +43,7 @@ class BaseAudioContextHostObject : public JsiHostObject {
42
43
  addFunctions(
43
44
  JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createRecorderAdapter),
44
45
  JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createOscillator),
46
+ JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createStreamer),
45
47
  JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createGain),
46
48
  JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createStereoPanner),
47
49
  JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createBiquadFilter),
@@ -88,6 +90,15 @@ class BaseAudioContextHostObject : public JsiHostObject {
88
90
  return jsi::Object::createFromHostObject(runtime, oscillatorHostObject);
89
91
  }
90
92
 
93
+ JSI_HOST_FUNCTION(createStreamer) {
94
+ auto streamer = context_->createStreamer();
95
+ auto streamerHostObject =
96
+ std::make_shared<StreamerNodeHostObject>(streamer);
97
+ auto object = jsi::Object::createFromHostObject(runtime, streamerHostObject);
98
+ object.setExternalMemoryPressure(runtime, StreamerNode::getEstimatedSize());
99
+ return object;
100
+ }
101
+
91
102
  JSI_HOST_FUNCTION(createGain) {
92
103
  auto gain = context_->createGain();
93
104
  auto gainHostObject = std::make_shared<GainNodeHostObject>(gain);
@@ -0,0 +1,30 @@
1
+ #pragma once
2
+
3
+ #include <audioapi/HostObjects/AudioScheduledSourceNodeHostObject.h>
4
+ #include <audioapi/HostObjects/AudioParamHostObject.h>
5
+ #include <audioapi/HostObjects/PeriodicWaveHostObject.h>
6
+ #include <audioapi/core/sources/StreamerNode.h>
7
+
8
+ #include <memory>
9
+ #include <string>
10
+ #include <vector>
11
+
12
+ namespace audioapi {
13
+ using namespace facebook;
14
+
15
+ class StreamerNodeHostObject : public AudioScheduledSourceNodeHostObject {
16
+ public:
17
+ explicit StreamerNodeHostObject(
18
+ const std::shared_ptr<StreamerNode> &node)
19
+ : AudioScheduledSourceNodeHostObject(node) {
20
+ addFunctions(JSI_EXPORT_FUNCTION(StreamerNodeHostObject, initialize));
21
+ }
22
+
23
+ JSI_HOST_FUNCTION(initialize) {
24
+ auto streamerNode = std::static_pointer_cast<StreamerNode>(node_);
25
+ auto path = args[0].getString(runtime).utf8(runtime);
26
+ auto result = streamerNode->initialize(path);
27
+ return jsi::Value(result);
28
+ }
29
+ };
30
+ } // namespace audioapi
@@ -9,6 +9,7 @@
9
9
  #include <audioapi/core/sources/AudioBufferSourceNode.h>
10
10
  #include <audioapi/core/sources/OscillatorNode.h>
11
11
  #include <audioapi/core/sources/RecorderAdapterNode.h>
12
+ #include <audioapi/core/sources/StreamerNode.h>
12
13
  #include <audioapi/core/utils/AudioDecoder.h>
13
14
  #include <audioapi/core/utils/AudioNodeManager.h>
14
15
  #include <audioapi/events/AudioEventHandlerRegistry.h>
@@ -69,6 +70,14 @@ std::shared_ptr<OscillatorNode> BaseAudioContext::createOscillator() {
69
70
  return oscillator;
70
71
  }
71
72
 
73
+ #ifndef AUDIO_API_TEST_SUITE
74
+ std::shared_ptr<StreamerNode> BaseAudioContext::createStreamer() {
75
+ auto streamer = std::make_shared<StreamerNode>(this);
76
+ nodeManager_->addSourceNode(streamer);
77
+ return streamer;
78
+ }
79
+ #endif
80
+
72
81
  std::shared_ptr<GainNode> BaseAudioContext::createGain() {
73
82
  auto gain = std::make_shared<GainNode>(this);
74
83
  nodeManager_->addProcessingNode(gain);
@@ -31,6 +31,7 @@ class AnalyserNode;
31
31
  class AudioEventHandlerRegistry;
32
32
  class IAudioEventHandlerRegistry;
33
33
  class RecorderAdapterNode;
34
+ class StreamerNode;
34
35
 
35
36
  class BaseAudioContext {
36
37
  public:
@@ -45,6 +46,7 @@ class BaseAudioContext {
45
46
 
46
47
  std::shared_ptr<RecorderAdapterNode> createRecorderAdapter();
47
48
  std::shared_ptr<OscillatorNode> createOscillator();
49
+ std::shared_ptr<StreamerNode> createStreamer();
48
50
  std::shared_ptr<GainNode> createGain();
49
51
  std::shared_ptr<StereoPannerNode> createStereoPanner();
50
52
  std::shared_ptr<BiquadFilterNode> createBiquadFilter();