react-native-audio-api 0.11.0-alpha.1 → 0.11.0-alpha.3
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 +25 -18
- package/android/build.gradle +41 -5
- package/android/src/main/cpp/audioapi/CMakeLists.txt +6 -3
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +10 -16
- package/android/src/main/cpp/audioapi/android/OnLoad.cpp +1 -2
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +219 -84
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +23 -23
- package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +13 -20
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidFileWriterBackend.h +14 -18
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +72 -89
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +12 -23
- package/android/src/main/cpp/audioapi/android/core/utils/AudioDecoder.cpp +47 -47
- package/android/src/main/cpp/audioapi/android/core/utils/FileOptions.cpp +83 -0
- package/android/src/main/cpp/audioapi/android/core/utils/FileOptions.h +22 -0
- package/android/src/main/cpp/audioapi/android/core/utils/MiniaudioImplementation.cpp +5 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.cpp +379 -298
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.h +48 -91
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/ptrs.hpp +48 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/utils.cpp +110 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/utils.h +34 -0
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.cpp +132 -104
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +8 -16
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +28 -1
- package/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +28 -6
- package/android/src/main/java/com/swmansion/audioapi/system/MediaNotificationManager.kt +11 -0
- 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/android/src/oldarch/NativeAudioAPIModuleSpec.java +4 -0
- package/common/cpp/audioapi/AudioAPIModuleInstaller.h +45 -70
- package/common/cpp/audioapi/HostObjects/AudioContextHostObject.cpp +20 -22
- package/common/cpp/audioapi/HostObjects/AudioNodeHostObject.cpp +3 -4
- package/common/cpp/audioapi/HostObjects/AudioParamHostObject.cpp +6 -8
- package/common/cpp/audioapi/HostObjects/AudioParamHostObject.h +2 -2
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +102 -63
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +4 -1
- package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.cpp +25 -31
- package/common/cpp/audioapi/HostObjects/OfflineAudioContextHostObject.h +3 -3
- package/common/cpp/audioapi/HostObjects/WorkletNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/WorkletProcessingNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/analysis/AnalyserNodeHostObject.cpp +10 -18
- package/common/cpp/audioapi/HostObjects/destinations/AudioDestinationNodeHostObject.h +2 -3
- package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.cpp +18 -30
- package/common/cpp/audioapi/HostObjects/effects/BiquadFilterNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.cpp +50 -0
- package/common/cpp/audioapi/HostObjects/effects/ConvolverNodeHostObject.h +20 -0
- package/common/cpp/audioapi/HostObjects/effects/DelayNodeHostObject.cpp +27 -0
- package/common/cpp/audioapi/HostObjects/effects/DelayNodeHostObject.h +21 -0
- package/common/cpp/audioapi/HostObjects/effects/GainNodeHostObject.cpp +2 -2
- package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.cpp +33 -0
- package/common/cpp/audioapi/HostObjects/effects/IIRFilterNodeHostObject.h +20 -0
- package/common/cpp/audioapi/HostObjects/effects/PeriodicWaveHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.cpp +2 -2
- package/common/cpp/audioapi/HostObjects/effects/StereoPannerNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.cpp +6 -12
- package/common/cpp/audioapi/HostObjects/events/AudioEventHandlerRegistryHostObject.h +7 -7
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.cpp +98 -50
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +5 -2
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.cpp +27 -22
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferBaseSourceNodeHostObject.h +12 -10
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +17 -22
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.h +5 -7
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +25 -11
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +8 -8
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.cpp +19 -30
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferSourceNodeHostObject.h +2 -4
- package/common/cpp/audioapi/HostObjects/sources/AudioScheduledSourceNodeHostObject.cpp +7 -11
- package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.cpp +2 -2
- package/common/cpp/audioapi/HostObjects/sources/ConstantSourceNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.cpp +6 -8
- package/common/cpp/audioapi/HostObjects/sources/OscillatorNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/sources/RecorderAdapterNodeHostObject.h +4 -5
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.cpp +6 -2
- package/common/cpp/audioapi/HostObjects/sources/StreamerNodeHostObject.h +5 -6
- package/common/cpp/audioapi/HostObjects/sources/WorkletSourceNodeHostObject.h +1 -2
- package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +39 -60
- package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +15 -30
- package/common/cpp/audioapi/core/AudioContext.cpp +23 -28
- package/common/cpp/audioapi/core/AudioContext.h +6 -3
- package/common/cpp/audioapi/core/AudioNode.cpp +17 -19
- package/common/cpp/audioapi/core/AudioNode.h +19 -8
- package/common/cpp/audioapi/core/AudioParam.cpp +68 -100
- package/common/cpp/audioapi/core/AudioParam.h +20 -12
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +52 -34
- package/common/cpp/audioapi/core/BaseAudioContext.h +26 -14
- package/common/cpp/audioapi/core/OfflineAudioContext.cpp +12 -17
- package/common/cpp/audioapi/core/OfflineAudioContext.h +10 -5
- package/common/cpp/audioapi/core/analysis/AnalyserNode.cpp +13 -21
- package/common/cpp/audioapi/core/analysis/AnalyserNode.h +8 -6
- package/common/cpp/audioapi/core/destinations/AudioDestinationNode.cpp +1 -0
- package/common/cpp/audioapi/core/destinations/AudioDestinationNode.h +5 -3
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.cpp +84 -66
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +39 -10
- package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +201 -0
- package/common/cpp/audioapi/core/effects/ConvolverNode.h +64 -0
- package/common/cpp/audioapi/core/effects/DelayNode.cpp +101 -0
- package/common/cpp/audioapi/core/effects/DelayNode.h +39 -0
- package/common/cpp/audioapi/core/effects/GainNode.cpp +1 -0
- package/common/cpp/audioapi/core/effects/GainNode.h +3 -1
- package/common/cpp/audioapi/core/effects/IIRFilterNode.cpp +166 -0
- package/common/cpp/audioapi/core/effects/IIRFilterNode.h +74 -0
- package/common/cpp/audioapi/core/effects/PeriodicWave.cpp +22 -35
- package/common/cpp/audioapi/core/effects/PeriodicWave.h +4 -9
- package/common/cpp/audioapi/core/effects/StereoPannerNode.cpp +4 -5
- package/common/cpp/audioapi/core/effects/StereoPannerNode.h +4 -2
- package/common/cpp/audioapi/core/effects/WorkletNode.cpp +11 -13
- package/common/cpp/audioapi/core/effects/WorkletNode.h +15 -12
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +4 -4
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.h +15 -14
- package/common/cpp/audioapi/core/inputs/AudioRecorder.cpp +58 -36
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +42 -44
- package/common/cpp/audioapi/core/sources/AudioBuffer.cpp +4 -6
- package/common/cpp/audioapi/core/sources/AudioBuffer.h +4 -7
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +48 -57
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +37 -34
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +55 -17
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +35 -28
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +41 -49
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +8 -6
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +29 -24
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +6 -6
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.cpp +3 -4
- package/common/cpp/audioapi/core/sources/ConstantSourceNode.h +3 -1
- package/common/cpp/audioapi/core/sources/OscillatorNode.cpp +12 -23
- package/common/cpp/audioapi/core/sources/OscillatorNode.h +6 -4
- package/common/cpp/audioapi/core/sources/RecorderAdapterNode.cpp +43 -16
- package/common/cpp/audioapi/core/sources/RecorderAdapterNode.h +22 -17
- package/common/cpp/audioapi/core/sources/StreamerNode.cpp +104 -87
- package/common/cpp/audioapi/core/sources/StreamerNode.h +69 -33
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +5 -7
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.h +15 -13
- package/common/cpp/audioapi/core/types/AudioFormat.h +1 -11
- package/common/cpp/audioapi/core/utils/AudioDecoder.h +15 -6
- package/common/cpp/audioapi/core/utils/AudioFileWriter.cpp +41 -0
- package/common/cpp/audioapi/core/utils/AudioFileWriter.h +43 -0
- package/common/cpp/audioapi/core/utils/AudioNodeDestructor.cpp +5 -6
- package/common/cpp/audioapi/core/utils/AudioNodeDestructor.h +7 -10
- package/common/cpp/audioapi/core/utils/AudioNodeManager.cpp +17 -19
- package/common/cpp/audioapi/core/utils/AudioNodeManager.h +8 -11
- package/common/cpp/audioapi/core/utils/AudioParamEventQueue.cpp +3 -3
- package/common/cpp/audioapi/core/utils/AudioParamEventQueue.h +5 -5
- package/common/cpp/audioapi/core/utils/AudioRecorderCallback.cpp +101 -0
- package/common/cpp/audioapi/core/utils/AudioRecorderCallback.h +51 -0
- package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +6 -6
- package/common/cpp/audioapi/core/utils/Constants.h +7 -3
- package/common/cpp/audioapi/core/utils/ParamChangeEvent.cpp +1 -0
- package/common/cpp/audioapi/core/utils/ParamChangeEvent.h +9 -9
- package/common/cpp/audioapi/core/utils/worklets/SafeIncludes.h +33 -34
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.cpp +17 -19
- package/common/cpp/audioapi/core/utils/worklets/WorkletsRunner.h +23 -19
- package/common/cpp/audioapi/dsp/AudioUtils.cpp +4 -10
- package/common/cpp/audioapi/dsp/AudioUtils.h +1 -1
- package/common/cpp/audioapi/dsp/Convolver.cpp +201 -0
- package/common/cpp/audioapi/dsp/Convolver.h +47 -0
- package/common/cpp/audioapi/dsp/FFT.cpp +1 -27
- package/common/cpp/audioapi/dsp/FFT.h +19 -3
- package/common/cpp/audioapi/dsp/VectorMath.cpp +24 -58
- package/common/cpp/audioapi/dsp/VectorMath.h +35 -8
- package/common/cpp/audioapi/dsp/Windows.cpp +4 -9
- package/common/cpp/audioapi/dsp/Windows.h +24 -23
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +12 -17
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +45 -40
- package/common/cpp/audioapi/events/IAudioEventHandlerRegistry.h +15 -7
- 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/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64/libavcodec.framework/libavcodec +0 -0
- package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
- package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64/libavformat.framework/libavformat +0 -0
- package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
- package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64/libavutil.framework/libavutil +0 -0
- package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
- package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64/libswresample.framework/libswresample +0 -0
- package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
- package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +4 -5
- package/common/cpp/audioapi/jsi/JsiHostObject.cpp +11 -13
- package/common/cpp/audioapi/jsi/JsiHostObject.h +26 -33
- package/common/cpp/audioapi/jsi/JsiPromise.cpp +34 -67
- package/common/cpp/audioapi/jsi/JsiPromise.h +65 -26
- package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.cpp +7 -10
- package/common/cpp/audioapi/jsi/RuntimeLifecycleMonitor.h +1 -3
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +4 -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/AudioArray.cpp +3 -8
- package/common/cpp/audioapi/utils/AudioArray.h +3 -11
- package/common/cpp/audioapi/utils/AudioBus.cpp +79 -149
- package/common/cpp/audioapi/utils/AudioBus.h +17 -14
- package/common/cpp/audioapi/utils/AudioFileProperties.cpp +92 -0
- package/common/cpp/audioapi/utils/AudioFileProperties.h +76 -0
- package/common/cpp/audioapi/utils/CircularAudioArray.cpp +6 -18
- package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.cpp +6 -10
- package/common/cpp/audioapi/utils/CircularOverflowableAudioArray.h +2 -2
- package/common/cpp/audioapi/utils/Result.hpp +286 -0
- package/common/cpp/audioapi/utils/ThreadPool.hpp +59 -1
- package/common/cpp/audioapi/utils/UnitConversion.h +9 -0
- package/common/cpp/test/CMakeLists.txt +20 -14
- package/common/cpp/test/src/AudioParamTest.cpp +4 -3
- package/common/cpp/test/src/AudioScheduledSourceTest.cpp +113 -0
- package/common/cpp/test/src/ConstantSourceTest.cpp +5 -7
- package/common/cpp/test/src/DelayTest.cpp +108 -0
- package/common/cpp/test/src/GainTest.cpp +4 -5
- package/common/cpp/test/src/IIRFilterTest.cpp +153 -0
- package/common/cpp/test/src/MockAudioEventHandlerRegistry.h +19 -11
- package/common/cpp/test/src/OscillatorTest.cpp +2 -1
- package/common/cpp/test/src/StereoPannerTest.cpp +6 -9
- package/common/cpp/test/src/biquad/BiquadFilterChromium.cpp +372 -0
- package/common/cpp/test/src/biquad/BiquadFilterChromium.h +65 -0
- package/common/cpp/test/src/biquad/BiquadFilterTest.cpp +272 -0
- package/common/cpp/test/src/biquad/BiquadFilterTest.h +47 -0
- package/ios/audioapi/ios/AudioAPIModule.h +2 -1
- package/ios/audioapi/ios/AudioAPIModule.mm +44 -20
- package/ios/audioapi/ios/core/IOSAudioPlayer.h +2 -2
- package/ios/audioapi/ios/core/IOSAudioPlayer.mm +7 -6
- package/ios/audioapi/ios/core/IOSAudioRecorder.h +26 -18
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +193 -53
- package/ios/audioapi/ios/core/NativeAudioPlayer.m +16 -13
- package/ios/audioapi/ios/core/NativeAudioRecorder.h +4 -0
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +42 -7
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +21 -4
- package/ios/audioapi/ios/core/utils/FileOptions.h +31 -0
- package/ios/audioapi/ios/core/utils/FileOptions.mm +177 -0
- package/ios/audioapi/ios/core/{IOSAudioFileWriter.h → utils/IOSFileWriter.h} +16 -14
- package/ios/audioapi/ios/core/utils/IOSFileWriter.mm +224 -0
- package/ios/audioapi/ios/core/{IOSRecorderCallback.h → utils/IOSRecorderCallback.h} +7 -17
- package/ios/audioapi/ios/core/utils/IOSRecorderCallback.mm +172 -0
- package/ios/audioapi/ios/system/AudioEngine.h +19 -16
- package/ios/audioapi/ios/system/AudioEngine.mm +101 -134
- package/ios/audioapi/ios/system/AudioSessionManager.h +25 -11
- package/ios/audioapi/ios/system/AudioSessionManager.mm +273 -202
- package/ios/audioapi/ios/system/LockScreenManager.mm +39 -23
- package/ios/audioapi/ios/system/NotificationManager.mm +37 -52
- package/lib/commonjs/AudioAPIModule/AudioAPIModule.js +90 -0
- package/lib/commonjs/AudioAPIModule/AudioAPIModule.js.map +1 -0
- package/lib/commonjs/AudioAPIModule/globals.d.js +6 -0
- package/lib/commonjs/AudioAPIModule/globals.d.js.map +1 -0
- package/lib/commonjs/AudioAPIModule/index.js +14 -0
- package/lib/commonjs/AudioAPIModule/index.js.map +1 -0
- package/lib/commonjs/api.js +18 -12
- 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/AudioBufferBaseSourceNode.js +3 -0
- package/lib/commonjs/core/AudioBufferBaseSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js +5 -2
- package/lib/commonjs/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/commonjs/core/AudioContext.js +5 -8
- package/lib/commonjs/core/AudioContext.js.map +1 -1
- package/lib/commonjs/core/AudioNode.js +1 -1
- package/lib/commonjs/core/AudioNode.js.map +1 -1
- package/lib/commonjs/core/AudioParam.js +18 -11
- package/lib/commonjs/core/AudioParam.js.map +1 -1
- package/lib/commonjs/core/AudioRecorder.js +43 -55
- package/lib/commonjs/core/AudioRecorder.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +61 -30
- 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/DelayNode.js +17 -0
- package/lib/commonjs/core/DelayNode.js.map +1 -0
- package/lib/commonjs/core/IIRFilterNode.js +19 -0
- package/lib/commonjs/core/IIRFilterNode.js.map +1 -0
- package/lib/commonjs/core/OfflineAudioContext.js +3 -6
- package/lib/commonjs/core/OfflineAudioContext.js.map +1 -1
- package/lib/commonjs/plugin/withAudioAPI.js +46 -0
- package/lib/commonjs/plugin/withAudioAPI.js.map +1 -1
- package/lib/commonjs/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/commonjs/system/AudioManager.js +4 -7
- package/lib/commonjs/system/AudioManager.js.map +1 -1
- package/lib/commonjs/types.js +16 -23
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/utils/filePresets.js +43 -0
- package/lib/commonjs/utils/filePresets.js.map +1 -0
- package/lib/commonjs/utils/index.js +12 -27
- package/lib/commonjs/utils/index.js.map +1 -1
- package/lib/commonjs/web-core/AudioContext.js +21 -1
- 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/DelayNode.js +17 -0
- package/lib/commonjs/web-core/DelayNode.js.map +1 -0
- package/lib/commonjs/web-core/IIRFilterNode.js +19 -0
- package/lib/commonjs/web-core/IIRFilterNode.js.map +1 -0
- package/lib/commonjs/web-core/OfflineAudioContext.js +20 -0
- package/lib/commonjs/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/module/AudioAPIModule/AudioAPIModule.js +87 -0
- package/lib/module/AudioAPIModule/AudioAPIModule.js.map +1 -0
- package/lib/module/AudioAPIModule/globals.d.js +4 -0
- package/lib/module/AudioAPIModule/globals.d.js.map +1 -0
- package/lib/module/AudioAPIModule/index.js +4 -0
- package/lib/module/AudioAPIModule/index.js.map +1 -0
- package/lib/module/api.js +3 -12
- 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/AudioBufferBaseSourceNode.js +3 -0
- package/lib/module/core/AudioBufferBaseSourceNode.js.map +1 -1
- package/lib/module/core/AudioBufferQueueSourceNode.js +5 -2
- package/lib/module/core/AudioBufferQueueSourceNode.js.map +1 -1
- package/lib/module/core/AudioContext.js +5 -8
- package/lib/module/core/AudioContext.js.map +1 -1
- package/lib/module/core/AudioNode.js +1 -1
- package/lib/module/core/AudioNode.js.map +1 -1
- package/lib/module/core/AudioParam.js +18 -11
- package/lib/module/core/AudioParam.js.map +1 -1
- package/lib/module/core/AudioRecorder.js +44 -56
- package/lib/module/core/AudioRecorder.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +63 -32
- 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/DelayNode.js +11 -0
- package/lib/module/core/DelayNode.js.map +1 -0
- package/lib/module/core/IIRFilterNode.js +13 -0
- package/lib/module/core/IIRFilterNode.js.map +1 -0
- package/lib/module/core/OfflineAudioContext.js +3 -6
- package/lib/module/core/OfflineAudioContext.js.map +1 -1
- package/lib/module/plugin/withAudioAPI.js +47 -1
- package/lib/module/plugin/withAudioAPI.js.map +1 -1
- package/lib/module/specs/NativeAudioAPIModule.js.map +1 -1
- package/lib/module/system/AudioManager.js +4 -7
- package/lib/module/system/AudioManager.js.map +1 -1
- package/lib/module/types.js +15 -22
- package/lib/module/types.js.map +1 -1
- package/lib/module/utils/filePresets.js +39 -0
- package/lib/module/utils/filePresets.js.map +1 -0
- package/lib/module/utils/index.js +10 -10
- package/lib/module/utils/index.js.map +1 -1
- package/lib/module/web-core/AudioContext.js +21 -1
- 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/DelayNode.js +11 -0
- package/lib/module/web-core/DelayNode.js.map +1 -0
- package/lib/module/web-core/IIRFilterNode.js +13 -0
- package/lib/module/web-core/IIRFilterNode.js.map +1 -0
- package/lib/module/web-core/OfflineAudioContext.js +20 -0
- package/lib/module/web-core/OfflineAudioContext.js.map +1 -1
- package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts +36 -0
- package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts.map +1 -0
- package/lib/typescript/AudioAPIModule/index.d.ts +2 -0
- package/lib/typescript/AudioAPIModule/index.d.ts.map +1 -0
- package/lib/typescript/api.d.ts +3 -9
- 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/AudioBufferBaseSourceNode.d.ts +1 -0
- package/lib/typescript/core/AudioBufferBaseSourceNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioBufferQueueSourceNode.d.ts +1 -1
- package/lib/typescript/core/AudioBufferQueueSourceNode.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/AudioNode.d.ts +2 -1
- package/lib/typescript/core/AudioNode.d.ts.map +1 -1
- package/lib/typescript/core/AudioParam.d.ts.map +1 -1
- package/lib/typescript/core/AudioRecorder.d.ts +13 -6
- package/lib/typescript/core/AudioRecorder.d.ts.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +9 -3
- 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/core/DelayNode.d.ts +9 -0
- package/lib/typescript/core/DelayNode.d.ts.map +1 -0
- package/lib/typescript/core/IIRFilterNode.d.ts +5 -0
- package/lib/typescript/core/IIRFilterNode.d.ts.map +1 -0
- package/lib/typescript/core/OfflineAudioContext.d.ts +1 -1
- package/lib/typescript/core/OfflineAudioContext.d.ts.map +1 -1
- package/lib/typescript/events/types.d.ts +4 -0
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +34 -34
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/plugin/withAudioAPI.d.ts +1 -0
- package/lib/typescript/plugin/withAudioAPI.d.ts.map +1 -1
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts +2 -1
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
- package/lib/typescript/system/AudioManager.d.ts +3 -2
- package/lib/typescript/system/AudioManager.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +42 -34
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/filePresets.d.ts +9 -0
- package/lib/typescript/utils/filePresets.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +1 -8
- package/lib/typescript/utils/index.d.ts.map +1 -1
- package/lib/typescript/web-core/AudioContext.d.ts +9 -2
- package/lib/typescript/web-core/AudioContext.d.ts.map +1 -1
- package/lib/typescript/web-core/BaseAudioContext.d.ts +7 -1
- 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/DelayNode.d.ts +8 -0
- package/lib/typescript/web-core/DelayNode.d.ts.map +1 -0
- package/lib/typescript/web-core/IIRFilterNode.d.ts +5 -0
- package/lib/typescript/web-core/IIRFilterNode.d.ts.map +1 -0
- package/lib/typescript/web-core/OfflineAudioContext.d.ts +8 -1
- package/lib/typescript/web-core/OfflineAudioContext.d.ts.map +1 -1
- package/package.json +11 -4
- package/scripts/download-prebuilt-binaries.sh +61 -0
- package/scripts/rnaa_utils.rb +8 -0
- package/scripts/validate-worklets-version.js +27 -0
- package/src/AudioAPIModule/AudioAPIModule.ts +122 -0
- package/src/AudioAPIModule/globals.d.ts +33 -0
- package/src/AudioAPIModule/index.ts +1 -0
- package/src/api.ts +4 -52
- package/src/api.web.ts +1 -0
- package/src/core/AudioBufferBaseSourceNode.ts +8 -0
- package/src/core/AudioBufferQueueSourceNode.ts +8 -2
- package/src/core/AudioContext.ts +5 -8
- package/src/core/AudioNode.ts +4 -3
- package/src/core/AudioParam.ts +18 -11
- package/src/core/AudioRecorder.ts +63 -78
- package/src/core/BaseAudioContext.ts +120 -54
- package/src/core/ConvolverNode.ts +35 -0
- package/src/core/DelayNode.ts +13 -0
- package/src/core/IIRFilterNode.ts +25 -0
- package/src/core/OfflineAudioContext.ts +4 -7
- package/src/events/types.ts +5 -0
- package/src/interfaces.ts +51 -34
- package/src/plugin/withAudioAPI.ts +61 -0
- package/src/specs/NativeAudioAPIModule.ts +3 -2
- package/src/system/AudioManager.ts +13 -19
- package/src/types.ts +45 -36
- package/src/utils/filePresets.ts +47 -0
- package/src/utils/index.ts +13 -19
- package/src/web-core/AudioContext.tsx +40 -1
- package/src/web-core/BaseAudioContext.tsx +11 -1
- package/src/web-core/ConvolverNode.tsx +43 -0
- package/src/web-core/ConvolverNodeOptions.tsx +6 -0
- package/src/web-core/DelayNode.tsx +12 -0
- package/src/web-core/IIRFilterNode.tsx +25 -0
- package/src/web-core/OfflineAudioContext.tsx +39 -0
- 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/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/miniaudioBackend/MiniAudioFileOptions.cpp +0 -47
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileOptions.h +0 -28
- 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.mm +0 -223
- 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/metro-config/index.d.ts +0 -5
- package/metro-config/index.js +0 -41
- package/metro-config/tsconfig.json +0 -3
- package/src/utils/bitEnums.ts +0 -51
- package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/Info.plist +5 -5
- package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64/libavcodec.framework/Info.plist +0 -0
- package/common/cpp/audioapi/external/{libavcodec.xcframework → ffmpeg_ios/libavcodec.xcframework}/ios-arm64_x86_64-simulator/libavcodec.framework/Info.plist +0 -0
- package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/Info.plist +0 -0
- package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64/libavformat.framework/Info.plist +0 -0
- package/common/cpp/audioapi/external/{libavformat.xcframework → ffmpeg_ios/libavformat.xcframework}/ios-arm64_x86_64-simulator/libavformat.framework/Info.plist +0 -0
- package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/Info.plist +5 -5
- package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64/libavutil.framework/Info.plist +0 -0
- package/common/cpp/audioapi/external/{libavutil.xcframework → ffmpeg_ios/libavutil.xcframework}/ios-arm64_x86_64-simulator/libavutil.framework/Info.plist +0 -0
- package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/Info.plist +5 -5
- /package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64/libswresample.framework/Info.plist +0 -0
- /package/common/cpp/audioapi/external/{libswresample.xcframework → ffmpeg_ios/libswresample.xcframework}/ios-arm64_x86_64-simulator/libswresample.framework/Info.plist +0 -0
package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.cpp
CHANGED
|
@@ -1,30 +1,51 @@
|
|
|
1
1
|
#include <android/log.h>
|
|
2
2
|
#include <audioapi/android/core/utils/AndroidFileWriterBackend.h>
|
|
3
|
-
#include <audioapi/android/core/utils/
|
|
3
|
+
#include <audioapi/android/core/utils/FileOptions.h>
|
|
4
4
|
#include <audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h>
|
|
5
5
|
#include <audioapi/libs/miniaudio/miniaudio.h>
|
|
6
|
+
#include <audioapi/utils/AudioFileProperties.h>
|
|
7
|
+
#include <audioapi/utils/UnitConversion.h>
|
|
6
8
|
|
|
7
|
-
|
|
9
|
+
#include <cstdio>
|
|
10
|
+
#include <memory>
|
|
11
|
+
#include <string>
|
|
8
12
|
|
|
9
13
|
namespace audioapi {
|
|
10
14
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
/// @brief Get the encoding format based on the audio file properties (only WAV supported).
|
|
16
|
+
// Currently, miniaudio supports only WAV encoding, but out of convenience
|
|
17
|
+
// or potential future shenanigans, we keep this as a separate function.
|
|
18
|
+
inline ma_encoding_format getFormat(const std::shared_ptr<AudioFileProperties> &properties) {
|
|
19
|
+
return ma_encoding_format_wav;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/// @brief Get the data format based on the bit depth.
|
|
23
|
+
/// @param properties The audio file properties.
|
|
24
|
+
/// @return The corresponding ma_format.
|
|
25
|
+
inline ma_format getDataFormat(const std::shared_ptr<AudioFileProperties> &properties) {
|
|
26
|
+
switch (properties->bitDepth) {
|
|
27
|
+
case AudioFileProperties::BitDepth::Bit16:
|
|
28
|
+
return ma_format_s16;
|
|
29
|
+
|
|
30
|
+
case AudioFileProperties::BitDepth::Bit24:
|
|
31
|
+
return ma_format_s24;
|
|
32
|
+
|
|
33
|
+
case AudioFileProperties::BitDepth::Bit32:
|
|
34
|
+
return ma_format_f32;
|
|
35
|
+
|
|
36
|
+
default:
|
|
37
|
+
return ma_format_f32;
|
|
38
|
+
}
|
|
23
39
|
}
|
|
24
40
|
|
|
41
|
+
MiniAudioFileWriter::MiniAudioFileWriter(
|
|
42
|
+
const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry,
|
|
43
|
+
const std::shared_ptr<AudioFileProperties> &fileProperties)
|
|
44
|
+
: AndroidFileWriterBackend(audioEventHandlerRegistry, fileProperties) {}
|
|
45
|
+
|
|
25
46
|
MiniAudioFileWriter::~MiniAudioFileWriter() {
|
|
26
|
-
isFileOpen_.store(false);
|
|
27
|
-
|
|
47
|
+
isFileOpen_.store(false, std::memory_order_release);
|
|
48
|
+
fileProperties_.reset();
|
|
28
49
|
|
|
29
50
|
if (encoder_ != nullptr) {
|
|
30
51
|
ma_encoder_uninit(encoder_.get());
|
|
@@ -43,43 +64,59 @@ MiniAudioFileWriter::~MiniAudioFileWriter() {
|
|
|
43
64
|
}
|
|
44
65
|
}
|
|
45
66
|
|
|
46
|
-
|
|
47
|
-
|
|
67
|
+
/// @brief Opens the audio file for writing.
|
|
68
|
+
/// This method initializes the audio converter and encoder together with any
|
|
69
|
+
/// necessary buffers required during the writing process.
|
|
70
|
+
/// this method should be called only on the JS thread.
|
|
71
|
+
/// @param streamSampleRate The sample rate of the incoming audio stream.
|
|
72
|
+
/// @param streamChannelCount The channel count of the incoming audio stream.
|
|
73
|
+
/// @param streamMaxBufferSize The maximum buffer size of the incoming audio stream.
|
|
74
|
+
/// @return The status of the file opening operation.
|
|
75
|
+
OpenFileResult MiniAudioFileWriter::openFile(
|
|
76
|
+
float streamSampleRate,
|
|
48
77
|
int32_t streamChannelCount,
|
|
49
78
|
int32_t streamMaxBufferSize) {
|
|
50
79
|
streamSampleRate_ = streamSampleRate;
|
|
51
80
|
streamChannelCount_ = streamChannelCount;
|
|
52
81
|
streamMaxBufferSize_ = streamMaxBufferSize;
|
|
53
|
-
|
|
82
|
+
ma_result result;
|
|
83
|
+
framesWritten_.store(0, std::memory_order_release);
|
|
54
84
|
|
|
55
85
|
isConverterRequired_.store(
|
|
56
|
-
(streamSampleRate_ !=
|
|
57
|
-
|
|
58
|
-
|
|
86
|
+
(streamSampleRate_ != fileProperties_->sampleRate) ||
|
|
87
|
+
(streamChannelCount_ != fileProperties_->channelCount) ||
|
|
88
|
+
(getDataFormat(fileProperties_) != ma_format_f32),
|
|
89
|
+
std::memory_order_release);
|
|
59
90
|
|
|
60
|
-
|
|
91
|
+
result = initializeConverterIfNeeded();
|
|
61
92
|
|
|
62
|
-
if (
|
|
63
|
-
return
|
|
93
|
+
if (result != MA_SUCCESS) {
|
|
94
|
+
return OpenFileResult ::Err(
|
|
95
|
+
"Failed to initialize converter" + std::string(ma_result_description(result)));
|
|
64
96
|
}
|
|
65
97
|
|
|
66
|
-
|
|
98
|
+
result = initializeEncoder();
|
|
67
99
|
|
|
68
|
-
if (
|
|
69
|
-
return
|
|
100
|
+
if (result != MA_SUCCESS) {
|
|
101
|
+
return OpenFileResult ::Err(
|
|
102
|
+
"Failed to initialize encoder" + std::string(ma_result_description(result)));
|
|
70
103
|
}
|
|
71
104
|
|
|
72
|
-
isFileOpen_.store(true);
|
|
73
|
-
|
|
74
|
-
return filePath_;
|
|
105
|
+
isFileOpen_.store(true, std::memory_order_release);
|
|
106
|
+
return OpenFileResult ::Ok(filePath_);
|
|
75
107
|
}
|
|
76
108
|
|
|
77
|
-
|
|
109
|
+
/// @brief Closes the audio file.
|
|
110
|
+
/// This method finalizes the writing process, releases resources,
|
|
111
|
+
/// and retrieves the duration and size of the written audio file.
|
|
112
|
+
/// It should be called only on the JS thread.
|
|
113
|
+
/// @return The status of the file closing operation.
|
|
114
|
+
CloseFileResult MiniAudioFileWriter::closeFile() {
|
|
78
115
|
if (!isFileOpen()) {
|
|
79
|
-
return
|
|
116
|
+
return CloseFileResult ::Err("File is not open");
|
|
80
117
|
}
|
|
81
118
|
|
|
82
|
-
isFileOpen_.store(false);
|
|
119
|
+
isFileOpen_.store(false, std::memory_order_release);
|
|
83
120
|
|
|
84
121
|
if (encoder_ != nullptr) {
|
|
85
122
|
ma_encoder_uninit(encoder_.get());
|
|
@@ -107,10 +144,8 @@ std::tuple<double, double> MiniAudioFileWriter::closeFile() {
|
|
|
107
144
|
if (ma_decoder_init_file(filePath_.c_str(), NULL, &decoder) == MA_SUCCESS) {
|
|
108
145
|
ma_uint64 frameCount = 0;
|
|
109
146
|
|
|
110
|
-
if (ma_decoder_get_length_in_pcm_frames(&decoder, &frameCount) ==
|
|
111
|
-
|
|
112
|
-
durationInSeconds =
|
|
113
|
-
static_cast<double>(frameCount) / decoder.outputSampleRate;
|
|
147
|
+
if (ma_decoder_get_length_in_pcm_frames(&decoder, &frameCount) == MA_SUCCESS) {
|
|
148
|
+
durationInSeconds = static_cast<double>(frameCount) / decoder.outputSampleRate;
|
|
114
149
|
}
|
|
115
150
|
|
|
116
151
|
ma_decoder_uninit(&decoder);
|
|
@@ -120,15 +155,22 @@ std::tuple<double, double> MiniAudioFileWriter::closeFile() {
|
|
|
120
155
|
|
|
121
156
|
if (file != nullptr) {
|
|
122
157
|
fseek(file, 0, SEEK_END);
|
|
123
|
-
|
|
158
|
+
uint64_t fileSizeInBytes = ftell(file);
|
|
124
159
|
fclose(file);
|
|
125
|
-
fileSizeInMB = static_cast<double>(fileSizeInBytes) /
|
|
160
|
+
fileSizeInMB = static_cast<double>(fileSizeInBytes) / MB_IN_BYTES;
|
|
126
161
|
}
|
|
127
162
|
|
|
128
163
|
filePath_ = "";
|
|
129
|
-
return {fileSizeInMB, durationInSeconds};
|
|
164
|
+
return CloseFileResult ::Ok({fileSizeInMB, durationInSeconds});
|
|
130
165
|
}
|
|
131
166
|
|
|
167
|
+
/// @brief Writes audio data to the file.
|
|
168
|
+
/// If possible (sample format, channel count, and interleaving matches),
|
|
169
|
+
/// the data is written directly, otherwise in-memory conversion is performed first
|
|
170
|
+
/// It should be called only on the audio thread.
|
|
171
|
+
/// @param data Pointer to the audio data buffer. (Interleaved float32 format - as oboe likes it)
|
|
172
|
+
/// @param numFrames Number of audio frames to write.
|
|
173
|
+
/// @return True if the write operation was successful, false otherwise.
|
|
132
174
|
bool MiniAudioFileWriter::writeAudioData(void *data, int numFrames) {
|
|
133
175
|
ma_uint64 framesWritten = 0;
|
|
134
176
|
ma_result result;
|
|
@@ -138,25 +180,16 @@ bool MiniAudioFileWriter::writeAudioData(void *data, int numFrames) {
|
|
|
138
180
|
}
|
|
139
181
|
|
|
140
182
|
if (!isConverterRequired()) {
|
|
141
|
-
result = ma_encoder_write_pcm_frames(
|
|
142
|
-
encoder_.get(), data, numFrames, &framesWritten);
|
|
143
|
-
|
|
144
|
-
__android_log_print(
|
|
145
|
-
ANDROID_LOG_DEBUG,
|
|
146
|
-
"MiniAudioFileWriter",
|
|
147
|
-
"Writing %llu frames without conversion to file: %s",
|
|
148
|
-
framesWritten,
|
|
149
|
-
filePath_.c_str());
|
|
183
|
+
result = ma_encoder_write_pcm_frames(encoder_.get(), data, numFrames, &framesWritten);
|
|
150
184
|
|
|
151
185
|
if (result != MA_SUCCESS) {
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
filePath_.c_str());
|
|
186
|
+
invokeOnErrorCallback(
|
|
187
|
+
"Failed to write audio data to file: " + filePath_ +
|
|
188
|
+
std::string(ma_result_description(result)));
|
|
189
|
+
return false;
|
|
157
190
|
}
|
|
158
191
|
|
|
159
|
-
framesWritten_.fetch_add(numFrames);
|
|
192
|
+
framesWritten_.fetch_add(numFrames, std::memory_order_acq_rel);
|
|
160
193
|
return result == MA_SUCCESS;
|
|
161
194
|
}
|
|
162
195
|
|
|
@@ -166,17 +199,20 @@ bool MiniAudioFileWriter::writeAudioData(void *data, int numFrames) {
|
|
|
166
199
|
encoder_.get(), processingBuffer_, convertedFrameCount, &framesWritten);
|
|
167
200
|
|
|
168
201
|
if (result != MA_SUCCESS) {
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
filePath_.c_str());
|
|
202
|
+
invokeOnErrorCallback(
|
|
203
|
+
"Failed to write converted audio data to file: " + filePath_ +
|
|
204
|
+
std::string(ma_result_description(result)));
|
|
205
|
+
return false;
|
|
174
206
|
}
|
|
175
207
|
|
|
176
|
-
framesWritten_.fetch_add(numFrames);
|
|
208
|
+
framesWritten_.fetch_add(numFrames, std::memory_order_acq_rel);
|
|
177
209
|
return result == MA_SUCCESS;
|
|
178
210
|
}
|
|
179
211
|
|
|
212
|
+
/// @brief Converts the audio data buffer if necessary.
|
|
213
|
+
/// @param data Pointer to the audio data buffer.
|
|
214
|
+
/// @param numFrames Number of audio frames to convert.
|
|
215
|
+
/// @return The number of frames after conversion.
|
|
180
216
|
ma_uint64 MiniAudioFileWriter::convertBuffer(void *data, int numFrames) {
|
|
181
217
|
ma_uint64 inputFrameCount = numFrames;
|
|
182
218
|
ma_uint64 outputFrameCount = 0;
|
|
@@ -185,85 +221,77 @@ ma_uint64 MiniAudioFileWriter::convertBuffer(void *data, int numFrames) {
|
|
|
185
221
|
converter_.get(), inputFrameCount, &outputFrameCount);
|
|
186
222
|
|
|
187
223
|
ma_data_converter_process_pcm_frames(
|
|
188
|
-
converter_.get(),
|
|
189
|
-
data,
|
|
190
|
-
&inputFrameCount,
|
|
191
|
-
processingBuffer_,
|
|
192
|
-
&outputFrameCount);
|
|
224
|
+
converter_.get(), data, &inputFrameCount, processingBuffer_, &outputFrameCount);
|
|
193
225
|
|
|
194
226
|
return outputFrameCount;
|
|
195
227
|
}
|
|
196
228
|
|
|
197
|
-
|
|
229
|
+
/// @brief Initializes the data converter if needed.
|
|
230
|
+
/// This method sets up the data converter and allocates, so it should be called
|
|
231
|
+
/// only on the JS thread. (during file opening)
|
|
232
|
+
/// @return MA_SUCCESS if initialization was successful, otherwise an error code.
|
|
233
|
+
ma_result MiniAudioFileWriter::initializeConverterIfNeeded() {
|
|
198
234
|
if (!isConverterRequired_) {
|
|
199
|
-
return
|
|
235
|
+
return MA_SUCCESS;
|
|
200
236
|
}
|
|
201
237
|
|
|
202
238
|
ma_result result;
|
|
239
|
+
ma_format dataFormat = getDataFormat(fileProperties_);
|
|
203
240
|
|
|
204
241
|
ma_data_converter_config converterConfig = ma_data_converter_config_init(
|
|
205
242
|
ma_format_f32,
|
|
206
|
-
|
|
243
|
+
dataFormat,
|
|
207
244
|
streamChannelCount_,
|
|
208
|
-
|
|
209
|
-
streamSampleRate_,
|
|
210
|
-
|
|
245
|
+
fileProperties_->channelCount,
|
|
246
|
+
static_cast<int32_t>(streamSampleRate_),
|
|
247
|
+
fileProperties_->sampleRate);
|
|
211
248
|
|
|
212
249
|
converter_ = std::make_unique<ma_data_converter>();
|
|
213
250
|
result = ma_data_converter_init(&converterConfig, NULL, converter_.get());
|
|
214
251
|
|
|
215
252
|
if (result != MA_SUCCESS) {
|
|
216
|
-
|
|
217
|
-
ANDROID_LOG_ERROR,
|
|
218
|
-
"MiniAudioFileWriter",
|
|
219
|
-
"Failed to initialize miniaudio data converter for file: %s",
|
|
220
|
-
filePath_.c_str());
|
|
221
|
-
return false;
|
|
253
|
+
return result;
|
|
222
254
|
}
|
|
223
255
|
|
|
224
256
|
ma_data_converter_get_expected_output_frame_count(
|
|
225
257
|
converter_.get(), streamMaxBufferSize_, &processingBufferLength_);
|
|
226
258
|
|
|
227
259
|
processingBuffer_ = ma_malloc(
|
|
228
|
-
processingBufferLength_ *
|
|
229
|
-
ma_get_bytes_per_sample(fileOptions_->getDataFormat()),
|
|
260
|
+
processingBufferLength_ * fileProperties_->channelCount * ma_get_bytes_per_sample(dataFormat),
|
|
230
261
|
NULL);
|
|
231
262
|
|
|
232
|
-
return
|
|
263
|
+
return MA_SUCCESS;
|
|
233
264
|
}
|
|
234
265
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
266
|
+
/// @brief Initializes the audio encoder.
|
|
267
|
+
/// This method sets up the audio encoder for writing to the file,
|
|
268
|
+
/// it should be called only on the JS thread. (during file opening)
|
|
269
|
+
/// @return MA_SUCCESS if initialization was successful, otherwise an error code.
|
|
270
|
+
ma_result MiniAudioFileWriter::initializeEncoder() {
|
|
238
271
|
ma_result result;
|
|
272
|
+
Result<std::string, std::string> filePathResult =
|
|
273
|
+
android::fileoptions::getFilePath(fileProperties_);
|
|
274
|
+
|
|
275
|
+
if (!filePathResult.is_ok()) {
|
|
276
|
+
return MA_ERROR;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
filePath_ = filePathResult.unwrap();
|
|
239
280
|
|
|
240
281
|
ma_encoder_config config = ma_encoder_config_init(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
282
|
+
getFormat(fileProperties_),
|
|
283
|
+
getDataFormat(fileProperties_),
|
|
284
|
+
fileProperties_->channelCount,
|
|
285
|
+
fileProperties_->sampleRate);
|
|
245
286
|
|
|
246
287
|
encoder_ = std::make_unique<ma_encoder>();
|
|
247
288
|
result = ma_encoder_init_file(filePath_.c_str(), &config, encoder_.get());
|
|
248
289
|
|
|
249
|
-
|
|
250
|
-
__android_log_print(
|
|
251
|
-
ANDROID_LOG_ERROR,
|
|
252
|
-
"MiniAudioFileWriter",
|
|
253
|
-
"Failed to initialize miniaudio encoder for file: %s",
|
|
254
|
-
filePath_.c_str());
|
|
255
|
-
return false;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
return true;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
bool MiniAudioFileWriter::isFileOpen() {
|
|
262
|
-
return isFileOpen_.load();
|
|
290
|
+
return result;
|
|
263
291
|
}
|
|
264
292
|
|
|
265
293
|
bool MiniAudioFileWriter::isConverterRequired() {
|
|
266
|
-
return isConverterRequired_.load();
|
|
294
|
+
return isConverterRequired_.load(std::memory_order_acquire);
|
|
267
295
|
}
|
|
268
296
|
|
|
269
297
|
} // namespace audioapi
|
package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h
CHANGED
|
@@ -9,26 +9,19 @@
|
|
|
9
9
|
|
|
10
10
|
namespace audioapi {
|
|
11
11
|
|
|
12
|
-
class MiniAudioFileOptions;
|
|
13
|
-
|
|
14
12
|
class MiniAudioFileWriter : public AndroidFileWriterBackend {
|
|
15
13
|
public:
|
|
16
|
-
MiniAudioFileWriter(
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
size_t androidFlags);
|
|
21
|
-
~MiniAudioFileWriter() override;
|
|
14
|
+
explicit MiniAudioFileWriter(
|
|
15
|
+
const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry,
|
|
16
|
+
const std::shared_ptr<AudioFileProperties> &fileProperties);
|
|
17
|
+
~MiniAudioFileWriter();
|
|
22
18
|
|
|
23
|
-
|
|
24
|
-
|
|
19
|
+
OpenFileResult openFile(float streamSampleRate, int32_t streamChannelCount, int32_t streamMaxBufferSize) override;
|
|
20
|
+
CloseFileResult closeFile() override;
|
|
25
21
|
|
|
26
22
|
bool writeAudioData(void *data, int numFrames) override;
|
|
27
23
|
|
|
28
24
|
private:
|
|
29
|
-
std::shared_ptr<MiniAudioFileOptions> fileOptions_;
|
|
30
|
-
|
|
31
|
-
std::atomic<bool> isFileOpen_{false};
|
|
32
25
|
std::atomic<bool> isConverterRequired_{false};
|
|
33
26
|
|
|
34
27
|
std::unique_ptr<ma_encoder> encoder_{nullptr};
|
|
@@ -36,11 +29,10 @@ class MiniAudioFileWriter : public AndroidFileWriterBackend {
|
|
|
36
29
|
void *processingBuffer_{nullptr};
|
|
37
30
|
ma_uint64 processingBufferLength_{0};
|
|
38
31
|
|
|
39
|
-
|
|
40
|
-
|
|
32
|
+
ma_result initializeConverterIfNeeded();
|
|
33
|
+
ma_result initializeEncoder();
|
|
41
34
|
ma_uint64 convertBuffer(void *data, int numFrames);
|
|
42
35
|
|
|
43
|
-
bool isFileOpen();
|
|
44
36
|
bool isConverterRequired();
|
|
45
37
|
};
|
|
46
38
|
|
|
@@ -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
|
|
@@ -17,7 +18,8 @@ import java.lang.ref.WeakReference
|
|
|
17
18
|
@ReactModule(name = AudioAPIModule.NAME)
|
|
18
19
|
class AudioAPIModule(
|
|
19
20
|
reactContext: ReactApplicationContext,
|
|
20
|
-
) : NativeAudioAPIModuleSpec(reactContext)
|
|
21
|
+
) : NativeAudioAPIModuleSpec(reactContext),
|
|
22
|
+
LifecycleEventListener {
|
|
21
23
|
companion object {
|
|
22
24
|
const val NAME = NativeAudioAPIModuleSpec.NAME
|
|
23
25
|
}
|
|
@@ -66,6 +68,27 @@ class AudioAPIModule(
|
|
|
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
|
+
// do nothing
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
override fun initialize() {
|
|
84
|
+
reactContext.get()?.addLifecycleEventListener(this)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
override fun invalidate() {
|
|
88
|
+
reactContext.get()?.removeLifecycleEventListener(this)
|
|
89
|
+
// think about cleaning up resources, singletons etc.
|
|
90
|
+
}
|
|
91
|
+
|
|
69
92
|
override fun getDevicePreferredSampleRate(): Double = MediaSessionManager.getDevicePreferredSampleRate()
|
|
70
93
|
|
|
71
94
|
override fun setAudioSessionActivity(
|
|
@@ -84,6 +107,10 @@ class AudioAPIModule(
|
|
|
84
107
|
// noting to do here
|
|
85
108
|
}
|
|
86
109
|
|
|
110
|
+
override fun disableSessionManagement() {
|
|
111
|
+
// nothing to do here
|
|
112
|
+
}
|
|
113
|
+
|
|
87
114
|
override fun setLockScreenInfo(info: ReadableMap?) {
|
|
88
115
|
MediaSessionManager.setLockScreenInfo(info)
|
|
89
116
|
}
|
|
@@ -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
|
|
|
@@ -157,6 +155,7 @@ class LockScreenManager(
|
|
|
157
155
|
"state_playing" -> {
|
|
158
156
|
this.playbackState = PlaybackStateCompat.STATE_PLAYING
|
|
159
157
|
}
|
|
158
|
+
|
|
160
159
|
"state_paused" -> {
|
|
161
160
|
this.playbackState = PlaybackStateCompat.STATE_PAUSED
|
|
162
161
|
}
|
|
@@ -174,8 +173,31 @@ class LockScreenManager(
|
|
|
174
173
|
if (artworkThread != null && artworkThread!!.isAlive) artworkThread!!.interrupt()
|
|
175
174
|
artworkThread = null
|
|
176
175
|
|
|
177
|
-
|
|
176
|
+
title = null
|
|
177
|
+
artist = null
|
|
178
|
+
album = null
|
|
179
|
+
description = null
|
|
180
|
+
duration = 0L
|
|
181
|
+
speed = 1.0F
|
|
182
|
+
elapsedTime = 0L
|
|
183
|
+
artwork = null
|
|
184
|
+
playbackState = PlaybackStateCompat.STATE_PAUSED
|
|
185
|
+
isPlaying = false
|
|
186
|
+
|
|
187
|
+
val emptyMetadata = MediaMetadataCompat.Builder().build()
|
|
188
|
+
mediaSession.get()?.setMetadata(emptyMetadata)
|
|
189
|
+
|
|
190
|
+
pb.setState(PlaybackStateCompat.STATE_NONE, 0, 0f)
|
|
191
|
+
pb.setActions(controls)
|
|
192
|
+
state = pb.build()
|
|
193
|
+
mediaSession.get()?.setPlaybackState(state)
|
|
178
194
|
mediaSession.get()?.setActive(false)
|
|
195
|
+
|
|
196
|
+
nb.setContentTitle("")
|
|
197
|
+
nb.setContentText("")
|
|
198
|
+
nb.setContentInfo("")
|
|
199
|
+
|
|
200
|
+
mediaNotificationManager.get()?.updateNotification(nb, isPlaying)
|
|
179
201
|
}
|
|
180
202
|
|
|
181
203
|
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
|
}
|
|
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
|
|
@@ -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);
|