extendable-media-recorder
Version:
An extendable drop-in replacement for the native MediaRecorder.
28 lines • 1.29 kB
JavaScript
export const createReadElementContent = (readVariableSizeInteger) => {
return (dataView, offset, type, channelCount = 2) => {
const lengthAndValue = readVariableSizeInteger(dataView, offset);
if (lengthAndValue === null) {
return lengthAndValue;
}
const { length, value } = lengthAndValue;
if (type === 'master') {
return { content: null, length };
}
if (offset + length + value > dataView.byteLength) {
return null;
}
if (type === 'binary') {
const numberOfSamples = (value / Float32Array.BYTES_PER_ELEMENT - 1) / channelCount;
const content = Array.from({ length: channelCount }, () => new Float32Array(numberOfSamples));
for (let i = 0; i < numberOfSamples; i += 1) {
const elementOffset = i * channelCount + 1;
for (let j = 0; j < channelCount; j += 1) {
content[j][i] = dataView.getFloat32(offset + length + (elementOffset + j) * Float32Array.BYTES_PER_ELEMENT, true);
}
}
return { content, length: length + value };
}
return { content: null, length: length + value };
};
};
//# sourceMappingURL=read-element-content.js.map