react-native-audio-api 0.12.1 → 0.12.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 +8 -3
- package/RNAudioAPI.podspec +0 -2
- package/android/src/main/cpp/audioapi/CMakeLists.txt +8 -2
- package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +7 -29
- package/android/src/main/cpp/audioapi/android/JniEventPayloadParser.cpp +83 -0
- package/android/src/main/cpp/audioapi/android/JniEventPayloadParser.h +14 -0
- package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +4 -3
- package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +1 -0
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +37 -21
- package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +1 -1
- package/common/cpp/audioapi/AudioAPIModuleInstaller.h +21 -0
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +26 -4
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +1 -0
- package/common/cpp/audioapi/HostObjects/sources/AudioFileSourceNodeHostObject.cpp +2 -2
- package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +3 -3
- package/common/cpp/audioapi/HostObjects/utils/AudioFileUtilsHostObject.cpp +60 -0
- package/common/cpp/audioapi/HostObjects/utils/AudioFileUtilsHostObject.h +24 -0
- package/common/cpp/audioapi/HostObjects/utils/NodeOptionsParser.h +2 -2
- package/common/cpp/audioapi/core/OfflineAudioContext.cpp +0 -1
- package/common/cpp/audioapi/core/OfflineAudioContext.h +0 -1
- package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +4 -10
- package/common/cpp/audioapi/core/effects/ConvolverNode.h +0 -4
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +13 -11
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +5 -9
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +47 -139
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +11 -8
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +29 -114
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +6 -8
- package/common/cpp/audioapi/core/sources/AudioFileSourceNode.cpp +9 -11
- package/common/cpp/audioapi/core/sources/AudioFileSourceNode.h +1 -1
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +2 -2
- package/common/cpp/audioapi/core/types/AudioFormat.h +3 -1
- package/common/cpp/audioapi/core/utils/AudioDecoder.cpp +120 -91
- package/common/cpp/audioapi/core/utils/AudioDecoder.h +24 -101
- package/common/cpp/audioapi/core/utils/AudioFileConcatenator.cpp +862 -0
- package/common/cpp/audioapi/core/utils/AudioFileConcatenator.h +164 -0
- package/common/cpp/audioapi/core/utils/AudioFileWriter.cpp +2 -4
- package/common/cpp/audioapi/core/utils/AudioRecorderCallback.cpp +7 -12
- package/common/cpp/audioapi/core/utils/AudioRecorderCallback.h +2 -0
- package/common/cpp/audioapi/core/utils/buffer/BufferProcessingDirection.h +6 -0
- package/common/cpp/audioapi/core/utils/buffer/BufferProcessorBase.cpp +110 -0
- package/common/cpp/audioapi/core/utils/buffer/BufferProcessorBase.h +75 -0
- package/common/cpp/audioapi/core/utils/buffer/QueueBufferProcessor.cpp +129 -0
- package/common/cpp/audioapi/core/utils/buffer/QueueBufferProcessor.h +55 -0
- package/common/cpp/audioapi/core/utils/buffer/SingleBufferProcessor.cpp +95 -0
- package/common/cpp/audioapi/core/utils/buffer/SingleBufferProcessor.h +52 -0
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +65 -157
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +52 -33
- package/common/cpp/audioapi/events/AudioEventPayload.h +87 -0
- package/common/cpp/audioapi/events/IAudioEventHandlerRegistry.h +12 -12
- package/common/cpp/audioapi/libs/decoding/IncrementalAudioDecoder.h +12 -10
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +152 -78
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +6 -6
- package/common/cpp/audioapi/libs/miniaudio/MiniAudioDecoding.cpp +34 -20
- package/common/cpp/audioapi/libs/miniaudio/MiniAudioDecoding.h +4 -4
- package/common/cpp/audioapi/utils/AudioArray.hpp +6 -1
- package/common/cpp/audioapi/utils/CrossThreadEventScheduler.hpp +1 -1
- package/common/cpp/audioapi/utils/TaskOffloader.hpp +3 -5
- package/ios/audioapi/ios/AudioAPIModule.h +2 -1
- package/ios/audioapi/ios/AudioAPIModule.mm +4 -25
- package/ios/audioapi/ios/core/IOSAudioPlayer.h +16 -2
- package/ios/audioapi/ios/core/IOSAudioPlayer.mm +90 -24
- package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
- package/ios/audioapi/ios/core/utils/IOSRecorderCallback.mm +64 -20
- package/ios/audioapi/ios/system/AudioSessionManager.mm +18 -7
- package/ios/audioapi/ios/system/SystemNotificationManager.mm +22 -22
- package/ios/audioapi/ios/system/notification/PlaybackNotification.mm +10 -13
- package/lib/commonjs/AudioAPIModule/AudioAPIModule.js +1 -1
- package/lib/commonjs/AudioAPIModule/AudioAPIModule.js.map +1 -1
- package/lib/commonjs/api.js +8 -0
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/api.web.js +5 -0
- package/lib/commonjs/api.web.js.map +1 -1
- package/lib/commonjs/core/AudioFileUtils.js +35 -0
- package/lib/commonjs/core/AudioFileUtils.js.map +1 -0
- package/lib/commonjs/mock/index.js +15 -1
- package/lib/commonjs/mock/index.js.map +1 -1
- package/lib/module/AudioAPIModule/AudioAPIModule.js +1 -1
- package/lib/module/AudioAPIModule/AudioAPIModule.js.map +1 -1
- package/lib/module/api.js +1 -0
- package/lib/module/api.js.map +1 -1
- package/lib/module/api.web.js +3 -0
- package/lib/module/api.web.js.map +1 -1
- package/lib/module/core/AudioFileUtils.js +31 -0
- package/lib/module/core/AudioFileUtils.js.map +1 -0
- package/lib/module/mock/index.js +14 -1
- package/lib/module/mock/index.js.map +1 -1
- package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts.map +1 -1
- package/lib/typescript/api.d.ts +1 -0
- 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/AudioFileUtils.d.ts +2 -0
- package/lib/typescript/core/AudioFileUtils.d.ts.map +1 -0
- package/lib/typescript/interfaces.d.ts +3 -0
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/lib/typescript/mock/index.d.ts +3 -1
- package/lib/typescript/mock/index.d.ts.map +1 -1
- package/package.json +3 -3
- package/scripts/download-prebuilt-binaries.sh +34 -1
- package/src/AudioAPIModule/AudioAPIModule.ts +1 -0
- package/src/AudioAPIModule/globals.d.ts +3 -0
- package/src/api.ts +1 -0
- package/src/api.web.ts +7 -0
- package/src/core/AudioFileUtils.ts +49 -0
- package/src/interfaces.ts +7 -0
- package/src/mock/index.ts +29 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { AudioApiError } from '../errors';
|
|
2
|
+
import { IAudioFileUtils } from '../interfaces';
|
|
3
|
+
|
|
4
|
+
class AudioFileUtils {
|
|
5
|
+
private static instance: AudioFileUtils | null = null;
|
|
6
|
+
protected readonly fileUtils: IAudioFileUtils;
|
|
7
|
+
|
|
8
|
+
private constructor() {
|
|
9
|
+
this.fileUtils = global.createAudioFileUtils();
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
public static getInstance(): AudioFileUtils {
|
|
13
|
+
if (!AudioFileUtils.instance) {
|
|
14
|
+
AudioFileUtils.instance = new AudioFileUtils();
|
|
15
|
+
}
|
|
16
|
+
return AudioFileUtils.instance;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
public async concatAudioFilesInstance(
|
|
20
|
+
inputPaths: string[],
|
|
21
|
+
outputPath: string
|
|
22
|
+
): Promise<string> {
|
|
23
|
+
if (!Array.isArray(inputPaths) || inputPaths.length === 0) {
|
|
24
|
+
throw new AudioApiError(
|
|
25
|
+
'concatAudioFiles requires at least one input path.'
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
if (inputPaths.some((inputPath) => typeof inputPath !== 'string')) {
|
|
30
|
+
throw new TypeError('concatAudioFiles input paths must be strings.');
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (typeof outputPath !== 'string' || outputPath.length === 0) {
|
|
34
|
+
throw new AudioApiError('concatAudioFiles requires an output path.');
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return this.fileUtils.concatAudioFiles(inputPaths, outputPath);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export async function concatAudioFiles(
|
|
42
|
+
inputPaths: string[],
|
|
43
|
+
outputPath: string
|
|
44
|
+
): Promise<string> {
|
|
45
|
+
return AudioFileUtils.getInstance().concatAudioFilesInstance(
|
|
46
|
+
inputPaths,
|
|
47
|
+
outputPath
|
|
48
|
+
);
|
|
49
|
+
}
|
package/src/interfaces.ts
CHANGED
|
@@ -379,6 +379,13 @@ export interface IAudioStretcher {
|
|
|
379
379
|
) => Promise<IAudioBuffer>;
|
|
380
380
|
}
|
|
381
381
|
|
|
382
|
+
export interface IAudioFileUtils {
|
|
383
|
+
concatAudioFiles: (
|
|
384
|
+
inputPaths: string[],
|
|
385
|
+
outputPath: string
|
|
386
|
+
) => Promise<string>;
|
|
387
|
+
}
|
|
388
|
+
|
|
382
389
|
export interface IAudioEventEmitter {
|
|
383
390
|
addAudioEventListener<Name extends AudioEventName>(
|
|
384
391
|
name: Name,
|
package/src/mock/index.ts
CHANGED
|
@@ -853,6 +853,33 @@ const changePlaybackSpeed = (
|
|
|
853
853
|
return Promise.resolve(buffer);
|
|
854
854
|
};
|
|
855
855
|
|
|
856
|
+
const concatAudioFiles = (
|
|
857
|
+
inputPaths: string[],
|
|
858
|
+
outputPath: string
|
|
859
|
+
): Promise<string> => {
|
|
860
|
+
if (!Array.isArray(inputPaths) || inputPaths.length === 0) {
|
|
861
|
+
return Promise.reject(
|
|
862
|
+
new AudioApiErrorMock(
|
|
863
|
+
'concatAudioFiles requires at least one input path.'
|
|
864
|
+
)
|
|
865
|
+
);
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
if (inputPaths.some((inputPath) => typeof inputPath !== 'string')) {
|
|
869
|
+
return Promise.reject(
|
|
870
|
+
new TypeError('concatAudioFiles input paths must be strings.')
|
|
871
|
+
);
|
|
872
|
+
}
|
|
873
|
+
|
|
874
|
+
if (typeof outputPath !== 'string' || outputPath.length === 0) {
|
|
875
|
+
return Promise.reject(
|
|
876
|
+
new AudioApiErrorMock('concatAudioFiles requires an output path.')
|
|
877
|
+
);
|
|
878
|
+
}
|
|
879
|
+
|
|
880
|
+
return Promise.resolve(outputPath);
|
|
881
|
+
};
|
|
882
|
+
|
|
856
883
|
class AudioManagerMock {
|
|
857
884
|
static getDevicePreferredSampleRate(): number {
|
|
858
885
|
return 44100;
|
|
@@ -1017,6 +1044,7 @@ export const AudioApiError = AudioApiErrorMock;
|
|
|
1017
1044
|
// Export functions
|
|
1018
1045
|
export {
|
|
1019
1046
|
changePlaybackSpeed,
|
|
1047
|
+
concatAudioFiles,
|
|
1020
1048
|
decodeAudioData,
|
|
1021
1049
|
decodePCMInBase64,
|
|
1022
1050
|
setMockSystemVolume,
|
|
@@ -1117,6 +1145,7 @@ export default {
|
|
|
1117
1145
|
decodeAudioData,
|
|
1118
1146
|
decodePCMInBase64,
|
|
1119
1147
|
changePlaybackSpeed,
|
|
1148
|
+
concatAudioFiles,
|
|
1120
1149
|
useSystemVolume,
|
|
1121
1150
|
setMockSystemVolume,
|
|
1122
1151
|
|