react-native-audio-api 0.8.3-nightly-afb3cc1-20251001 → 0.8.3-nightly-c623edf-20251002
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/RNAudioAPI.podspec +2 -0
- package/common/cpp/audioapi/core/sources/AudioBufferQueueSourceNode.cpp +1 -1
- package/common/cpp/audioapi/external/iphoneos/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/iphoneos/libssl.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libcrypto.a +0 -0
- package/common/cpp/audioapi/external/iphonesimulator/libssl.a +0 -0
- package/common/cpp/audioapi/external/libavcodec.xcframework/Info.plist +5 -5
- 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/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/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/JsiPromise.cpp +53 -0
- package/common/cpp/audioapi/jsi/JsiPromise.h +19 -0
- package/common/cpp/audioapi/libs/ffmpeg/ffmpeg_setup.sh +127 -107
- package/lib/commonjs/core/OscillatorNode.js +6 -0
- package/lib/commonjs/core/OscillatorNode.js.map +1 -1
- package/lib/module/core/OscillatorNode.js +6 -0
- package/lib/module/core/OscillatorNode.js.map +1 -1
- package/lib/typescript/core/OscillatorNode.d.ts +3 -0
- package/lib/typescript/core/OscillatorNode.d.ts.map +1 -1
- package/lib/typescript/events/types.d.ts +1 -0
- package/lib/typescript/events/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/core/OscillatorNode.ts +11 -0
- package/src/events/types.ts +1 -0
package/RNAudioAPI.podspec
CHANGED
|
@@ -81,6 +81,8 @@ s.user_target_xcconfig = {
|
|
|
81
81
|
-force_load #{lib_dir}/libvorbis.a
|
|
82
82
|
-force_load #{lib_dir}/libvorbisenc.a
|
|
83
83
|
-force_load #{lib_dir}/libvorbisfile.a
|
|
84
|
+
-force_load #{lib_dir}/libssl.a
|
|
85
|
+
-force_load #{lib_dir}/libcrypto.a
|
|
84
86
|
].join(" "),
|
|
85
87
|
'HEADER_SEARCH_PATHS' => %W[
|
|
86
88
|
$(inherited)
|
|
@@ -155,7 +155,7 @@ void AudioBufferQueueSourceNode::processWithoutInterpolation(
|
|
|
155
155
|
buffers_.pop();
|
|
156
156
|
|
|
157
157
|
std::unordered_map<std::string, EventValue> body = {
|
|
158
|
-
{"bufferId", std::to_string(bufferId)}};
|
|
158
|
+
{"bufferId", std::to_string(bufferId)}, {"isLast", buffers_.empty()}};
|
|
159
159
|
context_->audioEventHandlerRegistry_->invokeHandlerWithEventBody(
|
|
160
160
|
"ended", onEndedCallbackId_, body);
|
|
161
161
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -8,32 +8,32 @@
|
|
|
8
8
|
<key>BinaryPath</key>
|
|
9
9
|
<string>libavcodec.framework/libavcodec</string>
|
|
10
10
|
<key>LibraryIdentifier</key>
|
|
11
|
-
<string>ios-
|
|
11
|
+
<string>ios-arm64</string>
|
|
12
12
|
<key>LibraryPath</key>
|
|
13
13
|
<string>libavcodec.framework</string>
|
|
14
14
|
<key>SupportedArchitectures</key>
|
|
15
15
|
<array>
|
|
16
16
|
<string>arm64</string>
|
|
17
|
-
<string>x86_64</string>
|
|
18
17
|
</array>
|
|
19
18
|
<key>SupportedPlatform</key>
|
|
20
19
|
<string>ios</string>
|
|
21
|
-
<key>SupportedPlatformVariant</key>
|
|
22
|
-
<string>simulator</string>
|
|
23
20
|
</dict>
|
|
24
21
|
<dict>
|
|
25
22
|
<key>BinaryPath</key>
|
|
26
23
|
<string>libavcodec.framework/libavcodec</string>
|
|
27
24
|
<key>LibraryIdentifier</key>
|
|
28
|
-
<string>ios-
|
|
25
|
+
<string>ios-arm64_x86_64-simulator</string>
|
|
29
26
|
<key>LibraryPath</key>
|
|
30
27
|
<string>libavcodec.framework</string>
|
|
31
28
|
<key>SupportedArchitectures</key>
|
|
32
29
|
<array>
|
|
33
30
|
<string>arm64</string>
|
|
31
|
+
<string>x86_64</string>
|
|
34
32
|
</array>
|
|
35
33
|
<key>SupportedPlatform</key>
|
|
36
34
|
<string>ios</string>
|
|
35
|
+
<key>SupportedPlatformVariant</key>
|
|
36
|
+
<string>simulator</string>
|
|
37
37
|
</dict>
|
|
38
38
|
</array>
|
|
39
39
|
<key>CFBundlePackageType</key>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/common/cpp/audioapi/external/libavutil.xcframework/ios-arm64/libavutil.framework/libavutil
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -61,4 +61,57 @@ jsi::Value PromiseVendor::createPromise(
|
|
|
61
61
|
return promiseCtor.callAsConstructor(runtime, runPromise);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
+
jsi::Value PromiseVendor::createAsyncPromise(
|
|
65
|
+
std::function<std::variant<jsi::Value, std::string>(jsi::Runtime &)>
|
|
66
|
+
&&function) {
|
|
67
|
+
auto &runtime = *runtime_;
|
|
68
|
+
auto callInvoker = callInvoker_;
|
|
69
|
+
auto promiseCtor = runtime.global().getPropertyAsFunction(runtime, "Promise");
|
|
70
|
+
auto promiseLambda = [callInvoker = std::move(callInvoker),
|
|
71
|
+
function = std::move(function)](
|
|
72
|
+
jsi::Runtime &runtime,
|
|
73
|
+
const jsi::Value &thisValue,
|
|
74
|
+
const jsi::Value *arguments,
|
|
75
|
+
size_t count) -> jsi::Value {
|
|
76
|
+
auto resolveLocal = arguments[0].asObject(runtime).asFunction(runtime);
|
|
77
|
+
auto resolve = std::make_shared<jsi::Function>(std::move(resolveLocal));
|
|
78
|
+
auto rejectLocal = arguments[1].asObject(runtime).asFunction(runtime);
|
|
79
|
+
auto reject = std::make_shared<jsi::Function>(std::move(rejectLocal));
|
|
80
|
+
|
|
81
|
+
/// Here we can swap later for thread pool instead of creating a new thread
|
|
82
|
+
/// each time
|
|
83
|
+
std::thread(
|
|
84
|
+
[callInvoker = std::move(callInvoker),
|
|
85
|
+
function = std::move(function),
|
|
86
|
+
resolve = std::move(resolve),
|
|
87
|
+
reject = std::move(reject)](jsi::Runtime &runtime) {
|
|
88
|
+
auto result = function(runtime);
|
|
89
|
+
if (std::holds_alternative<jsi::Value>(result)) {
|
|
90
|
+
auto valueShared = std::make_shared<jsi::Value>(
|
|
91
|
+
std::move(std::get<jsi::Value>(result)));
|
|
92
|
+
callInvoker->invokeAsync(
|
|
93
|
+
[resolve, &runtime, valueShared]() -> void {
|
|
94
|
+
resolve->call(runtime, *valueShared);
|
|
95
|
+
});
|
|
96
|
+
} else {
|
|
97
|
+
auto errorMessage = std::get<std::string>(result);
|
|
98
|
+
callInvoker->invokeAsync(
|
|
99
|
+
[reject, &runtime, errorMessage]() -> void {
|
|
100
|
+
auto error = jsi::JSError(runtime, errorMessage);
|
|
101
|
+
reject->call(runtime, error.value());
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
std::ref(runtime))
|
|
106
|
+
.detach();
|
|
107
|
+
return jsi::Value::undefined();
|
|
108
|
+
};
|
|
109
|
+
auto promiseFunction = jsi::Function::createFromHostFunction(
|
|
110
|
+
runtime,
|
|
111
|
+
jsi::PropNameID::forUtf8(runtime, "asyncPromise"),
|
|
112
|
+
2,
|
|
113
|
+
std::move(promiseLambda));
|
|
114
|
+
return promiseCtor.callAsConstructor(runtime, std::move(promiseFunction));
|
|
115
|
+
}
|
|
116
|
+
|
|
64
117
|
} // namespace audioapi
|
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
#include <ReactCommon/CallInvoker.h>
|
|
4
4
|
#include <jsi/jsi.h>
|
|
5
|
+
#include <variant>
|
|
6
|
+
#include <thread>
|
|
5
7
|
#include <memory>
|
|
6
8
|
#include <string>
|
|
7
9
|
#include <utility>
|
|
@@ -34,6 +36,23 @@ class PromiseVendor {
|
|
|
34
36
|
|
|
35
37
|
jsi::Value createPromise(const std::function<void(std::shared_ptr<Promise>)> &function);
|
|
36
38
|
|
|
39
|
+
/// @brief Creates an asynchronous promise.
|
|
40
|
+
/// @param function The function to execute asynchronously. It should return either a jsi::Value on success or a std::string error message on failure.
|
|
41
|
+
/// @return The created promise.
|
|
42
|
+
/// @note The function is executed on a different thread, and the promise is resolved or rejected based on the function's outcome.
|
|
43
|
+
/// @example
|
|
44
|
+
/// ```cpp
|
|
45
|
+
/// auto promise = promiseVendor_->createAsyncPromise(
|
|
46
|
+
/// [](jsi::Runtime& rt) -> std::variant<jsi::Value, std::string> {
|
|
47
|
+
/// // Simulate some heavy work
|
|
48
|
+
/// std::this_thread::sleep_for(std::chrono::seconds(2));
|
|
49
|
+
/// return jsi::String::createFromUtf8(rt, "Promise resolved successfully!");
|
|
50
|
+
/// }
|
|
51
|
+
/// );
|
|
52
|
+
///
|
|
53
|
+
/// return promise;
|
|
54
|
+
jsi::Value createAsyncPromise(std::function<std::variant<jsi::Value, std::string>(jsi::Runtime&)> &&function);
|
|
55
|
+
|
|
37
56
|
private:
|
|
38
57
|
jsi::Runtime *runtime_;
|
|
39
58
|
std::shared_ptr<react::CallInvoker> callInvoker_;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
|
|
3
3
|
# FFmpeg Mobile Architecture Build Script
|
|
4
|
-
# Builds
|
|
4
|
+
# Builds shared ffmpeg binaries for iOS and Android architectures
|
|
5
5
|
set -e
|
|
6
6
|
|
|
7
7
|
SOURCE_DIR="/path/to/your/ffmpeg" # Change this to your FFmpeg source directory
|
|
@@ -156,11 +156,88 @@ if [ ! -d "${SOURCE_DIR}" ]; then
|
|
|
156
156
|
fi
|
|
157
157
|
|
|
158
158
|
# Clean the source directory of any previous builds
|
|
159
|
-
echo "Cleaning source directory..."
|
|
160
159
|
cd "${SOURCE_DIR}"
|
|
161
160
|
make distclean 2>/dev/null || true
|
|
162
161
|
cd - > /dev/null
|
|
163
162
|
|
|
163
|
+
# Use NDK_ROOT if ANDROID_NDK_ROOT is not set
|
|
164
|
+
NDK_PATH="${ANDROID_NDK_ROOT:-$NDK_ROOT}"
|
|
165
|
+
|
|
166
|
+
if [ ! -d "$NDK_PATH" ]; then
|
|
167
|
+
echo "Android NDK not found. Please set ANDROID_NDK_ROOT or NDK_ROOT environment variable"
|
|
168
|
+
exit 1
|
|
169
|
+
fi
|
|
170
|
+
|
|
171
|
+
API_LEVEL=21
|
|
172
|
+
TOOLCHAIN_PATH="${NDK_PATH}/toolchains/llvm/prebuilt"
|
|
173
|
+
export ANDROID_NDK_ROOT=${NDK_PATH}
|
|
174
|
+
|
|
175
|
+
# Detect host OS for toolchain
|
|
176
|
+
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
177
|
+
HOST_TAG="darwin-x86_64"
|
|
178
|
+
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
179
|
+
HOST_TAG="linux-x86_64"
|
|
180
|
+
else
|
|
181
|
+
echo "Unsupported host OS for Android NDK"
|
|
182
|
+
exit 1
|
|
183
|
+
fi
|
|
184
|
+
|
|
185
|
+
TOOLCHAIN="${TOOLCHAIN_PATH}/${HOST_TAG}"
|
|
186
|
+
PATH=$TOOLCHAIN/bin:$PATH
|
|
187
|
+
|
|
188
|
+
OPENSSL_PREBUILT_FOLDER="$(pwd)/openssl-prebuilt"
|
|
189
|
+
if [ ! -d "$OPENSSL_PREBUILT_FOLDER" ]; then
|
|
190
|
+
echo "Cloning and building OpenSSL..."
|
|
191
|
+
if [ ! -d "openssl" ]; then
|
|
192
|
+
git clone https://github.com/openssl/openssl.git
|
|
193
|
+
fi
|
|
194
|
+
cd openssl
|
|
195
|
+
mkdir -p "${OPENSSL_PREBUILT_FOLDER}/include"
|
|
196
|
+
|
|
197
|
+
# ios-arm
|
|
198
|
+
./Configure ios64-xcrun no-shared no-asm no-tests
|
|
199
|
+
make build_libs -j10
|
|
200
|
+
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/iphoneos && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/iphoneos"
|
|
201
|
+
cp -r include/crypto include/openssl "${OPENSSL_PREBUILT_FOLDER}/include"
|
|
202
|
+
make clean
|
|
203
|
+
|
|
204
|
+
# arm-simulator
|
|
205
|
+
./Configure iossimulator-arm64-xcrun no-shared no-asm no-tests
|
|
206
|
+
make build_libs -j10
|
|
207
|
+
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/iphonesimulator && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/iphonesimulator"
|
|
208
|
+
make clean
|
|
209
|
+
|
|
210
|
+
# x86_64-simulator
|
|
211
|
+
./Configure iossimulator-x86_64-xcrun no-shared no-asm no-tests
|
|
212
|
+
make build_libs -j10
|
|
213
|
+
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/iphonesimulator-x86_64 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/iphonesimulator-x86_64"
|
|
214
|
+
make clean
|
|
215
|
+
|
|
216
|
+
# arm64-v8a
|
|
217
|
+
./Configure android-arm64 no-shared no-asm no-tests -D__ANDROID_API__=${API_LEVEL}
|
|
218
|
+
make build_libs -j10
|
|
219
|
+
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/arm64-v8a && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/arm64-v8a"
|
|
220
|
+
make clean
|
|
221
|
+
|
|
222
|
+
# armeabi-v7a
|
|
223
|
+
./Configure android-arm no-shared no-asm no-tests -D__ANDROID_API__=${API_LEVEL}
|
|
224
|
+
make build_libs -j10
|
|
225
|
+
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a"
|
|
226
|
+
make clean
|
|
227
|
+
|
|
228
|
+
./Configure android-x86 no-shared no-asm no-tests -D__ANDROID_API__=${API_LEVEL}
|
|
229
|
+
make build_libs -j10
|
|
230
|
+
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/x86 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/x86"
|
|
231
|
+
make clean
|
|
232
|
+
|
|
233
|
+
./Configure android-x86_64 no-shared no-asm no-tests -D__ANDROID_API__=${API_LEVEL}
|
|
234
|
+
make build_libs -j10
|
|
235
|
+
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/x86_64 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/x86_64"
|
|
236
|
+
make clean
|
|
237
|
+
|
|
238
|
+
cd .. && rm -rf openssl
|
|
239
|
+
fi
|
|
240
|
+
|
|
164
241
|
# iOS Architectures
|
|
165
242
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
166
243
|
echo "Building for iOS architectures..."
|
|
@@ -169,13 +246,13 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
169
246
|
IOS_SDK_PATH=$(xcrun --sdk iphoneos --show-sdk-path)
|
|
170
247
|
IOS_SIM_SDK_PATH=$(xcrun --sdk iphonesimulator --show-sdk-path)
|
|
171
248
|
|
|
172
|
-
# iOS Device
|
|
249
|
+
# iOS Device architecture
|
|
173
250
|
build_arch "arm64" "darwin" \
|
|
174
251
|
"$(xcrun --sdk iphoneos --find clang)" \
|
|
175
252
|
"$(xcrun --sdk iphoneos --find clang++)" \
|
|
176
|
-
"-arch arm64 -mios-version-min=11.0 -isysroot ${IOS_SDK_PATH}" \
|
|
177
|
-
"-arch arm64 -mios-version-min=11.0 -isysroot ${IOS_SDK_PATH}" \
|
|
178
|
-
"--disable-iconv --disable-zlib"
|
|
253
|
+
"-I${OPENSSL_PREBUILT_FOLDER}/include -arch arm64 -mios-version-min=11.0 -isysroot ${IOS_SDK_PATH}" \
|
|
254
|
+
"-L${OPENSSL_PREBUILT_FOLDER}/iphoneos -arch arm64 -mios-version-min=11.0 -isysroot ${IOS_SDK_PATH}" \
|
|
255
|
+
"--disable-iconv --disable-zlib --enable-openssl --disable-securetransport"
|
|
179
256
|
|
|
180
257
|
fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphoneos/lib/libavcodec.${AVCODEC_VERSION}.dylib"
|
|
181
258
|
fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphoneos/lib/libavformat.${AVFORMAT_VERSION}.dylib"
|
|
@@ -184,12 +261,13 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
184
261
|
|
|
185
262
|
rm -rf "${OUTPUT_DIR}/ios/iphoneos/share"
|
|
186
263
|
|
|
264
|
+
# iOS Simulator arm (Silicon Macs)
|
|
187
265
|
build_arch "arm64" "darwinsim" \
|
|
188
266
|
"$(xcrun --sdk iphonesimulator --find clang)" \
|
|
189
267
|
"$(xcrun --sdk iphonesimulator --find clang++)" \
|
|
190
|
-
"-arch arm64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
|
|
191
|
-
"-arch arm64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
|
|
192
|
-
"--disable-iconv --disable-zlib"
|
|
268
|
+
"-I${OPENSSL_PREBUILT_FOLDER}/include -arch arm64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
|
|
269
|
+
"-L${OPENSSL_PREBUILT_FOLDER}/iphonesimulator -arch arm64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
|
|
270
|
+
"--disable-iconv --disable-zlib --enable-openssl --disable-securetransport"
|
|
193
271
|
|
|
194
272
|
fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphonesimulator_arm64/lib/libavcodec.${AVCODEC_VERSION}.dylib"
|
|
195
273
|
fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphonesimulator_arm64/lib/libavformat.${AVFORMAT_VERSION}.dylib"
|
|
@@ -202,9 +280,9 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
202
280
|
build_arch "x86_64" "darwinsim" \
|
|
203
281
|
"$(xcrun --sdk iphonesimulator --find clang)" \
|
|
204
282
|
"$(xcrun --sdk iphonesimulator --find clang++)" \
|
|
205
|
-
"-arch x86_64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
|
|
206
|
-
"-arch x86_64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
|
|
207
|
-
"--disable-iconv --disable-zlib"
|
|
283
|
+
"-I${OPENSSL_PREBUILT_FOLDER}/include -arch x86_64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
|
|
284
|
+
"-L${OPENSSL_PREBUILT_FOLDER}/iphonesimulator-x86_64 -arch x86_64 -mios-simulator-version-min=11.0 -isysroot ${IOS_SIM_SDK_PATH}" \
|
|
285
|
+
"--disable-iconv --disable-zlib --enable-openssl --disable-securetransport"
|
|
208
286
|
|
|
209
287
|
fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphonesimulator_x86_64/lib/libavcodec.${AVCODEC_VERSION}.dylib"
|
|
210
288
|
fix_dynamic_ios_linkage "${OUTPUT_DIR}/ios/iphonesimulator_x86_64/lib/libavformat.${AVFORMAT_VERSION}.dylib"
|
|
@@ -214,6 +292,7 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
214
292
|
rm -rf "${OUTPUT_DIR}/ios/iphonesimulator_x86_64/share"
|
|
215
293
|
|
|
216
294
|
mkdir -p "${OUTPUT_DIR}/ios/iphonesimulator/lib"
|
|
295
|
+
# Create universal simulator libraries
|
|
217
296
|
lipo -create \
|
|
218
297
|
"${OUTPUT_DIR}/ios/iphonesimulator_arm64/lib/libavcodec.${AVCODEC_VERSION}.dylib" \
|
|
219
298
|
"${OUTPUT_DIR}/ios/iphonesimulator_x86_64/lib/libavcodec.${AVCODEC_VERSION}.dylib" \
|
|
@@ -238,6 +317,7 @@ if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
|
238
317
|
mv "${OUTPUT_DIR}/ios/iphonesimulator/lib/libavformat.${AVFORMAT_VERSION}.dylib" "${OUTPUT_DIR}/ios/iphonesimulator/lib/libavformat.dylib"
|
|
239
318
|
mv "${OUTPUT_DIR}/ios/iphonesimulator/lib/libavcodec.${AVCODEC_VERSION}.dylib" "${OUTPUT_DIR}/ios/iphonesimulator/lib/libavcodec.dylib"
|
|
240
319
|
|
|
320
|
+
# create frameworks from binaries
|
|
241
321
|
bash ./create_xcframework.sh
|
|
242
322
|
|
|
243
323
|
echo "iOS builds completed!"
|
|
@@ -248,114 +328,54 @@ fi
|
|
|
248
328
|
# Android Architectures
|
|
249
329
|
if [ -n "$ANDROID_NDK_ROOT" ] || [ -n "$NDK_ROOT" ]; then
|
|
250
330
|
echo "Building for Android architectures..."
|
|
251
|
-
|
|
252
|
-
# Use NDK_ROOT if ANDROID_NDK_ROOT is not set
|
|
253
|
-
NDK_PATH="${ANDROID_NDK_ROOT:-$NDK_ROOT}"
|
|
254
|
-
|
|
255
|
-
if [ ! -d "$NDK_PATH" ]; then
|
|
256
|
-
echo "Android NDK not found. Please set ANDROID_NDK_ROOT or NDK_ROOT environment variable"
|
|
257
|
-
else
|
|
258
|
-
API_LEVEL=21
|
|
259
|
-
TOOLCHAIN_PATH="${NDK_PATH}/toolchains/llvm/prebuilt"
|
|
260
|
-
|
|
261
|
-
# Detect host OS for toolchain
|
|
262
|
-
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
263
|
-
HOST_TAG="darwin-x86_64"
|
|
264
|
-
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
265
|
-
HOST_TAG="linux-x86_64"
|
|
266
|
-
else
|
|
267
|
-
echo "Unsupported host OS for Android NDK"
|
|
268
|
-
exit 1
|
|
269
|
-
fi
|
|
270
|
-
|
|
271
|
-
TOOLCHAIN="${TOOLCHAIN_PATH}/${HOST_TAG}"
|
|
272
|
-
|
|
273
|
-
OPENSSL_PREBUILT_FOLDER="$(pwd)/openssl-prebuilt"
|
|
274
|
-
if [ ! -d "$OPENSSL_PREBUILT_FOLDER" ]; then
|
|
275
|
-
echo "Cloning and building OpenSSL for Android..."
|
|
276
|
-
if [ ! -d "openssl" ]; then
|
|
277
|
-
git clone https://github.com/openssl/openssl.git
|
|
278
|
-
fi
|
|
279
|
-
cd openssl
|
|
280
|
-
export ANDROID_NDK_ROOT=${NDK_PATH}
|
|
281
|
-
PATH=$TOOLCHAIN/bin:$PATH
|
|
282
|
-
mkdir -p "${OPENSSL_PREBUILT_FOLDER}/include"
|
|
283
|
-
|
|
284
|
-
# arm64-v8a
|
|
285
|
-
./Configure android-arm64 no-shared no-asm -D__ANDROID_API__=${API_LEVEL}
|
|
286
|
-
make -j10
|
|
287
|
-
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/arm64-v8a && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/arm64-v8a"
|
|
288
|
-
cp -r include/crypto include/openssl "${OPENSSL_PREBUILT_FOLDER}/include"
|
|
289
|
-
make clean
|
|
290
|
-
|
|
291
|
-
# armeabi-v7a
|
|
292
|
-
./Configure android-arm no-shared no-asm -D__ANDROID_API__=${API_LEVEL}
|
|
293
|
-
make -j10
|
|
294
|
-
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a"
|
|
295
|
-
make clean
|
|
296
|
-
|
|
297
|
-
./Configure android-x86 no-shared no-asm -D__ANDROID_API__=${API_LEVEL}
|
|
298
|
-
make -j10
|
|
299
|
-
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/x86 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/x86"
|
|
300
|
-
make clean
|
|
301
|
-
|
|
302
|
-
./Configure android-x86_64 no-shared no-asm -D__ANDROID_API__=${API_LEVEL}
|
|
303
|
-
make -j10
|
|
304
|
-
mkdir -p ${OPENSSL_PREBUILT_FOLDER}/x86_64 && cp libcrypto.a libssl.a "${OPENSSL_PREBUILT_FOLDER}/x86_64"
|
|
305
|
-
make clean
|
|
306
|
-
|
|
307
|
-
cd .. && rm -rf openssl
|
|
308
|
-
fi
|
|
309
331
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
332
|
+
# ARM64-v8a
|
|
333
|
+
build_arch "aarch64" "android" \
|
|
334
|
+
"${TOOLCHAIN}/bin/aarch64-linux-android${API_LEVEL}-clang" \
|
|
335
|
+
"${TOOLCHAIN}/bin/aarch64-linux-android${API_LEVEL}-clang++" \
|
|
336
|
+
"-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
|
|
337
|
+
"-L${OPENSSL_PREBUILT_FOLDER}/arm64-v8a -L${TOOLCHAIN}/sysroot/usr/lib/aarch64-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
|
|
338
|
+
"--enable-openssl --extra-libs=-lz"
|
|
339
|
+
|
|
340
|
+
rm -rf ${OUTPUT_DIR}/android/arm64-v8a/share
|
|
341
|
+
|
|
342
|
+
# ARMv7a
|
|
343
|
+
build_arch "armv7a" "android" \
|
|
344
|
+
"${TOOLCHAIN}/bin/armv7a-linux-androideabi${API_LEVEL}-clang" \
|
|
345
|
+
"${TOOLCHAIN}/bin/armv7a-linux-androideabi${API_LEVEL}-clang++" \
|
|
346
|
+
"-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
|
|
347
|
+
"-L${OPENSSL_PREBUILT_FOLDER}/armeabi-v7a -L${TOOLCHAIN}/sysroot/usr/lib/arm-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
|
|
348
|
+
"--enable-openssl --extra-libs=-lz"
|
|
327
349
|
|
|
328
|
-
|
|
350
|
+
rm -rf ${OUTPUT_DIR}/android/armeabi-v7a/share
|
|
329
351
|
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
352
|
+
# x86
|
|
353
|
+
build_arch "x86" "android" \
|
|
354
|
+
"${TOOLCHAIN}/bin/i686-linux-android${API_LEVEL}-clang" \
|
|
355
|
+
"${TOOLCHAIN}/bin/i686-linux-android${API_LEVEL}-clang++" \
|
|
356
|
+
"-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/darwin-x86_64/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
|
|
357
|
+
"-L${OPENSSL_PREBUILT_FOLDER}/x86 -L${TOOLCHAIN}/darwin-x86_64/sysroot/usr/lib/i686-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
|
|
358
|
+
"--enable-openssl --extra-libs=-lz"
|
|
337
359
|
|
|
338
|
-
|
|
360
|
+
rm -rf ${OUTPUT_DIR}/android/x86/share
|
|
339
361
|
|
|
340
362
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
363
|
+
# x86_64
|
|
364
|
+
build_arch "x86_64" "android" \
|
|
365
|
+
"${TOOLCHAIN}/bin/x86_64-linux-android${API_LEVEL}-clang" \
|
|
366
|
+
"${TOOLCHAIN}/bin/x86_64-linux-android${API_LEVEL}-clang++" \
|
|
367
|
+
"-I${OPENSSL_PREBUILT_FOLDER}/include -I${TOOLCHAIN}/darwin-x86_64/sysroot/usr/include -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
|
|
368
|
+
"-L${OPENSSL_PREBUILT_FOLDER}/x86_64 -L${TOOLCHAIN}/darwin-x86_64/sysroot/usr/lib/x86_64-linux-android/${API_LEVEL} -fPIC -Wl,-Bsymbolic -Wl,-z,max-page-size=16384 -Wl,-z,common-page-size=16384" \
|
|
369
|
+
"--enable-openssl --extra-libs=-lz"
|
|
348
370
|
|
|
349
|
-
|
|
371
|
+
rm -rf ${OUTPUT_DIR}/android/x86_64/share
|
|
350
372
|
|
|
351
373
|
|
|
352
|
-
|
|
353
|
-
fi
|
|
374
|
+
echo "Android builds completed!"
|
|
354
375
|
else
|
|
355
376
|
echo "Skipping Android builds (ANDROID_NDK_ROOT or NDK_ROOT not set)"
|
|
356
377
|
fi
|
|
357
378
|
|
|
358
379
|
rm -rf "${BUILD_DIR}"
|
|
359
380
|
|
|
360
|
-
echo ""
|
|
361
381
|
echo "All FFmpeg builds completed!"
|
|
@@ -27,6 +27,12 @@ class OscillatorNode extends _AudioScheduledSourceNode.default {
|
|
|
27
27
|
setPeriodicWave(wave) {
|
|
28
28
|
this.node.setPeriodicWave(wave.periodicWave);
|
|
29
29
|
}
|
|
30
|
+
get onEnded() {
|
|
31
|
+
return super.onEnded;
|
|
32
|
+
}
|
|
33
|
+
set onEnded(callback) {
|
|
34
|
+
super.onEnded = callback;
|
|
35
|
+
}
|
|
30
36
|
}
|
|
31
37
|
exports.default = OscillatorNode;
|
|
32
38
|
//# sourceMappingURL=OscillatorNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_AudioScheduledSourceNode","_interopRequireDefault","require","_AudioParam","_errors","e","__esModule","default","OscillatorNode","AudioScheduledSourceNode","constructor","context","node","frequency","AudioParam","detune","type","value","InvalidStateError","setPeriodicWave","wave","periodicWave","exports"],"sourceRoot":"../../../src","sources":["core/OscillatorNode.ts"],"mappings":";;;;;;AAEA,IAAAA,yBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,OAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;
|
|
1
|
+
{"version":3,"names":["_AudioScheduledSourceNode","_interopRequireDefault","require","_AudioParam","_errors","e","__esModule","default","OscillatorNode","AudioScheduledSourceNode","constructor","context","node","frequency","AudioParam","detune","type","value","InvalidStateError","setPeriodicWave","wave","periodicWave","onEnded","callback","exports"],"sourceRoot":"../../../src","sources":["core/OscillatorNode.ts"],"mappings":";;;;;;AAEA,IAAAA,yBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAGA,IAAAE,OAAA,GAAAF,OAAA;AAA8C,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAG/B,MAAMG,cAAc,SAASC,iCAAwB,CAAC;EAInEC,WAAWA,CAACC,OAAyB,EAAEC,IAAqB,EAAE;IAC5D,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IACpB,IAAI,CAACC,SAAS,GAAG,IAAIC,mBAAU,CAACF,IAAI,CAACC,SAAS,EAAEF,OAAO,CAAC;IACxD,IAAI,CAACI,MAAM,GAAG,IAAID,mBAAU,CAACF,IAAI,CAACG,MAAM,EAAEJ,OAAO,CAAC;IAClD,IAAI,CAACK,IAAI,GAAGJ,IAAI,CAACI,IAAI;EACvB;EAEA,IAAWA,IAAIA,CAAA,EAAmB;IAChC,OAAQ,IAAI,CAACJ,IAAI,CAAqBI,IAAI;EAC5C;EAEA,IAAWA,IAAIA,CAACC,KAAqB,EAAE;IACrC,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtB,MAAM,IAAIC,yBAAiB,CACzB,uGACF,CAAC;IACH;IAEC,IAAI,CAACN,IAAI,CAAqBI,IAAI,GAAGC,KAAK;EAC7C;EAEOE,eAAeA,CAACC,IAAkB,EAAQ;IAC9C,IAAI,CAACR,IAAI,CAAqBO,eAAe,CAACC,IAAI,CAACC,YAAY,CAAC;EACnE;EAEA,IAAoBC,OAAOA,CAAA,EAAkD;IAC3E,OAAO,KAAK,CAACA,OAAO;EACtB;EAEA,IAAoBA,OAAOA,CACzBC,QAAkD,EAClD;IACA,KAAK,CAACD,OAAO,GAAGC,QAAQ;EAC1B;AACF;AAACC,OAAA,CAAAjB,OAAA,GAAAC,cAAA","ignoreList":[]}
|
|
@@ -22,5 +22,11 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
|
|
|
22
22
|
setPeriodicWave(wave) {
|
|
23
23
|
this.node.setPeriodicWave(wave.periodicWave);
|
|
24
24
|
}
|
|
25
|
+
get onEnded() {
|
|
26
|
+
return super.onEnded;
|
|
27
|
+
}
|
|
28
|
+
set onEnded(callback) {
|
|
29
|
+
super.onEnded = callback;
|
|
30
|
+
}
|
|
25
31
|
}
|
|
26
32
|
//# sourceMappingURL=OscillatorNode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AudioScheduledSourceNode","AudioParam","InvalidStateError","OscillatorNode","constructor","context","node","frequency","detune","type","value","setPeriodicWave","wave","periodicWave"],"sourceRoot":"../../../src","sources":["core/OscillatorNode.ts"],"mappings":";;AAEA,OAAOA,wBAAwB,MAAM,+BAA4B;AACjE,OAAOC,UAAU,MAAM,iBAAc;AAGrC,SAASC,iBAAiB,QAAQ,oBAAW;
|
|
1
|
+
{"version":3,"names":["AudioScheduledSourceNode","AudioParam","InvalidStateError","OscillatorNode","constructor","context","node","frequency","detune","type","value","setPeriodicWave","wave","periodicWave","onEnded","callback"],"sourceRoot":"../../../src","sources":["core/OscillatorNode.ts"],"mappings":";;AAEA,OAAOA,wBAAwB,MAAM,+BAA4B;AACjE,OAAOC,UAAU,MAAM,iBAAc;AAGrC,SAASC,iBAAiB,QAAQ,oBAAW;AAG7C,eAAe,MAAMC,cAAc,SAASH,wBAAwB,CAAC;EAInEI,WAAWA,CAACC,OAAyB,EAAEC,IAAqB,EAAE;IAC5D,KAAK,CAACD,OAAO,EAAEC,IAAI,CAAC;IACpB,IAAI,CAACC,SAAS,GAAG,IAAIN,UAAU,CAACK,IAAI,CAACC,SAAS,EAAEF,OAAO,CAAC;IACxD,IAAI,CAACG,MAAM,GAAG,IAAIP,UAAU,CAACK,IAAI,CAACE,MAAM,EAAEH,OAAO,CAAC;IAClD,IAAI,CAACI,IAAI,GAAGH,IAAI,CAACG,IAAI;EACvB;EAEA,IAAWA,IAAIA,CAAA,EAAmB;IAChC,OAAQ,IAAI,CAACH,IAAI,CAAqBG,IAAI;EAC5C;EAEA,IAAWA,IAAIA,CAACC,KAAqB,EAAE;IACrC,IAAIA,KAAK,KAAK,QAAQ,EAAE;MACtB,MAAM,IAAIR,iBAAiB,CACzB,uGACF,CAAC;IACH;IAEC,IAAI,CAACI,IAAI,CAAqBG,IAAI,GAAGC,KAAK;EAC7C;EAEOC,eAAeA,CAACC,IAAkB,EAAQ;IAC9C,IAAI,CAACN,IAAI,CAAqBK,eAAe,CAACC,IAAI,CAACC,YAAY,CAAC;EACnE;EAEA,IAAoBC,OAAOA,CAAA,EAAkD;IAC3E,OAAO,KAAK,CAACA,OAAO;EACtB;EAEA,IAAoBA,OAAOA,CACzBC,QAAkD,EAClD;IACA,KAAK,CAACD,OAAO,GAAGC,QAAQ;EAC1B;AACF","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import AudioScheduledSourceNode from './AudioScheduledSourceNode';
|
|
|
4
4
|
import AudioParam from './AudioParam';
|
|
5
5
|
import BaseAudioContext from './BaseAudioContext';
|
|
6
6
|
import PeriodicWave from './PeriodicWave';
|
|
7
|
+
import { EventEmptyType } from '../events/types';
|
|
7
8
|
export default class OscillatorNode extends AudioScheduledSourceNode {
|
|
8
9
|
readonly frequency: AudioParam;
|
|
9
10
|
readonly detune: AudioParam;
|
|
@@ -11,5 +12,7 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
|
|
|
11
12
|
get type(): OscillatorType;
|
|
12
13
|
set type(value: OscillatorType);
|
|
13
14
|
setPeriodicWave(wave: PeriodicWave): void;
|
|
15
|
+
get onEnded(): ((event: EventEmptyType) => void) | undefined;
|
|
16
|
+
set onEnded(callback: ((event: EventEmptyType) => void) | null);
|
|
14
17
|
}
|
|
15
18
|
//# sourceMappingURL=OscillatorNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OscillatorNode.d.ts","sourceRoot":"","sources":["../../../src/core/OscillatorNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"OscillatorNode.d.ts","sourceRoot":"","sources":["../../../src/core/OscillatorNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,wBAAwB,MAAM,4BAA4B,CAAC;AAClE,OAAO,UAAU,MAAM,cAAc,CAAC;AACtC,OAAO,gBAAgB,MAAM,oBAAoB,CAAC;AAClD,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,wBAAwB;IAClE,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAC/B,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;gBAEhB,OAAO,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe;IAO5D,IAAW,IAAI,IAAI,cAAc,CAEhC;IAED,IAAW,IAAI,CAAC,KAAK,EAAE,cAAc,EAQpC;IAEM,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAIhD,IAAoB,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAE3E;IAED,IAAoB,OAAO,CACzB,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,IAAI,EAGnD;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/events/types.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,cAAc;CAAG;AAElC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B,MAAM,EACF,SAAS,GACT,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,4BAA4B,CAAC;CAClC;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;IAC3B,qBAAqB,EAAE,cAAc,CAAC;IACtC,wBAAwB,EAAE,kBAAkB,CAAC;IAC7C,eAAe,EAAE,cAAc,CAAC;IAChC,mBAAmB,EAAE,cAAc,CAAC;IACpC,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,cAAc,CAAC;IAClC,kBAAkB,EAAE,cAAc,CAAC;IACnC,4BAA4B,EAAE,kBAAkB,CAAC;CAClD;AAED,KAAK,YAAY,GAAG,mBAAmB,GAAG;IACxC,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,EAAE,uBAAuB,CAAC;IACtC,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/events/types.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,cAAc;CAAG;AAElC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,uBAAuB;IAC/B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,sBAAsB;IAC9B,MAAM,EACF,SAAS,GACT,UAAU,GACV,gBAAgB,GAChB,eAAe,GACf,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,4BAA4B,CAAC;CAClC;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,cAAc,CAAC;IAC3B,WAAW,EAAE,cAAc,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC;IAC3B,qBAAqB,EAAE,cAAc,CAAC;IACtC,wBAAwB,EAAE,kBAAkB,CAAC;IAC7C,eAAe,EAAE,cAAc,CAAC;IAChC,mBAAmB,EAAE,cAAc,CAAC;IACpC,iBAAiB,EAAE,kBAAkB,CAAC;IACtC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,iBAAiB,EAAE,cAAc,CAAC;IAClC,kBAAkB,EAAE,cAAc,CAAC;IACnC,4BAA4B,EAAE,kBAAkB,CAAC;CAClD;AAED,KAAK,YAAY,GAAG,mBAAmB,GAAG;IACxC,YAAY,EAAE,kBAAkB,CAAC;IACjC,YAAY,EAAE,uBAAuB,CAAC;IACtC,WAAW,EAAE,sBAAsB,CAAC;CACrC,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,cAAc;IACtB,KAAK,EAAE,gBAAgB,CAAC;IACxB,UAAU,EAAE,qBAAqB,CAAC;IAClC,eAAe,EAAE,kBAAkB,CAAC;IACpC,UAAU,EAAE,cAAc,CAAC;IAC3B,kBAAkB,EAAE,cAAc,CAAC;CACpC;AAED,KAAK,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;AAEjD,MAAM,MAAM,sBAAsB,GAAG,MAAM,mBAAmB,CAAC;AAE/D,MAAM,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC;AACjD,MAAM,MAAM,mBAAmB,CAAC,IAAI,SAAS,eAAe,IAAI,CAC9D,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,KACtB,IAAI,CAAC;AAEV,MAAM,MAAM,iBAAiB,GAAG,MAAM,cAAc,CAAC;AACrD,MAAM,MAAM,qBAAqB,CAAC,IAAI,SAAS,iBAAiB,IAAI,CAClE,KAAK,EAAE,cAAc,CAAC,IAAI,CAAC,KACxB,IAAI,CAAC;AAEV,MAAM,MAAM,cAAc,GAAG,MAAM,WAAW,CAAC;AAC/C,MAAM,MAAM,kBAAkB,CAAC,IAAI,SAAS,cAAc,IAAI,CAC5D,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,KACrB,IAAI,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-audio-api",
|
|
3
|
-
"version": "0.8.3-nightly-
|
|
3
|
+
"version": "0.8.3-nightly-c623edf-20251002",
|
|
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"
|
|
@@ -5,6 +5,7 @@ import AudioParam from './AudioParam';
|
|
|
5
5
|
import BaseAudioContext from './BaseAudioContext';
|
|
6
6
|
import PeriodicWave from './PeriodicWave';
|
|
7
7
|
import { InvalidStateError } from '../errors';
|
|
8
|
+
import { EventEmptyType } from '../events/types';
|
|
8
9
|
|
|
9
10
|
export default class OscillatorNode extends AudioScheduledSourceNode {
|
|
10
11
|
readonly frequency: AudioParam;
|
|
@@ -34,4 +35,14 @@ export default class OscillatorNode extends AudioScheduledSourceNode {
|
|
|
34
35
|
public setPeriodicWave(wave: PeriodicWave): void {
|
|
35
36
|
(this.node as IOscillatorNode).setPeriodicWave(wave.periodicWave);
|
|
36
37
|
}
|
|
38
|
+
|
|
39
|
+
public override get onEnded(): ((event: EventEmptyType) => void) | undefined {
|
|
40
|
+
return super.onEnded as ((event: EventEmptyType) => void) | undefined;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
public override set onEnded(
|
|
44
|
+
callback: ((event: EventEmptyType) => void) | null
|
|
45
|
+
) {
|
|
46
|
+
super.onEnded = callback;
|
|
47
|
+
}
|
|
37
48
|
}
|