react-native-audio-api 0.6.4-nightly-527099d-20250704 → 0.6.4-nightly-6fc62be-20250704
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/AudioDecoder.cpp +33 -41
- package/common/cpp/audioapi/HostObjects/BaseAudioContextHostObject.h +3 -4
- package/common/cpp/audioapi/core/AudioParam.cpp +4 -5
- package/common/cpp/audioapi/core/BaseAudioContext.cpp +2 -3
- package/common/cpp/audioapi/core/BaseAudioContext.h +1 -1
- package/common/cpp/audioapi/core/utils/AudioDecoder.h +1 -38
- package/ios/audioapi/ios/AudioAPIModule.mm +8 -11
- package/ios/audioapi/ios/core/AudioDecoder.mm +30 -33
- package/lib/commonjs/core/BaseAudioContext.js +6 -7
- package/lib/commonjs/core/BaseAudioContext.js.map +1 -1
- package/lib/module/core/BaseAudioContext.js +6 -7
- package/lib/module/core/BaseAudioContext.js.map +1 -1
- package/lib/typescript/core/BaseAudioContext.d.ts +1 -4
- package/lib/typescript/core/BaseAudioContext.d.ts.map +1 -1
- package/lib/typescript/interfaces.d.ts +1 -1
- package/lib/typescript/interfaces.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/BaseAudioContext.ts +9 -12
- package/src/interfaces.ts +1 -4
- package/common/cpp/audioapi/libs/audio-stretch/stretch.c +0 -610
- package/common/cpp/audioapi/libs/audio-stretch/stretch.h +0 -49
|
@@ -14,8 +14,8 @@ namespace audioapi {
|
|
|
14
14
|
std::shared_ptr<AudioBus> AudioDecoder::decodeWithFilePath(
|
|
15
15
|
const std::string &path) const {
|
|
16
16
|
ma_decoder decoder;
|
|
17
|
-
ma_decoder_config config =
|
|
18
|
-
|
|
17
|
+
ma_decoder_config config =
|
|
18
|
+
ma_decoder_config_init(ma_format_f32, 2, static_cast<int>(sampleRate_));
|
|
19
19
|
ma_result result = ma_decoder_init_file(path.c_str(), &config, &decoder);
|
|
20
20
|
if (result != MA_SUCCESS) {
|
|
21
21
|
__android_log_print(
|
|
@@ -32,31 +32,31 @@ std::shared_ptr<AudioBus> AudioDecoder::decodeWithFilePath(
|
|
|
32
32
|
ma_uint64 totalFrameCount;
|
|
33
33
|
ma_decoder_get_length_in_pcm_frames(&decoder, &totalFrameCount);
|
|
34
34
|
|
|
35
|
-
std::
|
|
35
|
+
auto audioBus = std::make_shared<AudioBus>(
|
|
36
|
+
static_cast<int>(totalFrameCount), 2, sampleRate_);
|
|
37
|
+
auto *buffer = new float[totalFrameCount * 2];
|
|
36
38
|
|
|
37
39
|
ma_uint64 framesDecoded;
|
|
38
|
-
ma_decoder_read_pcm_frames(
|
|
39
|
-
&decoder, buffer.data(), totalFrameCount, &framesDecoded);
|
|
40
|
+
ma_decoder_read_pcm_frames(&decoder, buffer, totalFrameCount, &framesDecoded);
|
|
40
41
|
|
|
41
42
|
if (framesDecoded == 0) {
|
|
42
43
|
__android_log_print(ANDROID_LOG_ERROR, "AudioDecoder", "Failed to decode");
|
|
43
44
|
|
|
45
|
+
delete[] buffer;
|
|
44
46
|
ma_decoder_uninit(&decoder);
|
|
47
|
+
|
|
45
48
|
return nullptr;
|
|
46
49
|
}
|
|
47
50
|
|
|
48
|
-
|
|
49
|
-
auto audioBus =
|
|
50
|
-
std::make_shared<AudioBus>(outputFrames, numChannels_, sampleRate_);
|
|
51
|
-
|
|
52
|
-
for (int i = 0; i < numChannels_; ++i) {
|
|
51
|
+
for (int i = 0; i < decoder.outputChannels; ++i) {
|
|
53
52
|
auto channelData = audioBus->getChannel(i)->getData();
|
|
54
53
|
|
|
55
|
-
for (ma_uint64 j = 0; j <
|
|
56
|
-
channelData[j] =
|
|
54
|
+
for (ma_uint64 j = 0; j < framesDecoded; ++j) {
|
|
55
|
+
channelData[j] = buffer[j * decoder.outputChannels + i];
|
|
57
56
|
}
|
|
58
57
|
}
|
|
59
58
|
|
|
59
|
+
delete[] buffer;
|
|
60
60
|
ma_decoder_uninit(&decoder);
|
|
61
61
|
|
|
62
62
|
return audioBus;
|
|
@@ -66,8 +66,8 @@ std::shared_ptr<AudioBus> AudioDecoder::decodeWithMemoryBlock(
|
|
|
66
66
|
const void *data,
|
|
67
67
|
size_t size) const {
|
|
68
68
|
ma_decoder decoder;
|
|
69
|
-
ma_decoder_config config =
|
|
70
|
-
|
|
69
|
+
ma_decoder_config config =
|
|
70
|
+
ma_decoder_config_init(ma_format_f32, 2, static_cast<int>(sampleRate_));
|
|
71
71
|
ma_result result = ma_decoder_init_memory(data, size, &config, &decoder);
|
|
72
72
|
if (result != MA_SUCCESS) {
|
|
73
73
|
__android_log_print(
|
|
@@ -83,61 +83,53 @@ std::shared_ptr<AudioBus> AudioDecoder::decodeWithMemoryBlock(
|
|
|
83
83
|
ma_uint64 totalFrameCount;
|
|
84
84
|
ma_decoder_get_length_in_pcm_frames(&decoder, &totalFrameCount);
|
|
85
85
|
|
|
86
|
-
std::
|
|
86
|
+
auto audioBus = std::make_shared<AudioBus>(
|
|
87
|
+
static_cast<int>(totalFrameCount), 2, sampleRate_);
|
|
88
|
+
auto *buffer = new float[totalFrameCount * 2];
|
|
87
89
|
|
|
88
90
|
ma_uint64 framesDecoded;
|
|
89
|
-
ma_decoder_read_pcm_frames(
|
|
90
|
-
&decoder, buffer.data(), totalFrameCount, &framesDecoded);
|
|
91
|
-
|
|
91
|
+
ma_decoder_read_pcm_frames(&decoder, buffer, totalFrameCount, &framesDecoded);
|
|
92
92
|
if (framesDecoded == 0) {
|
|
93
93
|
__android_log_print(ANDROID_LOG_ERROR, "AudioDecoder", "Failed to decode");
|
|
94
94
|
|
|
95
|
+
delete[] buffer;
|
|
95
96
|
ma_decoder_uninit(&decoder);
|
|
97
|
+
|
|
96
98
|
return nullptr;
|
|
97
99
|
}
|
|
98
100
|
|
|
99
|
-
|
|
100
|
-
auto audioBus =
|
|
101
|
-
std::make_shared<AudioBus>(outputFrames, numChannels_, sampleRate_);
|
|
102
|
-
|
|
103
|
-
for (int i = 0; i < numChannels_; ++i) {
|
|
101
|
+
for (int i = 0; i < decoder.outputChannels; ++i) {
|
|
104
102
|
auto channelData = audioBus->getChannel(i)->getData();
|
|
105
103
|
|
|
106
|
-
for (ma_uint64 j = 0; j <
|
|
107
|
-
channelData[j] =
|
|
104
|
+
for (ma_uint64 j = 0; j < framesDecoded; ++j) {
|
|
105
|
+
channelData[j] = buffer[j * decoder.outputChannels + i];
|
|
108
106
|
}
|
|
109
107
|
}
|
|
110
108
|
|
|
109
|
+
delete[] buffer;
|
|
111
110
|
ma_decoder_uninit(&decoder);
|
|
112
111
|
|
|
113
112
|
return audioBus;
|
|
114
113
|
}
|
|
115
114
|
|
|
116
115
|
std::shared_ptr<AudioBus> AudioDecoder::decodeWithPCMInBase64(
|
|
117
|
-
const std::string &data
|
|
118
|
-
const float playbackSpeed) const {
|
|
116
|
+
const std::string &data) const {
|
|
119
117
|
auto decodedData = base64_decode(data, false);
|
|
120
118
|
|
|
121
119
|
const auto uint8Data = reinterpret_cast<uint8_t *>(decodedData.data());
|
|
122
|
-
size_t
|
|
120
|
+
size_t frameCount = decodedData.size() / 2;
|
|
123
121
|
|
|
124
|
-
std::
|
|
125
|
-
for (size_t i = 0; i < framesDecoded; ++i) {
|
|
126
|
-
buffer[i] =
|
|
127
|
-
static_cast<int16_t>((uint8Data[i * 2 + 1] << 8) | uint8Data[i * 2]);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
changePlaybackSpeedIfNeeded(buffer, framesDecoded, 1, playbackSpeed);
|
|
131
|
-
auto outputFrames = buffer.size();
|
|
132
|
-
|
|
133
|
-
auto audioBus =
|
|
134
|
-
std::make_shared<AudioBus>(outputFrames, numChannels_, sampleRate_);
|
|
122
|
+
auto audioBus = std::make_shared<AudioBus>(frameCount, 1, sampleRate_);
|
|
135
123
|
auto channelData = audioBus->getChannel(0)->getData();
|
|
136
124
|
|
|
137
|
-
for (size_t i = 0; i <
|
|
138
|
-
|
|
125
|
+
for (size_t i = 0; i < frameCount; ++i) {
|
|
126
|
+
auto sample =
|
|
127
|
+
static_cast<int16_t>((uint8Data[i * 2 + 1] << 8) | uint8Data[i * 2]);
|
|
128
|
+
channelData[i] = static_cast<float>(sample);
|
|
139
129
|
}
|
|
140
130
|
|
|
131
|
+
dsp::multiplyByScalar(channelData, 1.0f / 32768.0f, channelData, frameCount);
|
|
132
|
+
|
|
141
133
|
return audioBus;
|
|
142
134
|
}
|
|
143
135
|
|
|
@@ -221,11 +221,10 @@ JSI_HOST_FUNCTION(createBufferQueueSource) {
|
|
|
221
221
|
|
|
222
222
|
JSI_HOST_FUNCTION(decodePCMAudioDataInBase64) {
|
|
223
223
|
auto b64 = args[0].getString(runtime).utf8(runtime);
|
|
224
|
-
auto playbackSpeed = static_cast<float>(args[1].getNumber());
|
|
225
224
|
|
|
226
|
-
auto promise = promiseVendor_->createPromise([this, b64
|
|
227
|
-
std::thread([this, b64,
|
|
228
|
-
auto results = context_->decodeWithPCMInBase64(b64
|
|
225
|
+
auto promise = promiseVendor_->createPromise([this, b64](std::shared_ptr<Promise> promise) {
|
|
226
|
+
std::thread([this, b64, promise = std::move(promise)]() {
|
|
227
|
+
auto results = context_->decodeWithPCMInBase64(b64);
|
|
229
228
|
|
|
230
229
|
if (!results) {
|
|
231
230
|
promise->reject("Failed to decode audio data source.");
|
|
@@ -18,11 +18,10 @@ AudioParam::AudioParam(
|
|
|
18
18
|
minValue_(minValue),
|
|
19
19
|
maxValue_(maxValue),
|
|
20
20
|
context_(context),
|
|
21
|
-
audioBus_(
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
context->getSampleRate())) {
|
|
21
|
+
audioBus_(std::make_shared<AudioBus>(
|
|
22
|
+
RENDER_QUANTUM_SIZE,
|
|
23
|
+
1,
|
|
24
|
+
context->getSampleRate())) {
|
|
26
25
|
startTime_ = 0;
|
|
27
26
|
endTime_ = 0;
|
|
28
27
|
startValue_ = value_;
|
|
@@ -145,10 +145,9 @@ std::shared_ptr<AudioBuffer> BaseAudioContext::decodeAudioData(
|
|
|
145
145
|
}
|
|
146
146
|
|
|
147
147
|
std::shared_ptr<AudioBuffer> BaseAudioContext::decodeWithPCMInBase64(
|
|
148
|
-
const std::string &data
|
|
149
|
-
float playbackSpeed) {
|
|
148
|
+
const std::string &data) {
|
|
150
149
|
#ifndef AUDIO_API_TEST_SUITE
|
|
151
|
-
auto audioBus = audioDecoder_->decodeWithPCMInBase64(data
|
|
150
|
+
auto audioBus = audioDecoder_->decodeWithPCMInBase64(data);
|
|
152
151
|
|
|
153
152
|
if (!audioBus) {
|
|
154
153
|
return nullptr;
|
|
@@ -60,7 +60,7 @@ class BaseAudioContext {
|
|
|
60
60
|
#ifndef TESTING
|
|
61
61
|
std::shared_ptr<AudioBuffer> decodeAudioDataSource(const std::string &path);
|
|
62
62
|
std::shared_ptr<AudioBuffer> decodeAudioData(const void *data, size_t size);
|
|
63
|
-
std::shared_ptr<AudioBuffer> decodeWithPCMInBase64(const std::string &data
|
|
63
|
+
std::shared_ptr<AudioBuffer> decodeWithPCMInBase64(const std::string &data);
|
|
64
64
|
#endif //TESTING
|
|
65
65
|
|
|
66
66
|
std::shared_ptr<PeriodicWave> getBasicWaveForm(OscillatorType type);
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
#pragma once
|
|
2
2
|
|
|
3
|
-
#include <audioapi/libs/audio-stretch/stretch.h>
|
|
4
3
|
#include <memory>
|
|
5
4
|
#include <string>
|
|
6
|
-
#include <vector>
|
|
7
5
|
|
|
8
6
|
namespace audioapi {
|
|
9
7
|
|
|
@@ -15,45 +13,10 @@ class AudioDecoder {
|
|
|
15
13
|
|
|
16
14
|
[[nodiscard]] std::shared_ptr<AudioBus> decodeWithFilePath(const std::string &path) const;
|
|
17
15
|
[[nodiscard]] std::shared_ptr<AudioBus> decodeWithMemoryBlock(const void *data, size_t size) const;
|
|
18
|
-
[[nodiscard]] std::shared_ptr<AudioBus> decodeWithPCMInBase64(const std::string &data
|
|
16
|
+
[[nodiscard]] std::shared_ptr<AudioBus> decodeWithPCMInBase64(const std::string &data) const;
|
|
19
17
|
|
|
20
18
|
private:
|
|
21
19
|
float sampleRate_;
|
|
22
|
-
int numChannels_ = 2;
|
|
23
|
-
|
|
24
|
-
void changePlaybackSpeedIfNeeded(std::vector<int16_t> &buffer, size_t framesDecoded, int numChannels, float playbackSpeed) const {
|
|
25
|
-
if (playbackSpeed == 1.0f) {
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
auto stretcher = stretch_init(static_cast<int>(sampleRate_ / 333.0f), static_cast<int>(sampleRate_ / 55.0f), numChannels, 0x1);
|
|
30
|
-
|
|
31
|
-
int maxOutputFrames = stretch_output_capacity(stretcher, static_cast<int>(framesDecoded), 1 / playbackSpeed);
|
|
32
|
-
std::vector<int16_t> stretchedBuffer(maxOutputFrames);
|
|
33
|
-
|
|
34
|
-
int outputFrames = stretch_samples(
|
|
35
|
-
stretcher,
|
|
36
|
-
buffer.data(),
|
|
37
|
-
static_cast<int>(framesDecoded),
|
|
38
|
-
stretchedBuffer.data(),
|
|
39
|
-
1 / playbackSpeed
|
|
40
|
-
);
|
|
41
|
-
|
|
42
|
-
outputFrames += stretch_flush(stretcher, stretchedBuffer.data() + (outputFrames));
|
|
43
|
-
stretchedBuffer.resize(outputFrames);
|
|
44
|
-
|
|
45
|
-
buffer = stretchedBuffer;
|
|
46
|
-
|
|
47
|
-
stretch_deinit(stretcher);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
[[nodiscard]] static inline int16_t floatToInt16(float sample) {
|
|
51
|
-
return static_cast<int16_t>(sample * 32768.0f);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
[[nodiscard]] static inline float int16ToFloat(int16_t sample) {
|
|
55
|
-
return static_cast<float>(sample) / 32768.0f;
|
|
56
|
-
}
|
|
57
20
|
};
|
|
58
21
|
|
|
59
22
|
} // namespace audioapi
|
|
@@ -85,9 +85,8 @@ RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(getDevicePreferredSampleRate)
|
|
|
85
85
|
return [self.audioSessionManager getDevicePreferredSampleRate];
|
|
86
86
|
}
|
|
87
87
|
|
|
88
|
-
RCT_EXPORT_METHOD(
|
|
89
|
-
|
|
90
|
-
reject)
|
|
88
|
+
RCT_EXPORT_METHOD(setAudioSessionActivity : (BOOL)enabled resolve : (RCTPromiseResolveBlock)
|
|
89
|
+
resolve reject : (RCTPromiseRejectBlock)reject)
|
|
91
90
|
{
|
|
92
91
|
if ([self.audioSessionManager setActive:enabled]) {
|
|
93
92
|
resolve(@"true");
|
|
@@ -97,9 +96,8 @@ RCT_EXPORT_METHOD(
|
|
|
97
96
|
resolve(@"false");
|
|
98
97
|
}
|
|
99
98
|
|
|
100
|
-
RCT_EXPORT_METHOD(
|
|
101
|
-
|
|
102
|
-
options allowHaptics : (BOOL)allowHaptics)
|
|
99
|
+
RCT_EXPORT_METHOD(setAudioSessionOptions : (NSString *)category mode : (NSString *)mode options : (NSArray *)
|
|
100
|
+
options allowHaptics : (BOOL)allowHaptics)
|
|
103
101
|
{
|
|
104
102
|
[self.audioSessionManager setAudioSessionOptions:category mode:mode options:options allowHaptics:allowHaptics];
|
|
105
103
|
}
|
|
@@ -129,15 +127,14 @@ RCT_EXPORT_METHOD(observeVolumeChanges : (BOOL)enabled)
|
|
|
129
127
|
[self.notificationManager observeVolumeChanges:(BOOL)enabled];
|
|
130
128
|
}
|
|
131
129
|
|
|
132
|
-
RCT_EXPORT_METHOD(
|
|
133
|
-
|
|
134
|
-
reject)
|
|
130
|
+
RCT_EXPORT_METHOD(requestRecordingPermissions : (nonnull RCTPromiseResolveBlock)
|
|
131
|
+
resolve reject : (nonnull RCTPromiseRejectBlock)reject)
|
|
135
132
|
{
|
|
136
133
|
[self.audioSessionManager requestRecordingPermissions:resolve reject:reject];
|
|
137
134
|
}
|
|
138
135
|
|
|
139
|
-
RCT_EXPORT_METHOD(
|
|
140
|
-
|
|
136
|
+
RCT_EXPORT_METHOD(checkRecordingPermissions : (nonnull RCTPromiseResolveBlock)
|
|
137
|
+
resolve reject : (nonnull RCTPromiseRejectBlock)reject)
|
|
141
138
|
{
|
|
142
139
|
[self.audioSessionManager checkRecordingPermissions:resolve reject:reject];
|
|
143
140
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
|
|
4
4
|
#include <audioapi/core/utils/AudioDecoder.h>
|
|
5
5
|
#include <audioapi/dsp/VectorMath.h>
|
|
6
|
-
#include <audioapi/libs/audio-stretch/stretch.h>
|
|
7
6
|
#include <audioapi/libs/base64/base64.h>
|
|
8
7
|
#include <audioapi/utils/AudioArray.h>
|
|
9
8
|
#include <audioapi/utils/AudioBus.h>
|
|
@@ -13,7 +12,7 @@ namespace audioapi {
|
|
|
13
12
|
std::shared_ptr<AudioBus> AudioDecoder::decodeWithFilePath(const std::string &path) const
|
|
14
13
|
{
|
|
15
14
|
ma_decoder decoder;
|
|
16
|
-
ma_decoder_config config = ma_decoder_config_init(
|
|
15
|
+
ma_decoder_config config = ma_decoder_config_init(ma_format_f32, 2, sampleRate_);
|
|
17
16
|
ma_result result = ma_decoder_init_file(path.c_str(), &config, &decoder);
|
|
18
17
|
if (result != MA_SUCCESS) {
|
|
19
18
|
NSLog(@"Failed to initialize decoder for file: %s", path.c_str());
|
|
@@ -26,27 +25,29 @@ std::shared_ptr<AudioBus> AudioDecoder::decodeWithFilePath(const std::string &pa
|
|
|
26
25
|
ma_uint64 totalFrameCount;
|
|
27
26
|
ma_decoder_get_length_in_pcm_frames(&decoder, &totalFrameCount);
|
|
28
27
|
|
|
29
|
-
std::
|
|
28
|
+
auto audioBus = std::make_shared<AudioBus>(static_cast<int>(totalFrameCount), 2, sampleRate_);
|
|
29
|
+
auto *buffer = new float[totalFrameCount * 2];
|
|
30
30
|
|
|
31
31
|
ma_uint64 framesDecoded;
|
|
32
|
-
ma_decoder_read_pcm_frames(&decoder, buffer
|
|
32
|
+
ma_decoder_read_pcm_frames(&decoder, buffer, totalFrameCount, &framesDecoded);
|
|
33
33
|
if (framesDecoded == 0) {
|
|
34
34
|
NSLog(@"Failed to decode");
|
|
35
35
|
|
|
36
|
+
delete[] buffer;
|
|
36
37
|
ma_decoder_uninit(&decoder);
|
|
38
|
+
|
|
37
39
|
return nullptr;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
+
for (int i = 0; i < decoder.outputChannels; ++i) {
|
|
43
|
+
float *channelData = audioBus->getChannel(i)->getData();
|
|
42
44
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
for (int j = 0; j < outputFrames; ++j) {
|
|
46
|
-
channelData[j] = int16ToFloat(buffer[j * numChannels_ + i]);
|
|
45
|
+
for (ma_uint64 j = 0; j < framesDecoded; ++j) {
|
|
46
|
+
channelData[j] = buffer[j * decoder.outputChannels + i];
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
delete[] buffer;
|
|
50
51
|
ma_decoder_uninit(&decoder);
|
|
51
52
|
|
|
52
53
|
return audioBus;
|
|
@@ -55,7 +56,7 @@ std::shared_ptr<AudioBus> AudioDecoder::decodeWithFilePath(const std::string &pa
|
|
|
55
56
|
std::shared_ptr<AudioBus> AudioDecoder::decodeWithMemoryBlock(const void *data, size_t size) const
|
|
56
57
|
{
|
|
57
58
|
ma_decoder decoder;
|
|
58
|
-
ma_decoder_config config = ma_decoder_config_init(
|
|
59
|
+
ma_decoder_config config = ma_decoder_config_init(ma_format_f32, 2, sampleRate_);
|
|
59
60
|
ma_result result = ma_decoder_init_memory(data, size, &config, &decoder);
|
|
60
61
|
if (result != MA_SUCCESS) {
|
|
61
62
|
NSLog(@"Failed to initialize decoder for memory block");
|
|
@@ -68,55 +69,51 @@ std::shared_ptr<AudioBus> AudioDecoder::decodeWithMemoryBlock(const void *data,
|
|
|
68
69
|
ma_uint64 totalFrameCount;
|
|
69
70
|
ma_decoder_get_length_in_pcm_frames(&decoder, &totalFrameCount);
|
|
70
71
|
|
|
71
|
-
std::
|
|
72
|
+
auto audioBus = std::make_shared<AudioBus>(static_cast<int>(totalFrameCount), 2, sampleRate_);
|
|
73
|
+
auto *buffer = new float[totalFrameCount * 2];
|
|
72
74
|
|
|
73
75
|
ma_uint64 framesDecoded;
|
|
74
|
-
ma_decoder_read_pcm_frames(&decoder, buffer
|
|
75
|
-
|
|
76
|
+
ma_decoder_read_pcm_frames(&decoder, buffer, totalFrameCount, &framesDecoded);
|
|
76
77
|
if (framesDecoded == 0) {
|
|
77
78
|
NSLog(@"Failed to decode");
|
|
78
79
|
|
|
80
|
+
delete[] buffer;
|
|
79
81
|
ma_decoder_uninit(&decoder);
|
|
82
|
+
|
|
80
83
|
return nullptr;
|
|
81
84
|
}
|
|
82
85
|
|
|
83
|
-
|
|
84
|
-
|
|
86
|
+
for (int i = 0; i < decoder.outputChannels; ++i) {
|
|
87
|
+
float *channelData = audioBus->getChannel(i)->getData();
|
|
85
88
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
for (int j = 0; j < outputFrames; ++j) {
|
|
89
|
-
channelData[j] = int16ToFloat(buffer[j * numChannels_ + i]);
|
|
89
|
+
for (ma_uint64 j = 0; j < framesDecoded; ++j) {
|
|
90
|
+
channelData[j] = buffer[j * decoder.outputChannels + i];
|
|
90
91
|
}
|
|
91
92
|
}
|
|
92
93
|
|
|
94
|
+
delete[] buffer;
|
|
93
95
|
ma_decoder_uninit(&decoder);
|
|
94
96
|
|
|
95
97
|
return audioBus;
|
|
96
98
|
}
|
|
97
99
|
|
|
98
|
-
std::shared_ptr<AudioBus> AudioDecoder::decodeWithPCMInBase64(const std::string &data
|
|
100
|
+
std::shared_ptr<AudioBus> AudioDecoder::decodeWithPCMInBase64(const std::string &data) const
|
|
99
101
|
{
|
|
100
102
|
auto decodedData = base64_decode(data, false);
|
|
101
103
|
|
|
102
104
|
const auto uint8Data = reinterpret_cast<uint8_t *>(decodedData.data());
|
|
103
|
-
size_t
|
|
105
|
+
size_t frameCount = decodedData.size() / 2;
|
|
104
106
|
|
|
105
|
-
std::
|
|
106
|
-
for (size_t i = 0; i < framesDecoded; ++i) {
|
|
107
|
-
buffer[i] = static_cast<int16_t>((uint8Data[i * 2 + 1] << 8) | uint8Data[i * 2]);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
changePlaybackSpeedIfNeeded(buffer, framesDecoded, 1, playbackSpeed);
|
|
111
|
-
auto outputFrames = buffer.size();
|
|
112
|
-
|
|
113
|
-
auto audioBus = std::make_shared<AudioBus>(outputFrames, numChannels_, sampleRate_);
|
|
107
|
+
auto audioBus = std::make_shared<AudioBus>(frameCount, 1, sampleRate_);
|
|
114
108
|
auto channelData = audioBus->getChannel(0)->getData();
|
|
115
109
|
|
|
116
|
-
for (size_t i = 0; i <
|
|
117
|
-
|
|
110
|
+
for (size_t i = 0; i < frameCount; ++i) {
|
|
111
|
+
auto sample = static_cast<int16_t>((uint8Data[i * 2 + 1] << 8) | uint8Data[i * 2]);
|
|
112
|
+
channelData[i] = static_cast<float>(sample);
|
|
118
113
|
}
|
|
119
114
|
|
|
115
|
+
dsp::multiplyByScalar(channelData, 1.0f / 32768.0f, channelData, frameCount);
|
|
116
|
+
|
|
120
117
|
return audioBus;
|
|
121
118
|
}
|
|
122
119
|
|
|
@@ -73,8 +73,6 @@ class BaseAudioContext {
|
|
|
73
73
|
createAnalyser() {
|
|
74
74
|
return new _AnalyserNode.default(this, this.context.createAnalyser());
|
|
75
75
|
}
|
|
76
|
-
|
|
77
|
-
/** Decodes audio data from a local file path. */
|
|
78
76
|
async decodeAudioDataSource(sourcePath) {
|
|
79
77
|
// Remove the file:// prefix if it exists
|
|
80
78
|
if (sourcePath.startsWith('file://')) {
|
|
@@ -82,14 +80,15 @@ class BaseAudioContext {
|
|
|
82
80
|
}
|
|
83
81
|
return new _AudioBuffer.default(await this.context.decodeAudioDataSource(sourcePath));
|
|
84
82
|
}
|
|
85
|
-
|
|
86
|
-
/** Decodes audio data from an ArrayBuffer. */
|
|
87
83
|
async decodeAudioData(data) {
|
|
84
|
+
// pcm data in base64
|
|
85
|
+
if (typeof data === 'string') {
|
|
86
|
+
return new _AudioBuffer.default(await this.context.decodePCMAudioDataInBase64(data));
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// data in array buffer
|
|
88
90
|
return new _AudioBuffer.default(await this.context.decodeAudioData(new Uint8Array(data)));
|
|
89
91
|
}
|
|
90
|
-
async decodePCMInBase64Data(base64, playbackRate = 1.0) {
|
|
91
|
-
return new _AudioBuffer.default(await this.context.decodePCMAudioDataInBase64(base64, playbackRate));
|
|
92
|
-
}
|
|
93
92
|
}
|
|
94
93
|
exports.default = BaseAudioContext;
|
|
95
94
|
//# sourceMappingURL=BaseAudioContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_AudioDestinationNode","_interopRequireDefault","require","_OscillatorNode","_CustomProcessorNode","_GainNode","_StereoPannerNode","_BiquadFilterNode","_AudioBufferSourceNode","_AudioBuffer","_PeriodicWave","_AnalyserNode","_AudioBufferQueueSourceNode","_errors","e","__esModule","default","BaseAudioContext","constructor","context","destination","AudioDestinationNode","sampleRate","currentTime","state","createOscillator","OscillatorNode","createCustomProcessor","identifier","CustomProcessorNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createBufferSource","options","pitchCorrection","AudioBufferSourceNode","createBufferQueueSource","AudioBufferQueueSourceNode","createBuffer","numOfChannels","length","NotSupportedError","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","disableNormalization","PeriodicWave","createAnalyser","AnalyserNode","decodeAudioDataSource","sourcePath","startsWith","replace","decodeAudioData","data","
|
|
1
|
+
{"version":3,"names":["_AudioDestinationNode","_interopRequireDefault","require","_OscillatorNode","_CustomProcessorNode","_GainNode","_StereoPannerNode","_BiquadFilterNode","_AudioBufferSourceNode","_AudioBuffer","_PeriodicWave","_AnalyserNode","_AudioBufferQueueSourceNode","_errors","e","__esModule","default","BaseAudioContext","constructor","context","destination","AudioDestinationNode","sampleRate","currentTime","state","createOscillator","OscillatorNode","createCustomProcessor","identifier","CustomProcessorNode","createGain","GainNode","createStereoPanner","StereoPannerNode","createBiquadFilter","BiquadFilterNode","createBufferSource","options","pitchCorrection","AudioBufferSourceNode","createBufferQueueSource","AudioBufferQueueSourceNode","createBuffer","numOfChannels","length","NotSupportedError","AudioBuffer","createPeriodicWave","real","imag","constraints","InvalidAccessError","disableNormalization","PeriodicWave","createAnalyser","AnalyserNode","decodeAudioDataSource","sourcePath","startsWith","replace","decodeAudioData","data","decodePCMAudioDataInBase64","Uint8Array","exports"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -68,8 +68,6 @@ export default class BaseAudioContext {
|
|
|
68
68
|
createAnalyser() {
|
|
69
69
|
return new AnalyserNode(this, this.context.createAnalyser());
|
|
70
70
|
}
|
|
71
|
-
|
|
72
|
-
/** Decodes audio data from a local file path. */
|
|
73
71
|
async decodeAudioDataSource(sourcePath) {
|
|
74
72
|
// Remove the file:// prefix if it exists
|
|
75
73
|
if (sourcePath.startsWith('file://')) {
|
|
@@ -77,13 +75,14 @@ export default class BaseAudioContext {
|
|
|
77
75
|
}
|
|
78
76
|
return new AudioBuffer(await this.context.decodeAudioDataSource(sourcePath));
|
|
79
77
|
}
|
|
80
|
-
|
|
81
|
-
/** Decodes audio data from an ArrayBuffer. */
|
|
82
78
|
async decodeAudioData(data) {
|
|
79
|
+
// pcm data in base64
|
|
80
|
+
if (typeof data === 'string') {
|
|
81
|
+
return new AudioBuffer(await this.context.decodePCMAudioDataInBase64(data));
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// data in array buffer
|
|
83
85
|
return new AudioBuffer(await this.context.decodeAudioData(new Uint8Array(data)));
|
|
84
86
|
}
|
|
85
|
-
async decodePCMInBase64Data(base64, playbackRate = 1.0) {
|
|
86
|
-
return new AudioBuffer(await this.context.decodePCMAudioDataInBase64(base64, playbackRate));
|
|
87
|
-
}
|
|
88
87
|
}
|
|
89
88
|
//# sourceMappingURL=BaseAudioContext.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AudioDestinationNode","OscillatorNode","CustomProcessorNode","GainNode","StereoPannerNode","BiquadFilterNode","AudioBufferSourceNode","AudioBuffer","PeriodicWave","AnalyserNode","AudioBufferQueueSourceNode","InvalidAccessError","NotSupportedError","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createOscillator","createCustomProcessor","identifier","createGain","createStereoPanner","createBiquadFilter","createBufferSource","options","pitchCorrection","createBufferQueueSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","decodeAudioDataSource","sourcePath","startsWith","replace","decodeAudioData","data","
|
|
1
|
+
{"version":3,"names":["AudioDestinationNode","OscillatorNode","CustomProcessorNode","GainNode","StereoPannerNode","BiquadFilterNode","AudioBufferSourceNode","AudioBuffer","PeriodicWave","AnalyserNode","AudioBufferQueueSourceNode","InvalidAccessError","NotSupportedError","BaseAudioContext","constructor","context","destination","sampleRate","currentTime","state","createOscillator","createCustomProcessor","identifier","createGain","createStereoPanner","createBiquadFilter","createBufferSource","options","pitchCorrection","createBufferQueueSource","createBuffer","numOfChannels","length","createPeriodicWave","real","imag","constraints","disableNormalization","createAnalyser","decodeAudioDataSource","sourcePath","startsWith","replace","decodeAudioData","data","decodePCMAudioDataInBase64","Uint8Array"],"sourceRoot":"../../../src","sources":["core/BaseAudioContext.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -28,10 +28,7 @@ export default class BaseAudioContext {
|
|
|
28
28
|
createBuffer(numOfChannels: number, length: number, sampleRate: number): AudioBuffer;
|
|
29
29
|
createPeriodicWave(real: Float32Array, imag: Float32Array, constraints?: PeriodicWaveConstraints): PeriodicWave;
|
|
30
30
|
createAnalyser(): AnalyserNode;
|
|
31
|
-
/** Decodes audio data from a local file path. */
|
|
32
31
|
decodeAudioDataSource(sourcePath: string): Promise<AudioBuffer>;
|
|
33
|
-
|
|
34
|
-
decodeAudioData(data: ArrayBuffer): Promise<AudioBuffer>;
|
|
35
|
-
decodePCMInBase64Data(base64: string, playbackRate?: number): Promise<AudioBuffer>;
|
|
32
|
+
decodeAudioData(data: ArrayBuffer | string): Promise<AudioBuffer>;
|
|
36
33
|
}
|
|
37
34
|
//# sourceMappingURL=BaseAudioContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/BaseAudioContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AAGtE,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBAElC,OAAO,EAAE,iBAAiB;IAMtC,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB;IAO9D,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,CAChB,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB;IASxB,uBAAuB,IAAI,0BAA0B;IAOrD,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAcf,cAAc,IAAI,YAAY;
|
|
1
|
+
{"version":3,"file":"BaseAudioContext.d.ts","sourceRoot":"","sources":["../../../src/core/BaseAudioContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,4BAA4B,EAC7B,MAAM,UAAU,CAAC;AAClB,OAAO,oBAAoB,MAAM,wBAAwB,CAAC;AAC1D,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AACxD,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,qBAAqB,MAAM,yBAAyB,CAAC;AAC5D,OAAO,WAAW,MAAM,eAAe,CAAC;AACxC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAC1C,OAAO,0BAA0B,MAAM,8BAA8B,CAAC;AAGtE,MAAM,CAAC,OAAO,OAAO,gBAAgB;IACnC,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;gBAElC,OAAO,EAAE,iBAAiB;IAMtC,IAAW,WAAW,IAAI,MAAM,CAE/B;IAED,IAAW,KAAK,IAAI,YAAY,CAE/B;IAED,gBAAgB,IAAI,cAAc;IAIlC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,mBAAmB;IAO9D,UAAU,IAAI,QAAQ;IAItB,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,IAAI,gBAAgB;IAItC,kBAAkB,CAChB,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB;IASxB,uBAAuB,IAAI,0BAA0B;IAOrD,YAAY,CACV,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,GACjB,WAAW;IAwBd,kBAAkB,CAChB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,WAAW,CAAC,EAAE,uBAAuB,GACpC,YAAY;IAcf,cAAc,IAAI,YAAY;IAIxB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAW/D,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAaxE"}
|
|
@@ -17,7 +17,7 @@ export interface IBaseAudioContext {
|
|
|
17
17
|
createAnalyser: () => IAnalyserNode;
|
|
18
18
|
decodeAudioDataSource: (sourcePath: string) => Promise<IAudioBuffer>;
|
|
19
19
|
decodeAudioData: (arrayBuffer: ArrayBuffer) => Promise<IAudioBuffer>;
|
|
20
|
-
decodePCMAudioDataInBase64: (b64: string
|
|
20
|
+
decodePCMAudioDataInBase64: (b64: string) => Promise<IAudioBuffer>;
|
|
21
21
|
}
|
|
22
22
|
export interface IAudioContext extends IBaseAudioContext {
|
|
23
23
|
close(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,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;IAE7B,gBAAgB,IAAI,eAAe,CAAC;IACpC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,oBAAoB,CAAC;IAChE,UAAU,IAAI,SAAS,CAAC;IACxB,kBAAkB,IAAI,iBAAiB,CAAC;IACxC,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;IAC5C,kBAAkB,EAAE,CAAC,eAAe,EAAE,OAAO,KAAK,sBAAsB,CAAC;IACzE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;IAC3D,YAAY,EAAE,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,KACf,YAAY,CAAC;IAClB,kBAAkB,EAAE,CAClB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,YAAY,EAClB,oBAAoB,EAAE,OAAO,KAC1B,aAAa,CAAC;IACnB,cAAc,EAAE,MAAM,aAAa,CAAC;IACpC,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrE,eAAe,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACrE,0BAA0B,EAAE,
|
|
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.6.4-nightly-
|
|
3
|
+
"version": "0.6.4-nightly-6fc62be-20250704",
|
|
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"
|