@siteed/expo-audio-studio
Version:
Comprehensive audio processing library for React Native and Expo with recording, analysis, visualization, and streaming capabilities across iOS, Android, and web
25 lines (23 loc) • 870 B
text/typescript
/**
* Concatenates an array of ArrayBuffers into a single ArrayBuffer.
*
* @param buffers - An array of ArrayBuffers to be concatenated.
* @returns A single ArrayBuffer containing the concatenated data.
*/
export const concatenateBuffers = (buffers: ArrayBuffer[]): ArrayBuffer => {
// Filter out any undefined or null buffers
const validBuffers = buffers.filter((buffer) => buffer)
const totalLength = validBuffers.reduce(
(sum, buffer) => sum + buffer.byteLength,
0
)
// Create a new Uint8Array to hold the concatenated result
const result = new Uint8Array(totalLength)
// Offset to keep track of the current position in the result array
let offset = 0
for (const buffer of validBuffers) {
result.set(new Uint8Array(buffer), offset)
offset += buffer.byteLength
}
return result.buffer
}