react-native-audio-api 0.9.0-nightly-7ecb495-20251008 → 0.9.1
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/android/src/main/cpp/audioapi/android/core/{utils/AudioDecoder.cpp → AudioDecoder.cpp} +75 -79
- 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/common/cpp/audioapi/AudioAPIModuleInstaller.h +43 -124
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.cpp +101 -1
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +3 -0
- package/common/cpp/audioapi/HostObjects/sources/AudioBufferHostObject.cpp +3 -8
- package/common/cpp/audioapi/core/AudioContext.cpp +2 -0
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +35 -0
- package/common/cpp/audioapi/core/BaseAudioContext.h +12 -4
- package/common/cpp/audioapi/core/OfflineAudioContext.cpp +2 -0
- package/common/cpp/audioapi/core/effects/WorkletNode.cpp +16 -28
- package/common/cpp/audioapi/core/effects/WorkletNode.h +2 -3
- package/common/cpp/audioapi/core/effects/WorkletProcessingNode.cpp +5 -6
- package/common/cpp/audioapi/core/sources/AudioBuffer.h +1 -0
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.cpp +0 -4
- package/common/cpp/audioapi/core/sources/AudioBufferBaseSourceNode.h +0 -1
- package/common/cpp/audioapi/core/sources/AudioBufferSourceNode.cpp +0 -2
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.cpp +0 -4
- package/common/cpp/audioapi/core/sources/AudioScheduledSourceNode.h +0 -1
- package/common/cpp/audioapi/core/sources/StreamerNode.cpp +16 -6
- package/common/cpp/audioapi/core/sources/StreamerNode.h +3 -1
- package/common/cpp/audioapi/core/sources/WorkletSourceNode.cpp +2 -3
- package/common/cpp/audioapi/core/utils/AudioDecoder.h +91 -36
- package/common/cpp/audioapi/core/utils/Constants.h +0 -4
- package/common/cpp/audioapi/events/AudioEventHandlerRegistry.cpp +5 -1
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64/libavcodec.framework/libavcodec +0 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/ios-arm64_x86_64-simulator/libavcodec.framework/libavcodec +0 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/Info.plist +5 -5
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64/libavformat.framework/libavformat +0 -0
- package/common/cpp/audioapi/external/libavformat.xcframework/ios-arm64_x86_64-simulator/libavformat.framework/libavformat +0 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/libavutil +0 -0
- package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64_x86_64-simulator/libavutil.framework/libavutil +0 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/Info.plist +5 -5
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64/libswresample.framework/libswresample +0 -0
- package/common/cpp/audioapi/external/libswresample.xcframework/ios-arm64_x86_64-simulator/libswresample.framework/libswresample +0 -0
- package/common/cpp/audioapi/jsi/AudioArrayBuffer.cpp +2 -2
- package/common/cpp/audioapi/jsi/AudioArrayBuffer.h +10 -11
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.cpp +282 -241
- package/common/cpp/audioapi/libs/ffmpeg/FFmpegDecoding.h +19 -57
- package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +1 -1
- package/common/cpp/audioapi/utils/AudioBus.cpp +4 -0
- package/common/cpp/audioapi/utils/AudioBus.h +1 -0
- package/common/cpp/test/CMakeLists.txt +8 -5
- package/common/cpp/test/RunTests.sh +2 -2
- package/common/cpp/test/{AudioParamTest.cpp → src/AudioParamTest.cpp} +1 -1
- package/common/cpp/test/src/ConstantSourceTest.cpp +64 -0
- package/common/cpp/test/{GainTest.cpp → src/GainTest.cpp} +11 -10
- package/common/cpp/test/{MockAudioEventHandlerRegistry.h → src/MockAudioEventHandlerRegistry.h} +4 -2
- package/common/cpp/test/{OscillatorTest.cpp → src/OscillatorTest.cpp} +6 -4
- package/common/cpp/test/{StereoPannerTest.cpp → src/StereoPannerTest.cpp} +1 -1
- package/ios/audioapi/ios/core/AudioDecoder.mm +156 -0
- package/lib/commonjs/api.js +1 -21
- package/lib/commonjs/api.js.map +1 -1
- package/lib/commonjs/core/BaseAudioContext.js +18 -11
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/module/api.js +1 -3
- package/lib/module/api.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +18 -11
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/typescript/api.d.ts +1 -5
- package/lib/typescript/api.d.ts.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +6 -3
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +3 -10
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/api.ts +0 -10
- package/src/core/BaseAudioContext.ts +29 -26
- package/src/interfaces.ts +6 -26
- package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.cpp +0 -133
- package/common/cpp/audioapi/HostObjects/utils/AudioDecoderHostObject.h +0 -28
- package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.cpp +0 -58
- package/common/cpp/audioapi/HostObjects/utils/AudioStretcherHostObject.h +0 -26
- package/common/cpp/audioapi/core/types/AudioFormat.h +0 -16
- package/common/cpp/audioapi/core/utils/AudioStretcher.cpp +0 -75
- package/common/cpp/audioapi/core/utils/AudioStretcher.h +0 -30
- package/ios/audioapi/ios/core/utils/AudioDecoder.mm +0 -160
- package/lib/commonjs/core/AudioDecoder.js +0 -48
- package/lib/commonjs/core/AudioDecoder.js.map +0 -1
- package/lib/commonjs/core/AudioStretcher.js +0 -31
- package/lib/commonjs/core/AudioStretcher.js.map +0 -1
- package/lib/module/core/AudioDecoder.js +0 -42
- package/lib/module/core/AudioDecoder.js.map +0 -1
- package/lib/module/core/AudioStretcher.js +0 -26
- package/lib/module/core/AudioStretcher.js.map +0 -1
- package/lib/typescript/core/AudioDecoder.d.ts +0 -4
- package/lib/typescript/core/AudioDecoder.d.ts.map +0 -1
- package/lib/typescript/core/AudioStretcher.d.ts +0 -3
- package/lib/typescript/core/AudioStretcher.d.ts.map +0 -1
- package/src/core/AudioDecoder.ts +0 -78
- package/src/core/AudioStretcher.ts +0 -43
package/lib/module/api.js
CHANGED
|
@@ -6,7 +6,7 @@ import { NativeAudioAPIModule } from "./specs/index.js";
|
|
|
6
6
|
|
|
7
7
|
/* eslint-disable no-var */
|
|
8
8
|
|
|
9
|
-
if (global.createAudioContext == null || global.createOfflineAudioContext == null || global.createAudioRecorder == null || global.
|
|
9
|
+
if (global.createAudioContext == null || global.createOfflineAudioContext == null || global.createAudioRecorder == null || global.AudioEventEmitter == null) {
|
|
10
10
|
if (!NativeAudioAPIModule) {
|
|
11
11
|
throw new Error(`Failed to install react-native-audio-api: The native module could not be found.`);
|
|
12
12
|
}
|
|
@@ -36,8 +36,6 @@ export { default as StreamerNode } from "./core/StreamerNode.js";
|
|
|
36
36
|
export { default as ConstantSourceNode } from "./core/ConstantSourceNode.js";
|
|
37
37
|
export { default as AudioManager } from "./system/index.js";
|
|
38
38
|
export { default as useSystemVolume } from "./hooks/useSystemVolume.js";
|
|
39
|
-
export { decodeAudioData, decodePCMInBase64 } from "./core/AudioDecoder.js";
|
|
40
|
-
export { default as changePlaybackSpeed } from "./core/AudioStretcher.js";
|
|
41
39
|
export { OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, WindowType, PeriodicWaveConstraints, AudioWorkletRuntime } from "./types.js";
|
|
42
40
|
export { IndexSizeError, InvalidAccessError, InvalidStateError, RangeError, NotSupportedError } from "./errors/index.js";
|
|
43
41
|
//# sourceMappingURL=api.js.map
|
package/lib/module/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeAudioAPIModule","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","
|
|
1
|
+
{"version":3,"names":["NativeAudioAPIModule","global","createAudioContext","createOfflineAudioContext","createAudioRecorder","AudioEventEmitter","Error","install","default","WorkletNode","WorkletSourceNode","WorkletProcessingNode","RecorderAdapterNode","AudioBuffer","AudioBufferSourceNode","AudioBufferQueueSourceNode","AudioContext","OfflineAudioContext","AudioDestinationNode","AudioNode","AnalyserNode","AudioParam","AudioScheduledSourceNode","BaseAudioContext","BiquadFilterNode","GainNode","OscillatorNode","StereoPannerNode","AudioRecorder","StreamerNode","ConstantSourceNode","AudioManager","useSystemVolume","OscillatorType","BiquadFilterType","ChannelCountMode","ChannelInterpretation","ContextState","WindowType","PeriodicWaveConstraints","AudioWorkletRuntime","IndexSizeError","InvalidAccessError","InvalidStateError","RangeError","NotSupportedError"],"sourceRoot":"../../src","sources":["api.ts"],"mappings":";;AAAA,SAASA,oBAAoB,QAAQ,kBAAS;;AAS9C;;AAoBA;;AAEA,IACEC,MAAM,CAACC,kBAAkB,IAAI,IAAI,IACjCD,MAAM,CAACE,yBAAyB,IAAI,IAAI,IACxCF,MAAM,CAACG,mBAAmB,IAAI,IAAI,IAClCH,MAAM,CAACI,iBAAiB,IAAI,IAAI,EAChC;EACA,IAAI,CAACL,oBAAoB,EAAE;IACzB,MAAM,IAAIM,KAAK,CACb,iFACF,CAAC;EACH;EAEAN,oBAAoB,CAACO,OAAO,CAAC,CAAC;AAChC;AAEA,SAASC,OAAO,IAAIC,WAAW,QAAQ,uBAAoB;AAC3D,SAASD,OAAO,IAAIE,iBAAiB,QAAQ,6BAA0B;AACvE,SAASF,OAAO,IAAIG,qBAAqB,QAAQ,iCAA8B;AAC/E,SAASH,OAAO,IAAII,mBAAmB,QAAQ,+BAA4B;AAC3E,SAASJ,OAAO,IAAIK,WAAW,QAAQ,uBAAoB;AAC3D,SAASL,OAAO,IAAIM,qBAAqB,QAAQ,iCAA8B;AAC/E,SAASN,OAAO,IAAIO,0BAA0B,QAAQ,sCAAmC;AACzF,SAASP,OAAO,IAAIQ,YAAY,QAAQ,wBAAqB;AAC7D,SAASR,OAAO,IAAIS,mBAAmB,QAAQ,+BAA4B;AAC3E,SAAST,OAAO,IAAIU,oBAAoB,QAAQ,gCAA6B;AAC7E,SAASV,OAAO,IAAIW,SAAS,QAAQ,qBAAkB;AACvD,SAASX,OAAO,IAAIY,YAAY,QAAQ,wBAAqB;AAC7D,SAASZ,OAAO,IAAIa,UAAU,QAAQ,sBAAmB;AACzD,SAASb,OAAO,IAAIc,wBAAwB,QAAQ,oCAAiC;AACrF,SAASd,OAAO,IAAIe,gBAAgB,QAAQ,4BAAyB;AACrE,SAASf,OAAO,IAAIgB,gBAAgB,QAAQ,4BAAyB;AACrE,SAAShB,OAAO,IAAIiB,QAAQ,QAAQ,oBAAiB;AACrD,SAASjB,OAAO,IAAIkB,cAAc,QAAQ,0BAAuB;AACjE,SAASlB,OAAO,IAAImB,gBAAgB,QAAQ,4BAAyB;AACrE,SAASnB,OAAO,IAAIoB,aAAa,QAAQ,yBAAsB;AAC/D,SAASpB,OAAO,IAAIqB,YAAY,QAAQ,wBAAqB;AAC7D,SAASrB,OAAO,IAAIsB,kBAAkB,QAAQ,8BAA2B;AACzE,SAAStB,OAAO,IAAIuB,YAAY,QAAQ,mBAAU;AAClD,SAASvB,OAAO,IAAIwB,eAAe,QAAQ,4BAAyB;AAEpE,SACEC,cAAc,EACdC,gBAAgB,EAChBC,gBAAgB,EAChBC,qBAAqB,EACrBC,YAAY,EACZC,UAAU,EACVC,uBAAuB,EACvBC,mBAAmB,QACd,YAAS;AAEhB,SACEC,cAAc,EACdC,kBAAkB,EAClBC,iBAAiB,EACjBC,UAAU,EACVC,iBAAiB,QACZ,mBAAU","ignoreList":[]}
|
|
@@ -10,7 +10,6 @@ import AudioBufferQueueSourceNode from "./AudioBufferQueueSourceNode.js";
|
|
|
10
10
|
import AudioBufferSourceNode from "./AudioBufferSourceNode.js";
|
|
11
11
|
import AudioDestinationNode from "./AudioDestinationNode.js";
|
|
12
12
|
import BiquadFilterNode from "./BiquadFilterNode.js";
|
|
13
|
-
import ConstantSourceNode from "./ConstantSourceNode.js";
|
|
14
13
|
import GainNode from "./GainNode.js";
|
|
15
14
|
import OscillatorNode from "./OscillatorNode.js";
|
|
16
15
|
import PeriodicWave from "./PeriodicWave.js";
|
|
@@ -18,7 +17,7 @@ import RecorderAdapterNode from "./RecorderAdapterNode.js";
|
|
|
18
17
|
import StereoPannerNode from "./StereoPannerNode.js";
|
|
19
18
|
import StreamerNode from "./StreamerNode.js";
|
|
20
19
|
import WorkletNode from "./WorkletNode.js";
|
|
21
|
-
import
|
|
20
|
+
import ConstantSourceNode from "./ConstantSourceNode.js";
|
|
22
21
|
export default class BaseAudioContext {
|
|
23
22
|
constructor(context) {
|
|
24
23
|
this.context = context;
|
|
@@ -31,15 +30,6 @@ export default class BaseAudioContext {
|
|
|
31
30
|
get state() {
|
|
32
31
|
return this.context.state;
|
|
33
32
|
}
|
|
34
|
-
async decodeAudioData(input, sampleRate) {
|
|
35
|
-
if (!(typeof input === 'string' || input instanceof ArrayBuffer)) {
|
|
36
|
-
throw new TypeError('Input must be a string or ArrayBuffer');
|
|
37
|
-
}
|
|
38
|
-
return await decodeAudioData(input, sampleRate ?? this.sampleRate);
|
|
39
|
-
}
|
|
40
|
-
async decodePCMInBase64(base64String, inputSampleRate, inputChannelCount, isInterleaved = true) {
|
|
41
|
-
return await decodePCMInBase64(base64String, inputSampleRate, inputChannelCount, isInterleaved);
|
|
42
|
-
}
|
|
43
33
|
createWorkletNode(callback, bufferLength, inputChannelCount, workletRuntime = 'AudioRuntime') {
|
|
44
34
|
if (inputChannelCount < 1 || inputChannelCount > 32) {
|
|
45
35
|
throw new NotSupportedError(`The number of input channels provided (${inputChannelCount}) can not be less than 1 or greater than 32`);
|
|
@@ -137,5 +127,22 @@ export default class BaseAudioContext {
|
|
|
137
127
|
createAnalyser() {
|
|
138
128
|
return new AnalyserNode(this, this.context.createAnalyser());
|
|
139
129
|
}
|
|
130
|
+
|
|
131
|
+
/** Decodes audio data from a local file path. */
|
|
132
|
+
async decodeAudioDataSource(sourcePath) {
|
|
133
|
+
// Remove the file:// prefix if it exists
|
|
134
|
+
if (sourcePath.startsWith('file://')) {
|
|
135
|
+
sourcePath = sourcePath.replace('file://', '');
|
|
136
|
+
}
|
|
137
|
+
return new AudioBuffer(await this.context.decodeAudioDataSource(sourcePath));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/** Decodes audio data from an ArrayBuffer. */
|
|
141
|
+
async decodeAudioData(data) {
|
|
142
|
+
return new AudioBuffer(await this.context.decodeAudioData(new Uint8Array(data)));
|
|
143
|
+
}
|
|
144
|
+
async decodePCMInBase64Data(base64, playbackRate = 1.0) {
|
|
145
|
+
return new AudioBuffer(await this.context.decodePCMAudioDataInBase64(base64, playbackRate));
|
|
146
|
+
}
|
|
140
147
|
}
|
|
141
148
|
//# sourceMappingURL=BaseAudioContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["InvalidAccessError","NotSupportedError","isWorkletsAvailable","workletsModule","WorkletSourceNode","WorkletProcessingNode","AnalyserNode","AudioBuffer","AudioBufferQueueSourceNode","AudioBufferSourceNode","AudioDestinationNode","BiquadFilterNode","
|
|
1
|
+
{"version":3,"names":["InvalidAccessError","NotSupportedError","isWorkletsAvailable","workletsModule","WorkletSourceNode","WorkletProcessingNode","AnalyserNode","AudioBuffer","AudioBufferQueueSourceNode","AudioBufferSourceNode","AudioDestinationNode","BiquadFilterNode","GainNode","OscillatorNode","PeriodicWave","RecorderAdapterNode","StereoPannerNode","StreamerNode","WorkletNode","ConstantSourceNode","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createWorkletNode","callback","bufferLength","inputChannelCount","workletRuntime","shareableWorklet","makeShareableCloneRecursive","audioBuffers","channelCount","floatAudioData","map","buffer","Float32Array","Error","createWorkletProcessingNode","inputBuffers","outputBuffers","framesToProcess","inputData","outputData","createWorkletSourceNode","startOffset","createRecorderAdapter","createOscillator","createStreamer","createConstantSource","createGain","createStereoPanner","createBiquadFilter","createBufferSource","options","pitchCorrection","createBufferQueueSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","decodeAudioDataSource","sourcePath","startsWith","replace","decodeAudioData","data","Uint8Array","decodePCMInBase64Data","base64","playbackRate","decodePCMAudioDataInBase64"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/typescript/api.d.ts
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { AudioRecorderOptions } from './types';
|
|
2
|
-
import type { IAudioContext,
|
|
2
|
+
import type { IAudioContext, IAudioRecorder, IOfflineAudioContext, IAudioEventEmitter } from './interfaces';
|
|
3
3
|
declare global {
|
|
4
4
|
var createAudioContext: (sampleRate: number, initSuspended: boolean, audioWorkletRuntime: any) => IAudioContext;
|
|
5
5
|
var createOfflineAudioContext: (numberOfChannels: number, length: number, sampleRate: number, audioWorkletRuntime: any) => IOfflineAudioContext;
|
|
6
6
|
var createAudioRecorder: (options: AudioRecorderOptions) => IAudioRecorder;
|
|
7
|
-
var createAudioDecoder: () => IAudioDecoder;
|
|
8
|
-
var createAudioStretcher: () => IAudioStretcher;
|
|
9
7
|
var AudioEventEmitter: IAudioEventEmitter;
|
|
10
8
|
}
|
|
11
9
|
export { default as WorkletNode } from './core/WorkletNode';
|
|
@@ -32,8 +30,6 @@ export { default as StreamerNode } from './core/StreamerNode';
|
|
|
32
30
|
export { default as ConstantSourceNode } from './core/ConstantSourceNode';
|
|
33
31
|
export { default as AudioManager } from './system';
|
|
34
32
|
export { default as useSystemVolume } from './hooks/useSystemVolume';
|
|
35
|
-
export { decodeAudioData, decodePCMInBase64 } from './core/AudioDecoder';
|
|
36
|
-
export { default as changePlaybackSpeed } from './core/AudioStretcher';
|
|
37
33
|
export { OscillatorType, BiquadFilterType, ChannelCountMode, ChannelInterpretation, ContextState, WindowType, PeriodicWaveConstraints, AudioWorkletRuntime, } from './types';
|
|
38
34
|
export { IndexSizeError, InvalidAccessError, InvalidStateError, RangeError, NotSupportedError, } from './errors';
|
|
39
35
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/api.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAGtB,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,kBAAkB,EAAE,CACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,OAAO,EAEtB,mBAAmB,EAAE,GAAG,KACrB,aAAa,CAAC;IACnB,IAAI,yBAAyB,EAAE,CAC7B,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAElB,mBAAmB,EAAE,GAAG,KACrB,oBAAoB,CAAC;IAE1B,IAAI,mBAAmB,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,cAAc,CAAC;IAE3E,IAAI,iBAAiB,EAAE,kBAAkB,CAAC;CAC3C;AAkBD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,UAAU,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAErE,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,UAAU,EACV,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,iBAAiB,GAClB,MAAM,UAAU,CAAC"}
|
|
@@ -8,7 +8,6 @@ import AudioBufferQueueSourceNode from './AudioBufferQueueSourceNode';
|
|
|
8
8
|
import AudioBufferSourceNode from './AudioBufferSourceNode';
|
|
9
9
|
import AudioDestinationNode from './AudioDestinationNode';
|
|
10
10
|
import BiquadFilterNode from './BiquadFilterNode';
|
|
11
|
-
import ConstantSourceNode from './ConstantSourceNode';
|
|
12
11
|
import GainNode from './GainNode';
|
|
13
12
|
import OscillatorNode from './OscillatorNode';
|
|
14
13
|
import PeriodicWave from './PeriodicWave';
|
|
@@ -16,6 +15,7 @@ import RecorderAdapterNode from './RecorderAdapterNode';
|
|
|
16
15
|
import StereoPannerNode from './StereoPannerNode';
|
|
17
16
|
import StreamerNode from './StreamerNode';
|
|
18
17
|
import WorkletNode from './WorkletNode';
|
|
18
|
+
import ConstantSourceNode from './ConstantSourceNode';
|
|
19
19
|
export default class BaseAudioContext {
|
|
20
20
|
readonly destination: AudioDestinationNode;
|
|
21
21
|
readonly sampleRate: number;
|
|
@@ -23,8 +23,6 @@ export default class BaseAudioContext {
|
|
|
23
23
|
constructor(context: IBaseAudioContext);
|
|
24
24
|
get currentTime(): number;
|
|
25
25
|
get state(): ContextState;
|
|
26
|
-
decodeAudioData(input: string | ArrayBuffer, sampleRate?: number): Promise<AudioBuffer>;
|
|
27
|
-
decodePCMInBase64(base64String: string, inputSampleRate: number, inputChannelCount: number, isInterleaved?: boolean): Promise<AudioBuffer>;
|
|
28
26
|
createWorkletNode(callback: (audioData: Array<Float32Array>, channelCount: number) => void, bufferLength: number, inputChannelCount: number, workletRuntime?: AudioWorkletRuntime): WorkletNode;
|
|
29
27
|
createWorkletProcessingNode(callback: (inputData: Array<Float32Array>, outputData: Array<Float32Array>, framesToProcess: number, currentTime: number) => void, workletRuntime?: AudioWorkletRuntime): WorkletProcessingNode;
|
|
30
28
|
createWorkletSourceNode(callback: (audioData: Array<Float32Array>, framesToProcess: number, currentTime: number, startOffset: number) => void, workletRuntime?: AudioWorkletRuntime): WorkletSourceNode;
|
|
@@ -40,5 +38,10 @@ export default class BaseAudioContext {
|
|
|
40
38
|
createBuffer(numOfChannels: number, length: number, sampleRate: number): AudioBuffer;
|
|
41
39
|
createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
|
|
42
40
|
createAnalyser(): AnalyserNode;
|
|
41
|
+
/** Decodes audio data from a local file path. */
|
|
42
|
+
decodeAudioDataSource(sourcePath: string): Promise<AudioBuffer>;
|
|
43
|
+
/** Decodes audio data from an ArrayBuffer. */
|
|
44
|
+
decodeAudioData(data: ArrayBuffer): Promise<AudioBuffer>;
|
|
45
|
+
decodePCMInBase64Data(base64: string, playbackRate?: number): Promise<AudioBuffer>;
|
|
43
46
|
}
|
|
44
47
|
//# sourceMappingURL=BaseAudioContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/BaseAudioContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,gCAAgC,EAChC,YAAY,EACZ,uBAAuB,EACvB,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AACpD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AACtE,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,
|
|
1
|
+
{"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/BaseAudioContext.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,8 +9,6 @@ export interface IBaseAudioContext {
|
|
|
9
9
|
readonly state: ContextState;
|
|
10
10
|
readonly sampleRate: number;
|
|
11
11
|
readonly currentTime: number;
|
|
12
|
-
readonly decoder: IAudioDecoder;
|
|
13
|
-
readonly stretcher: IAudioStretcher;
|
|
14
12
|
createRecorderAdapter(): IRecorderAdapterNode;
|
|
15
13
|
createWorkletSourceNode(shareableWorklet: ShareableWorkletCallback, shouldUseUiRuntime: boolean): IWorkletSourceNode;
|
|
16
14
|
createWorkletNode(shareableWorklet: ShareableWorkletCallback, shouldUseUiRuntime: boolean, bufferLength: number, inputChannelCount: number): IWorkletNode;
|
|
@@ -25,6 +23,9 @@ export interface IBaseAudioContext {
|
|
|
25
23
|
createBuffer: (channels: number, length: number, sampleRate: number) => IAudioBuffer;
|
|
26
24
|
createPeriodicWave: (real: Float32Array, imag: Float32Array, disableNormalization: boolean) => IPeriodicWave;
|
|
27
25
|
createAnalyser: () => IAnalyserNode;
|
|
26
|
+
decodeAudioDataSource: (sourcePath: string) => Promise<IAudioBuffer>;
|
|
27
|
+
decodeAudioData: (arrayBuffer: ArrayBuffer) => Promise<IAudioBuffer>;
|
|
28
|
+
decodePCMAudioDataInBase64: (b64: string, playbackRate: number) => Promise<IAudioBuffer>;
|
|
28
29
|
createStreamer: () => IStreamerNode;
|
|
29
30
|
}
|
|
30
31
|
export interface IAudioContext extends IBaseAudioContext {
|
|
@@ -153,14 +154,6 @@ export interface IAudioRecorder {
|
|
|
153
154
|
disconnect: () => void;
|
|
154
155
|
onAudioReady: string;
|
|
155
156
|
}
|
|
156
|
-
export interface IAudioDecoder {
|
|
157
|
-
decodeWithMemoryBlock: (arrayBuffer: ArrayBuffer, sampleRate?: number) => Promise<IAudioBuffer>;
|
|
158
|
-
decodeWithFilePath: (sourcePath: string, sampleRate?: number) => Promise<IAudioBuffer>;
|
|
159
|
-
decodeWithPCMInBase64: (b64: string, inputSampleRate: number, inputChannelCount: number, interleaved?: boolean) => Promise<IAudioBuffer>;
|
|
160
|
-
}
|
|
161
|
-
export interface IAudioStretcher {
|
|
162
|
-
changePlaybackSpeed: (arrayBuffer: AudioBuffer, playbackSpeed: number) => Promise<IAudioBuffer>;
|
|
163
|
-
}
|
|
164
157
|
export interface IAudioEventEmitter {
|
|
165
158
|
addAudioEventListener<Name extends AudioEventName>(name: Name, callback: AudioEventCallback<Name>): string;
|
|
166
159
|
removeAudioEventListener<Name extends AudioEventName>(name: Name, subscriptionId: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACpE,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,mBAAmB,GAAG,CAChC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,EAC7B,YAAY,EAAE,MAAM,KACjB,IAAI,CAAC;AAEV,MAAM,MAAM,yBAAyB,GAAG,CACtC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,EAC7B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,6BAA6B,GAAG,CAC1C,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,EAC7B,UAAU,EAAE,KAAK,CAAC,WAAW,CAAC,EAC9B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,KAChB,IAAI,CAAC;AAEV,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,yBAAyB,GACzB,6BAA6B,CAAC;AAElC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,qBAAqB,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-audio-api",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "react-native-audio-api provides system for controlling audio in React Native environment compatible with Web Audio API specification",
|
|
5
5
|
"bin": {
|
|
6
6
|
"setup-rn-audio-api-web": "./scripts/setup-rn-audio-api-web.js"
|
package/src/api.ts
CHANGED
|
@@ -2,9 +2,7 @@ import { NativeAudioAPIModule } from './specs';
|
|
|
2
2
|
import { AudioRecorderOptions } from './types';
|
|
3
3
|
import type {
|
|
4
4
|
IAudioContext,
|
|
5
|
-
IAudioDecoder,
|
|
6
5
|
IAudioRecorder,
|
|
7
|
-
IAudioStretcher,
|
|
8
6
|
IOfflineAudioContext,
|
|
9
7
|
IAudioEventEmitter,
|
|
10
8
|
} from './interfaces';
|
|
@@ -27,10 +25,6 @@ declare global {
|
|
|
27
25
|
|
|
28
26
|
var createAudioRecorder: (options: AudioRecorderOptions) => IAudioRecorder;
|
|
29
27
|
|
|
30
|
-
var createAudioDecoder: () => IAudioDecoder;
|
|
31
|
-
|
|
32
|
-
var createAudioStretcher: () => IAudioStretcher;
|
|
33
|
-
|
|
34
28
|
var AudioEventEmitter: IAudioEventEmitter;
|
|
35
29
|
}
|
|
36
30
|
/* eslint-disable no-var */
|
|
@@ -39,8 +33,6 @@ if (
|
|
|
39
33
|
global.createAudioContext == null ||
|
|
40
34
|
global.createOfflineAudioContext == null ||
|
|
41
35
|
global.createAudioRecorder == null ||
|
|
42
|
-
global.createAudioDecoder == null ||
|
|
43
|
-
global.createAudioStretcher == null ||
|
|
44
36
|
global.AudioEventEmitter == null
|
|
45
37
|
) {
|
|
46
38
|
if (!NativeAudioAPIModule) {
|
|
@@ -76,8 +68,6 @@ export { default as StreamerNode } from './core/StreamerNode';
|
|
|
76
68
|
export { default as ConstantSourceNode } from './core/ConstantSourceNode';
|
|
77
69
|
export { default as AudioManager } from './system';
|
|
78
70
|
export { default as useSystemVolume } from './hooks/useSystemVolume';
|
|
79
|
-
export { decodeAudioData, decodePCMInBase64 } from './core/AudioDecoder';
|
|
80
|
-
export { default as changePlaybackSpeed } from './core/AudioStretcher';
|
|
81
71
|
|
|
82
72
|
export {
|
|
83
73
|
OscillatorType,
|
|
@@ -15,7 +15,6 @@ import AudioBufferQueueSourceNode from './AudioBufferQueueSourceNode';
|
|
|
15
15
|
import AudioBufferSourceNode from './AudioBufferSourceNode';
|
|
16
16
|
import AudioDestinationNode from './AudioDestinationNode';
|
|
17
17
|
import BiquadFilterNode from './BiquadFilterNode';
|
|
18
|
-
import ConstantSourceNode from './ConstantSourceNode';
|
|
19
18
|
import GainNode from './GainNode';
|
|
20
19
|
import OscillatorNode from './OscillatorNode';
|
|
21
20
|
import PeriodicWave from './PeriodicWave';
|
|
@@ -23,7 +22,7 @@ import RecorderAdapterNode from './RecorderAdapterNode';
|
|
|
23
22
|
import StereoPannerNode from './StereoPannerNode';
|
|
24
23
|
import StreamerNode from './StreamerNode';
|
|
25
24
|
import WorkletNode from './WorkletNode';
|
|
26
|
-
import
|
|
25
|
+
import ConstantSourceNode from './ConstantSourceNode';
|
|
27
26
|
|
|
28
27
|
export default class BaseAudioContext {
|
|
29
28
|
readonly destination: AudioDestinationNode;
|
|
@@ -44,30 +43,6 @@ export default class BaseAudioContext {
|
|
|
44
43
|
return this.context.state;
|
|
45
44
|
}
|
|
46
45
|
|
|
47
|
-
public async decodeAudioData(
|
|
48
|
-
input: string | ArrayBuffer,
|
|
49
|
-
sampleRate?: number
|
|
50
|
-
): Promise<AudioBuffer> {
|
|
51
|
-
if (!(typeof input === 'string' || input instanceof ArrayBuffer)) {
|
|
52
|
-
throw new TypeError('Input must be a string or ArrayBuffer');
|
|
53
|
-
}
|
|
54
|
-
return await decodeAudioData(input, sampleRate ?? this.sampleRate);
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
public async decodePCMInBase64(
|
|
58
|
-
base64String: string,
|
|
59
|
-
inputSampleRate: number,
|
|
60
|
-
inputChannelCount: number,
|
|
61
|
-
isInterleaved: boolean = true
|
|
62
|
-
): Promise<AudioBuffer> {
|
|
63
|
-
return await decodePCMInBase64(
|
|
64
|
-
base64String,
|
|
65
|
-
inputSampleRate,
|
|
66
|
-
inputChannelCount,
|
|
67
|
-
isInterleaved
|
|
68
|
-
);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
46
|
createWorkletNode(
|
|
72
47
|
callback: (audioData: Array<Float32Array>, channelCount: number) => void,
|
|
73
48
|
bufferLength: number,
|
|
@@ -289,4 +264,32 @@ export default class BaseAudioContext {
|
|
|
289
264
|
createAnalyser(): AnalyserNode {
|
|
290
265
|
return new AnalyserNode(this, this.context.createAnalyser());
|
|
291
266
|
}
|
|
267
|
+
|
|
268
|
+
/** Decodes audio data from a local file path. */
|
|
269
|
+
async decodeAudioDataSource(sourcePath: string): Promise<AudioBuffer> {
|
|
270
|
+
// Remove the file:// prefix if it exists
|
|
271
|
+
if (sourcePath.startsWith('file://')) {
|
|
272
|
+
sourcePath = sourcePath.replace('file://', '');
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
return new AudioBuffer(
|
|
276
|
+
await this.context.decodeAudioDataSource(sourcePath)
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/** Decodes audio data from an ArrayBuffer. */
|
|
281
|
+
async decodeAudioData(data: ArrayBuffer): Promise<AudioBuffer> {
|
|
282
|
+
return new AudioBuffer(
|
|
283
|
+
await this.context.decodeAudioData(new Uint8Array(data))
|
|
284
|
+
);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
async decodePCMInBase64Data(
|
|
288
|
+
base64: string,
|
|
289
|
+
playbackRate: number = 1.0
|
|
290
|
+
): Promise<AudioBuffer> {
|
|
291
|
+
return new AudioBuffer(
|
|
292
|
+
await this.context.decodePCMAudioDataInBase64(base64, playbackRate)
|
|
293
|
+
);
|
|
294
|
+
}
|
|
292
295
|
}
|
package/src/interfaces.ts
CHANGED
|
@@ -37,8 +37,6 @@ export interface IBaseAudioContext {
|
|
|
37
37
|
readonly state: ContextState;
|
|
38
38
|
readonly sampleRate: number;
|
|
39
39
|
readonly currentTime: number;
|
|
40
|
-
readonly decoder: IAudioDecoder;
|
|
41
|
-
readonly stretcher: IAudioStretcher;
|
|
42
40
|
|
|
43
41
|
createRecorderAdapter(): IRecorderAdapterNode;
|
|
44
42
|
createWorkletSourceNode(
|
|
@@ -75,6 +73,12 @@ export interface IBaseAudioContext {
|
|
|
75
73
|
disableNormalization: boolean
|
|
76
74
|
) => IPeriodicWave;
|
|
77
75
|
createAnalyser: () => IAnalyserNode;
|
|
76
|
+
decodeAudioDataSource: (sourcePath: string) => Promise<IAudioBuffer>;
|
|
77
|
+
decodeAudioData: (arrayBuffer: ArrayBuffer) => Promise<IAudioBuffer>;
|
|
78
|
+
decodePCMAudioDataInBase64: (
|
|
79
|
+
b64: string,
|
|
80
|
+
playbackRate: number
|
|
81
|
+
) => Promise<IAudioBuffer>;
|
|
78
82
|
createStreamer: () => IStreamerNode;
|
|
79
83
|
}
|
|
80
84
|
|
|
@@ -260,30 +264,6 @@ export interface IAudioRecorder {
|
|
|
260
264
|
onAudioReady: string;
|
|
261
265
|
}
|
|
262
266
|
|
|
263
|
-
export interface IAudioDecoder {
|
|
264
|
-
decodeWithMemoryBlock: (
|
|
265
|
-
arrayBuffer: ArrayBuffer,
|
|
266
|
-
sampleRate?: number
|
|
267
|
-
) => Promise<IAudioBuffer>;
|
|
268
|
-
decodeWithFilePath: (
|
|
269
|
-
sourcePath: string,
|
|
270
|
-
sampleRate?: number
|
|
271
|
-
) => Promise<IAudioBuffer>;
|
|
272
|
-
decodeWithPCMInBase64: (
|
|
273
|
-
b64: string,
|
|
274
|
-
inputSampleRate: number,
|
|
275
|
-
inputChannelCount: number,
|
|
276
|
-
interleaved?: boolean
|
|
277
|
-
) => Promise<IAudioBuffer>;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
export interface IAudioStretcher {
|
|
281
|
-
changePlaybackSpeed: (
|
|
282
|
-
arrayBuffer: AudioBuffer,
|
|
283
|
-
playbackSpeed: number
|
|
284
|
-
) => Promise<IAudioBuffer>;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
267
|
export interface IAudioEventEmitter {
|
|
288
268
|
addAudioEventListener<Name extends AudioEventName>(
|
|
289
269
|
name: Name,
|
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
|
|
4
|
-
#include <audioapi/HostObjects/utils/AudioDecoderHostObject.h>
|
|
5
|
-
#include <audioapi/core/utils/AudioDecoder.h>
|
|
6
|
-
#include <audioapi/jsi/JsiPromise.h>
|
|
7
|
-
|
|
8
|
-
#include <jsi/jsi.h>
|
|
9
|
-
#include <memory>
|
|
10
|
-
#include <string>
|
|
11
|
-
#include <thread>
|
|
12
|
-
#include <utility>
|
|
13
|
-
|
|
14
|
-
namespace audioapi {
|
|
15
|
-
AudioDecoderHostObject::AudioDecoderHostObject(
|
|
16
|
-
jsi::Runtime *runtime,
|
|
17
|
-
const std::shared_ptr<react::CallInvoker> &callInvoker) {
|
|
18
|
-
promiseVendor_ = std::make_shared<PromiseVendor>(runtime, callInvoker);
|
|
19
|
-
addFunctions(
|
|
20
|
-
JSI_EXPORT_FUNCTION(AudioDecoderHostObject, decodeWithPCMInBase64),
|
|
21
|
-
JSI_EXPORT_FUNCTION(AudioDecoderHostObject, decodeWithFilePath),
|
|
22
|
-
JSI_EXPORT_FUNCTION(AudioDecoderHostObject, decodeWithMemoryBlock));
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
JSI_HOST_FUNCTION_IMPL(AudioDecoderHostObject, decodeWithMemoryBlock) {
|
|
26
|
-
auto arrayBuffer = args[0]
|
|
27
|
-
.getObject(runtime)
|
|
28
|
-
.getPropertyAsObject(runtime, "buffer")
|
|
29
|
-
.getArrayBuffer(runtime);
|
|
30
|
-
auto data = arrayBuffer.data(runtime);
|
|
31
|
-
auto size = static_cast<int>(arrayBuffer.size(runtime));
|
|
32
|
-
|
|
33
|
-
auto sampleRate = args[1].getNumber();
|
|
34
|
-
|
|
35
|
-
auto promise = promiseVendor_->createPromise(
|
|
36
|
-
[data, size, sampleRate](std::shared_ptr<Promise> promise) {
|
|
37
|
-
std::thread([data, size, sampleRate, promise = std::move(promise)]() {
|
|
38
|
-
auto result =
|
|
39
|
-
AudioDecoder::decodeWithMemoryBlock(data, size, sampleRate);
|
|
40
|
-
|
|
41
|
-
if (!result) {
|
|
42
|
-
promise->reject("Failed to decode audio data.");
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
auto audioBufferHostObject =
|
|
47
|
-
std::make_shared<AudioBufferHostObject>(result);
|
|
48
|
-
|
|
49
|
-
promise->resolve([audioBufferHostObject = std::move(
|
|
50
|
-
audioBufferHostObject)](jsi::Runtime &runtime) {
|
|
51
|
-
auto jsiObject = jsi::Object::createFromHostObject(
|
|
52
|
-
runtime, audioBufferHostObject);
|
|
53
|
-
jsiObject.setExternalMemoryPressure(
|
|
54
|
-
runtime, audioBufferHostObject->getSizeInBytes());
|
|
55
|
-
return jsiObject;
|
|
56
|
-
});
|
|
57
|
-
}).detach();
|
|
58
|
-
});
|
|
59
|
-
return promise;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
JSI_HOST_FUNCTION_IMPL(AudioDecoderHostObject, decodeWithFilePath) {
|
|
63
|
-
auto sourcePath = args[0].getString(runtime).utf8(runtime);
|
|
64
|
-
auto sampleRate = args[1].getNumber();
|
|
65
|
-
|
|
66
|
-
auto promise = promiseVendor_->createPromise(
|
|
67
|
-
[sourcePath, sampleRate](std::shared_ptr<Promise> promise) {
|
|
68
|
-
std::thread([sourcePath, sampleRate, promise = std::move(promise)]() {
|
|
69
|
-
auto result =
|
|
70
|
-
AudioDecoder::decodeWithFilePath(sourcePath, sampleRate);
|
|
71
|
-
|
|
72
|
-
if (!result) {
|
|
73
|
-
promise->reject("Failed to decode audio data source.");
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
auto audioBufferHostObject =
|
|
78
|
-
std::make_shared<AudioBufferHostObject>(result);
|
|
79
|
-
|
|
80
|
-
promise->resolve([audioBufferHostObject = std::move(
|
|
81
|
-
audioBufferHostObject)](jsi::Runtime &runtime) {
|
|
82
|
-
auto jsiObject = jsi::Object::createFromHostObject(
|
|
83
|
-
runtime, audioBufferHostObject);
|
|
84
|
-
jsiObject.setExternalMemoryPressure(
|
|
85
|
-
runtime, audioBufferHostObject->getSizeInBytes());
|
|
86
|
-
return jsiObject;
|
|
87
|
-
});
|
|
88
|
-
}).detach();
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
return promise;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
JSI_HOST_FUNCTION_IMPL(AudioDecoderHostObject, decodeWithPCMInBase64) {
|
|
95
|
-
auto b64 = args[0].getString(runtime).utf8(runtime);
|
|
96
|
-
auto inputSampleRate = args[1].getNumber();
|
|
97
|
-
auto inputChannelCount = args[2].getNumber();
|
|
98
|
-
auto interleaved = args[3].getBool();
|
|
99
|
-
|
|
100
|
-
auto promise = promiseVendor_->createPromise(
|
|
101
|
-
[b64, inputSampleRate, inputChannelCount, interleaved](
|
|
102
|
-
std::shared_ptr<Promise> promise) {
|
|
103
|
-
std::thread([b64,
|
|
104
|
-
inputSampleRate,
|
|
105
|
-
inputChannelCount,
|
|
106
|
-
interleaved,
|
|
107
|
-
promise = std::move(promise)]() {
|
|
108
|
-
auto result = AudioDecoder::decodeWithPCMInBase64(
|
|
109
|
-
b64, inputSampleRate, inputChannelCount, interleaved);
|
|
110
|
-
|
|
111
|
-
if (!result) {
|
|
112
|
-
promise->reject("Failed to decode audio data source.");
|
|
113
|
-
return;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
auto audioBufferHostObject =
|
|
117
|
-
std::make_shared<AudioBufferHostObject>(result);
|
|
118
|
-
|
|
119
|
-
promise->resolve([audioBufferHostObject = std::move(
|
|
120
|
-
audioBufferHostObject)](jsi::Runtime &runtime) {
|
|
121
|
-
auto jsiObject = jsi::Object::createFromHostObject(
|
|
122
|
-
runtime, audioBufferHostObject);
|
|
123
|
-
jsiObject.setExternalMemoryPressure(
|
|
124
|
-
runtime, audioBufferHostObject->getSizeInBytes());
|
|
125
|
-
return jsiObject;
|
|
126
|
-
});
|
|
127
|
-
}).detach();
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
return promise;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
} // namespace audioapi
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
#pragma once
|
|
2
|
-
|
|
3
|
-
#include <audioapi/HostObjects/sources/AudioBufferHostObject.h>
|
|
4
|
-
#include <audioapi/core/utils/AudioDecoder.h>
|
|
5
|
-
#include <audioapi/jsi/JsiPromise.h>
|
|
6
|
-
|
|
7
|
-
#include <jsi/jsi.h>
|
|
8
|
-
#include <memory>
|
|
9
|
-
#include <string>
|
|
10
|
-
#include <thread>
|
|
11
|
-
#include <utility>
|
|
12
|
-
|
|
13
|
-
namespace audioapi {
|
|
14
|
-
using namespace facebook;
|
|
15
|
-
|
|
16
|
-
class AudioDecoderHostObject : public JsiHostObject {
|
|
17
|
-
public:
|
|
18
|
-
explicit AudioDecoderHostObject(
|
|
19
|
-
jsi::Runtime *runtime,
|
|
20
|
-
const std::shared_ptr<react::CallInvoker> &callInvoker);
|
|
21
|
-
JSI_HOST_FUNCTION_DECL(decodeWithMemoryBlock);
|
|
22
|
-
JSI_HOST_FUNCTION_DECL(decodeWithFilePath);
|
|
23
|
-
JSI_HOST_FUNCTION_DECL(decodeWithPCMInBase64);
|
|
24
|
-
|
|
25
|
-
private:
|
|
26
|
-
std::shared_ptr<PromiseVendor> promiseVendor_;
|
|
27
|
-
};
|
|
28
|
-
} // namespace audioapi
|