Make MP3 next frame location more strict for better recovery (fixes #382), fix Date timezone for ID3 tags

This commit is contained in:
Vanilagy
2026-05-22 11:31:26 +02:00
parent 149a2b4571
commit 85a80972a0
9 changed files with 70 additions and 26 deletions
+2 -2
View File
@@ -7,7 +7,7 @@
*/
import { CustomAudioEncoder, AudioCodec, AudioSample, EncodedPacket, registerEncoder } from 'mediabunny';
import { FRAME_HEADER_SIZE, readMp3FrameHeader, SAMPLING_RATES } from '../../../shared/mp3-misc';
import { MP3_FRAME_HEADER_SIZE, readMp3FrameHeader, SAMPLING_RATES } from '../../../shared/mp3-misc';
import type { WorkerCommand, WorkerResponse, WorkerResponseData } from './shared';
// @ts-expect-error An esbuild plugin handles this, TypeScript doesn't need to understand
import createWorker from './encode.worker';
@@ -160,7 +160,7 @@ class Mp3Encoder extends CustomAudioEncoder {
this.currentBufferOffset = requiredBufferSize;
let pos = 0;
while (pos <= this.currentBufferOffset - FRAME_HEADER_SIZE) {
while (pos <= this.currentBufferOffset - MP3_FRAME_HEADER_SIZE) {
const word = new DataView(this.buffer.buffer).getUint32(pos, false);
const header = readMp3FrameHeader(word, null).header;
if (!header) {