@mediabunny/mp3-encoder 1.11.1 → 1.12.0
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/bundles/mediabunny-mp3-encoder.js +27 -25
- package/dist/bundles/mediabunny-mp3-encoder.min.js +1 -1
- package/dist/bundles/mediabunny-mp3-encoder.min.mjs +1 -1
- package/dist/bundles/mediabunny-mp3-encoder.mjs +27 -25
- package/dist/modules/src/index.js +1 -1
- package/package.json +1 -1
- package/src/index.ts +1 -1
|
@@ -48,22 +48,22 @@ var computeMp3FrameSize = (layer, bitrate, sampleRate, padding) => {
|
|
|
48
48
|
return Math.floor(144 * bitrate / sampleRate + padding);
|
|
49
49
|
}
|
|
50
50
|
};
|
|
51
|
-
var readFrameHeader = (word,
|
|
52
|
-
const startPos = reader.pos;
|
|
51
|
+
var readFrameHeader = (word, remainingBytes) => {
|
|
53
52
|
const firstByte = word >>> 24;
|
|
54
53
|
const secondByte = word >>> 16 & 255;
|
|
55
54
|
const thirdByte = word >>> 8 & 255;
|
|
56
55
|
const fourthByte = word & 255;
|
|
57
56
|
if (firstByte !== 255 && secondByte !== 255 && thirdByte !== 255 && fourthByte !== 255) {
|
|
58
|
-
|
|
59
|
-
|
|
57
|
+
return {
|
|
58
|
+
header: null,
|
|
59
|
+
bytesAdvanced: 4
|
|
60
|
+
};
|
|
60
61
|
}
|
|
61
|
-
reader.pos += 1;
|
|
62
62
|
if (firstByte !== 255) {
|
|
63
|
-
return null;
|
|
63
|
+
return { header: null, bytesAdvanced: 1 };
|
|
64
64
|
}
|
|
65
65
|
if ((secondByte & 224) !== 224) {
|
|
66
|
-
return null;
|
|
66
|
+
return { header: null, bytesAdvanced: 1 };
|
|
67
67
|
}
|
|
68
68
|
const mpegVersionId = secondByte >> 3 & 3;
|
|
69
69
|
const layer = secondByte >> 1 & 3;
|
|
@@ -77,16 +77,16 @@ var readFrameHeader = (word, reader) => {
|
|
|
77
77
|
const emphasis = fourthByte & 3;
|
|
78
78
|
const kilobitRate = mpegVersionId === 3 ? MPEG_V1_BITRATES[layer]?.[bitrateIndex] : MPEG_V2_BITRATES[layer]?.[bitrateIndex];
|
|
79
79
|
if (!kilobitRate || kilobitRate === -1) {
|
|
80
|
-
return null;
|
|
80
|
+
return { header: null, bytesAdvanced: 1 };
|
|
81
81
|
}
|
|
82
82
|
const bitrate = kilobitRate * 1e3;
|
|
83
83
|
const sampleRate = SAMPLING_RATES[mpegVersionId]?.[frequencyIndex];
|
|
84
84
|
if (!sampleRate || sampleRate === -1) {
|
|
85
|
-
return null;
|
|
85
|
+
return { header: null, bytesAdvanced: 1 };
|
|
86
86
|
}
|
|
87
87
|
const frameLength = computeMp3FrameSize(layer, bitrate, sampleRate, padding);
|
|
88
|
-
if (
|
|
89
|
-
return null;
|
|
88
|
+
if (remainingBytes !== null && remainingBytes < frameLength) {
|
|
89
|
+
return { header: null, bytesAdvanced: 1 };
|
|
90
90
|
}
|
|
91
91
|
let audioSamplesInFrame;
|
|
92
92
|
if (mpegVersionId === 3) {
|
|
@@ -101,19 +101,21 @@ var readFrameHeader = (word, reader) => {
|
|
|
101
101
|
}
|
|
102
102
|
}
|
|
103
103
|
return {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
104
|
+
header: {
|
|
105
|
+
totalSize: frameLength,
|
|
106
|
+
mpegVersionId,
|
|
107
|
+
layer,
|
|
108
|
+
bitrate,
|
|
109
|
+
frequencyIndex,
|
|
110
|
+
sampleRate,
|
|
111
|
+
channel,
|
|
112
|
+
modeExtension,
|
|
113
|
+
copyright,
|
|
114
|
+
original,
|
|
115
|
+
emphasis,
|
|
116
|
+
audioSamplesInFrame
|
|
117
|
+
},
|
|
118
|
+
bytesAdvanced: 1
|
|
117
119
|
};
|
|
118
120
|
};
|
|
119
121
|
|
|
@@ -243,7 +245,7 @@ var Mp3Encoder = class extends CustomAudioEncoder {
|
|
|
243
245
|
let pos = 0;
|
|
244
246
|
while (pos <= this.currentBufferOffset - FRAME_HEADER_SIZE) {
|
|
245
247
|
const word = new DataView(this.buffer.buffer).getUint32(pos, false);
|
|
246
|
-
const header = readFrameHeader(word,
|
|
248
|
+
const header = readFrameHeader(word, null).header;
|
|
247
249
|
if (!header) {
|
|
248
250
|
break;
|
|
249
251
|
}
|
|
@@ -119,7 +119,7 @@ class Mp3Encoder extends mediabunny_1.CustomAudioEncoder {
|
|
|
119
119
|
let pos = 0;
|
|
120
120
|
while (pos <= this.currentBufferOffset - mp3_misc_1.FRAME_HEADER_SIZE) {
|
|
121
121
|
const word = new DataView(this.buffer.buffer).getUint32(pos, false);
|
|
122
|
-
const header = (0, mp3_misc_1.readFrameHeader)(word,
|
|
122
|
+
const header = (0, mp3_misc_1.readFrameHeader)(word, null).header;
|
|
123
123
|
if (!header) {
|
|
124
124
|
break;
|
|
125
125
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mediabunny/mp3-encoder",
|
|
3
3
|
"author": "Vanilagy",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.12.0",
|
|
5
5
|
"description": "MP3 encoder extension for Mediabunny, based on LAME.",
|
|
6
6
|
"main": "./dist/bundles/mediabunny-mp3-encoder.mjs",
|
|
7
7
|
"module": "./dist/bundles/mediabunny-mp3-encoder.mjs",
|
package/src/index.ts
CHANGED
|
@@ -136,7 +136,7 @@ class Mp3Encoder extends CustomAudioEncoder {
|
|
|
136
136
|
let pos = 0;
|
|
137
137
|
while (pos <= this.currentBufferOffset - FRAME_HEADER_SIZE) {
|
|
138
138
|
const word = new DataView(this.buffer.buffer).getUint32(pos, false);
|
|
139
|
-
const header = readFrameHeader(word,
|
|
139
|
+
const header = readFrameHeader(word, null).header;
|
|
140
140
|
if (!header) {
|
|
141
141
|
break;
|
|
142
142
|
}
|