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.
Files changed (107) hide show
  1. package/README.md +8 -3
  2. package/RNAudioAPI.podspec +0 -2
  3. package/android/src/main/cpp/audioapi/CMakeLists.txt +8 -2
  4. package/android/src/main/cpp/audioapi/android/AudioAPIModule.cpp +7 -29
  5. package/android/src/main/cpp/audioapi/android/JniEventPayloadParser.cpp +83 -0
  6. package/android/src/main/cpp/audioapi/android/JniEventPayloadParser.h +14 -0
  7. package/android/src/main/cpp/audioapi/android/core/AndroidAudioRecorder.cpp +4 -3
  8. package/android/src/main/cpp/audioapi/android/core/AudioPlayer.cpp +1 -0
  9. package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.cpp +37 -21
  10. package/android/src/main/cpp/audioapi/android/core/utils/AndroidRecorderCallback.h +1 -1
  11. package/common/cpp/audioapi/AudioAPIModuleInstaller.h +21 -0
  12. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.cpp +26 -4
  13. package/common/cpp/audioapi/HostObjects/sources/AudioBufferQueueSourceNodeHostObject.h +1 -0
  14. package/common/cpp/audioapi/HostObjects/sources/AudioFileSourceNodeHostObject.cpp +2 -2
  15. package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +3 -3
  16. package/common/cpp/audioapi/HostObjects/utils/AudioFileUtilsHostObject.cpp +60 -0
  17. package/common/cpp/audioapi/HostObjects/utils/AudioFileUtilsHostObject.h +24 -0
  18. package/common/cpp/audioapi/HostObjects/utils/NodeOptionsParser.h +2 -2
  19. package/common/cpp/audioapi/core/OfflineAudioContext.cpp +0 -1
  20. package/common/cpp/audioapi/core/OfflineAudioContext.h +0 -1
  21. package/common/cpp/audioapi/core/effects/ConvolverNode.cpp +4 -10
  22. package/common/cpp/audioapi/core/effects/ConvolverNode.h +0 -4
  23. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +13 -11
  24. package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +5 -9
  25. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +47 -139
  26. package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.h +11 -8
  27. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +29 -114
  28. package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.h +6 -8
  29. package/common/cpp/audioapi/core/sources/AudioFileSourceNode.cpp +9 -11
  30. package/common/cpp/audioapi/core/sources/AudioFileSourceNode.h +1 -1
  31. package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +2 -2
  32. package/common/cpp/audioapi/core/types/AudioFormat.h +3 -1
  33. package/common/cpp/audioapi/core/utils/AudioDecoder.cpp +120 -91
  34. package/common/cpp/audioapi/core/utils/AudioDecoder.h +24 -101
  35. package/common/cpp/audioapi/core/utils/AudioFileConcatenator.cpp +862 -0
  36. package/common/cpp/audioapi/core/utils/AudioFileConcatenator.h +164 -0
  37. package/common/cpp/audioapi/core/utils/AudioFileWriter.cpp +2 -4
  38. package/common/cpp/audioapi/core/utils/AudioRecorderCallback.cpp +7 -12
  39. package/common/cpp/audioapi/core/utils/AudioRecorderCallback.h +2 -0
  40. package/common/cpp/audioapi/core/utils/buffer/BufferProcessingDirection.h +6 -0
  41. package/common/cpp/audioapi/core/utils/buffer/BufferProcessorBase.cpp +110 -0
  42. package/common/cpp/audioapi/core/utils/buffer/BufferProcessorBase.h +75 -0
  43. package/common/cpp/audioapi/core/utils/buffer/QueueBufferProcessor.cpp +129 -0
  44. package/common/cpp/audioapi/core/utils/buffer/QueueBufferProcessor.h +55 -0
  45. package/common/cpp/audioapi/core/utils/buffer/SingleBufferProcessor.cpp +95 -0
  46. package/common/cpp/audioapi/core/utils/buffer/SingleBufferProcessor.h +52 -0
  47. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +65 -157
  48. package/common/cpp/audioapi/events/AudioEventHandlerRegistry.h +52 -33
  49. package/common/cpp/audioapi/events/AudioEventPayload.h +87 -0
  50. package/common/cpp/audioapi/events/IAudioEventHandlerRegistry.h +12 -12
  51. package/common/cpp/audioapi/libs/decoding/IncrementalAudioDecoder.h +12 -10
  52. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +152 -78
  53. package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +6 -6
  54. package/common/cpp/audioapi/libs/miniaudio/MiniAudioDecoding.cpp +34 -20
  55. package/common/cpp/audioapi/libs/miniaudio/MiniAudioDecoding.h +4 -4
  56. package/common/cpp/audioapi/utils/AudioArray.hpp +6 -1
  57. package/common/cpp/audioapi/utils/CrossThreadEventScheduler.hpp +1 -1
  58. package/common/cpp/audioapi/utils/TaskOffloader.hpp +3 -5
  59. package/ios/audioapi/ios/AudioAPIModule.h +2 -1
  60. package/ios/audioapi/ios/AudioAPIModule.mm +4 -25
  61. package/ios/audioapi/ios/core/IOSAudioPlayer.h +16 -2
  62. package/ios/audioapi/ios/core/IOSAudioPlayer.mm +90 -24
  63. package/ios/audioapi/ios/core/IOSAudioRecorder.mm +1 -1
  64. package/ios/audioapi/ios/core/utils/IOSRecorderCallback.mm +64 -20
  65. package/ios/audioapi/ios/system/AudioSessionManager.mm +18 -7
  66. package/ios/audioapi/ios/system/SystemNotificationManager.mm +22 -22
  67. package/ios/audioapi/ios/system/notification/PlaybackNotification.mm +10 -13
  68. package/lib/commonjs/AudioAPIModule/AudioAPIModule.js +1 -1
  69. package/lib/commonjs/AudioAPIModule/AudioAPIModule.js.map +1 -1
  70. package/lib/commonjs/api.js +8 -0
  71. package/lib/commonjs/api.js.map +1 -1
  72. package/lib/commonjs/api.web.js +5 -0
  73. package/lib/commonjs/api.web.js.map +1 -1
  74. package/lib/commonjs/core/AudioFileUtils.js +35 -0
  75. package/lib/commonjs/core/AudioFileUtils.js.map +1 -0
  76. package/lib/commonjs/mock/index.js +15 -1
  77. package/lib/commonjs/mock/index.js.map +1 -1
  78. package/lib/module/AudioAPIModule/AudioAPIModule.js +1 -1
  79. package/lib/module/AudioAPIModule/AudioAPIModule.js.map +1 -1
  80. package/lib/module/api.js +1 -0
  81. package/lib/module/api.js.map +1 -1
  82. package/lib/module/api.web.js +3 -0
  83. package/lib/module/api.web.js.map +1 -1
  84. package/lib/module/core/AudioFileUtils.js +31 -0
  85. package/lib/module/core/AudioFileUtils.js.map +1 -0
  86. package/lib/module/mock/index.js +14 -1
  87. package/lib/module/mock/index.js.map +1 -1
  88. package/lib/typescript/AudioAPIModule/AudioAPIModule.d.ts.map +1 -1
  89. package/lib/typescript/api.d.ts +1 -0
  90. package/lib/typescript/api.d.ts.map +1 -1
  91. package/lib/typescript/api.web.d.ts +1 -0
  92. package/lib/typescript/api.web.d.ts.map +1 -1
  93. package/lib/typescript/core/AudioFileUtils.d.ts +2 -0
  94. package/lib/typescript/core/AudioFileUtils.d.ts.map +1 -0
  95. package/lib/typescript/interfaces.d.ts +3 -0
  96. package/lib/typescript/interfaces.d.ts.map +1 -1
  97. package/lib/typescript/mock/index.d.ts +3 -1
  98. package/lib/typescript/mock/index.d.ts.map +1 -1
  99. package/package.json +3 -3
  100. package/scripts/download-prebuilt-binaries.sh +34 -1
  101. package/src/AudioAPIModule/AudioAPIModule.ts +1 -0
  102. package/src/AudioAPIModule/globals.d.ts +3 -0
  103. package/src/api.ts +1 -0
  104. package/src/api.web.ts +7 -0
  105. package/src/core/AudioFileUtils.ts +49 -0
  106. package/src/interfaces.ts +7 -0
  107. 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