react-native-audio-api 0.11.0-alpha.0 → 0.11.0-alpha.10
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 +353 -74
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.h +32 -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 +46 -58
- 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 +366 -304
- 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 +56 -0
- package/android/src/main/cpp/audioapi/android/core/utils/ffmpegBackend/utils.cpp +114 -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 +154 -95
- package/android/src/main/cpp/audioapi/android/core/utils/miniaudioBackend/MiniAudioFileWriter.h +10 -16
- package/android/src/main/cpp/audioapi/android/system/NativeFileInfo.hpp +2 -1
- package/android/src/main/java/com/swmansion/audioapi/AudioAPIModule.kt +189 -14
- package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioPlayer.kt +10 -8
- package/android/src/main/java/com/swmansion/audioapi/core/NativeAudioRecorder.kt +10 -8
- package/android/src/main/java/com/swmansion/audioapi/system/AudioFocusListener.kt +5 -2
- package/android/src/main/java/com/swmansion/audioapi/system/CentralizedForegroundService.kt +128 -0
- package/android/src/main/java/com/swmansion/audioapi/system/ForegroundServiceManager.kt +116 -0
- package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionManager.kt +115 -107
- package/android/src/main/java/com/swmansion/audioapi/system/PermissionRequestListener.kt +2 -1
- package/android/src/main/java/com/swmansion/audioapi/system/notification/BaseNotification.kt +47 -0
- package/android/src/main/java/com/swmansion/audioapi/system/notification/NotificationRegistry.kt +191 -0
- package/android/src/main/java/com/swmansion/audioapi/system/notification/PlaybackNotification.kt +669 -0
- package/android/src/main/java/com/swmansion/audioapi/system/notification/PlaybackNotificationReceiver.kt +33 -0
- package/android/src/main/java/com/swmansion/audioapi/system/notification/RecordingNotification.kt +303 -0
- package/android/src/main/java/com/swmansion/audioapi/system/notification/RecordingNotificationReceiver.kt +45 -0
- package/android/src/main/java/com/swmansion/audioapi/system/notification/SimpleNotification.kt +119 -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 +100 -76
- 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 +96 -74
- package/common/cpp/audioapi/core/effects/BiquadFilterNode.h +44 -15
- 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 +39 -108
- package/common/cpp/audioapi/core/inputs/AudioRecorder.h +47 -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 +105 -87
- package/common/cpp/audioapi/core/sources/StreamerNode.h +67 -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 +44 -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 +52 -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 +53 -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/Benchmark.hpp +50 -47
- 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/CrossThreadEventScheduler.hpp +12 -9
- package/common/cpp/audioapi/utils/MoveOnlyFunction.hpp +17 -15
- package/common/cpp/audioapi/utils/Result.hpp +323 -0
- package/common/cpp/audioapi/utils/RingBiDirectionalBuffer.hpp +22 -28
- package/common/cpp/audioapi/utils/SpscChannel.hpp +329 -305
- package/common/cpp/audioapi/utils/ThreadPool.hpp +104 -20
- package/common/cpp/audioapi/utils/UnitConversion.h +9 -0
- package/common/cpp/test/CMakeLists.txt +15 -15
- 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 +4 -3
- package/ios/audioapi/ios/AudioAPIModule.mm +148 -34
- 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 +280 -45
- package/ios/audioapi/ios/core/NativeAudioPlayer.m +17 -14
- package/ios/audioapi/ios/core/NativeAudioRecorder.h +6 -3
- package/ios/audioapi/ios/core/NativeAudioRecorder.m +74 -6
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +22 -4
- package/ios/audioapi/ios/core/utils/FileOptions.h +33 -0
- package/ios/audioapi/ios/core/utils/FileOptions.mm +195 -0
- package/ios/audioapi/ios/core/utils/IOSFileWriter.h +53 -0
- package/ios/audioapi/ios/core/utils/IOSFileWriter.mm +239 -0
- package/ios/audioapi/ios/core/utils/IOSRecorderCallback.h +47 -0
- package/ios/audioapi/ios/core/utils/IOSRecorderCallback.mm +185 -0
- package/ios/audioapi/ios/system/AudioEngine.h +21 -16
- package/ios/audioapi/ios/system/AudioEngine.mm +153 -132
- package/ios/audioapi/ios/system/AudioSessionManager.h +25 -11
- package/ios/audioapi/ios/system/AudioSessionManager.mm +277 -203
- package/ios/audioapi/ios/system/NotificationManager.mm +47 -53
- package/ios/audioapi/ios/system/notification/BaseNotification.h +58 -0
- package/ios/audioapi/ios/system/notification/NotificationRegistry.h +70 -0
- package/ios/audioapi/ios/system/notification/NotificationRegistry.mm +172 -0
- package/ios/audioapi/ios/system/notification/PlaybackNotification.h +27 -0
- package/ios/audioapi/ios/system/notification/PlaybackNotification.mm +427 -0
- 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 +89 -12
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/api.web.js +35 -14
- 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 +9 -15
- package/lib/commonjs/system/AudioManager.js.map +1 -1
- package/lib/commonjs/system/index.js +13 -0
- package/lib/commonjs/system/index.js.map +1 -1
- package/lib/commonjs/system/notification/PlaybackNotificationManager.js +138 -0
- package/lib/commonjs/system/notification/PlaybackNotificationManager.js.map +1 -0
- package/lib/commonjs/system/notification/RecordingNotificationManager.js +185 -0
- package/lib/commonjs/system/notification/RecordingNotificationManager.js.map +1 -0
- package/lib/commonjs/system/notification/SimpleNotificationManager.js +125 -0
- package/lib/commonjs/system/notification/SimpleNotificationManager.js.map +1 -0
- package/lib/commonjs/system/notification/index.js +45 -0
- package/lib/commonjs/system/notification/index.js.map +1 -0
- package/lib/commonjs/system/notification/types.js +6 -0
- package/lib/commonjs/system/notification/types.js.map +1 -0
- package/lib/commonjs/types.js +28 -35
- 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/commonjs/web-system/index.js +17 -0
- package/lib/commonjs/web-system/index.js.map +1 -0
- package/lib/commonjs/web-system/notification/PlaybackNotificationManager.js +37 -0
- package/lib/commonjs/web-system/notification/PlaybackNotificationManager.js.map +1 -0
- package/lib/commonjs/web-system/notification/RecordingNotificationManager.js +37 -0
- package/lib/commonjs/web-system/notification/RecordingNotificationManager.js.map +1 -0
- package/lib/commonjs/web-system/notification/index.js +21 -0
- package/lib/commonjs/web-system/notification/index.js.map +1 -0
- 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 +7 -12
- package/lib/module/api.js.map +1 -1
- package/lib/module/api.web.js +4 -1
- 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 +9 -15
- package/lib/module/system/AudioManager.js.map +1 -1
- package/lib/module/system/index.js +1 -0
- package/lib/module/system/index.js.map +1 -1
- package/lib/module/system/notification/PlaybackNotificationManager.js +134 -0
- package/lib/module/system/notification/PlaybackNotificationManager.js.map +1 -0
- package/lib/module/system/notification/RecordingNotificationManager.js +181 -0
- package/lib/module/system/notification/RecordingNotificationManager.js.map +1 -0
- package/lib/module/system/notification/SimpleNotificationManager.js +121 -0
- package/lib/module/system/notification/SimpleNotificationManager.js.map +1 -0
- package/lib/module/system/notification/index.js +7 -0
- package/lib/module/system/notification/index.js.map +1 -0
- package/lib/module/system/notification/types.js +4 -0
- package/lib/module/system/notification/types.js.map +1 -0
- package/lib/module/types.js +27 -34
- 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/module/web-system/index.js +4 -0
- package/lib/module/web-system/index.js.map +1 -0
- package/lib/module/web-system/notification/PlaybackNotificationManager.js +33 -0
- package/lib/module/web-system/notification/PlaybackNotificationManager.js.map +1 -0
- package/lib/module/web-system/notification/RecordingNotificationManager.js +33 -0
- package/lib/module/web-system/notification/RecordingNotificationManager.js.map +1 -0
- package/lib/module/web-system/notification/index.js +5 -0
- package/lib/module/web-system/notification/index.js.map +1 -0
- 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 +5 -9
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/api.web.d.ts +4 -1
- 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 +6 -2
- 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 +18 -6
- package/lib/typescript/specs/NativeAudioAPIModule.d.ts.map +1 -1
- package/lib/typescript/system/AudioManager.d.ts +5 -5
- package/lib/typescript/system/AudioManager.d.ts.map +1 -1
- package/lib/typescript/system/index.d.ts +1 -0
- package/lib/typescript/system/index.d.ts.map +1 -1
- package/lib/typescript/system/notification/PlaybackNotificationManager.d.ts +23 -0
- package/lib/typescript/system/notification/PlaybackNotificationManager.d.ts.map +1 -0
- package/lib/typescript/system/notification/RecordingNotificationManager.d.ts +24 -0
- package/lib/typescript/system/notification/RecordingNotificationManager.d.ts.map +1 -0
- package/lib/typescript/system/notification/SimpleNotificationManager.d.ts +21 -0
- package/lib/typescript/system/notification/SimpleNotificationManager.d.ts.map +1 -0
- package/lib/typescript/system/notification/index.d.ts +5 -0
- package/lib/typescript/system/notification/index.d.ts.map +1 -0
- package/lib/typescript/system/notification/types.d.ts +65 -0
- package/lib/typescript/system/notification/types.d.ts.map +1 -0
- package/lib/typescript/system/types.d.ts +0 -16
- package/lib/typescript/system/types.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +58 -45
- 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/lib/typescript/web-system/index.d.ts +2 -0
- package/lib/typescript/web-system/index.d.ts.map +1 -0
- package/lib/typescript/web-system/notification/PlaybackNotificationManager.d.ts +20 -0
- package/lib/typescript/web-system/notification/PlaybackNotificationManager.d.ts.map +1 -0
- package/lib/typescript/web-system/notification/RecordingNotificationManager.d.ts +20 -0
- package/lib/typescript/web-system/notification/RecordingNotificationManager.d.ts.map +1 -0
- package/lib/typescript/web-system/notification/index.d.ts +3 -0
- package/lib/typescript/web-system/notification/index.d.ts.map +1 -0
- package/package.json +11 -5
- 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 +21 -52
- package/src/api.web.ts +8 -2
- 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 +7 -3
- package/src/interfaces.ts +55 -34
- package/src/plugin/withAudioAPI.ts +61 -0
- package/src/specs/NativeAudioAPIModule.ts +26 -9
- package/src/system/AudioManager.ts +13 -32
- package/src/system/index.ts +1 -0
- package/src/system/notification/PlaybackNotificationManager.ts +197 -0
- package/src/system/notification/RecordingNotificationManager.ts +247 -0
- package/src/system/notification/SimpleNotificationManager.ts +175 -0
- package/src/system/notification/index.ts +4 -0
- package/src/system/notification/types.ts +111 -0
- package/src/system/types.ts +0 -18
- package/src/types.ts +61 -46
- 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/src/web-system/index.ts +1 -0
- package/src/web-system/notification/PlaybackNotificationManager.ts +64 -0
- package/src/web-system/notification/RecordingNotificationManager.ts +64 -0
- package/src/web-system/notification/index.ts +2 -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/android/src/main/java/com/swmansion/audioapi/system/LockScreenManager.kt +0 -325
- package/android/src/main/java/com/swmansion/audioapi/system/MediaNotificationManager.kt +0 -262
- package/android/src/main/java/com/swmansion/audioapi/system/MediaReceiver.kt +0 -57
- package/android/src/main/java/com/swmansion/audioapi/system/MediaSessionCallback.kt +0 -61
- 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/ios/audioapi/ios/system/LockScreenManager.h +0 -24
- package/ios/audioapi/ios/system/LockScreenManager.mm +0 -310
- 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
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
#include <audioapi/dsp/AudioUtils.h>
|
|
27
27
|
#include <audioapi/dsp/VectorMath.h>
|
|
28
|
+
#include <algorithm>
|
|
28
29
|
|
|
29
30
|
#if defined(HAVE_ACCELERATE)
|
|
30
31
|
#include <Accelerate/Accelerate.h>
|
|
@@ -47,8 +48,7 @@ void multiplyByScalar(
|
|
|
47
48
|
float scalar,
|
|
48
49
|
float *outputVector,
|
|
49
50
|
size_t numberOfElementsToProcess) {
|
|
50
|
-
vDSP_vsmul(
|
|
51
|
-
inputVector, 1, &scalar, outputVector, 1, numberOfElementsToProcess);
|
|
51
|
+
vDSP_vsmul(inputVector, 1, &scalar, outputVector, 1, numberOfElementsToProcess);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
void addScalar(
|
|
@@ -56,8 +56,7 @@ void addScalar(
|
|
|
56
56
|
float scalar,
|
|
57
57
|
float *outputVector,
|
|
58
58
|
size_t numberOfElementsToProcess) {
|
|
59
|
-
vDSP_vsadd(
|
|
60
|
-
inputVector, 1, &scalar, outputVector, 1, numberOfElementsToProcess);
|
|
59
|
+
vDSP_vsadd(inputVector, 1, &scalar, outputVector, 1, numberOfElementsToProcess);
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
void add(
|
|
@@ -65,14 +64,7 @@ void add(
|
|
|
65
64
|
const float *inputVector2,
|
|
66
65
|
float *outputVector,
|
|
67
66
|
size_t numberOfElementsToProcess) {
|
|
68
|
-
vDSP_vadd(
|
|
69
|
-
inputVector1,
|
|
70
|
-
1,
|
|
71
|
-
inputVector2,
|
|
72
|
-
1,
|
|
73
|
-
outputVector,
|
|
74
|
-
1,
|
|
75
|
-
numberOfElementsToProcess);
|
|
67
|
+
vDSP_vadd(inputVector1, 1, inputVector2, 1, outputVector, 1, numberOfElementsToProcess);
|
|
76
68
|
}
|
|
77
69
|
|
|
78
70
|
void subtract(
|
|
@@ -80,14 +72,7 @@ void subtract(
|
|
|
80
72
|
const float *inputVector2,
|
|
81
73
|
float *outputVector,
|
|
82
74
|
size_t numberOfElementsToProcess) {
|
|
83
|
-
vDSP_vsub(
|
|
84
|
-
inputVector1,
|
|
85
|
-
1,
|
|
86
|
-
inputVector2,
|
|
87
|
-
1,
|
|
88
|
-
outputVector,
|
|
89
|
-
1,
|
|
90
|
-
numberOfElementsToProcess);
|
|
75
|
+
vDSP_vsub(inputVector1, 1, inputVector2, 1, outputVector, 1, numberOfElementsToProcess);
|
|
91
76
|
}
|
|
92
77
|
|
|
93
78
|
void multiply(
|
|
@@ -95,19 +80,10 @@ void multiply(
|
|
|
95
80
|
const float *inputVector2,
|
|
96
81
|
float *outputVector,
|
|
97
82
|
size_t numberOfElementsToProcess) {
|
|
98
|
-
vDSP_vmul(
|
|
99
|
-
inputVector1,
|
|
100
|
-
1,
|
|
101
|
-
inputVector2,
|
|
102
|
-
1,
|
|
103
|
-
outputVector,
|
|
104
|
-
1,
|
|
105
|
-
numberOfElementsToProcess);
|
|
83
|
+
vDSP_vmul(inputVector1, 1, inputVector2, 1, outputVector, 1, numberOfElementsToProcess);
|
|
106
84
|
}
|
|
107
85
|
|
|
108
|
-
float maximumMagnitude(
|
|
109
|
-
const float *inputVector,
|
|
110
|
-
size_t numberOfElementsToProcess) {
|
|
86
|
+
float maximumMagnitude(const float *inputVector, size_t numberOfElementsToProcess) {
|
|
111
87
|
float maximumValue = 0;
|
|
112
88
|
vDSP_maxmgv(inputVector, 1, &maximumValue, numberOfElementsToProcess);
|
|
113
89
|
return maximumValue;
|
|
@@ -118,15 +94,7 @@ void multiplyByScalarThenAddToOutput(
|
|
|
118
94
|
float scalar,
|
|
119
95
|
float *outputVector,
|
|
120
96
|
size_t numberOfElementsToProcess) {
|
|
121
|
-
vDSP_vsma(
|
|
122
|
-
inputVector,
|
|
123
|
-
1,
|
|
124
|
-
&scalar,
|
|
125
|
-
outputVector,
|
|
126
|
-
1,
|
|
127
|
-
outputVector,
|
|
128
|
-
1,
|
|
129
|
-
numberOfElementsToProcess);
|
|
97
|
+
vDSP_vsma(inputVector, 1, &scalar, outputVector, 1, outputVector, 1, numberOfElementsToProcess);
|
|
130
98
|
}
|
|
131
99
|
|
|
132
100
|
#else
|
|
@@ -508,15 +476,15 @@ void multiply(
|
|
|
508
476
|
bool source2Aligned = is16ByteAligned(inputVector2);
|
|
509
477
|
bool destAligned = is16ByteAligned(outputVector);
|
|
510
478
|
|
|
511
|
-
#define SSE2_MULT(loadInstr, storeInstr)
|
|
512
|
-
while (outputVector < endP) {
|
|
513
|
-
pSource1 = _mm_load_ps(inputVector1);
|
|
479
|
+
#define SSE2_MULT(loadInstr, storeInstr) \
|
|
480
|
+
while (outputVector < endP) { \
|
|
481
|
+
pSource1 = _mm_load_ps(inputVector1); \
|
|
514
482
|
pSource2 = _mm_##loadInstr##_ps(inputVector2); \
|
|
515
|
-
dest = _mm_mul_ps(pSource1, pSource2);
|
|
516
|
-
_mm_##storeInstr##_ps(outputVector, dest);
|
|
517
|
-
inputVector1 += 4;
|
|
518
|
-
inputVector2 += 4;
|
|
519
|
-
outputVector += 4;
|
|
483
|
+
dest = _mm_mul_ps(pSource1, pSource2); \
|
|
484
|
+
_mm_##storeInstr##_ps(outputVector, dest); \
|
|
485
|
+
inputVector1 += 4; \
|
|
486
|
+
inputVector2 += 4; \
|
|
487
|
+
outputVector += 4; \
|
|
520
488
|
}
|
|
521
489
|
|
|
522
490
|
if (source2Aligned && destAligned) // Both aligned.
|
|
@@ -552,9 +520,7 @@ void multiply(
|
|
|
552
520
|
}
|
|
553
521
|
}
|
|
554
522
|
|
|
555
|
-
float maximumMagnitude(
|
|
556
|
-
const float *inputVector,
|
|
557
|
-
size_t numberOfElementsToProcess) {
|
|
523
|
+
float maximumMagnitude(const float *inputVector, size_t numberOfElementsToProcess) {
|
|
558
524
|
size_t n = numberOfElementsToProcess;
|
|
559
525
|
float max = 0;
|
|
560
526
|
|
|
@@ -647,15 +613,15 @@ void multiplyByScalarThenAddToOutput(
|
|
|
647
613
|
|
|
648
614
|
bool destAligned = is16ByteAligned(outputVector);
|
|
649
615
|
|
|
650
|
-
#define SSE2_MULT_ADD(loadInstr, storeInstr)
|
|
651
|
-
while (outputVector < endP) {
|
|
652
|
-
pSource = _mm_load_ps(inputVector);
|
|
653
|
-
temp = _mm_mul_ps(pSource, mScale);
|
|
616
|
+
#define SSE2_MULT_ADD(loadInstr, storeInstr) \
|
|
617
|
+
while (outputVector < endP) { \
|
|
618
|
+
pSource = _mm_load_ps(inputVector); \
|
|
619
|
+
temp = _mm_mul_ps(pSource, mScale); \
|
|
654
620
|
dest = _mm_##loadInstr##_ps(outputVector); \
|
|
655
|
-
dest = _mm_add_ps(dest, temp);
|
|
621
|
+
dest = _mm_add_ps(dest, temp); \
|
|
656
622
|
_mm_##storeInstr##_ps(outputVector, dest); \
|
|
657
|
-
inputVector += 4;
|
|
658
|
-
outputVector += 4;
|
|
623
|
+
inputVector += 4; \
|
|
624
|
+
outputVector += 4; \
|
|
659
625
|
}
|
|
660
626
|
|
|
661
627
|
if (destAligned)
|
|
@@ -28,23 +28,50 @@
|
|
|
28
28
|
// Defines the interface for several vector math functions whose implementation
|
|
29
29
|
// will ideally be optimized.
|
|
30
30
|
|
|
31
|
-
#include <cstddef>
|
|
32
31
|
#include <algorithm>
|
|
33
32
|
#include <cmath>
|
|
33
|
+
#include <cstddef>
|
|
34
34
|
|
|
35
35
|
namespace audioapi::dsp {
|
|
36
36
|
|
|
37
|
-
void multiplyByScalarThenAddToOutput(
|
|
37
|
+
void multiplyByScalarThenAddToOutput(
|
|
38
|
+
const float *inputVector,
|
|
39
|
+
float scalar,
|
|
40
|
+
float *outputVector,
|
|
41
|
+
size_t numberOfElementsToProcess);
|
|
38
42
|
|
|
39
|
-
void multiplyByScalar(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
43
|
+
void multiplyByScalar(
|
|
44
|
+
const float *inputVector,
|
|
45
|
+
float scalar,
|
|
46
|
+
float *outputVector,
|
|
47
|
+
size_t numberOfElementsToProcess);
|
|
48
|
+
void addScalar(
|
|
49
|
+
const float *inputVector,
|
|
50
|
+
float scalar,
|
|
51
|
+
float *outputVector,
|
|
52
|
+
size_t numberOfElementsToProcess);
|
|
53
|
+
void add(
|
|
54
|
+
const float *inputVector1,
|
|
55
|
+
const float *inputVector2,
|
|
56
|
+
float *outputVector,
|
|
57
|
+
size_t numberOfElementsToProcess);
|
|
58
|
+
void subtract(
|
|
59
|
+
const float *inputVector1,
|
|
60
|
+
const float *inputVector2,
|
|
61
|
+
float *outputVector,
|
|
62
|
+
size_t numberOfElementsToProcess);
|
|
63
|
+
void multiply(
|
|
64
|
+
const float *inputVector1,
|
|
65
|
+
const float *inputVector2,
|
|
66
|
+
float *outputVector,
|
|
67
|
+
size_t numberOfElementsToProcess);
|
|
44
68
|
|
|
45
69
|
// Finds the maximum magnitude of a float vector.
|
|
46
70
|
float maximumMagnitude(const float *inputVector, size_t numberOfElementsToProcess);
|
|
47
71
|
|
|
48
|
-
void linearToDecibels(
|
|
72
|
+
void linearToDecibels(
|
|
73
|
+
const float *inputVector,
|
|
74
|
+
float *outputVector,
|
|
75
|
+
size_t numberOfElementsToProcess);
|
|
49
76
|
|
|
50
77
|
} // namespace audioapi::dsp
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
#include <audioapi/core/utils/Constants.h>
|
|
2
2
|
#include <audioapi/dsp/Windows.h>
|
|
3
|
+
#include <algorithm>
|
|
3
4
|
|
|
4
5
|
namespace audioapi::dsp {
|
|
5
6
|
|
|
6
|
-
void WindowFunction::forcePerfectReconstruction(
|
|
7
|
-
float *data,
|
|
8
|
-
int windowLength,
|
|
9
|
-
int interval) {
|
|
7
|
+
void WindowFunction::forcePerfectReconstruction(float *data, int windowLength, int interval) {
|
|
10
8
|
for (int i = 0; i < interval; ++i) {
|
|
11
9
|
float sum2 = 0;
|
|
12
10
|
|
|
@@ -58,14 +56,11 @@ float Kaiser::bandwidthToBeta(float bandwidth, bool heuristicOptimal) {
|
|
|
58
56
|
}
|
|
59
57
|
|
|
60
58
|
void ApproximateConfinedGaussian::apply(float *data, int size) const {
|
|
61
|
-
auto offsetScale =
|
|
62
|
-
getGaussian(1.0f) / (getGaussian(3.0f) + getGaussian(-1.0f));
|
|
59
|
+
auto offsetScale = getGaussian(1.0f) / (getGaussian(3.0f) + getGaussian(-1.0f));
|
|
63
60
|
auto norm = 1 / (getGaussian(1.0f) - 2 * offsetScale * getGaussian(2.0f));
|
|
64
61
|
for (int i = 0; i < size; ++i) {
|
|
65
62
|
auto r = static_cast<float>(2 * i + 1) / static_cast<float>(size) - 1.0f;
|
|
66
|
-
data[i] = norm *
|
|
67
|
-
(getGaussian(r) -
|
|
68
|
-
offsetScale * (getGaussian(r - 2) + getGaussian(r + 2)));
|
|
63
|
+
data[i] = norm * (getGaussian(r) - offsetScale * (getGaussian(r - 2) + getGaussian(r + 2)));
|
|
69
64
|
}
|
|
70
65
|
}
|
|
71
66
|
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
3
|
#include <cmath>
|
|
4
|
-
#include <algorithm>
|
|
5
4
|
|
|
6
5
|
namespace audioapi::dsp {
|
|
7
6
|
|
|
@@ -9,7 +8,7 @@ namespace audioapi::dsp {
|
|
|
9
8
|
// https://personalpages.hs-kempten.de/~vollratj/InEl/pdf/Window%20function%20-%20Wikipedia.pdf
|
|
10
9
|
class WindowFunction {
|
|
11
10
|
public:
|
|
12
|
-
explicit WindowFunction(float amplitude = 1.0f): amplitude_(amplitude) {}
|
|
11
|
+
explicit WindowFunction(float amplitude = 1.0f) : amplitude_(amplitude) {}
|
|
13
12
|
|
|
14
13
|
virtual void apply(float *data, int size) const = 0;
|
|
15
14
|
// forces STFT perfect-reconstruction (WOLA) on an existing window, for a given STFT interval.
|
|
@@ -23,29 +22,30 @@ class WindowFunction {
|
|
|
23
22
|
//https://en.wikipedia.org/wiki/Hann_function
|
|
24
23
|
// https://www.sciencedirect.com/topics/engineering/hanning-window
|
|
25
24
|
// https://docs.scipy.org/doc//scipy-1.2.3/reference/generated/scipy.signal.windows.hann.html#scipy.signal.windows.hann
|
|
26
|
-
class Hann: public WindowFunction {
|
|
25
|
+
class Hann : public WindowFunction {
|
|
27
26
|
public:
|
|
28
|
-
explicit Hann(float amplitude = 1.0f): WindowFunction(amplitude) {}
|
|
27
|
+
explicit Hann(float amplitude = 1.0f) : WindowFunction(amplitude) {}
|
|
29
28
|
|
|
30
29
|
void apply(float *data, int size) const override;
|
|
31
30
|
};
|
|
32
31
|
|
|
33
32
|
// https://www.sciencedirect.com/topics/engineering/blackman-window
|
|
34
33
|
// https://docs.scipy.org/doc//scipy-1.2.3/reference/generated/scipy.signal.windows.blackman.html#scipy.signal.windows.blackman
|
|
35
|
-
class Blackman: public WindowFunction {
|
|
34
|
+
class Blackman : public WindowFunction {
|
|
36
35
|
public:
|
|
37
|
-
explicit Blackman(float amplitude = 1.0f): WindowFunction(amplitude) {}
|
|
36
|
+
explicit Blackman(float amplitude = 1.0f) : WindowFunction(amplitude) {}
|
|
38
37
|
|
|
39
38
|
void apply(float *data, int size) const override;
|
|
40
39
|
};
|
|
41
40
|
|
|
42
|
-
|
|
43
41
|
// https://en.wikipedia.org/wiki/Kaiser_window
|
|
44
|
-
class Kaiser: public WindowFunction {
|
|
42
|
+
class Kaiser : public WindowFunction {
|
|
45
43
|
public:
|
|
46
|
-
explicit Kaiser(float beta, float amplitude = 1.0f)
|
|
44
|
+
explicit Kaiser(float beta, float amplitude = 1.0f)
|
|
45
|
+
: WindowFunction(amplitude), beta_(beta), invB0_(1.0f / bessel0(beta)) {}
|
|
47
46
|
|
|
48
|
-
static Kaiser
|
|
47
|
+
static Kaiser
|
|
48
|
+
withBandwidth(float bandwidth, bool heuristicOptimal = false, float amplitude = 1.0f) {
|
|
49
49
|
return Kaiser(bandwidthToBeta(bandwidth, heuristicOptimal), amplitude);
|
|
50
50
|
}
|
|
51
51
|
|
|
@@ -59,25 +59,26 @@ class Kaiser: public WindowFunction {
|
|
|
59
59
|
|
|
60
60
|
// https://en.wikipedia.org/wiki/Bessel_function#Modified_Bessel_functions:_I%CE%B1,_K%CE%B1
|
|
61
61
|
static inline float bessel0(float x) {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
62
|
+
const double significanceLimit = 1e-4;
|
|
63
|
+
auto result = 0.0f;
|
|
64
|
+
auto term = 1.0f;
|
|
65
|
+
auto m = 1.0f;
|
|
66
|
+
while (term > significanceLimit) {
|
|
67
|
+
result += term;
|
|
68
|
+
++m;
|
|
69
|
+
term *= (x * x) / (4 * m * m);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return result;
|
|
73
73
|
}
|
|
74
74
|
static float bandwidthToBeta(float bandwidth, bool heuristicOptimal = false);
|
|
75
75
|
};
|
|
76
76
|
|
|
77
77
|
// https://www.recordingblogs.com/wiki/gaussian-window
|
|
78
|
-
class ApproximateConfinedGaussian: public WindowFunction {
|
|
78
|
+
class ApproximateConfinedGaussian : public WindowFunction {
|
|
79
79
|
public:
|
|
80
|
-
explicit ApproximateConfinedGaussian(float sigma, float amplitude = 1.0f)
|
|
80
|
+
explicit ApproximateConfinedGaussian(float sigma, float amplitude = 1.0f)
|
|
81
|
+
: WindowFunction(amplitude), gaussianFactor_(0.0625f / (sigma * sigma)) {}
|
|
81
82
|
|
|
82
83
|
static ApproximateConfinedGaussian withBandwidth(float bandwidth, float amplitude = 1.0f) {
|
|
83
84
|
return ApproximateConfinedGaussian(bandwidthToSigma(bandwidth), amplitude);
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
#include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
|
|
2
2
|
#include <audioapi/events/AudioEventHandlerRegistry.h>
|
|
3
|
+
#include <memory>
|
|
4
|
+
#include <string>
|
|
5
|
+
#include <unordered_map>
|
|
3
6
|
|
|
4
7
|
namespace audioapi {
|
|
5
8
|
|
|
@@ -100,12 +103,9 @@ void AudioEventHandlerRegistry::invokeHandlerWithEventBody(
|
|
|
100
103
|
if (eventName.compare("audioReady") == 0) {
|
|
101
104
|
auto bufferIt = body.find("buffer");
|
|
102
105
|
if (bufferIt != body.end()) {
|
|
103
|
-
auto bufferHostObject =
|
|
104
|
-
std::
|
|
105
|
-
|
|
106
|
-
bufferIt->second));
|
|
107
|
-
eventObject =
|
|
108
|
-
createEventObject(body, bufferHostObject->getSizeInBytes());
|
|
106
|
+
auto bufferHostObject = std::static_pointer_cast<AudioBufferHostObject>(
|
|
107
|
+
std::get<std::shared_ptr<jsi::HostObject>>(bufferIt->second));
|
|
108
|
+
eventObject = createEventObject(body, bufferHostObject->getSizeInBytes());
|
|
109
109
|
}
|
|
110
110
|
} else {
|
|
111
111
|
eventObject = createEventObject(body);
|
|
@@ -117,8 +117,7 @@ void AudioEventHandlerRegistry::invokeHandlerWithEventBody(
|
|
|
117
117
|
throw;
|
|
118
118
|
} catch (...) {
|
|
119
119
|
printf(
|
|
120
|
-
"Unknown exception occurred while invoking handler for event: %s\n",
|
|
121
|
-
eventName.c_str());
|
|
120
|
+
"Unknown exception occurred while invoking handler for event: %s\n", eventName.c_str());
|
|
122
121
|
}
|
|
123
122
|
}
|
|
124
123
|
});
|
|
@@ -168,11 +167,9 @@ void AudioEventHandlerRegistry::invokeHandlerWithEventBody(
|
|
|
168
167
|
if (eventName.compare("audioReady") == 0) {
|
|
169
168
|
auto bufferIt = body.find("buffer");
|
|
170
169
|
if (bufferIt != body.end()) {
|
|
171
|
-
auto bufferHostObject =
|
|
172
|
-
std::
|
|
173
|
-
|
|
174
|
-
eventObject =
|
|
175
|
-
createEventObject(body, bufferHostObject->getSizeInBytes());
|
|
170
|
+
auto bufferHostObject = std::static_pointer_cast<AudioBufferHostObject>(
|
|
171
|
+
std::get<std::shared_ptr<jsi::HostObject>>(bufferIt->second));
|
|
172
|
+
eventObject = createEventObject(body, bufferHostObject->getSizeInBytes());
|
|
176
173
|
}
|
|
177
174
|
} else {
|
|
178
175
|
eventObject = createEventObject(body);
|
|
@@ -184,8 +181,7 @@ void AudioEventHandlerRegistry::invokeHandlerWithEventBody(
|
|
|
184
181
|
throw;
|
|
185
182
|
} catch (...) {
|
|
186
183
|
printf(
|
|
187
|
-
"Unknown exception occurred while invoking handler for event: %s\n",
|
|
188
|
-
eventName.c_str());
|
|
184
|
+
"Unknown exception occurred while invoking handler for event: %s\n", eventName.c_str());
|
|
189
185
|
}
|
|
190
186
|
});
|
|
191
187
|
}
|
|
@@ -208,8 +204,7 @@ jsi::Object AudioEventHandlerRegistry::createEventObject(
|
|
|
208
204
|
eventObject.setProperty(*runtime_, name, std::get<bool>(value));
|
|
209
205
|
} else if (std::holds_alternative<std::string>(value)) {
|
|
210
206
|
eventObject.setProperty(*runtime_, name, std::get<std::string>(value));
|
|
211
|
-
} else if (std::holds_alternative<std::shared_ptr<jsi::HostObject>>(
|
|
212
|
-
value)) {
|
|
207
|
+
} else if (std::holds_alternative<std::shared_ptr<jsi::HostObject>>(value)) {
|
|
213
208
|
auto hostObject = jsi::Object::createFromHostObject(
|
|
214
209
|
*runtime_, std::get<std::shared_ptr<jsi::HostObject>>(value));
|
|
215
210
|
eventObject.setProperty(*runtime_, name, hostObject);
|
|
@@ -1,69 +1,74 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
-
#include <jsi/jsi.h>
|
|
4
3
|
#include <ReactCommon/CallInvoker.h>
|
|
5
4
|
#include <audioapi/events/IAudioEventHandlerRegistry.h>
|
|
6
|
-
#include <
|
|
7
|
-
#include <unordered_map>
|
|
5
|
+
#include <jsi/jsi.h>
|
|
8
6
|
#include <array>
|
|
7
|
+
#include <atomic>
|
|
8
|
+
#include <memory>
|
|
9
9
|
#include <string>
|
|
10
|
+
#include <unordered_map>
|
|
10
11
|
#include <variant>
|
|
11
|
-
#include <atomic>
|
|
12
12
|
|
|
13
13
|
namespace audioapi {
|
|
14
14
|
using namespace facebook;
|
|
15
15
|
|
|
16
|
-
using EventValue =
|
|
16
|
+
using EventValue =
|
|
17
|
+
std::variant<int, float, double, std::string, bool, std::shared_ptr<jsi::HostObject>>;
|
|
17
18
|
|
|
18
19
|
class AudioEventHandlerRegistry : public IAudioEventHandlerRegistry {
|
|
19
20
|
public:
|
|
20
21
|
explicit AudioEventHandlerRegistry(
|
|
21
22
|
jsi::Runtime *runtime,
|
|
22
23
|
const std::shared_ptr<react::CallInvoker> &callInvoker);
|
|
23
|
-
~AudioEventHandlerRegistry();
|
|
24
|
+
~AudioEventHandlerRegistry() override;
|
|
24
25
|
|
|
25
|
-
uint64_t registerHandler(
|
|
26
|
+
uint64_t registerHandler(
|
|
27
|
+
const std::string &eventName,
|
|
28
|
+
const std::shared_ptr<jsi::Function> &handler) override;
|
|
26
29
|
void unregisterHandler(const std::string &eventName, uint64_t listenerId) override;
|
|
27
30
|
|
|
28
|
-
void invokeHandlerWithEventBody(
|
|
29
|
-
|
|
31
|
+
void invokeHandlerWithEventBody(
|
|
32
|
+
const std::string &eventName,
|
|
33
|
+
const std::unordered_map<std::string, EventValue> &body) override;
|
|
34
|
+
void invokeHandlerWithEventBody(
|
|
35
|
+
const std::string &eventName,
|
|
36
|
+
uint64_t listenerId,
|
|
37
|
+
const std::unordered_map<std::string, EventValue> &body) override;
|
|
30
38
|
|
|
31
39
|
private:
|
|
32
|
-
|
|
40
|
+
std::atomic<uint64_t> listenerIdCounter_{1}; // Atomic counter for listener IDs
|
|
33
41
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
std::shared_ptr<react::CallInvoker> callInvoker_;
|
|
43
|
+
jsi::Runtime *runtime_;
|
|
44
|
+
std::unordered_map<std::string, std::unordered_map<uint64_t, std::shared_ptr<jsi::Function>>>
|
|
45
|
+
eventHandlers_;
|
|
37
46
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
static constexpr std::array<std::string_view, 15> SYSTEM_EVENT_NAMES = {
|
|
48
|
+
"remotePlay",
|
|
49
|
+
"remotePause",
|
|
50
|
+
"remoteStop",
|
|
51
|
+
"remoteTogglePlayPause",
|
|
52
|
+
"remoteChangePlaybackRate",
|
|
53
|
+
"remoteNextTrack",
|
|
54
|
+
"remotePreviousTrack",
|
|
55
|
+
"remoteSkipForward",
|
|
56
|
+
"remoteSkipBackward",
|
|
57
|
+
"remoteSeekForward",
|
|
58
|
+
"remoteSeekBackward",
|
|
59
|
+
"remoteChangePlaybackPosition",
|
|
60
|
+
"routeChange",
|
|
61
|
+
"interruption",
|
|
62
|
+
"volumeChange",
|
|
63
|
+
};
|
|
55
64
|
|
|
56
|
-
|
|
57
|
-
"ended",
|
|
58
|
-
"loopEnded",
|
|
59
|
-
"audioReady",
|
|
60
|
-
"positionChanged",
|
|
61
|
-
"audioError",
|
|
62
|
-
"systemStateChanged"
|
|
63
|
-
};
|
|
65
|
+
static constexpr std::array<std::string_view, 6> AUDIO_API_EVENT_NAMES =
|
|
66
|
+
{"ended", "loopEnded", "audioReady", "positionChanged", "audioError", "systemStateChanged"};
|
|
64
67
|
|
|
65
|
-
|
|
66
|
-
|
|
68
|
+
jsi::Object createEventObject(const std::unordered_map<std::string, EventValue> &body);
|
|
69
|
+
jsi::Object createEventObject(
|
|
70
|
+
const std::unordered_map<std::string, EventValue> &body,
|
|
71
|
+
size_t memoryPressure);
|
|
67
72
|
};
|
|
68
73
|
|
|
69
74
|
} // namespace audioapi
|
|
@@ -1,25 +1,33 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
-
#include <jsi/jsi.h>
|
|
4
3
|
#include <ReactCommon/CallInvoker.h>
|
|
4
|
+
#include <jsi/jsi.h>
|
|
5
|
+
#include <memory>
|
|
6
|
+
#include <string>
|
|
5
7
|
#include <unordered_map>
|
|
6
8
|
#include <variant>
|
|
7
|
-
#include <string>
|
|
8
|
-
#include <memory>
|
|
9
9
|
|
|
10
10
|
namespace audioapi {
|
|
11
11
|
|
|
12
|
-
using EventValue =
|
|
12
|
+
using EventValue =
|
|
13
|
+
std::variant<int, float, double, std::string, bool, std::shared_ptr<facebook::jsi::HostObject>>;
|
|
13
14
|
|
|
14
15
|
class IAudioEventHandlerRegistry {
|
|
15
16
|
public:
|
|
16
17
|
virtual ~IAudioEventHandlerRegistry() = default;
|
|
17
18
|
|
|
18
|
-
virtual uint64_t registerHandler(
|
|
19
|
+
virtual uint64_t registerHandler(
|
|
20
|
+
const std::string &eventName,
|
|
21
|
+
const std::shared_ptr<facebook::jsi::Function> &handler) = 0;
|
|
19
22
|
virtual void unregisterHandler(const std::string &eventName, uint64_t listenerId) = 0;
|
|
20
23
|
|
|
21
|
-
virtual void invokeHandlerWithEventBody(
|
|
22
|
-
|
|
24
|
+
virtual void invokeHandlerWithEventBody(
|
|
25
|
+
const std::string &eventName,
|
|
26
|
+
const std::unordered_map<std::string, EventValue> &body) = 0;
|
|
27
|
+
virtual void invokeHandlerWithEventBody(
|
|
28
|
+
const std::string &eventName,
|
|
29
|
+
uint64_t listenerId,
|
|
30
|
+
const std::unordered_map<std::string, EventValue> &body) = 0;
|
|
23
31
|
};
|
|
24
32
|
|
|
25
33
|
} // namespace audioapi
|
|
@@ -225,7 +225,7 @@ typedef struct RcOverride{
|
|
|
225
225
|
#define AV_CODEC_FLAG_QPEL (1 << 4)
|
|
226
226
|
/**
|
|
227
227
|
* Request the encoder to output reconstructed frames, i.e.\ frames that would
|
|
228
|
-
* be produced by decoding the encoded
|
|
228
|
+
* be produced by decoding the encoded bitstream. These frames may be retrieved
|
|
229
229
|
* by calling avcodec_receive_frame() immediately after a successful call to
|
|
230
230
|
* avcodec_receive_packet().
|
|
231
231
|
*
|
|
@@ -436,7 +436,7 @@ typedef struct AVCodecContext {
|
|
|
436
436
|
const AVClass *av_class;
|
|
437
437
|
int log_level_offset;
|
|
438
438
|
|
|
439
|
-
enum
|
|
439
|
+
enum AVMediaTypeFFmpeg codec_type; /* see AVMEDIA_TYPE_xxx */
|
|
440
440
|
const struct AVCodec *codec;
|
|
441
441
|
enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */
|
|
442
442
|
|
|
@@ -1946,7 +1946,7 @@ typedef struct AVHWAccel {
|
|
|
1946
1946
|
*
|
|
1947
1947
|
* See AVMEDIA_TYPE_xxx
|
|
1948
1948
|
*/
|
|
1949
|
-
enum
|
|
1949
|
+
enum AVMediaTypeFFmpeg type;
|
|
1950
1950
|
|
|
1951
1951
|
/**
|
|
1952
1952
|
* Codec implemented by the hardware accelerator.
|
|
@@ -2900,7 +2900,7 @@ int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels,
|
|
|
2900
2900
|
*
|
|
2901
2901
|
* @note for encoders, this function will only do something if the encoder
|
|
2902
2902
|
* declares support for AV_CODEC_CAP_ENCODER_FLUSH. When called, the encoder
|
|
2903
|
-
* will drain any remaining packets, and can then be
|
|
2903
|
+
* will drain any remaining packets, and can then be reused for a different
|
|
2904
2904
|
* stream (as opposed to sending a null frame which will leave the encoder
|
|
2905
2905
|
* in a permanent EOF state after draining). This can be desirable if the
|
|
2906
2906
|
* cost of tearing down and replacing the encoder instance is high.
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
*/
|
|
38
38
|
typedef struct AVCodecDescriptor {
|
|
39
39
|
enum AVCodecID id;
|
|
40
|
-
enum
|
|
40
|
+
enum AVMediaTypeFFmpeg type;
|
|
41
41
|
/**
|
|
42
42
|
* Name of the codec described by this descriptor. It is non-empty and
|
|
43
43
|
* unique for each codec descriptor. It should contain alphanumeric
|
|
@@ -330,6 +330,7 @@ enum AVCodecID {
|
|
|
330
330
|
AV_CODEC_ID_RV60,
|
|
331
331
|
AV_CODEC_ID_JPEGXL_ANIM,
|
|
332
332
|
AV_CODEC_ID_APV,
|
|
333
|
+
AV_CODEC_ID_PRORES_RAW,
|
|
333
334
|
|
|
334
335
|
/* various PCM "codecs" */
|
|
335
336
|
AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
|
|
@@ -602,6 +603,7 @@ enum AVCodecID {
|
|
|
602
603
|
AV_CODEC_ID_BIN_DATA,
|
|
603
604
|
AV_CODEC_ID_SMPTE_2038,
|
|
604
605
|
AV_CODEC_ID_LCEVC,
|
|
606
|
+
AV_CODEC_ID_SMPTE_436M_ANC,
|
|
605
607
|
|
|
606
608
|
|
|
607
609
|
AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
|
|
@@ -627,7 +629,7 @@ enum AVCodecID {
|
|
|
627
629
|
/**
|
|
628
630
|
* Get the type of the given codec.
|
|
629
631
|
*/
|
|
630
|
-
enum
|
|
632
|
+
enum AVMediaTypeFFmpeg avcodec_get_type(enum AVCodecID codec_id);
|
|
631
633
|
|
|
632
634
|
/**
|
|
633
635
|
* Get the name of a codec.
|
|
@@ -48,7 +48,7 @@ typedef struct AVCodecParameters {
|
|
|
48
48
|
/**
|
|
49
49
|
* General type of the encoded data.
|
|
50
50
|
*/
|
|
51
|
-
enum
|
|
51
|
+
enum AVMediaTypeFFmpeg codec_type;
|
|
52
52
|
/**
|
|
53
53
|
* Specific type of the encoded data (the codec used).
|
|
54
54
|
*/
|
|
@@ -148,7 +148,7 @@ typedef struct AVCodecParameters {
|
|
|
148
148
|
* durations. Should be set to { 0, 1 } when some frames have differing
|
|
149
149
|
* durations or if the value is not known.
|
|
150
150
|
*
|
|
151
|
-
* @note This field
|
|
151
|
+
* @note This field corresponds to values that are stored in codec-level
|
|
152
152
|
* headers and is typically overridden by container/transport-layer
|
|
153
153
|
* timestamps, when available. It should thus be used only as a last resort,
|
|
154
154
|
* when no higher-level timing information is available.
|