react-native-audio-api 0.11.0-alpha.0 → 0.11.0-alpha.2
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 +257 -74
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +33 -19
- package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +13 -20
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidFileWriterBackend.h +15 -15
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +170 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +46 -0
- 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 +381 -302
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/FFmpegFileWriter.h +49 -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 +155 -95
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +9 -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 +109 -44
- package/common/cpp/audioapi/HostObjects/inputs/AudioRecorderHostObject.h +8 -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 +31 -108
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +46 -46
- 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 +28 -11
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +229 -44
- package/ios/audioapi/ios/core/NativeAudioPlayer.m +16 -13
- package/ios/audioapi/ios/core/NativeAudioRecorder.h +6 -3
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +67 -6
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +22 -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/utils/IOSFileWriter.h +53 -0
- package/ios/audioapi/ios/core/utils/IOSFileWriter.mm +224 -0
- package/ios/audioapi/ios/core/utils/IOSRecorderCallback.h +47 -0
- 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 +56 -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 +57 -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 +16 -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 +36 -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 +43 -30
- 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 +86 -84
- 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 +55 -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 +47 -32
- 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 -35
- package/ios/audioapi/ios/core/IOSAudioFileOptions.mm +0 -135
- package/ios/audioapi/ios/core/IOSAudioFileWriter.h +0 -38
- package/ios/audioapi/ios/core/IOSAudioFileWriter.mm +0 -187
- 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,28 +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>
|
|
8
|
+
|
|
9
|
+
#include <cstdio>
|
|
10
|
+
#include <memory>
|
|
11
|
+
#include <string>
|
|
6
12
|
|
|
7
13
|
namespace audioapi {
|
|
8
14
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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
|
+
}
|
|
21
39
|
}
|
|
22
40
|
|
|
41
|
+
MiniAudioFileWriter::MiniAudioFileWriter(
|
|
42
|
+
const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry,
|
|
43
|
+
const std::shared_ptr<AudioFileProperties> &fileProperties)
|
|
44
|
+
: AndroidFileWriterBackend(audioEventHandlerRegistry, fileProperties) {}
|
|
45
|
+
|
|
23
46
|
MiniAudioFileWriter::~MiniAudioFileWriter() {
|
|
24
|
-
isFileOpen_.store(false);
|
|
25
|
-
|
|
47
|
+
isFileOpen_.store(false, std::memory_order_release);
|
|
48
|
+
fileProperties_.reset();
|
|
26
49
|
|
|
27
50
|
if (encoder_ != nullptr) {
|
|
28
51
|
ma_encoder_uninit(encoder_.get());
|
|
@@ -41,41 +64,59 @@ MiniAudioFileWriter::~MiniAudioFileWriter() {
|
|
|
41
64
|
}
|
|
42
65
|
}
|
|
43
66
|
|
|
44
|
-
|
|
45
|
-
|
|
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,
|
|
46
77
|
int32_t streamChannelCount,
|
|
47
78
|
int32_t streamMaxBufferSize) {
|
|
48
79
|
streamSampleRate_ = streamSampleRate;
|
|
49
80
|
streamChannelCount_ = streamChannelCount;
|
|
50
81
|
streamMaxBufferSize_ = streamMaxBufferSize;
|
|
51
|
-
|
|
82
|
+
ma_result result;
|
|
83
|
+
framesWritten_.store(0, std::memory_order_release);
|
|
52
84
|
|
|
53
85
|
isConverterRequired_.store(
|
|
54
|
-
(streamSampleRate_ !=
|
|
55
|
-
|
|
56
|
-
|
|
86
|
+
(streamSampleRate_ != fileProperties_->sampleRate) ||
|
|
87
|
+
(streamChannelCount_ != fileProperties_->channelCount) ||
|
|
88
|
+
(getDataFormat(fileProperties_) != ma_format_f32),
|
|
89
|
+
std::memory_order_release);
|
|
57
90
|
|
|
58
|
-
|
|
91
|
+
result = initializeConverterIfNeeded();
|
|
59
92
|
|
|
60
|
-
if (
|
|
61
|
-
return
|
|
93
|
+
if (result != MA_SUCCESS) {
|
|
94
|
+
return OpenFileResult ::Err(
|
|
95
|
+
"Failed to initialize converter" + std::string(ma_result_description(result)));
|
|
62
96
|
}
|
|
63
97
|
|
|
64
|
-
|
|
98
|
+
result = initializeEncoder();
|
|
65
99
|
|
|
66
|
-
if (
|
|
67
|
-
return
|
|
100
|
+
if (result != MA_SUCCESS) {
|
|
101
|
+
return OpenFileResult ::Err(
|
|
102
|
+
"Failed to initialize encoder" + std::string(ma_result_description(result)));
|
|
68
103
|
}
|
|
69
104
|
|
|
70
|
-
isFileOpen_.store(true);
|
|
105
|
+
isFileOpen_.store(true, std::memory_order_release);
|
|
106
|
+
return OpenFileResult ::Ok(filePath_);
|
|
71
107
|
}
|
|
72
108
|
|
|
73
|
-
|
|
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() {
|
|
74
115
|
if (!isFileOpen()) {
|
|
75
|
-
return "";
|
|
116
|
+
return CloseFileResult ::Err("File is not open");
|
|
76
117
|
}
|
|
77
118
|
|
|
78
|
-
isFileOpen_.store(false);
|
|
119
|
+
isFileOpen_.store(false, std::memory_order_release);
|
|
79
120
|
|
|
80
121
|
if (encoder_ != nullptr) {
|
|
81
122
|
ma_encoder_uninit(encoder_.get());
|
|
@@ -93,12 +134,43 @@ std::string MiniAudioFileWriter::closeFile() {
|
|
|
93
134
|
processingBufferLength_ = 0;
|
|
94
135
|
}
|
|
95
136
|
|
|
96
|
-
|
|
97
|
-
|
|
137
|
+
// Retrieve duration and file size
|
|
138
|
+
std::string filePath = filePath_;
|
|
139
|
+
double durationInSeconds = 0.0;
|
|
140
|
+
double fileSizeInMB = 0.0;
|
|
141
|
+
|
|
142
|
+
ma_decoder decoder;
|
|
98
143
|
|
|
99
|
-
|
|
144
|
+
if (ma_decoder_init_file(filePath_.c_str(), NULL, &decoder) == MA_SUCCESS) {
|
|
145
|
+
ma_uint64 frameCount = 0;
|
|
146
|
+
|
|
147
|
+
if (ma_decoder_get_length_in_pcm_frames(&decoder, &frameCount) == MA_SUCCESS) {
|
|
148
|
+
durationInSeconds = static_cast<double>(frameCount) / decoder.outputSampleRate;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
ma_decoder_uninit(&decoder);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
FILE *file = fopen(filePath_.c_str(), "rb");
|
|
155
|
+
|
|
156
|
+
if (file != nullptr) {
|
|
157
|
+
fseek(file, 0, SEEK_END);
|
|
158
|
+
uint64_t fileSizeInBytes = ftell(file);
|
|
159
|
+
fclose(file);
|
|
160
|
+
fileSizeInMB = static_cast<double>(fileSizeInBytes) / MB_IN_BYTES;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
filePath_ = "";
|
|
164
|
+
return CloseFileResult ::Ok({fileSizeInMB, durationInSeconds});
|
|
100
165
|
}
|
|
101
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.
|
|
102
174
|
bool MiniAudioFileWriter::writeAudioData(void *data, int numFrames) {
|
|
103
175
|
ma_uint64 framesWritten = 0;
|
|
104
176
|
ma_result result;
|
|
@@ -108,24 +180,16 @@ bool MiniAudioFileWriter::writeAudioData(void *data, int numFrames) {
|
|
|
108
180
|
}
|
|
109
181
|
|
|
110
182
|
if (!isConverterRequired()) {
|
|
111
|
-
result = ma_encoder_write_pcm_frames(
|
|
112
|
-
encoder_.get(), data, numFrames, &framesWritten);
|
|
113
|
-
|
|
114
|
-
__android_log_print(
|
|
115
|
-
ANDROID_LOG_DEBUG,
|
|
116
|
-
"MiniAudioFileWriter",
|
|
117
|
-
"Writing %llu frames without conversion to file: %s",
|
|
118
|
-
framesWritten,
|
|
119
|
-
filePath_.c_str());
|
|
183
|
+
result = ma_encoder_write_pcm_frames(encoder_.get(), data, numFrames, &framesWritten);
|
|
120
184
|
|
|
121
185
|
if (result != MA_SUCCESS) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
filePath_.c_str());
|
|
186
|
+
invokeOnErrorCallback(
|
|
187
|
+
"Failed to write audio data to file: " + filePath_ +
|
|
188
|
+
std::string(ma_result_description(result)));
|
|
189
|
+
return false;
|
|
127
190
|
}
|
|
128
191
|
|
|
192
|
+
framesWritten_.fetch_add(numFrames, std::memory_order_acq_rel);
|
|
129
193
|
return result == MA_SUCCESS;
|
|
130
194
|
}
|
|
131
195
|
|
|
@@ -135,16 +199,20 @@ bool MiniAudioFileWriter::writeAudioData(void *data, int numFrames) {
|
|
|
135
199
|
encoder_.get(), processingBuffer_, convertedFrameCount, &framesWritten);
|
|
136
200
|
|
|
137
201
|
if (result != MA_SUCCESS) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
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;
|
|
143
206
|
}
|
|
144
207
|
|
|
208
|
+
framesWritten_.fetch_add(numFrames, std::memory_order_acq_rel);
|
|
145
209
|
return result == MA_SUCCESS;
|
|
146
210
|
}
|
|
147
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.
|
|
148
216
|
ma_uint64 MiniAudioFileWriter::convertBuffer(void *data, int numFrames) {
|
|
149
217
|
ma_uint64 inputFrameCount = numFrames;
|
|
150
218
|
ma_uint64 outputFrameCount = 0;
|
|
@@ -153,85 +221,77 @@ ma_uint64 MiniAudioFileWriter::convertBuffer(void *data, int numFrames) {
|
|
|
153
221
|
converter_.get(), inputFrameCount, &outputFrameCount);
|
|
154
222
|
|
|
155
223
|
ma_data_converter_process_pcm_frames(
|
|
156
|
-
converter_.get(),
|
|
157
|
-
data,
|
|
158
|
-
&inputFrameCount,
|
|
159
|
-
processingBuffer_,
|
|
160
|
-
&outputFrameCount);
|
|
224
|
+
converter_.get(), data, &inputFrameCount, processingBuffer_, &outputFrameCount);
|
|
161
225
|
|
|
162
226
|
return outputFrameCount;
|
|
163
227
|
}
|
|
164
228
|
|
|
165
|
-
|
|
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() {
|
|
166
234
|
if (!isConverterRequired_) {
|
|
167
|
-
return
|
|
235
|
+
return MA_SUCCESS;
|
|
168
236
|
}
|
|
169
237
|
|
|
170
238
|
ma_result result;
|
|
239
|
+
ma_format dataFormat = getDataFormat(fileProperties_);
|
|
171
240
|
|
|
172
241
|
ma_data_converter_config converterConfig = ma_data_converter_config_init(
|
|
173
242
|
ma_format_f32,
|
|
174
|
-
|
|
243
|
+
dataFormat,
|
|
175
244
|
streamChannelCount_,
|
|
176
|
-
|
|
177
|
-
streamSampleRate_,
|
|
178
|
-
|
|
245
|
+
fileProperties_->channelCount,
|
|
246
|
+
static_cast<int32_t>(streamSampleRate_),
|
|
247
|
+
fileProperties_->sampleRate);
|
|
179
248
|
|
|
180
249
|
converter_ = std::make_unique<ma_data_converter>();
|
|
181
250
|
result = ma_data_converter_init(&converterConfig, NULL, converter_.get());
|
|
182
251
|
|
|
183
252
|
if (result != MA_SUCCESS) {
|
|
184
|
-
|
|
185
|
-
ANDROID_LOG_ERROR,
|
|
186
|
-
"MiniAudioFileWriter",
|
|
187
|
-
"Failed to initialize miniaudio data converter for file: %s",
|
|
188
|
-
filePath_.c_str());
|
|
189
|
-
return false;
|
|
253
|
+
return result;
|
|
190
254
|
}
|
|
191
255
|
|
|
192
256
|
ma_data_converter_get_expected_output_frame_count(
|
|
193
257
|
converter_.get(), streamMaxBufferSize_, &processingBufferLength_);
|
|
194
258
|
|
|
195
259
|
processingBuffer_ = ma_malloc(
|
|
196
|
-
processingBufferLength_ *
|
|
197
|
-
ma_get_bytes_per_sample(fileOptions_->getDataFormat()),
|
|
260
|
+
processingBufferLength_ * fileProperties_->channelCount * ma_get_bytes_per_sample(dataFormat),
|
|
198
261
|
NULL);
|
|
199
262
|
|
|
200
|
-
return
|
|
263
|
+
return MA_SUCCESS;
|
|
201
264
|
}
|
|
202
265
|
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
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() {
|
|
206
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();
|
|
207
280
|
|
|
208
281
|
ma_encoder_config config = ma_encoder_config_init(
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
282
|
+
getFormat(fileProperties_),
|
|
283
|
+
getDataFormat(fileProperties_),
|
|
284
|
+
fileProperties_->channelCount,
|
|
285
|
+
fileProperties_->sampleRate);
|
|
213
286
|
|
|
214
287
|
encoder_ = std::make_unique<ma_encoder>();
|
|
215
288
|
result = ma_encoder_init_file(filePath_.c_str(), &config, encoder_.get());
|
|
216
289
|
|
|
217
|
-
|
|
218
|
-
__android_log_print(
|
|
219
|
-
ANDROID_LOG_ERROR,
|
|
220
|
-
"MiniAudioFileWriter",
|
|
221
|
-
"Failed to initialize miniaudio encoder for file: %s",
|
|
222
|
-
filePath_.c_str());
|
|
223
|
-
return false;
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
return true;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
bool MiniAudioFileWriter::isFileOpen() {
|
|
230
|
-
return isFileOpen_.load();
|
|
290
|
+
return result;
|
|
231
291
|
}
|
|
232
292
|
|
|
233
293
|
bool MiniAudioFileWriter::isConverterRequired() {
|
|
234
|
-
return isConverterRequired_.load();
|
|
294
|
+
return isConverterRequired_.load(std::memory_order_acquire);
|
|
235
295
|
}
|
|
236
296
|
|
|
237
297
|
} // namespace audioapi
|
package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h
CHANGED
|
@@ -5,29 +5,23 @@
|
|
|
5
5
|
|
|
6
6
|
#include <string>
|
|
7
7
|
#include <memory>
|
|
8
|
+
#include <tuple>
|
|
8
9
|
|
|
9
10
|
namespace audioapi {
|
|
10
11
|
|
|
11
|
-
class MiniAudioFileOptions;
|
|
12
|
-
|
|
13
12
|
class MiniAudioFileWriter : public AndroidFileWriterBackend {
|
|
14
13
|
public:
|
|
15
|
-
MiniAudioFileWriter(
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
size_t androidFlags);
|
|
20
|
-
~MiniAudioFileWriter() override;
|
|
14
|
+
explicit MiniAudioFileWriter(
|
|
15
|
+
const std::shared_ptr<AudioEventHandlerRegistry> &audioEventHandlerRegistry,
|
|
16
|
+
const std::shared_ptr<AudioFileProperties> &fileProperties);
|
|
17
|
+
~MiniAudioFileWriter();
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
19
|
+
OpenFileResult openFile(float streamSampleRate, int32_t streamChannelCount, int32_t streamMaxBufferSize) override;
|
|
20
|
+
CloseFileResult closeFile() override;
|
|
24
21
|
|
|
25
22
|
bool writeAudioData(void *data, int numFrames) override;
|
|
26
23
|
|
|
27
24
|
private:
|
|
28
|
-
std::shared_ptr<MiniAudioFileOptions> fileOptions_;
|
|
29
|
-
|
|
30
|
-
std::atomic<bool> isFileOpen_{false};
|
|
31
25
|
std::atomic<bool> isConverterRequired_{false};
|
|
32
26
|
|
|
33
27
|
std::unique_ptr<ma_encoder> encoder_{nullptr};
|
|
@@ -35,11 +29,10 @@ class MiniAudioFileWriter : public AndroidFileWriterBackend {
|
|
|
35
29
|
void *processingBuffer_{nullptr};
|
|
36
30
|
ma_uint64 processingBufferLength_{0};
|
|
37
31
|
|
|
38
|
-
|
|
39
|
-
|
|
32
|
+
ma_result initializeConverterIfNeeded();
|
|
33
|
+
ma_result initializeEncoder();
|
|
40
34
|
ma_uint64 convertBuffer(void *data, int numFrames);
|
|
41
35
|
|
|
42
|
-
bool isFileOpen();
|
|
43
36
|
bool isConverterRequired();
|
|
44
37
|
};
|
|
45
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);
|