react-native-audio-api 0.11.0-alpha.1 → 0.11.0-nightly-9f40b78-20251108
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/README.md +13 -11
- package/RNAudioAPI.podspec +20 -15
- package/android/build.gradle +33 -3
- package/android/src/main/cpp/audioapi/CMakeLists.txt +6 -3
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +5 -0
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.h +1 -0
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +30 -142
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +13 -40
- package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +4 -2
- package/android/src/main/cpp/audioapi/android/core/NativeAudioRecorder.hpp +9 -9
- package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +6 -0
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +31 -3
- package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +21 -9
- package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +27 -6
- package/android/src/main/java/com/swmansion/audioapi/system/MediaNotificationManager.kt +11 -0
- package/android/src/oldarch/NativeAudioAPIModuleSpec.java +4 -0
- package/common/cpp/audioapi/AudioAPIModuleInstaller.h +30 -2
- package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +12 -17
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +18 -0
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +1 -0
- package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +26 -30
- package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +1 -1
- package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.cpp +47 -0
- package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.h +20 -0
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +18 -97
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +6 -18
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +1 -1
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +1 -1
- package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +1 -1
- package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +15 -26
- package/common/cpp/audioapi/core/AudioNode.h +3 -2
- package/common/cpp/audioapi/core/AudioParam.cpp +2 -2
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +10 -0
- package/common/cpp/audioapi/core/BaseAudioContext.h +2 -0
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +69 -32
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +37 -1
- package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +210 -0
- package/common/cpp/audioapi/core/effects/ConvolverNode.h +55 -0
- package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +82 -36
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +31 -52
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +14 -17
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +0 -1
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +7 -0
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +1 -0
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +8 -14
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +0 -1
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +14 -19
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +3 -3
- package/common/cpp/audioapi/core/sources/StreamerNode.cpp +64 -64
- package/common/cpp/audioapi/core/sources/StreamerNode.h +38 -10
- package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +5 -0
- package/common/cpp/audioapi/core/utils/Constants.h +2 -1
- package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +12 -8
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +3 -3
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +1 -1
- package/common/cpp/audioapi/dsp/AudioUtils.cpp +1 -1
- package/common/cpp/audioapi/dsp/Convolver.cpp +213 -0
- package/common/cpp/audioapi/dsp/Convolver.h +45 -0
- package/common/cpp/audioapi/dsp/FFT.cpp +0 -26
- package/common/cpp/audioapi/dsp/FFT.h +26 -2
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/avcodec.h +4 -4
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_desc.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_id.h +3 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/codec_par.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/defs.h +3 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/packet.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/smpte_436m.h +254 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavcodec/version.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavformat/avformat.h +6 -6
- package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavformat/version_major.h +2 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avassert.h +5 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/avutil.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/channel_layout.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/csp.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/dict.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/ffversion.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/film_grain_params.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/frame.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hdr_dynamic_vivid_metadata.h +3 -3
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_opencl.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_qsv.h +0 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/hwcontext_vulkan.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/iamf.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/lfg.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/log.h +2 -2
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/mathematics.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/opt.h +4 -4
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rational.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/rc4.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/refstruct.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/spherical.h +6 -0
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tdrdi.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/tx.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/version.h +3 -3
- package/common/cpp/audioapi/external/ffmpeg_include/libavutil/video_hint.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libswresample/swresample.h +1 -1
- package/common/cpp/audioapi/external/ffmpeg_include/libswresample/version.h +1 -1
- package/common/cpp/audioapi/jsi/JsiPromise.cpp +33 -56
- package/common/cpp/audioapi/jsi/JsiPromise.h +41 -11
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +2 -3
- package/common/cpp/audioapi/libs/ffmpeg/relinking.md +24 -0
- package/common/cpp/audioapi/utils/AlignedAllocator.hpp +50 -0
- package/common/cpp/audioapi/utils/AudioBus.cpp +28 -0
- package/common/cpp/audioapi/utils/AudioBus.h +3 -0
- package/common/cpp/audioapi/utils/ThreadPool.hpp +59 -1
- package/common/cpp/test/CMakeLists.txt +19 -14
- package/common/cpp/test/src/AudioParamTest.cpp +1 -1
- package/common/cpp/test/src/AudioScheduledSourceTest.cpp +134 -0
- package/common/cpp/test/src/ConstantSourceTest.cpp +1 -1
- package/common/cpp/test/src/GainTest.cpp +1 -1
- package/common/cpp/test/src/MockAudioEventHandlerRegistry.h +4 -4
- package/common/cpp/test/src/OscillatorTest.cpp +1 -1
- package/common/cpp/test/src/StereoPannerTest.cpp +1 -1
- package/common/cpp/test/src/biquad/BiquadFilterChromium.cpp +389 -0
- package/common/cpp/test/src/biquad/BiquadFilterChromium.h +64 -0
- package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +284 -0
- package/common/cpp/test/src/biquad/BiquadFilterTest.h +40 -0
- package/ios/audioapi/ios/AudioAPIModule.h +2 -1
- package/ios/audioapi/ios/AudioAPIModule.mm +34 -9
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +10 -28
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +30 -117
- package/ios/audioapi/ios/core/NativeAudioRecorder.h +9 -4
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +71 -29
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +0 -1
- package/ios/audioapi/ios/system/AudioEngine.mm +3 -3
- package/ios/audioapi/ios/system/AudioSessionManager.h +2 -0
- package/ios/audioapi/ios/system/AudioSessionManager.mm +24 -0
- package/ios/audioapi/ios/system/LockScreenManager.h +0 -1
- package/ios/audioapi/ios/system/LockScreenManager.mm +6 -19
- package/lib/commonjs/api.js +141 -76
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/api.web.js +8 -0
- package/lib/commonjs/api.web.js.map +1 -1
- package/lib/commonjs/core/AudioContext.js +1 -1
- package/lib/commonjs/core/AudioContext.js.map +1 -1
- package/lib/commonjs/core/AudioRecorder.js +13 -171
- package/lib/commonjs/core/AudioRecorder.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +28 -25
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/commonjs/core/ConvolverNode.js +37 -0
- package/lib/commonjs/core/ConvolverNode.js.map +1 -0
- package/lib/commonjs/core/OfflineAudioContext.js +1 -1
- package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
- package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/commonjs/system/AudioManager.js +3 -0
- package/lib/commonjs/system/AudioManager.js.map +1 -1
- package/lib/commonjs/types.js +0 -46
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/index.js +19 -21
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/web-core/AudioContext.js +12 -0
- package/lib/commonjs/web-core/AudioContext.js.map +1 -1
- package/lib/commonjs/web-core/ConvolverNode.js +40 -0
- package/lib/commonjs/web-core/ConvolverNode.js.map +1 -0
- package/lib/commonjs/web-core/ConvolverNodeOptions.js +6 -0
- package/lib/commonjs/web-core/ConvolverNodeOptions.js.map +1 -0
- package/lib/commonjs/web-core/OfflineAudioContext.js +12 -0
- package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/module/api.js +16 -15
- package/lib/module/api.js.map +1 -1
- package/lib/module/api.web.js +1 -0
- package/lib/module/api.web.js.map +1 -1
- package/lib/module/core/AudioContext.js +2 -2
- package/lib/module/core/AudioContext.js.map +1 -1
- package/lib/module/core/AudioRecorder.js +13 -171
- package/lib/module/core/AudioRecorder.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +29 -26
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/ConvolverNode.js +31 -0
- package/lib/module/core/ConvolverNode.js.map +1 -0
- package/lib/module/core/OfflineAudioContext.js +2 -2
- package/lib/module/core/OfflineAudioContext.js.map +1 -1
- package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/module/system/AudioManager.js +3 -0
- package/lib/module/system/AudioManager.js.map +1 -1
- package/lib/module/types.js +1 -45
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/index.js +15 -2
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/web-core/AudioContext.js +12 -0
- package/lib/module/web-core/AudioContext.js.map +1 -1
- package/lib/module/web-core/ConvolverNode.js +34 -0
- package/lib/module/web-core/ConvolverNode.js.map +1 -0
- package/lib/module/web-core/ConvolverNodeOptions.js +4 -0
- package/lib/module/web-core/ConvolverNodeOptions.js.map +1 -0
- package/lib/module/web-core/OfflineAudioContext.js +12 -0
- package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/typescript/api.d.ts +19 -17
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/api.web.d.ts +1 -0
- package/lib/typescript/api.web.d.ts.map +1 -1
- package/lib/typescript/core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/core/AudioRecorder.d.ts +7 -62
- package/lib/typescript/core/AudioRecorder.d.ts.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +3 -1
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/core/ConvolverNode.d.ts +12 -0
- package/lib/typescript/core/ConvolverNode.d.ts.map +1 -0
- package/lib/typescript/events/types.d.ts +0 -16
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +9 -42
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts +1 -0
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
- package/lib/typescript/system/AudioManager.d.ts +1 -0
- package/lib/typescript/system/AudioManager.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +8 -79
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/index.d.ts +5 -2
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioContext.d.ts +3 -0
- package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/BaseAudioContext.d.ts +2 -0
- package/lib/typescript/web-core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/ConvolverNode.d.ts +11 -0
- package/lib/typescript/web-core/ConvolverNode.d.ts.map +1 -0
- package/lib/typescript/web-core/ConvolverNodeOptions.d.ts +6 -0
- package/lib/typescript/web-core/ConvolverNodeOptions.d.ts.map +1 -0
- package/lib/typescript/web-core/OfflineAudioContext.d.ts +3 -0
- package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
- package/package.json +14 -5
- package/scripts/download-prebuilt-binaries.sh +61 -0
- package/scripts/rnaa_utils.rb +8 -0
- package/scripts/validate-worklets-version.js +28 -0
- package/src/api.ts +45 -18
- package/src/api.web.ts +1 -0
- package/src/core/AudioContext.ts +3 -2
- package/src/core/AudioRecorder.ts +24 -211
- package/src/core/BaseAudioContext.ts +67 -60
- package/src/core/ConvolverNode.ts +35 -0
- package/src/core/OfflineAudioContext.ts +2 -2
- package/src/events/types.ts +0 -18
- package/src/interfaces.ts +16 -52
- package/src/specs/NativeAudioAPIModule.ts +1 -0
- package/src/system/AudioManager.ts +4 -0
- package/src/types.ts +9 -90
- package/src/utils/index.ts +22 -2
- package/src/web-core/AudioContext.tsx +25 -0
- package/src/web-core/BaseAudioContext.tsx +2 -0
- package/src/web-core/ConvolverNode.tsx +43 -0
- package/src/web-core/ConvolverNodeOptions.tsx +6 -0
- package/src/web-core/OfflineAudioContext.tsx +25 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidFileWriterBackend.h +0 -37
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +0 -187
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +0 -57
- package/android/src/main/cpp/audioapi/android/core/utils/FileUtils.h +0 -34
- package/android/src/main/cpp/audioapi/android/core/utils/FileUtilts.cpp +0 -133
- package/android/src/main/cpp/audioapi/android/core/utils/MiniaudioImplementation.cpp +0 -3
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegAudioFileOptions.cpp +0 -154
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegAudioFileOptions.h +0 -41
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.cpp +0 -429
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.h +0 -113
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.cpp +0 -47
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.h +0 -28
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.cpp +0 -269
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +0 -47
- package/android/src/main/cpp/audioapi/android/system/NativeFileInfo.hpp +0 -31
- package/android/src/main/java/com/swmansion/audioapi/system/NativeFileInfo.kt +0 -18
- 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/external/arm64-v8a/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libogg.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libopus.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libssl.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/arm64-v8a/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libogg.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libopus.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libssl.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/armeabi-v7a/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libogg.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libopus.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libssl.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libogg.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libopus.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libssl.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/Info.plist +0 -44
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/Info.plist +0 -1
- 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 +0 -1
- 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 +0 -44
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/Info.plist +0 -1
- 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 +0 -1
- 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 +0 -44
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/Info.plist +0 -1
- 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 +0 -1
- 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 +0 -44
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/Info.plist +0 -1
- 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 +0 -1
- 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/libogg.a +0 -0
- package/common/cpp/audioapi/external/x86/libopus.a +0 -0
- package/common/cpp/audioapi/external/x86/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/x86/libssl.a +0 -0
- package/common/cpp/audioapi/external/x86/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/x86/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/x86/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libogg.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libopus.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libopusfile.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libssl.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libvorbis.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libvorbisenc.a +0 -0
- package/common/cpp/audioapi/external/x86_64/libvorbisfile.a +0 -0
- package/common/cpp/audioapi/libs/ffmpeg/INSTRUCTIONS.md +0 -32
- package/common/cpp/audioapi/libs/ffmpeg/create_xcframework.sh +0 -111
- package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +0 -391
- package/ios/audioapi/ios/core/IOSAudioFileOptions.h +0 -36
- package/ios/audioapi/ios/core/IOSAudioFileOptions.mm +0 -140
- package/ios/audioapi/ios/core/IOSAudioFileWriter.h +0 -51
- package/ios/audioapi/ios/core/IOSAudioFileWriter.mm +0 -223
- package/ios/audioapi/ios/core/IOSRecorderCallback.h +0 -57
- package/ios/audioapi/ios/core/IOSRecorderCallback.mm +0 -189
- package/lib/commonjs/utils/bitEnums.js +0 -33
- package/lib/commonjs/utils/bitEnums.js.map +0 -1
- package/lib/module/utils/bitEnums.js +0 -27
- package/lib/module/utils/bitEnums.js.map +0 -1
- package/lib/typescript/utils/bitEnums.d.ts +0 -4
- package/lib/typescript/utils/bitEnums.d.ts.map +0 -1
- package/src/utils/bitEnums.ts +0 -51
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package com.swmansion.audioapi
|
|
2
2
|
|
|
3
3
|
import com.facebook.jni.HybridData
|
|
4
|
+
import com.facebook.react.bridge.LifecycleEventListener
|
|
4
5
|
import com.facebook.react.bridge.Promise
|
|
5
6
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
7
|
import com.facebook.react.bridge.ReadableArray
|
|
@@ -9,7 +10,6 @@ import com.facebook.react.common.annotations.FrameworkAPI
|
|
|
9
10
|
import com.facebook.react.module.annotations.ReactModule
|
|
10
11
|
import com.facebook.react.turbomodule.core.CallInvokerHolderImpl
|
|
11
12
|
import com.swmansion.audioapi.system.MediaSessionManager
|
|
12
|
-
import com.swmansion.audioapi.system.NativeFileInfo
|
|
13
13
|
import com.swmansion.audioapi.system.PermissionRequestListener
|
|
14
14
|
import java.lang.ref.WeakReference
|
|
15
15
|
|
|
@@ -17,7 +17,8 @@ import java.lang.ref.WeakReference
|
|
|
17
17
|
@ReactModule(name = AudioAPIModule.NAME)
|
|
18
18
|
class AudioAPIModule(
|
|
19
19
|
reactContext: ReactApplicationContext,
|
|
20
|
-
) : NativeAudioAPIModuleSpec(reactContext)
|
|
20
|
+
) : NativeAudioAPIModuleSpec(reactContext),
|
|
21
|
+
LifecycleEventListener {
|
|
21
22
|
companion object {
|
|
22
23
|
const val NAME = NativeAudioAPIModuleSpec.NAME
|
|
23
24
|
}
|
|
@@ -39,6 +40,8 @@ class AudioAPIModule(
|
|
|
39
40
|
eventBody: Map<String, Any>,
|
|
40
41
|
)
|
|
41
42
|
|
|
43
|
+
private external fun closeAllContexts()
|
|
44
|
+
|
|
42
45
|
init {
|
|
43
46
|
try {
|
|
44
47
|
System.loadLibrary("react-native-audio-api")
|
|
@@ -60,12 +63,33 @@ class AudioAPIModule(
|
|
|
60
63
|
|
|
61
64
|
override fun install(): Boolean {
|
|
62
65
|
MediaSessionManager.initialize(WeakReference(this), reactContext)
|
|
63
|
-
NativeFileInfo.initialize(reactContext)
|
|
64
66
|
injectJSIBindings()
|
|
65
67
|
|
|
66
68
|
return true
|
|
67
69
|
}
|
|
68
70
|
|
|
71
|
+
override fun onHostResume() {
|
|
72
|
+
// do nothing
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
override fun onHostPause() {
|
|
76
|
+
// do nothing
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
override fun onHostDestroy() {
|
|
80
|
+
closeAllContexts()
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
override fun initialize() {
|
|
84
|
+
reactContext.get()?.addLifecycleEventListener(this)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
override fun invalidate() {
|
|
88
|
+
closeAllContexts()
|
|
89
|
+
reactContext.get()?.removeLifecycleEventListener(this)
|
|
90
|
+
// think about cleaning up resources, singletons etc.
|
|
91
|
+
}
|
|
92
|
+
|
|
69
93
|
override fun getDevicePreferredSampleRate(): Double = MediaSessionManager.getDevicePreferredSampleRate()
|
|
70
94
|
|
|
71
95
|
override fun setAudioSessionActivity(
|
|
@@ -84,6 +108,10 @@ class AudioAPIModule(
|
|
|
84
108
|
// noting to do here
|
|
85
109
|
}
|
|
86
110
|
|
|
111
|
+
override fun disableSessionManagement() {
|
|
112
|
+
// nothing to do here
|
|
113
|
+
}
|
|
114
|
+
|
|
87
115
|
override fun setLockScreenInfo(info: ReadableMap?) {
|
|
88
116
|
MediaSessionManager.setLockScreenInfo(info)
|
|
89
117
|
}
|
|
@@ -13,12 +13,14 @@ class AudioFocusListener(
|
|
|
13
13
|
private val audioAPIModule: WeakReference<AudioAPIModule>,
|
|
14
14
|
private val lockScreenManager: WeakReference<LockScreenManager>,
|
|
15
15
|
) : AudioManager.OnAudioFocusChangeListener {
|
|
16
|
+
private var playOnAudioFocus: Boolean = false
|
|
16
17
|
private var focusRequest: AudioFocusRequest? = null
|
|
17
18
|
|
|
18
19
|
override fun onAudioFocusChange(focusChange: Int) {
|
|
19
20
|
Log.d("AudioFocusListener", "onAudioFocusChange: $focusChange")
|
|
20
21
|
when (focusChange) {
|
|
21
22
|
AudioManager.AUDIOFOCUS_LOSS -> {
|
|
23
|
+
playOnAudioFocus = false
|
|
22
24
|
val body =
|
|
23
25
|
HashMap<String, Any>().apply {
|
|
24
26
|
put("type", "began")
|
|
@@ -26,23 +28,33 @@ class AudioFocusListener(
|
|
|
26
28
|
}
|
|
27
29
|
audioAPIModule.get()?.invokeHandlerWithEventNameAndEventBody("interruption", body)
|
|
28
30
|
}
|
|
29
|
-
|
|
30
31
|
AudioManager.AUDIOFOCUS_LOSS_TRANSIENT -> {
|
|
32
|
+
playOnAudioFocus = lockScreenManager.get()?.isPlaying == true
|
|
31
33
|
val body =
|
|
32
34
|
HashMap<String, Any>().apply {
|
|
33
35
|
put("type", "began")
|
|
34
|
-
put("shouldResume",
|
|
36
|
+
put("shouldResume", playOnAudioFocus)
|
|
35
37
|
}
|
|
36
38
|
audioAPIModule.get()?.invokeHandlerWithEventNameAndEventBody("interruption", body)
|
|
37
39
|
}
|
|
38
|
-
|
|
39
40
|
AudioManager.AUDIOFOCUS_GAIN -> {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
41
|
+
if (playOnAudioFocus) {
|
|
42
|
+
val body =
|
|
43
|
+
HashMap<String, Any>().apply {
|
|
44
|
+
put("type", "ended")
|
|
45
|
+
put("shouldResume", true)
|
|
46
|
+
}
|
|
47
|
+
audioAPIModule.get()?.invokeHandlerWithEventNameAndEventBody("interruption", body)
|
|
48
|
+
} else {
|
|
49
|
+
val body =
|
|
50
|
+
HashMap<String, Any>().apply {
|
|
51
|
+
put("type", "ended")
|
|
52
|
+
put("shouldResume", false)
|
|
53
|
+
}
|
|
54
|
+
audioAPIModule.get()?.invokeHandlerWithEventNameAndEventBody("interruption", body)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
playOnAudioFocus = false
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
60
|
}
|
|
@@ -42,13 +42,11 @@ class LockScreenManager(
|
|
|
42
42
|
private var playbackState: Int = PlaybackStateCompat.STATE_PAUSED
|
|
43
43
|
|
|
44
44
|
init {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this.nb.setPriority(NotificationCompat.PRIORITY_HIGH)
|
|
45
|
+
pb.setActions(controls)
|
|
46
|
+
nb.setPriority(NotificationCompat.PRIORITY_HIGH)
|
|
47
|
+
nb.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
|
|
49
48
|
|
|
50
49
|
updateNotificationMediaStyle()
|
|
51
|
-
|
|
52
50
|
mediaNotificationManager.get()?.updateActions(controls)
|
|
53
51
|
}
|
|
54
52
|
|
|
@@ -174,8 +172,31 @@ class LockScreenManager(
|
|
|
174
172
|
if (artworkThread != null && artworkThread!!.isAlive) artworkThread!!.interrupt()
|
|
175
173
|
artworkThread = null
|
|
176
174
|
|
|
177
|
-
|
|
175
|
+
title = null
|
|
176
|
+
artist = null
|
|
177
|
+
album = null
|
|
178
|
+
description = null
|
|
179
|
+
duration = 0L
|
|
180
|
+
speed = 1.0F
|
|
181
|
+
elapsedTime = 0L
|
|
182
|
+
artwork = null
|
|
183
|
+
playbackState = PlaybackStateCompat.STATE_PAUSED
|
|
184
|
+
isPlaying = false
|
|
185
|
+
|
|
186
|
+
val emptyMetadata = MediaMetadataCompat.Builder().build()
|
|
187
|
+
mediaSession.get()?.setMetadata(emptyMetadata)
|
|
188
|
+
|
|
189
|
+
pb.setState(PlaybackStateCompat.STATE_NONE, 0, 0f)
|
|
190
|
+
pb.setActions(controls)
|
|
191
|
+
state = pb.build()
|
|
192
|
+
mediaSession.get()?.setPlaybackState(state)
|
|
178
193
|
mediaSession.get()?.setActive(false)
|
|
194
|
+
|
|
195
|
+
nb.setContentTitle("")
|
|
196
|
+
nb.setContentText("")
|
|
197
|
+
nb.setContentInfo("")
|
|
198
|
+
|
|
199
|
+
mediaNotificationManager.get()?.updateNotification(nb, isPlaying)
|
|
179
200
|
}
|
|
180
201
|
|
|
181
202
|
fun enableRemoteCommand(
|
|
@@ -258,5 +258,16 @@ class MediaNotificationManager(
|
|
|
258
258
|
}
|
|
259
259
|
super.onDestroy()
|
|
260
260
|
}
|
|
261
|
+
|
|
262
|
+
override fun onTimeout(startId: Int) {
|
|
263
|
+
stopForegroundService()
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
override fun onTimeout(
|
|
267
|
+
startId: Int,
|
|
268
|
+
fgsType: Int,
|
|
269
|
+
) {
|
|
270
|
+
stopForegroundService()
|
|
271
|
+
}
|
|
261
272
|
}
|
|
262
273
|
}
|
|
@@ -50,6 +50,10 @@
|
|
|
50
50
|
@DoNotStrip
|
|
51
51
|
public abstract void setAudioSessionOptions(String category, String mode, ReadableArray options, boolean allowHaptics);
|
|
52
52
|
|
|
53
|
+
@ReactMethod
|
|
54
|
+
@DoNotStrip
|
|
55
|
+
public abstract void disableSessionManagement();
|
|
56
|
+
|
|
53
57
|
@ReactMethod
|
|
54
58
|
@DoNotStrip
|
|
55
59
|
public abstract void setLockScreenInfo(ReadableMap info);
|
|
@@ -16,13 +16,16 @@
|
|
|
16
16
|
#include <audioapi/core/utils/worklets/SafeIncludes.h>
|
|
17
17
|
|
|
18
18
|
#include <memory>
|
|
19
|
-
#include <
|
|
19
|
+
#include <vector>
|
|
20
20
|
|
|
21
21
|
namespace audioapi {
|
|
22
22
|
|
|
23
23
|
using namespace facebook;
|
|
24
24
|
|
|
25
25
|
class AudioAPIModuleInstaller {
|
|
26
|
+
private:
|
|
27
|
+
inline static std::vector<std::weak_ptr<AudioContext>> contexts_ = {};
|
|
28
|
+
|
|
26
29
|
public:
|
|
27
30
|
static void injectJSIBindings(
|
|
28
31
|
jsi::Runtime *jsiRuntime,
|
|
@@ -62,6 +65,19 @@ class AudioAPIModuleInstaller {
|
|
|
62
65
|
*jsiRuntime, audioEventHandlerRegistryHostObject));
|
|
63
66
|
}
|
|
64
67
|
|
|
68
|
+
static void closeAllContexts() {
|
|
69
|
+
for (auto it = contexts_.begin(); it != contexts_.end(); ++it) {
|
|
70
|
+
auto weakContext = *it;
|
|
71
|
+
|
|
72
|
+
if (auto context = weakContext.lock()) {
|
|
73
|
+
context->close();
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
it = contexts_.erase(it);
|
|
77
|
+
--it;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
65
81
|
private:
|
|
66
82
|
static jsi::Function getCreateAudioContextFunction(
|
|
67
83
|
jsi::Runtime *jsiRuntime,
|
|
@@ -96,6 +112,8 @@ class AudioAPIModuleInstaller {
|
|
|
96
112
|
initSuspended,
|
|
97
113
|
audioEventHandlerRegistry,
|
|
98
114
|
runtimeRegistry);
|
|
115
|
+
AudioAPIModuleInstaller::contexts_.push_back(audioContext);
|
|
116
|
+
|
|
99
117
|
auto audioContextHostObject =
|
|
100
118
|
std::make_shared<AudioContextHostObject>(
|
|
101
119
|
audioContext, &runtime, jsCallInvoker);
|
|
@@ -139,6 +157,7 @@ class AudioAPIModuleInstaller {
|
|
|
139
157
|
sampleRate,
|
|
140
158
|
audioEventHandlerRegistry,
|
|
141
159
|
runtimeRegistry);
|
|
160
|
+
|
|
142
161
|
auto audioContextHostObject =
|
|
143
162
|
std::make_shared<OfflineAudioContextHostObject>(
|
|
144
163
|
offlineAudioContext, &runtime, jsCallInvoker);
|
|
@@ -161,8 +180,17 @@ class AudioAPIModuleInstaller {
|
|
|
161
180
|
const jsi::Value &thisValue,
|
|
162
181
|
const jsi::Value *args,
|
|
163
182
|
size_t count) -> jsi::Value {
|
|
183
|
+
auto options = args[0].getObject(runtime);
|
|
184
|
+
|
|
185
|
+
auto sampleRate = static_cast<float>(
|
|
186
|
+
options.getProperty(runtime, "sampleRate").getNumber());
|
|
187
|
+
auto bufferLength = static_cast<int>(
|
|
188
|
+
options.getProperty(runtime, "bufferLengthInSamples")
|
|
189
|
+
.getNumber());
|
|
190
|
+
|
|
164
191
|
auto audioRecorderHostObject =
|
|
165
|
-
std::make_shared<AudioRecorderHostObject>(
|
|
192
|
+
std::make_shared<AudioRecorderHostObject>(
|
|
193
|
+
audioEventHandlerRegistry, sampleRate, bufferLength);
|
|
166
194
|
|
|
167
195
|
return jsi::Object::createFromHostObject(
|
|
168
196
|
runtime, audioRecorderHostObject);
|
|
@@ -17,12 +17,12 @@ AudioContextHostObject::AudioContextHostObject(
|
|
|
17
17
|
|
|
18
18
|
JSI_HOST_FUNCTION_IMPL(AudioContextHostObject, close) {
|
|
19
19
|
auto audioContext = std::static_pointer_cast<AudioContext>(context_);
|
|
20
|
-
auto promise = promiseVendor_->
|
|
21
|
-
[audioContext
|
|
22
|
-
audioContext
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
auto promise = promiseVendor_->createAsyncPromise(
|
|
21
|
+
[audioContext = std::move(audioContext)]() {
|
|
22
|
+
return [audioContext](jsi::Runtime &runtime) {
|
|
23
|
+
audioContext->close();
|
|
24
|
+
return jsi::Value::undefined();
|
|
25
|
+
};
|
|
26
26
|
});
|
|
27
27
|
|
|
28
28
|
return promise;
|
|
@@ -30,25 +30,20 @@ JSI_HOST_FUNCTION_IMPL(AudioContextHostObject, close) {
|
|
|
30
30
|
|
|
31
31
|
JSI_HOST_FUNCTION_IMPL(AudioContextHostObject, resume) {
|
|
32
32
|
auto audioContext = std::static_pointer_cast<AudioContext>(context_);
|
|
33
|
-
auto promise = promiseVendor_->
|
|
34
|
-
[audioContext
|
|
33
|
+
auto promise = promiseVendor_->createAsyncPromise(
|
|
34
|
+
[audioContext = std::move(audioContext)]() {
|
|
35
35
|
auto result = audioContext->resume();
|
|
36
|
-
|
|
37
|
-
promise->resolve(
|
|
38
|
-
[result](jsi::Runtime &runtime) { return jsi::Value(result); });
|
|
36
|
+
return [result](jsi::Runtime &runtime) { return jsi::Value(result); };
|
|
39
37
|
});
|
|
40
|
-
|
|
41
38
|
return promise;
|
|
42
39
|
}
|
|
43
40
|
|
|
44
41
|
JSI_HOST_FUNCTION_IMPL(AudioContextHostObject, suspend) {
|
|
45
42
|
auto audioContext = std::static_pointer_cast<AudioContext>(context_);
|
|
46
|
-
auto promise = promiseVendor_->
|
|
47
|
-
[audioContext
|
|
43
|
+
auto promise = promiseVendor_->createAsyncPromise(
|
|
44
|
+
[audioContext = std::move(audioContext)]() {
|
|
48
45
|
auto result = audioContext->suspend();
|
|
49
|
-
|
|
50
|
-
promise->resolve(
|
|
51
|
-
[result](jsi::Runtime &runtime) { return jsi::Value(result); });
|
|
46
|
+
return [result](jsi::Runtime &runtime) { return jsi::Value(result); };
|
|
52
47
|
});
|
|
53
48
|
|
|
54
49
|
return promise;
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#include <audioapi/HostObjects/analysis/AnalyserNodeHostObject.h>
|
|
6
6
|
#include <audioapi/HostObjects/destinations/AudioDestinationNodeHostObject.h>
|
|
7
7
|
#include <audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h>
|
|
8
|
+
#include <audioapi/HostObjects/effects/ConvolverNodeHostObject.h>
|
|
8
9
|
#include <audioapi/HostObjects/effects/GainNodeHostObject.h>
|
|
9
10
|
#include <audioapi/HostObjects/effects/PeriodicWaveHostObject.h>
|
|
10
11
|
#include <audioapi/HostObjects/effects/StereoPannerNodeHostObject.h>
|
|
@@ -49,6 +50,7 @@ BaseAudioContextHostObject::BaseAudioContextHostObject(
|
|
|
49
50
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createBufferQueueSource),
|
|
50
51
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createBuffer),
|
|
51
52
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createPeriodicWave),
|
|
53
|
+
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createConvolver),
|
|
52
54
|
JSI_EXPORT_FUNCTION(BaseAudioContextHostObject, createAnalyser));
|
|
53
55
|
}
|
|
54
56
|
|
|
@@ -269,4 +271,20 @@ JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createAnalyser) {
|
|
|
269
271
|
auto analyserHostObject = std::make_shared<AnalyserNodeHostObject>(analyser);
|
|
270
272
|
return jsi::Object::createFromHostObject(runtime, analyserHostObject);
|
|
271
273
|
}
|
|
274
|
+
|
|
275
|
+
JSI_HOST_FUNCTION_IMPL(BaseAudioContextHostObject, createConvolver) {
|
|
276
|
+
auto disableNormalization = args[1].getBool();
|
|
277
|
+
std::shared_ptr<ConvolverNode> convolver;
|
|
278
|
+
if (args[0].isUndefined()) {
|
|
279
|
+
convolver = context_->createConvolver(nullptr, disableNormalization);
|
|
280
|
+
} else {
|
|
281
|
+
auto bufferHostObject =
|
|
282
|
+
args[0].getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
|
|
283
|
+
convolver = context_->createConvolver(
|
|
284
|
+
bufferHostObject->audioBuffer_, disableNormalization);
|
|
285
|
+
}
|
|
286
|
+
auto convolverHostObject =
|
|
287
|
+
std::make_shared<ConvolverNodeHostObject>(convolver);
|
|
288
|
+
return jsi::Object::createFromHostObject(runtime, convolverHostObject);
|
|
289
|
+
}
|
|
272
290
|
} // namespace audioapi
|
|
@@ -41,6 +41,7 @@ class BaseAudioContextHostObject : public JsiHostObject {
|
|
|
41
41
|
JSI_HOST_FUNCTION_DECL(createBuffer);
|
|
42
42
|
JSI_HOST_FUNCTION_DECL(createPeriodicWave);
|
|
43
43
|
JSI_HOST_FUNCTION_DECL(createAnalyser);
|
|
44
|
+
JSI_HOST_FUNCTION_DECL(createConvolver);
|
|
44
45
|
|
|
45
46
|
std::shared_ptr<BaseAudioContext> context_;
|
|
46
47
|
|
|
@@ -17,49 +17,45 @@ OfflineAudioContextHostObject::OfflineAudioContextHostObject(
|
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, resume) {
|
|
20
|
-
auto
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
});
|
|
20
|
+
auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
21
|
+
auto promise = promiseVendor_->createAsyncPromise([audioContext]() {
|
|
22
|
+
audioContext->resume();
|
|
23
|
+
return [](jsi::Runtime &runtime) { return jsi::Value::undefined(); };
|
|
24
|
+
});
|
|
26
25
|
|
|
27
26
|
return promise;
|
|
28
27
|
}
|
|
29
28
|
|
|
30
29
|
JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, suspend) {
|
|
31
30
|
double when = args[0].getNumber();
|
|
31
|
+
auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
32
32
|
|
|
33
|
-
auto promise = promiseVendor_->
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
audioContext->suspend(when, callback);
|
|
42
|
-
});
|
|
33
|
+
auto promise = promiseVendor_->createAsyncPromise([=](Promise &&promise) {
|
|
34
|
+
OfflineAudioContextSuspendCallback callback = [promise =
|
|
35
|
+
std::move(promise)]() {
|
|
36
|
+
promise.resolve(
|
|
37
|
+
[](jsi::Runtime &runtime) { return jsi::Value::undefined(); });
|
|
38
|
+
};
|
|
39
|
+
audioContext->suspend(when, callback);
|
|
40
|
+
});
|
|
43
41
|
|
|
44
42
|
return promise;
|
|
45
43
|
}
|
|
46
44
|
|
|
47
45
|
JSI_HOST_FUNCTION_IMPL(OfflineAudioContextHostObject, startRendering) {
|
|
48
|
-
auto
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
52
|
-
|
|
46
|
+
auto audioContext = std::static_pointer_cast<OfflineAudioContext>(context_);
|
|
47
|
+
auto promise =
|
|
48
|
+
promiseVendor_->createAsyncPromise([audioContext](Promise &&promise) {
|
|
53
49
|
OfflineAudioContextResultCallback callback =
|
|
54
|
-
[promise
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
50
|
+
[promise = std::move(promise)](
|
|
51
|
+
const std::shared_ptr<AudioBuffer> &audioBuffer) {
|
|
52
|
+
auto audioBufferHostObject =
|
|
53
|
+
std::make_shared<AudioBufferHostObject>(audioBuffer);
|
|
54
|
+
promise.resolve([audioBufferHostObject](jsi::Runtime &runtime) {
|
|
55
|
+
return jsi::Object::createFromHostObject(
|
|
56
|
+
runtime, audioBufferHostObject);
|
|
57
|
+
});
|
|
58
|
+
};
|
|
63
59
|
|
|
64
60
|
audioContext->startRendering(callback);
|
|
65
61
|
});
|
|
@@ -67,7 +67,7 @@ JSI_HOST_FUNCTION_IMPL(BiquadFilterNodeHostObject, getFrequencyResponse) {
|
|
|
67
67
|
.getArrayBuffer(runtime);
|
|
68
68
|
auto frequencyArray =
|
|
69
69
|
reinterpret_cast<float *>(arrayBufferFrequency.data(runtime));
|
|
70
|
-
auto length = static_cast<
|
|
70
|
+
auto length = static_cast<size_t>(arrayBufferFrequency.size(runtime));
|
|
71
71
|
|
|
72
72
|
auto arrayBufferMag = args[1]
|
|
73
73
|
.getObject(runtime)
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#include <audioapi/HostObjects/effects/ConvolverNodeHostObject.h>
|
|
2
|
+
|
|
3
|
+
#include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
|
|
4
|
+
#include <audioapi/core/effects/ConvolverNode.h>
|
|
5
|
+
|
|
6
|
+
namespace audioapi {
|
|
7
|
+
|
|
8
|
+
ConvolverNodeHostObject::ConvolverNodeHostObject(
|
|
9
|
+
const std::shared_ptr<ConvolverNode> &node)
|
|
10
|
+
: AudioNodeHostObject(node) {
|
|
11
|
+
addGetters(
|
|
12
|
+
JSI_EXPORT_PROPERTY_GETTER(ConvolverNodeHostObject, normalize),
|
|
13
|
+
JSI_EXPORT_PROPERTY_GETTER(ConvolverNodeHostObject, buffer));
|
|
14
|
+
addSetters(
|
|
15
|
+
JSI_EXPORT_PROPERTY_SETTER(ConvolverNodeHostObject, normalize),
|
|
16
|
+
JSI_EXPORT_PROPERTY_SETTER(ConvolverNodeHostObject, buffer));
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
JSI_PROPERTY_GETTER_IMPL(ConvolverNodeHostObject, normalize) {
|
|
20
|
+
auto convolverNode = std::static_pointer_cast<ConvolverNode>(node_);
|
|
21
|
+
return {convolverNode->getNormalize_()};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
JSI_PROPERTY_GETTER_IMPL(ConvolverNodeHostObject, buffer) {
|
|
25
|
+
auto convolverNode = std::static_pointer_cast<ConvolverNode>(node_);
|
|
26
|
+
auto buffer = convolverNode->getBuffer();
|
|
27
|
+
auto bufferHostObject = std::make_shared<AudioBufferHostObject>(buffer);
|
|
28
|
+
return jsi::Object::createFromHostObject(runtime, bufferHostObject);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
JSI_PROPERTY_SETTER_IMPL(ConvolverNodeHostObject, normalize) {
|
|
32
|
+
auto convolverNode = std::static_pointer_cast<ConvolverNode>(node_);
|
|
33
|
+
convolverNode->setNormalize(value.getBool());
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
JSI_PROPERTY_SETTER_IMPL(ConvolverNodeHostObject, buffer) {
|
|
37
|
+
auto convolverNode = std::static_pointer_cast<ConvolverNode>(node_);
|
|
38
|
+
if (value.isNull()) {
|
|
39
|
+
convolverNode->setBuffer(nullptr);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
auto bufferHostObject =
|
|
44
|
+
value.getObject(runtime).asHostObject<AudioBufferHostObject>(runtime);
|
|
45
|
+
convolverNode->setBuffer(bufferHostObject->audioBuffer_);
|
|
46
|
+
}
|
|
47
|
+
} // namespace audioapi
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <audioapi/HostObjects/AudioNodeHostObject.h>
|
|
4
|
+
|
|
5
|
+
#include <memory>
|
|
6
|
+
|
|
7
|
+
namespace audioapi {
|
|
8
|
+
using namespace facebook;
|
|
9
|
+
|
|
10
|
+
class ConvolverNode;
|
|
11
|
+
|
|
12
|
+
class ConvolverNodeHostObject : public AudioNodeHostObject {
|
|
13
|
+
public:
|
|
14
|
+
explicit ConvolverNodeHostObject(const std::shared_ptr<ConvolverNode> &node);
|
|
15
|
+
JSI_PROPERTY_GETTER_DECL(normalize);
|
|
16
|
+
JSI_PROPERTY_GETTER_DECL(buffer);
|
|
17
|
+
JSI_PROPERTY_SETTER_DECL(normalize);
|
|
18
|
+
JSI_PROPERTY_SETTER_DECL(buffer);
|
|
19
|
+
};
|
|
20
|
+
} // namespace audioapi
|