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.
- package/RNAudioAPI.podspec +15 -6
- package/android/build.gradle +11 -2
- package/android/src/main/cpp/audioapi/CMakeLists.txt +24 -17
- package/android/src/main/cpp/audioapi/android/core/AudioDecoder.cpp +51 -21
- package/android/src/main/jniLibs/arm64-v8a/libavcodec.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libavformat.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libavutil.so +0 -0
- package/android/src/main/jniLibs/arm64-v8a/libswresample.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libavcodec.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libavformat.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libavutil.so +0 -0
- package/android/src/main/jniLibs/armeabi-v7a/libswresample.so +0 -0
- package/android/src/main/jniLibs/x86/libavcodec.so +0 -0
- package/android/src/main/jniLibs/x86/libavformat.so +0 -0
- package/android/src/main/jniLibs/x86/libavutil.so +0 -0
- package/android/src/main/jniLibs/x86/libswresample.so +0 -0
- package/android/src/main/jniLibs/x86_64/libavcodec.so +0 -0
- package/android/src/main/jniLibs/x86_64/libavformat.so +0 -0
- package/android/src/main/jniLibs/x86_64/libavutil.so +0 -0
- package/android/src/main/jniLibs/x86_64/libswresample.so +0 -0
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +11 -0
- package/common/cpp/audioapi/HostObjects/StreamerNodeHostObject.h +30 -0
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +9 -0
- package/common/cpp/audioapi/core/BaseAudioContext.h +2 -0
- package/common/cpp/audioapi/core/sources/StreamerNode.cpp +299 -0
- package/common/cpp/audioapi/core/sources/StreamerNode.h +123 -0
- package/common/cpp/audioapi/core/utils/AudioDecoder.h +61 -0
- package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +14 -2
- package/common/cpp/audioapi/core/utils/AudioNodeManager.h +3 -0
- package/common/cpp/audioapi/external/arm64-v8a/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libssl.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libssl.a +0 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/ac3_parser.h +36 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/adts_parser.h +37 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avcodec.h +2947 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avdct.h +88 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/bsf.h +332 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec.h +367 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_desc.h +134 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_id.h +681 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_par.h +248 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/d3d11va.h +109 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/defs.h +359 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dirac.h +135 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dv_profile.h +82 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/dxva2.h +90 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/jni.h +67 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/mediacodec.h +103 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/packet.h +907 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/qsv.h +109 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/vdpau.h +138 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version.h +45 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version_major.h +55 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/videotoolbox.h +85 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/vorbis_parser.h +74 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avformat.h +3004 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avio.h +831 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version.h +47 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version_major.h +50 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/adler32.h +63 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/aes.h +69 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/aes_ctr.h +99 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ambient_viewing_environment.h +72 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/attributes.h +175 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/audio_fifo.h +187 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avassert.h +120 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avconfig.h +6 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avstring.h +428 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avutil.h +364 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/base64.h +72 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/blowfish.h +82 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/bprint.h +254 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/bswap.h +105 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/buffer.h +322 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/camellia.h +70 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/cast5.h +80 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/channel_layout.h +762 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/common.h +589 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/container_fifo.h +130 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/cpu.h +150 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/crc.h +102 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/csp.h +192 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/des.h +81 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/detection_bbox.h +108 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dict.h +242 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/display.h +109 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dovi_meta.h +396 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/downmix_info.h +115 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/encryption_info.h +205 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/error.h +129 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/eval.h +140 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/executor.h +67 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ffversion.h +5 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/fifo.h +242 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/file.h +62 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/film_grain_params.h +282 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/frame.h +1163 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hash.h +264 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_metadata.h +376 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_vivid_metadata.h +292 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hmac.h +99 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext.h +601 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_amf.h +46 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_cuda.h +74 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_d3d11va.h +178 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_d3d12va.h +142 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_drm.h +169 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_dxva2.h +75 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_mediacodec.h +61 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_oh.h +34 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_opencl.h +100 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_qsv.h +87 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vaapi.h +117 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vdpau.h +44 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_videotoolbox.h +106 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vulkan.h +377 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/iamf.h +694 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/imgutils.h +377 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/intfloat.h +77 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/intreadwrite.h +677 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lfg.h +81 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/log.h +427 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lzo.h +66 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/macros.h +80 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mastering_display_metadata.h +137 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mathematics.h +300 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/md5.h +89 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mem.h +607 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/motion_vector.h +57 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/murmur3.h +115 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/opt.h +1194 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/parseutils.h +197 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixdesc.h +440 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixelutils.h +51 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/pixfmt.h +797 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/random_seed.h +57 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rational.h +225 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rc4.h +69 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/refstruct.h +297 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/replaygain.h +50 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ripemd.h +83 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/samplefmt.h +269 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/sha.h +90 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/sha512.h +92 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/spherical.h +243 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/stereo3d.h +325 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tdrdi.h +164 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tea.h +71 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/threadmessage.h +115 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/timecode.h +199 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/timestamp.h +85 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tree.h +137 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/twofish.h +70 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tx.h +210 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/uuid.h +146 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/version.h +119 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_enc_params.h +171 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_hint.h +107 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/xtea.h +94 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libswresample/swresample.h +587 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version.h +46 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version_major.h +31 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/Info.plist +44 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/libavcodec +0 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/Info.plist +44 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/libavformat +0 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/Info.plist +44 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/libavutil +0 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/Info.plist +44 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/libswresample +0 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/Info.plist +1 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
- package/common/cpp/audioapi/external/x86/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/x86/libssl.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libssl.a +0 -0
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +402 -0
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +27 -0
- package/common/cpp/audioapi/libs/ffmpeg/INSTRUCTIONS.md +26 -0
- package/common/cpp/audioapi/libs/ffmpeg/create_xcframework.sh +111 -0
- package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +361 -0
- package/common/cpp/audioapi/utils/SpscChannel.hpp +47 -38
- package/common/cpp/test/CMakeLists.txt +7 -1
- package/ios/audioapi/ios/core/AudioDecoder.mm +22 -2
- package/lib/commonjs/api.js +7 -0
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/core/AudioContext.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +4 -0
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/commonjs/core/StreamerNode.js +15 -0
- package/lib/commonjs/core/StreamerNode.js.map +1 -0
- package/lib/module/api.js +1 -0
- package/lib/module/api.js.map +1 -1
- package/lib/module/core/AudioContext.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +4 -0
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/StreamerNode.js +9 -0
- package/lib/module/core/StreamerNode.js.map +1 -0
- package/lib/typescript/api.d.ts +1 -0
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/core/AudioContext.d.ts +1 -1
- package/lib/typescript/core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +2 -0
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/StreamerNode.d.ts +5 -0
- package/lib/typescript/core/StreamerNode.d.ts.map +1 -0
- package/lib/typescript/interfaces.d.ts +5 -1
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api.ts +1 -0
- package/src/core/AudioContext.ts +1 -1
- package/src/core/BaseAudioContext.ts +5 -0
- package/src/core/StreamerNode.ts +8 -0
- package/src/interfaces.ts +6 -1
package/RNAudioAPI.podspec
CHANGED
|
@@ -35,10 +35,20 @@ Pod::Spec.new do |s|
|
|
|
35
35
|
|
|
36
36
|
s.compiler_flags = "#{folly_flags}"
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
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
|
package/android/build.gradle
CHANGED
|
@@ -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 =
|
|
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(
|
|
8
|
-
|
|
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 ${
|
|
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
|
-
"${
|
|
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
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
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
|
-
|
|
103
|
+
buffer = readAllPcmFrames(decoder, numChannels_, framesRead);
|
|
89
104
|
if (framesRead == 0) {
|
|
90
|
-
|
|
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
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|
-
|
|
154
|
+
buffer = readAllPcmFrames(decoder, numChannels_, framesRead);
|
|
127
155
|
if (framesRead == 0) {
|
|
128
|
-
|
|
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(
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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();
|