@remotion/media-utils 2.0.0 → 2.0.3-lambda.460
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/dist/fft/fft.js +7 -9
- package/dist/fft/fft.js.map +1 -1
- package/dist/fft/get-visualization.d.ts.map +1 -1
- package/dist/fft/get-visualization.js +4 -4
- package/dist/fft/get-visualization.js.map +1 -1
- package/dist/fft/mag.js +1 -1
- package/dist/fft/mag.js.map +1 -1
- package/dist/fft/max-value-cached.d.ts.map +1 -1
- package/dist/fft/max-value-cached.js +1 -1
- package/dist/fft/max-value-cached.js.map +1 -1
- package/dist/fft/smoothing.d.ts.map +1 -1
- package/dist/fft/smoothing.js.map +1 -1
- package/dist/get-audio-data.d.ts.map +1 -1
- package/dist/get-audio-data.js +1 -1
- package/dist/get-audio-data.js.map +1 -1
- package/dist/get-audio-duration.d.ts.map +1 -1
- package/dist/get-audio-duration.js +2 -2
- package/dist/get-audio-duration.js.map +1 -1
- package/dist/get-video-metadata.d.ts.map +1 -1
- package/dist/get-video-metadata.js +3 -3
- package/dist/get-video-metadata.js.map +1 -1
- package/dist/get-wave-form-samples.d.ts.map +1 -1
- package/dist/get-wave-form-samples.js +2 -2
- package/dist/get-wave-form-samples.js.map +1 -1
- package/dist/get-waveform-portion.js +1 -1
- package/dist/get-waveform-portion.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/use-audio-metadata.d.ts.map +1 -1
- package/dist/use-audio-metadata.js +9 -9
- package/dist/use-audio-metadata.js.map +1 -1
- package/dist/visualize-audio-waveform.d.ts +13 -0
- package/dist/visualize-audio-waveform.d.ts.map +1 -0
- package/dist/visualize-audio-waveform.js +39 -0
- package/dist/visualize-audio-waveform.js.map +1 -0
- package/dist/visualize-audio.d.ts.map +1 -1
- package/dist/visualize-audio.js +2 -2
- package/dist/visualize-audio.js.map +1 -1
- package/package.json +10 -11
- package/tsconfig.json +10 -0
- package/dist/fft/visualize-audio.d.ts +0 -7
- package/dist/fft/visualize-audio.d.ts.map +0 -1
- package/dist/fft/visualize-audio.js +0 -15
- package/dist/fft/visualize-audio.js.map +0 -1
- package/dist/fft.d.ts +0 -2
- package/dist/fft.d.ts.map +0 -1
- package/dist/fft.js +0 -34
- package/dist/fft.js.map +0 -1
- package/dist/get-audio-metadata.d.ts +0 -3
- package/dist/get-audio-metadata.d.ts.map +0 -1
- package/dist/get-audio-metadata.js +0 -29
- package/dist/get-audio-metadata.js.map +0 -1
- package/dist/get-video-duration.d.ts +0 -2
- package/dist/get-video-duration.d.ts.map +0 -1
- package/dist/get-video-duration.js +0 -25
- package/dist/get-video-duration.js.map +0 -1
- package/dist/reduce-waveform.d.ts +0 -2
- package/dist/reduce-waveform.d.ts.map +0 -1
- package/dist/reduce-waveform.js +0 -28
- package/dist/reduce-waveform.js.map +0 -1
package/dist/fft/fft.js
CHANGED
|
@@ -11,24 +11,22 @@ const fft = function (vector) {
|
|
|
11
11
|
// Base case is X = x + 0i since our input is assumed to be real only.
|
|
12
12
|
if (N === 1) {
|
|
13
13
|
if (Array.isArray(vector[0])) {
|
|
14
|
-
//If input vector contains complex numbers
|
|
14
|
+
// If input vector contains complex numbers
|
|
15
15
|
return [[vector[0][0], vector[0][1]]];
|
|
16
16
|
}
|
|
17
|
-
|
|
18
|
-
return [[vector[0], 0]];
|
|
19
|
-
}
|
|
17
|
+
return [[vector[0], 0]];
|
|
20
18
|
}
|
|
21
19
|
// Recurse: all even samples
|
|
22
|
-
const X_evens = exports.fft(vector.filter((_, ix) => ix % 2 === 0));
|
|
20
|
+
const X_evens = (0, exports.fft)(vector.filter((_, ix) => ix % 2 === 0));
|
|
23
21
|
// Recurse: all odd samples
|
|
24
|
-
const X_odds = exports.fft(vector.filter((__, ix) => ix % 2 === 1));
|
|
22
|
+
const X_odds = (0, exports.fft)(vector.filter((__, ix) => ix % 2 === 1));
|
|
25
23
|
// Now, perform N/2 operations!
|
|
26
24
|
for (let k = 0; k < N / 2; k++) {
|
|
27
25
|
// t is a complex number!
|
|
28
26
|
const t = X_evens[k];
|
|
29
|
-
const e = complex_1.complexMultiply(exponent_1.exponent(k, N), X_odds[k]);
|
|
30
|
-
X[k] = complex_1.complexAdd(t, e);
|
|
31
|
-
X[k + N / 2] = complex_1.complexSubtract(t, e);
|
|
27
|
+
const e = (0, complex_1.complexMultiply)((0, exponent_1.exponent)(k, N), X_odds[k]);
|
|
28
|
+
X[k] = (0, complex_1.complexAdd)(t, e);
|
|
29
|
+
X[k + N / 2] = (0, complex_1.complexSubtract)(t, e);
|
|
32
30
|
}
|
|
33
31
|
return X;
|
|
34
32
|
};
|
package/dist/fft/fft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fft.js","sourceRoot":"","sources":["../../src/fft/fft.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAE3C,uCAAuE;AACvE,yCAAoC;AAE7B,MAAM,GAAG,GAAG,UAAU,MAAkB;IAC9C,MAAM,CAAC,GAAuB,EAAE,CAAC;IACjC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAExB,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,EAAE;QACZ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7B,
|
|
1
|
+
{"version":3,"file":"fft.js","sourceRoot":"","sources":["../../src/fft/fft.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAE3C,uCAAuE;AACvE,yCAAoC;AAE7B,MAAM,GAAG,GAAG,UAAU,MAAkB;IAC9C,MAAM,CAAC,GAAuB,EAAE,CAAC;IACjC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAExB,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,EAAE;QACZ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YAC7B,2CAA2C;YAC3C,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC;QAED,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACxB;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAG,IAAA,WAAG,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5D,2BAA2B;IAC3B,MAAM,MAAM,GAAG,IAAA,WAAG,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE5D,+BAA+B;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,yBAAyB;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,CAAC,GAAG,IAAA,yBAAe,EAAC,IAAA,mBAAQ,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,CAAC,CAAC,CAAC,CAAC,GAAG,IAAA,oBAAU,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAA,yBAAe,EAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACrC;IAED,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AA9BW,QAAA,GAAG,OA8Bd"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-visualization.d.ts","sourceRoot":"","sources":["../../src/fft/get-visualization.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gBAAgB;gBAQhB,MAAM;UACZ,YAAY;WACX,MAAM;gBACD,MAAM;SACb,MAAM;YACH,MAAM;MACX,MAAM,
|
|
1
|
+
{"version":3,"file":"get-visualization.d.ts","sourceRoot":"","sources":["../../src/fft/get-visualization.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gBAAgB;gBAQhB,MAAM;UACZ,YAAY;WACX,MAAM;gBACD,MAAM;SACb,MAAM;YACH,MAAM;MACX,MAAM,EAgCT,CAAC"}
|
|
@@ -23,10 +23,10 @@ const getVisualization = ({ sampleSize, data, sampleRate, frame, fps, maxInt, })
|
|
|
23
23
|
const ints = new Int16Array({
|
|
24
24
|
length: sampleSize,
|
|
25
25
|
});
|
|
26
|
-
ints.set(data.subarray(actualStart, actualStart + sampleSize).map((x) => to_int_16_1.toInt16(x)));
|
|
27
|
-
const phasors = fft_1.fft(ints);
|
|
28
|
-
const magnitudes = mag_1.fftMag(phasors).map((p) => p);
|
|
29
|
-
return smoothing_1.smoothen(magnitudes).map((m) => m / (sampleSize / 2) / maxInt);
|
|
26
|
+
ints.set(data.subarray(actualStart, actualStart + sampleSize).map((x) => (0, to_int_16_1.toInt16)(x)));
|
|
27
|
+
const phasors = (0, fft_1.fft)(ints);
|
|
28
|
+
const magnitudes = (0, mag_1.fftMag)(phasors).map((p) => p);
|
|
29
|
+
return (0, smoothing_1.smoothen)(magnitudes).map((m) => m / (sampleSize / 2) / maxInt);
|
|
30
30
|
};
|
|
31
31
|
exports.getVisualization = getVisualization;
|
|
32
32
|
//# sourceMappingURL=get-visualization.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-visualization.js","sourceRoot":"","sources":["../../src/fft/get-visualization.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAE3C,+BAA0B;AAC1B,+BAA6B;AAC7B,2CAAqC;AACrC,2CAAoC;AAE7B,MAAM,gBAAgB,GAAG,CAAC,EAChC,UAAU,EACV,IAAI,EACJ,UAAU,EACV,KAAK,EACL,GAAG,EACH,MAAM,GAQN,EAAY,EAAE;IACd,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7E,IAAI,CAAC,YAAY,EAAE;QAClB,MAAM,IAAI,SAAS,CAClB,kFAAkF,UAAU,EAAE,CAC9F,CAAC;KACF;
|
|
1
|
+
{"version":3,"file":"get-visualization.js","sourceRoot":"","sources":["../../src/fft/get-visualization.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAE3C,+BAA0B;AAC1B,+BAA6B;AAC7B,2CAAqC;AACrC,2CAAoC;AAE7B,MAAM,gBAAgB,GAAG,CAAC,EAChC,UAAU,EACV,IAAI,EACJ,UAAU,EACV,KAAK,EACL,GAAG,EACH,MAAM,GAQN,EAAY,EAAE;IACd,MAAM,YAAY,GAAG,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7E,IAAI,CAAC,YAAY,EAAE;QAClB,MAAM,IAAI,SAAS,CAClB,kFAAkF,UAAU,EAAE,CAC9F,CAAC;KACF;IAED,IAAI,CAAC,GAAG,EAAE;QACT,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;KAC3D;IAED,IAAI,IAAI,CAAC,MAAM,GAAG,UAAU,EAAE;QAC7B,MAAM,IAAI,SAAS,CAClB,0CAA0C,GAAG,UAAU,GAAG,QAAQ,CAClE,CAAC;KACF;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IAErD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC;QAC3B,MAAM,EAAE,UAAU;KAClB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CACP,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,mBAAO,EAAC,CAAC,CAAC,CAAC,CAC3E,CAAC;IACF,MAAM,OAAO,GAAG,IAAA,SAAG,EAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,UAAU,GAAG,IAAA,YAAM,EAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjD,OAAO,IAAA,oBAAQ,EAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACvE,CAAC,CAAC;AA9CW,QAAA,gBAAgB,oBA8C3B"}
|
package/dist/fft/mag.js
CHANGED
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
5
5
|
exports.fftMag = void 0;
|
|
6
6
|
const complex_1 = require("./complex");
|
|
7
7
|
const fftMag = function (fftBins) {
|
|
8
|
-
const ret = fftBins.map((f) => complex_1.complexMagnitude(f));
|
|
8
|
+
const ret = fftBins.map((f) => (0, complex_1.complexMagnitude)(f));
|
|
9
9
|
return ret.slice(0, ret.length / 2);
|
|
10
10
|
};
|
|
11
11
|
exports.fftMag = fftMag;
|
package/dist/fft/mag.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mag.js","sourceRoot":"","sources":["../../src/fft/mag.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAE3C,uCAA2C;AAEpC,MAAM,MAAM,GAAG,UAAU,OAA2B;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,0BAAgB,
|
|
1
|
+
{"version":3,"file":"mag.js","sourceRoot":"","sources":["../../src/fft/mag.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAE3C,uCAA2C;AAEpC,MAAM,MAAM,GAAG,UAAU,OAA2B;IAC1D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,0BAAgB,EAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC;AAHW,QAAA,MAAM,UAGjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-value-cached.d.ts","sourceRoot":"","sources":["../../src/fft/max-value-cached.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,SAAS,EAAC,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"max-value-cached.d.ts","sourceRoot":"","sources":["../../src/fft/max-value-cached.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,SAAS,EAAC,MAAM,IAAI,CAAC;AAmB7B,eAAO,MAAM,uBAAuB,aAAc,SAAS,WAQ1D,CAAC"}
|
|
@@ -19,7 +19,7 @@ const getMaxPossibleMagnitude = (metadata) => {
|
|
|
19
19
|
if (cache[metadata.resultId]) {
|
|
20
20
|
return cache[metadata.resultId];
|
|
21
21
|
}
|
|
22
|
-
const result = to_int_16_1.toInt16(getMax(metadata.channelWaveforms[0]));
|
|
22
|
+
const result = (0, to_int_16_1.toInt16)(getMax(metadata.channelWaveforms[0]));
|
|
23
23
|
cache[metadata.resultId] = result;
|
|
24
24
|
return result;
|
|
25
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max-value-cached.js","sourceRoot":"","sources":["../../src/fft/max-value-cached.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAG3C,2CAAoC;AAEpC,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAE,EAAE;IACtC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,GAAG,GAAG,GAAG,EAAE;YACd,GAAG,GAAG,GAAG,CAAC;SACV;KACD;
|
|
1
|
+
{"version":3,"file":"max-value-cached.js","sourceRoot":"","sources":["../../src/fft/max-value-cached.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAG3C,2CAAoC;AAEpC,MAAM,MAAM,GAAG,CAAC,KAAmB,EAAE,EAAE;IACtC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,GAAG,GAAG,GAAG,EAAE;YACd,GAAG,GAAG,GAAG,CAAC;SACV;KACD;IAED,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,KAAK,GAEP,EAAE,CAAC;AAEA,MAAM,uBAAuB,GAAG,CAAC,QAAmB,EAAE,EAAE;IAC9D,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAC7B,OAAO,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAChC;IAED,MAAM,MAAM,GAAG,IAAA,mBAAO,EAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC;IAClC,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AARW,QAAA,uBAAuB,2BAQlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoothing.d.ts","sourceRoot":"","sources":["../../src/fft/smoothing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ,UAAoB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"smoothing.d.ts","sourceRoot":"","sources":["../../src/fft/smoothing.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,QAAQ,UAAoB,MAAM,EAAE,aAwBhD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smoothing.js","sourceRoot":"","sources":["../../src/fft/smoothing.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAE3C,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,eAAe,GAAG,CAAC,CAAC;AAEnB,MAAM,QAAQ,GAAG,UAAU,KAAe;IAChD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,eAAe,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,mDAAmD;QACvG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACvE;
|
|
1
|
+
{"version":3,"file":"smoothing.js","sourceRoot":"","sources":["../../src/fft/smoothing.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,2CAA2C;;;AAE3C,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,eAAe,GAAG,CAAC,CAAC;AAEnB,MAAM,QAAQ,GAAG,UAAU,KAAe;IAChD,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,MAAM,GAAG,EAAE,CAAC;IAClB,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,eAAe,EAAE,IAAI,EAAE,EAAE;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC,CAAC,mDAAmD;QACvG,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;SACvE;QAED,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;YAChE,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,IAAI,UAAU,EAAE,CAAC,EAAE,EAAE;gBAC/C,GAAG,IAAI,EAAE,GAAG,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;aACjC;YAED,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SAChB;QAED,SAAS,GAAG,MAAM,CAAC;KACnB;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAxBW,QAAA,QAAQ,YAwBnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-audio-data.d.ts","sourceRoot":"","sources":["../src/get-audio-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAIlC,eAAO,MAAM,YAAY,QAAe,MAAM,KAAG,QAAQ,SAAS,
|
|
1
|
+
{"version":3,"file":"get-audio-data.d.ts","sourceRoot":"","sources":["../src/get-audio-data.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAIlC,eAAO,MAAM,YAAY,QAAe,MAAM,KAAG,QAAQ,SAAS,CA4BjE,CAAC"}
|
package/dist/get-audio-data.js
CHANGED
|
@@ -22,7 +22,7 @@ const getAudioData = async (src) => {
|
|
|
22
22
|
durationInSeconds: wave.duration,
|
|
23
23
|
numberOfChannels: wave.numberOfChannels,
|
|
24
24
|
resultId: String(Math.random()),
|
|
25
|
-
isRemote: is_remote_asset_1.isRemoteAsset(src),
|
|
25
|
+
isRemote: (0, is_remote_asset_1.isRemoteAsset)(src),
|
|
26
26
|
};
|
|
27
27
|
metadataCache[src] = metadata;
|
|
28
28
|
return metadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-audio-data.js","sourceRoot":"","sources":["../src/get-audio-data.ts"],"names":[],"mappings":";;;AAAA,uDAAgD;AAGhD,MAAM,aAAa,GAA+B,EAAE,CAAC;AAE9C,MAAM,YAAY,GAAG,KAAK,EAAE,GAAW,EAAsB,EAAE;IACrE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;KAC1B;
|
|
1
|
+
{"version":3,"file":"get-audio-data.js","sourceRoot":"","sources":["../src/get-audio-data.ts"],"names":[],"mappings":";;;AAAA,uDAAgD;AAGhD,MAAM,aAAa,GAA+B,EAAE,CAAC;AAE9C,MAAM,YAAY,GAAG,KAAK,EAAE,GAAW,EAAsB,EAAE;IACrE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;KAC1B;IAED,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAExC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEjD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7D,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACvD,IAAI,CAAC,IAAI,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAc;QAC3B,gBAAgB;QAChB,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,iBAAiB,EAAE,IAAI,CAAC,QAAQ;QAChC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC/B,QAAQ,EAAE,IAAA,+BAAa,EAAC,GAAG,CAAC;KAC5B,CAAC;IACF,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC9B,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AA5BW,QAAA,YAAY,gBA4BvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-audio-duration.d.ts","sourceRoot":"","sources":["../src/get-audio-duration.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,QAAS,MAAM,KAAG,QAAQ,MAAM,
|
|
1
|
+
{"version":3,"file":"get-audio-duration.d.ts","sourceRoot":"","sources":["../src/get-audio-duration.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,QAAS,MAAM,KAAG,QAAQ,MAAM,CAsB5D,CAAC"}
|
|
@@ -5,8 +5,8 @@ const getAudioDuration = (src) => {
|
|
|
5
5
|
const audio = document.createElement('audio');
|
|
6
6
|
audio.src = src;
|
|
7
7
|
return new Promise((resolve, reject) => {
|
|
8
|
-
const onError = (
|
|
9
|
-
reject(
|
|
8
|
+
const onError = () => {
|
|
9
|
+
reject(audio.error);
|
|
10
10
|
cleanup();
|
|
11
11
|
};
|
|
12
12
|
const onLoadedMetadata = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-audio-duration.js","sourceRoot":"","sources":["../src/get-audio-duration.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAmB,EAAE;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"get-audio-duration.js","sourceRoot":"","sources":["../src/get-audio-duration.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAmB,EAAE;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC9D,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEF,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QACzE,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAtBW,QAAA,gBAAgB,oBAsB3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-video-metadata.d.ts","sourceRoot":"","sources":["../src/get-video-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAItC,eAAO,MAAM,gBAAgB,QAAe,MAAM,KAAG,QAAQ,aAAa,
|
|
1
|
+
{"version":3,"file":"get-video-metadata.d.ts","sourceRoot":"","sources":["../src/get-video-metadata.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAC,MAAM,SAAS,CAAC;AAItC,eAAO,MAAM,gBAAgB,QAAe,MAAM,KAAG,QAAQ,aAAa,CAmCzE,CAAC"}
|
|
@@ -10,8 +10,8 @@ const getVideoMetadata = async (src) => {
|
|
|
10
10
|
const video = document.createElement('video');
|
|
11
11
|
video.src = src;
|
|
12
12
|
return new Promise((resolve, reject) => {
|
|
13
|
-
const onError = (
|
|
14
|
-
reject(
|
|
13
|
+
const onError = () => {
|
|
14
|
+
reject(video.error);
|
|
15
15
|
cleanup();
|
|
16
16
|
};
|
|
17
17
|
const onLoadedMetadata = () => {
|
|
@@ -20,7 +20,7 @@ const getVideoMetadata = async (src) => {
|
|
|
20
20
|
width: video.videoWidth,
|
|
21
21
|
height: video.videoHeight,
|
|
22
22
|
aspectRatio: video.videoWidth / video.videoHeight,
|
|
23
|
-
isRemote: is_remote_asset_1.isRemoteAsset(src),
|
|
23
|
+
isRemote: (0, is_remote_asset_1.isRemoteAsset)(src),
|
|
24
24
|
};
|
|
25
25
|
resolve(metadata);
|
|
26
26
|
cache[src] = metadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-video-metadata.js","sourceRoot":"","sources":["../src/get-video-metadata.ts"],"names":[],"mappings":";;;AAAA,uDAAgD;AAGhD,MAAM,KAAK,GAAmC,EAAE,CAAC;AAE1C,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAA0B,EAAE;IAC7E,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;QACf,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;KAClB;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"get-video-metadata.js","sourceRoot":"","sources":["../src/get-video-metadata.ts"],"names":[],"mappings":";;;AAAA,uDAAgD;AAGhD,MAAM,KAAK,GAAmC,EAAE,CAAC;AAE1C,MAAM,gBAAgB,GAAG,KAAK,EAAE,GAAW,EAA0B,EAAE;IAC7E,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;QACf,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC;KAClB;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,OAAO,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrD,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpB,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC7B,MAAM,QAAQ,GAAkB;gBAC/B,iBAAiB,EAAE,KAAK,CAAC,QAAQ;gBACjC,KAAK,EAAE,KAAK,CAAC,UAAU;gBACvB,MAAM,EAAE,KAAK,CAAC,WAAW;gBACzB,WAAW,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW;gBACjD,QAAQ,EAAE,IAAA,+BAAa,EAAC,GAAG,CAAC;aAC5B,CAAC;YACF,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClB,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;YAEtB,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC9D,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC;QAEF,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QACzE,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,gBAAgB,oBAmC3B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-wave-form-samples.d.ts","sourceRoot":"","sources":["../src/get-wave-form-samples.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"get-wave-form-samples.d.ts","sourceRoot":"","sources":["../src/get-wave-form-samples.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,kBAAkB,aACpB,YAAY,gBACR,MAAM,aAGpB,CAAC"}
|
|
@@ -11,14 +11,14 @@ const filterData = (audioBuffer, samples) => {
|
|
|
11
11
|
const blockStart = blockSize * i; // the location of the first sample in the block
|
|
12
12
|
let sum = 0;
|
|
13
13
|
for (let j = 0; j < blockSize; j++) {
|
|
14
|
-
sum
|
|
14
|
+
sum += Math.abs(audioBuffer[blockStart + j]); // find the sum of all the samples in the block
|
|
15
15
|
}
|
|
16
16
|
filteredData.push(sum / blockSize); // divide the sum by the block size to get the average
|
|
17
17
|
}
|
|
18
18
|
return filteredData;
|
|
19
19
|
};
|
|
20
20
|
const normalizeData = (filteredData) => {
|
|
21
|
-
const multiplier = Math.
|
|
21
|
+
const multiplier = Math.max(...filteredData) ** -1;
|
|
22
22
|
return filteredData.map((n) => n * multiplier);
|
|
23
23
|
};
|
|
24
24
|
const getWaveformSamples = (waveform, sampleAmount) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-wave-form-samples.js","sourceRoot":"","sources":["../src/get-wave-form-samples.ts"],"names":[],"mappings":";;;AAAA,MAAM,UAAU,GAAG,CAAC,WAAyB,EAAE,OAAe,EAAE,EAAE;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,4CAA4C;IACxG,IAAI,SAAS,KAAK,CAAC,EAAE;QACpB,OAAO,EAAE,CAAC;KACV;
|
|
1
|
+
{"version":3,"file":"get-wave-form-samples.js","sourceRoot":"","sources":["../src/get-wave-form-samples.ts"],"names":[],"mappings":";;;AAAA,MAAM,UAAU,GAAG,CAAC,WAAyB,EAAE,OAAe,EAAE,EAAE;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,4CAA4C;IACxG,IAAI,SAAS,KAAK,CAAC,EAAE;QACpB,OAAO,EAAE,CAAC;KACV;IAED,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,gDAAgD;QAClF,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YACnC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;SAC7F;QAED,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,sDAAsD;KAC1F;IAED,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,YAAsB,EAAE,EAAE;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAChD,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CACjC,QAAsB,EACtB,YAAoB,EACnB,EAAE;IACH,OAAO,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B"}
|
|
@@ -7,7 +7,7 @@ const getWaveformPortion = ({ audioData, startTimeInSeconds, durationInSeconds,
|
|
|
7
7
|
audioData.channelWaveforms[0].length);
|
|
8
8
|
const endSample = Math.floor(((startTimeInSeconds + durationInSeconds) / audioData.durationInSeconds) *
|
|
9
9
|
audioData.channelWaveforms[0].length);
|
|
10
|
-
return get_wave_form_samples_1.getWaveformSamples(audioData.channelWaveforms[0].slice(startSample, endSample), numberOfSamples).map((w, i) => {
|
|
10
|
+
return (0, get_wave_form_samples_1.getWaveformSamples)(audioData.channelWaveforms[0].slice(startSample, endSample), numberOfSamples).map((w, i) => {
|
|
11
11
|
return {
|
|
12
12
|
index: i,
|
|
13
13
|
amplitude: w,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-waveform-portion.js","sourceRoot":"","sources":["../src/get-waveform-portion.ts"],"names":[],"mappings":";;;AAAA,mEAA2D;AAQpD,MAAM,kBAAkB,GAAG,CAAC,EAClC,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAMf,EAAS,EAAE;IACX,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC7B,CAAC,kBAAkB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACjD,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CACrC,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC3B,CAAC,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACvE,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CACrC,CAAC;IAEF,OAAO,0CAAkB,
|
|
1
|
+
{"version":3,"file":"get-waveform-portion.js","sourceRoot":"","sources":["../src/get-waveform-portion.ts"],"names":[],"mappings":";;;AAAA,mEAA2D;AAQpD,MAAM,kBAAkB,GAAG,CAAC,EAClC,SAAS,EACT,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAMf,EAAS,EAAE;IACX,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAC7B,CAAC,kBAAkB,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACjD,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CACrC,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC3B,CAAC,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,GAAG,SAAS,CAAC,iBAAiB,CAAC;QACvE,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CACrC,CAAC;IAEF,OAAO,IAAA,0CAAkB,EACxB,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC,EAC3D,eAAe,CACf,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACd,OAAO;YACN,KAAK,EAAE,CAAC;YACR,SAAS,EAAE,CAAC;SACZ,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AA7BW,QAAA,kBAAkB,sBA6B7B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export { getAudioData } from './get-audio-data';
|
|
|
2
2
|
export { getAudioDuration } from './get-audio-duration';
|
|
3
3
|
export { getVideoMetadata } from './get-video-metadata';
|
|
4
4
|
export { getWaveformPortion } from './get-waveform-portion';
|
|
5
|
+
export * from './types';
|
|
5
6
|
export type { AudioData, VideoMetadata as VideoData } from './types';
|
|
6
7
|
export { useAudioData } from './use-audio-metadata';
|
|
7
8
|
export { visualizeAudio } from './visualize-audio';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,YAAY,EAAC,SAAS,EAAE,aAAa,IAAI,SAAS,EAAC,MAAM,SAAS,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,cAAc,SAAS,CAAC;AACxB,YAAY,EAAC,SAAS,EAAE,aAAa,IAAI,SAAS,EAAC,MAAM,SAAS,CAAC;AACnE,OAAO,EAAC,YAAY,EAAC,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
2
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
13
|
exports.visualizeAudio = exports.useAudioData = exports.getWaveformPortion = exports.getVideoMetadata = exports.getAudioDuration = exports.getAudioData = void 0;
|
|
4
14
|
var get_audio_data_1 = require("./get-audio-data");
|
|
@@ -9,6 +19,7 @@ var get_video_metadata_1 = require("./get-video-metadata");
|
|
|
9
19
|
Object.defineProperty(exports, "getVideoMetadata", { enumerable: true, get: function () { return get_video_metadata_1.getVideoMetadata; } });
|
|
10
20
|
var get_waveform_portion_1 = require("./get-waveform-portion");
|
|
11
21
|
Object.defineProperty(exports, "getWaveformPortion", { enumerable: true, get: function () { return get_waveform_portion_1.getWaveformPortion; } });
|
|
22
|
+
__exportStar(require("./types"), exports);
|
|
12
23
|
var use_audio_metadata_1 = require("./use-audio-metadata");
|
|
13
24
|
Object.defineProperty(exports, "useAudioData", { enumerable: true, get: function () { return use_audio_metadata_1.useAudioData; } });
|
|
14
25
|
var visualize_audio_1 = require("./visualize-audio");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mDAA8C;AAAtC,8GAAA,YAAY,OAAA;AACpB,2DAAsD;AAA9C,sHAAA,gBAAgB,OAAA;AACxB,2DAAsD;AAA9C,sHAAA,gBAAgB,OAAA;AACxB,+DAA0D;AAAlD,0HAAA,kBAAkB,OAAA;AAC1B,0CAAwB;AAExB,2DAAkD;AAA1C,kHAAA,YAAY,OAAA;AACpB,qDAAiD;AAAzC,iHAAA,cAAc,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-audio-metadata.d.ts","sourceRoot":"","sources":["../src/use-audio-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAElC,eAAO,MAAM,YAAY,QAAS,MAAM,KAAG,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"use-audio-metadata.d.ts","sourceRoot":"","sources":["../src/use-audio-metadata.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAElC,eAAO,MAAM,YAAY,QAAS,MAAM,KAAG,SAAS,GAAG,IAgCtD,CAAC"}
|
|
@@ -3,29 +3,29 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useAudioData = void 0;
|
|
4
4
|
const react_1 = require("react");
|
|
5
5
|
const remotion_1 = require("remotion");
|
|
6
|
-
const
|
|
6
|
+
const get_audio_data_1 = require("./get-audio-data");
|
|
7
7
|
const useAudioData = (src) => {
|
|
8
8
|
if (!src) {
|
|
9
9
|
throw new TypeError("useAudioMetadata requires a 'src' parameter");
|
|
10
10
|
}
|
|
11
|
-
const mountState = react_1.useRef({ isMounted: true });
|
|
12
|
-
react_1.useEffect(() => {
|
|
11
|
+
const mountState = (0, react_1.useRef)({ isMounted: true });
|
|
12
|
+
(0, react_1.useEffect)(() => {
|
|
13
13
|
const { current } = mountState;
|
|
14
14
|
current.isMounted = true;
|
|
15
15
|
return () => {
|
|
16
16
|
current.isMounted = false;
|
|
17
17
|
};
|
|
18
18
|
}, []);
|
|
19
|
-
const [metadata, setMetadata] = react_1.useState(null);
|
|
20
|
-
const fetchMetadata = react_1.useCallback(async () => {
|
|
21
|
-
const handle = remotion_1.delayRender();
|
|
22
|
-
const data = await
|
|
19
|
+
const [metadata, setMetadata] = (0, react_1.useState)(null);
|
|
20
|
+
const fetchMetadata = (0, react_1.useCallback)(async () => {
|
|
21
|
+
const handle = (0, remotion_1.delayRender)();
|
|
22
|
+
const data = await (0, get_audio_data_1.getAudioData)(src);
|
|
23
23
|
if (mountState.current.isMounted) {
|
|
24
24
|
setMetadata(data);
|
|
25
25
|
}
|
|
26
|
-
remotion_1.continueRender(handle);
|
|
26
|
+
(0, remotion_1.continueRender)(handle);
|
|
27
27
|
}, [src]);
|
|
28
|
-
react_1.useEffect(() => {
|
|
28
|
+
(0, react_1.useEffect)(() => {
|
|
29
29
|
fetchMetadata();
|
|
30
30
|
}, [fetchMetadata]);
|
|
31
31
|
return metadata;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-audio-metadata.js","sourceRoot":"","sources":["../src/use-audio-metadata.ts"],"names":[],"mappings":";;;AAAA,iCAA+D;AAC/D,uCAAqD;AACrD,
|
|
1
|
+
{"version":3,"file":"use-audio-metadata.js","sourceRoot":"","sources":["../src/use-audio-metadata.ts"],"names":[],"mappings":";;;AAAA,iCAA+D;AAC/D,uCAAqD;AACrD,qDAA8C;AAGvC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAoB,EAAE;IAC7D,IAAI,CAAC,GAAG,EAAE;QACT,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;KACnE;IAED,MAAM,UAAU,GAAG,IAAA,cAAM,EAAC,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAE7C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,MAAM,EAAC,OAAO,EAAC,GAAG,UAAU,CAAC;QAC7B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,OAAO,GAAG,EAAE;YACX,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,CAAC,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,IAAA,gBAAQ,EAAmB,IAAI,CAAC,CAAC;IAEjE,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,KAAK,IAAI,EAAE;QAC5C,MAAM,MAAM,GAAG,IAAA,sBAAW,GAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAA,6BAAY,EAAC,GAAG,CAAC,CAAC;QACrC,IAAI,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE;YACjC,WAAW,CAAC,IAAI,CAAC,CAAC;SAClB;QAED,IAAA,yBAAc,EAAC,MAAM,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,IAAA,iBAAS,EAAC,GAAG,EAAE;QACd,aAAa,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AAhCW,QAAA,YAAY,gBAgCvB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AudioData } from './types';
|
|
2
|
+
declare type FnParameters = {
|
|
3
|
+
audioData: AudioData;
|
|
4
|
+
frame: number;
|
|
5
|
+
fps: number;
|
|
6
|
+
waveformDuration: number;
|
|
7
|
+
numberOfSamples: number;
|
|
8
|
+
};
|
|
9
|
+
export declare const visualizeAudioWaveform: ({ smoothing, ...parameters }: FnParameters & {
|
|
10
|
+
smoothing?: boolean | undefined;
|
|
11
|
+
}) => number[];
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=visualize-audio-waveform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualize-audio-waveform.d.ts","sourceRoot":"","sources":["../src/visualize-audio-waveform.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAIlC,aAAK,YAAY,GAAG;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACxB,CAAC;AAuCF,eAAO,MAAM,sBAAsB;;cAalC,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.visualizeAudioWaveform = void 0;
|
|
4
|
+
const get_waveform_portion_1 = require("./get-waveform-portion");
|
|
5
|
+
const cache = {};
|
|
6
|
+
const visualizeAudioWaveformFrame = ({ audioData, frame, fps, numberOfSamples, waveformDuration, }) => {
|
|
7
|
+
if (waveformDuration * audioData.sampleRate < numberOfSamples) {
|
|
8
|
+
throw new TypeError(waveformDuration +
|
|
9
|
+
's audiodata does not have ' +
|
|
10
|
+
numberOfSamples +
|
|
11
|
+
' bars. Increase waveformDuration or decrease numberOfSamples');
|
|
12
|
+
}
|
|
13
|
+
const cacheKey = audioData.resultId + frame + fps + numberOfSamples + 'waveform';
|
|
14
|
+
if (cache[cacheKey]) {
|
|
15
|
+
return cache[cacheKey];
|
|
16
|
+
}
|
|
17
|
+
const startTimeInSeconds = frame / fps < waveformDuration
|
|
18
|
+
? 0
|
|
19
|
+
: frame / fps + waveformDuration / 2 >= audioData.durationInSeconds
|
|
20
|
+
? audioData.durationInSeconds - waveformDuration
|
|
21
|
+
: frame / fps - waveformDuration / 2;
|
|
22
|
+
return (0, get_waveform_portion_1.getWaveformPortion)({
|
|
23
|
+
audioData,
|
|
24
|
+
startTimeInSeconds,
|
|
25
|
+
durationInSeconds: waveformDuration,
|
|
26
|
+
numberOfSamples,
|
|
27
|
+
normalize: false,
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const visualizeAudioWaveform = ({ smoothing = true, ...parameters }) => {
|
|
31
|
+
if (smoothing) {
|
|
32
|
+
// TODO: Add bezier manipulation?
|
|
33
|
+
console.log('nice');
|
|
34
|
+
}
|
|
35
|
+
const data = visualizeAudioWaveformFrame(parameters);
|
|
36
|
+
return data.map((value) => value.amplitude);
|
|
37
|
+
};
|
|
38
|
+
exports.visualizeAudioWaveform = visualizeAudioWaveform;
|
|
39
|
+
//# sourceMappingURL=visualize-audio-waveform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"visualize-audio-waveform.js","sourceRoot":"","sources":["../src/visualize-audio-waveform.ts"],"names":[],"mappings":";;;AAAA,iEAA+D;AAG/D,MAAM,KAAK,GAA2B,EAAE,CAAC;AAUzC,MAAM,2BAA2B,GAAG,CAAC,EACpC,SAAS,EACT,KAAK,EACL,GAAG,EACH,eAAe,EACf,gBAAgB,GACF,EAAE,EAAE;IAClB,IAAI,gBAAgB,GAAG,SAAS,CAAC,UAAU,GAAG,eAAe,EAAE;QAC9D,MAAM,IAAI,SAAS,CAClB,gBAAgB;YACf,4BAA4B;YAC5B,eAAe;YACf,8DAA8D,CAC/D,CAAC;KACF;IAED,MAAM,QAAQ,GACb,SAAS,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,eAAe,GAAG,UAAU,CAAC;IACjE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;KACvB;IAED,MAAM,kBAAkB,GACvB,KAAK,GAAG,GAAG,GAAG,gBAAgB;QAC7B,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,gBAAgB,GAAG,CAAC,IAAI,SAAS,CAAC,iBAAiB;YACnE,CAAC,CAAC,SAAS,CAAC,iBAAiB,GAAG,gBAAgB;YAChD,CAAC,CAAC,KAAK,GAAG,GAAG,GAAG,gBAAgB,GAAG,CAAC,CAAC;IACvC,OAAO,IAAA,yCAAkB,EAAC;QACzB,SAAS;QACT,kBAAkB;QAClB,iBAAiB,EAAE,gBAAgB;QACnC,eAAe;QACf,SAAS,EAAE,KAAK;KAChB,CAAC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,sBAAsB,GAAG,CAAC,EACtC,SAAS,GAAG,IAAI,EAChB,GAAG,UAAU,EAGb,EAAE,EAAE;IACJ,IAAI,SAAS,EAAE;QACd,iCAAiC;QACjC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KACpB;IAED,MAAM,IAAI,GAAG,2BAA2B,CAAC,UAAU,CAAC,CAAC;IACrD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC,CAAC;AAbW,QAAA,sBAAsB,0BAajC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visualize-audio.d.ts","sourceRoot":"","sources":["../src/visualize-audio.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAIlC,aAAK,YAAY,GAAG;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;CACxB,CAAC;AAyBF,eAAO,MAAM,cAAc;;
|
|
1
|
+
{"version":3,"file":"visualize-audio.d.ts","sourceRoot":"","sources":["../src/visualize-audio.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAIlC,aAAK,YAAY,GAAG;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;CACxB,CAAC;AAyBF,eAAO,MAAM,cAAc;;cA4B1B,CAAC"}
|
package/dist/visualize-audio.js
CHANGED
|
@@ -9,8 +9,8 @@ const visualizeAudioFrame = ({ audioData: metadata, frame, fps, numberOfSamples,
|
|
|
9
9
|
if (cache[cacheKey]) {
|
|
10
10
|
return cache[cacheKey];
|
|
11
11
|
}
|
|
12
|
-
const maxInt = max_value_cached_1.getMaxPossibleMagnitude(metadata);
|
|
13
|
-
return get_visualization_1.getVisualization({
|
|
12
|
+
const maxInt = (0, max_value_cached_1.getMaxPossibleMagnitude)(metadata);
|
|
13
|
+
return (0, get_visualization_1.getVisualization)({
|
|
14
14
|
sampleSize: numberOfSamples * 2,
|
|
15
15
|
data: metadata.channelWaveforms[0],
|
|
16
16
|
frame,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visualize-audio.js","sourceRoot":"","sources":["../src/visualize-audio.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AACzD,6DAA+D;AAG/D,MAAM,KAAK,GAA8B,EAAE,CAAC;AAS5C,MAAM,mBAAmB,GAAG,CAAC,EAC5B,SAAS,EAAE,QAAQ,EACnB,KAAK,EACL,GAAG,EACH,eAAe,GACD,EAAE,EAAE;IAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,eAAe,CAAC;IACnE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;KACvB;IAED,MAAM,MAAM,GAAG,0CAAuB,
|
|
1
|
+
{"version":3,"file":"visualize-audio.js","sourceRoot":"","sources":["../src/visualize-audio.ts"],"names":[],"mappings":";;;AAAA,+DAAyD;AACzD,6DAA+D;AAG/D,MAAM,KAAK,GAA8B,EAAE,CAAC;AAS5C,MAAM,mBAAmB,GAAG,CAAC,EAC5B,SAAS,EAAE,QAAQ,EACnB,KAAK,EACL,GAAG,EACH,eAAe,GACD,EAAE,EAAE;IAClB,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,eAAe,CAAC;IACnE,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC;KACvB;IAED,MAAM,MAAM,GAAG,IAAA,0CAAuB,EAAC,QAAQ,CAAC,CAAC;IAEjD,OAAO,IAAA,oCAAgB,EAAC;QACvB,UAAU,EAAE,eAAe,GAAG,CAAC;QAC/B,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAClC,KAAK;QACL,GAAG;QACH,UAAU,EAAE,QAAQ,CAAC,UAAU;QAC/B,MAAM;KACN,CAAC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,CAAC,EAC9B,SAAS,GAAG,IAAI,EAChB,GAAG,UAAU,EAGb,EAAE,EAAE;IACJ,IAAI,CAAC,SAAS,EAAE;QACf,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;KACvC;IAED,MAAM,QAAQ,GAAG;QAChB,UAAU,CAAC,KAAK,GAAG,CAAC;QACpB,UAAU,CAAC,KAAK;QAChB,UAAU,CAAC,KAAK,GAAG,CAAC;KACpB,CAAC;IACF,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC9B,OAAO,mBAAmB,CAAC,EAAC,GAAG,UAAU,EAAE,KAAK,EAAE,CAAC,EAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACpE,OAAO,CACN,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;aACxB,IAAI,CAAC,IAAI,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACb,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAC9C,CAAC;IACH,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AA5BW,QAAA,cAAc,kBA4BzB"}
|
package/package.json
CHANGED
|
@@ -1,37 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remotion/media-utils",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3-lambda.460+db60000b6",
|
|
4
4
|
"description": "Utility functions for audio and video",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"sideEffects": false,
|
|
6
7
|
"scripts": {
|
|
7
8
|
"test": "eslint src --ext ts,tsx",
|
|
8
9
|
"watch": "tsc -w",
|
|
9
10
|
"build": "tsc -d"
|
|
10
11
|
},
|
|
11
|
-
"files": [
|
|
12
|
-
"dist"
|
|
13
|
-
],
|
|
14
12
|
"author": "",
|
|
15
13
|
"license": "MIT",
|
|
16
14
|
"repository": {
|
|
17
|
-
"url": "https://github.com/
|
|
15
|
+
"url": "https://github.com/remotion-dev/remotion"
|
|
18
16
|
},
|
|
19
17
|
"dependencies": {
|
|
20
|
-
"remotion": "^2.0.
|
|
18
|
+
"remotion": "^2.0.3-lambda.460+db60000b6"
|
|
21
19
|
},
|
|
22
20
|
"peerDependencies": {
|
|
23
21
|
"react": "^17.0.1",
|
|
24
22
|
"react-dom": "^17.0.1"
|
|
25
23
|
},
|
|
26
24
|
"devDependencies": {
|
|
27
|
-
"@jonny/eslint-config": "^2.1.
|
|
28
|
-
"@types/node": "^
|
|
29
|
-
"eslint": "^7.
|
|
25
|
+
"@jonny/eslint-config": "^2.1.248",
|
|
26
|
+
"@types/node": "^16.7.5",
|
|
27
|
+
"eslint": "^7.25.0",
|
|
30
28
|
"prettier": "^2.0.5",
|
|
31
29
|
"prettier-plugin-organize-imports": "^1.1.1",
|
|
32
|
-
"typescript": "^4.
|
|
30
|
+
"typescript": "^4.4.2"
|
|
33
31
|
},
|
|
34
32
|
"publishConfig": {
|
|
35
33
|
"access": "public"
|
|
36
|
-
}
|
|
34
|
+
},
|
|
35
|
+
"gitHead": "db60000b69c9aa327ea817577cf473fb105b4dad"
|
|
37
36
|
}
|
package/tsconfig.json
ADDED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visualize-audio.d.ts","sourceRoot":"","sources":["../../src/fft/visualize-audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,oBAAoB,EAAC,MAAM,UAAU,CAAC;AAG9C,eAAO,MAAM,cAAc;cAKhB,oBAAoB;WACvB,MAAM;SACR,MAAM;cASX,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.visualizeAudio = void 0;
|
|
4
|
-
const get_visualization_1 = require("./get-visualization");
|
|
5
|
-
const visualizeAudio = ({ metadata, frame, fps, }) => {
|
|
6
|
-
return get_visualization_1.getVisualization({
|
|
7
|
-
bars: 16,
|
|
8
|
-
data: metadata.channelWaveforms[0],
|
|
9
|
-
frame,
|
|
10
|
-
fps,
|
|
11
|
-
sampleRate: metadata.sampleRate,
|
|
12
|
-
});
|
|
13
|
-
};
|
|
14
|
-
exports.visualizeAudio = visualizeAudio;
|
|
15
|
-
//# sourceMappingURL=visualize-audio.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"visualize-audio.js","sourceRoot":"","sources":["../../src/fft/visualize-audio.ts"],"names":[],"mappings":";;;AACA,2DAAqD;AAE9C,MAAM,cAAc,GAAG,CAAC,EAC9B,QAAQ,EACR,KAAK,EACL,GAAG,GAKH,EAAE,EAAE;IACJ,OAAO,oCAAgB,CAAC;QACvB,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAClC,KAAK;QACL,GAAG;QACH,UAAU,EAAE,QAAQ,CAAC,UAAU;KAC/B,CAAC,CAAC;AACJ,CAAC,CAAC;AAhBW,QAAA,cAAc,kBAgBzB"}
|
package/dist/fft.d.ts
DELETED
package/dist/fft.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fft.d.ts","sourceRoot":"","sources":["../src/fft.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,GAAG,sBAoCf,CAAC"}
|
package/dist/fft.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fft = void 0;
|
|
4
|
-
const fft = function (vector) {
|
|
5
|
-
const X = [], N = vector.length;
|
|
6
|
-
// Base case is X = x + 0i since our input is assumed to be real only.
|
|
7
|
-
if (N == 1) {
|
|
8
|
-
if (Array.isArray(vector[0]))
|
|
9
|
-
//If input vector contains complex numbers
|
|
10
|
-
return [[vector[0][0], vector[0][1]]];
|
|
11
|
-
else
|
|
12
|
-
return [[vector[0], 0]];
|
|
13
|
-
}
|
|
14
|
-
// Recurse: all even samples
|
|
15
|
-
const X_evens = exports.fft(vector.filter(even)),
|
|
16
|
-
// Recurse: all odd samples
|
|
17
|
-
X_odds = exports.fft(vector.filter(odd));
|
|
18
|
-
// Now, perform N/2 operations!
|
|
19
|
-
for (let k = 0; k < N / 2; k++) {
|
|
20
|
-
// t is a complex number!
|
|
21
|
-
const t = X_evens[k], e = complex.multiply(fftUtil.exponent(k, N), X_odds[k]);
|
|
22
|
-
X[k] = complex.add(t, e);
|
|
23
|
-
X[k + N / 2] = complex.subtract(t, e);
|
|
24
|
-
}
|
|
25
|
-
function even(__, ix) {
|
|
26
|
-
return ix % 2 == 0;
|
|
27
|
-
}
|
|
28
|
-
function odd(__, ix) {
|
|
29
|
-
return ix % 2 == 1;
|
|
30
|
-
}
|
|
31
|
-
return X;
|
|
32
|
-
};
|
|
33
|
-
exports.fft = fft;
|
|
34
|
-
//# sourceMappingURL=fft.js.map
|
package/dist/fft.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fft.js","sourceRoot":"","sources":["../src/fft.ts"],"names":[],"mappings":";;;AAAO,MAAM,GAAG,GAAG,UAAU,MAAM;IAClC,MAAM,CAAC,GAAG,EAAE,EACX,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAEnB,sEAAsE;IACtE,IAAI,CAAC,IAAI,CAAC,EAAE;QACX,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3B,0CAA0C;YAC1C,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;YAClC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC7B;IAED,4BAA4B;IAC5B,MAAM,OAAO,GAAG,WAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,2BAA2B;IAC3B,MAAM,GAAG,WAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAElC,+BAA+B;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,yBAAyB;QACzB,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EACnB,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzD,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACtC;IAED,SAAS,IAAI,CAAC,EAAE,EAAE,EAAE;QACnB,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,SAAS,GAAG,CAAC,EAAE,EAAE,EAAE;QAClB,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,CAAC,CAAC;AACV,CAAC,CAAC;AApCW,QAAA,GAAG,OAoCd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-audio-metadata.d.ts","sourceRoot":"","sources":["../src/get-audio-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,SAAS,CAAC;AAIlC,eAAO,MAAM,YAAY,QAAe,MAAM,KAAG,QAAQ,SAAS,CA0BjE,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getAudioData = void 0;
|
|
4
|
-
const metadataCache = {};
|
|
5
|
-
const getAudioData = async (src) => {
|
|
6
|
-
if (metadataCache[src]) {
|
|
7
|
-
return metadataCache[src];
|
|
8
|
-
}
|
|
9
|
-
const audioContext = new AudioContext();
|
|
10
|
-
const response = await fetch(src);
|
|
11
|
-
const arrayBuffer = await response.arrayBuffer();
|
|
12
|
-
const wave = await audioContext.decodeAudioData(arrayBuffer);
|
|
13
|
-
const channelWaveforms = new Array(wave.numberOfChannels)
|
|
14
|
-
.fill(true)
|
|
15
|
-
.map((_, channel) => {
|
|
16
|
-
return wave.getChannelData(channel);
|
|
17
|
-
});
|
|
18
|
-
const metadata = {
|
|
19
|
-
channelWaveforms,
|
|
20
|
-
sampleRate: audioContext.sampleRate,
|
|
21
|
-
duration: wave.duration,
|
|
22
|
-
numberOfChannels: wave.numberOfChannels,
|
|
23
|
-
resultId: String(Math.random()),
|
|
24
|
-
};
|
|
25
|
-
metadataCache[src] = metadata;
|
|
26
|
-
return metadata;
|
|
27
|
-
};
|
|
28
|
-
exports.getAudioData = getAudioData;
|
|
29
|
-
//# sourceMappingURL=get-audio-metadata.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-audio-metadata.js","sourceRoot":"","sources":["../src/get-audio-metadata.ts"],"names":[],"mappings":";;;AAEA,MAAM,aAAa,GAA+B,EAAE,CAAC;AAE9C,MAAM,YAAY,GAAG,KAAK,EAAE,GAAW,EAAsB,EAAE;IACrE,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QACvB,OAAO,aAAa,CAAC,GAAG,CAAC,CAAC;KAC1B;IACD,MAAM,YAAY,GAAG,IAAI,YAAY,EAAE,CAAC;IAExC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEjD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;IAE7D,MAAM,gBAAgB,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;SACvD,IAAI,CAAC,IAAI,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEJ,MAAM,QAAQ,GAAc;QAC3B,gBAAgB;QAChB,UAAU,EAAE,YAAY,CAAC,UAAU;QACnC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;KAC/B,CAAC;IACF,aAAa,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC9B,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC;AA1BW,QAAA,YAAY,gBA0BvB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-video-duration.d.ts","sourceRoot":"","sources":["../src/get-video-duration.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,QAAS,MAAM,KAAG,QAAQ,MAAM,CAmB5D,CAAC"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getVideoDuration = void 0;
|
|
4
|
-
const getVideoDuration = (src) => {
|
|
5
|
-
const video = document.createElement('video');
|
|
6
|
-
video.src = src;
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
const onError = (ev) => {
|
|
9
|
-
reject(ev.error);
|
|
10
|
-
cleanup();
|
|
11
|
-
};
|
|
12
|
-
const onLoadedMetadata = () => {
|
|
13
|
-
resolve(video.duration);
|
|
14
|
-
cleanup();
|
|
15
|
-
};
|
|
16
|
-
const cleanup = () => {
|
|
17
|
-
video.removeEventListener('loadedmetadata', onLoadedMetadata);
|
|
18
|
-
video.removeEventListener('error', onError);
|
|
19
|
-
};
|
|
20
|
-
video.addEventListener('loadedmetadata', onLoadedMetadata, { once: true });
|
|
21
|
-
video.addEventListener('error', onError, { once: true });
|
|
22
|
-
});
|
|
23
|
-
};
|
|
24
|
-
exports.getVideoDuration = getVideoDuration;
|
|
25
|
-
//# sourceMappingURL=get-video-duration.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-video-duration.js","sourceRoot":"","sources":["../src/get-video-duration.ts"],"names":[],"mappings":";;;AAAO,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAmB,EAAE;IAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;IAChB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,CAAC,EAAc,EAAE,EAAE;YAClC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACjB,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QACF,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC7B,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,EAAE,CAAC;QACX,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,KAAK,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;YAC9D,KAAK,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC;QACF,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QACzE,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC;AAnBW,QAAA,gBAAgB,oBAmB3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reduce-waveform.d.ts","sourceRoot":"","sources":["../src/reduce-waveform.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,kBAAkB,aACpB,YAAY,gBACR,MAAM,aAGpB,CAAC"}
|
package/dist/reduce-waveform.js
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getWaveformSamples = void 0;
|
|
4
|
-
const filterData = (audioBuffer, samples) => {
|
|
5
|
-
const blockSize = Math.floor(audioBuffer.length / samples); // the number of samples in each subdivision
|
|
6
|
-
if (blockSize === 0) {
|
|
7
|
-
return [];
|
|
8
|
-
}
|
|
9
|
-
const filteredData = [];
|
|
10
|
-
for (let i = 0; i < samples; i++) {
|
|
11
|
-
const blockStart = blockSize * i; // the location of the first sample in the block
|
|
12
|
-
let sum = 0;
|
|
13
|
-
for (let j = 0; j < blockSize; j++) {
|
|
14
|
-
sum = sum + Math.abs(audioBuffer[blockStart + j]); // find the sum of all the samples in the block
|
|
15
|
-
}
|
|
16
|
-
filteredData.push(sum / blockSize); // divide the sum by the block size to get the average
|
|
17
|
-
}
|
|
18
|
-
return filteredData;
|
|
19
|
-
};
|
|
20
|
-
const normalizeData = (filteredData) => {
|
|
21
|
-
const multiplier = Math.pow(Math.max(...filteredData), -1);
|
|
22
|
-
return filteredData.map((n) => n * multiplier);
|
|
23
|
-
};
|
|
24
|
-
const getWaveformSamples = (waveform, sampleAmount) => {
|
|
25
|
-
return normalizeData(filterData(waveform, sampleAmount));
|
|
26
|
-
};
|
|
27
|
-
exports.getWaveformSamples = getWaveformSamples;
|
|
28
|
-
//# sourceMappingURL=reduce-waveform.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"reduce-waveform.js","sourceRoot":"","sources":["../src/reduce-waveform.ts"],"names":[],"mappings":";;;AAAA,MAAM,UAAU,GAAG,CAAC,WAAyB,EAAE,OAAe,EAAE,EAAE;IACjE,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,4CAA4C;IACxG,IAAI,SAAS,KAAK,CAAC,EAAE;QACpB,OAAO,EAAE,CAAC;KACV;IACD,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,gDAAgD;QAClF,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YACnC,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;SAClG;QACD,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,sDAAsD;KAC1F;IACD,OAAO,YAAY,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,YAAsB,EAAE,EAAE;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3D,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;AAChD,CAAC,CAAC;AAEK,MAAM,kBAAkB,GAAG,CACjC,QAAsB,EACtB,YAAoB,EACnB,EAAE;IACH,OAAO,aAAa,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AALW,QAAA,kBAAkB,sBAK7B"}
|