From fe4eebd4878129d26ffd2fe63b7151c83487b795 Mon Sep 17 00:00:00 2001 From: JonnyBurger Date: Wed, 5 Nov 2025 10:54:03 +0100 Subject: [PATCH 1/3] Increase tolerance of pixels by 1 in tests --- test/browser/transparency.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/browser/transparency.test.ts b/test/browser/transparency.test.ts index e460e55..35527ae 100644 --- a/test/browser/transparency.test.ts +++ b/test/browser/transparency.test.ts @@ -148,8 +148,8 @@ test('Can encode transparent video', async () => { // Red (within error) expect(imageData.data[index2 + 0]).greaterThanOrEqual(253); - expect(imageData.data[index2 + 1]).lessThanOrEqual(2); - expect(imageData.data[index2 + 2]).lessThanOrEqual(2); + expect(imageData.data[index2 + 1]).lessThanOrEqual(3); + expect(imageData.data[index2 + 2]).lessThanOrEqual(3); expect(imageData.data[index2 + 3]).toBe(255); // Opaque From 3c8d5031582d971789cda569b211d2487d03e907 Mon Sep 17 00:00:00 2001 From: Jonny Burger Date: Thu, 6 Nov 2025 09:00:37 +0000 Subject: [PATCH 2/3] Merge pull request #209 from JonnyBurger/flac-consecutive-headers Ensure FLAC headers are consecutive --- src/flac/flac-demuxer.ts | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/src/flac/flac-demuxer.ts b/src/flac/flac-demuxer.ts index bf71ee4..5248394 100644 --- a/src/flac/flac-demuxer.ts +++ b/src/flac/flac-demuxer.ts @@ -339,16 +339,34 @@ export class FlacDemuxer extends Demuxer { slice.skip(-2); const lengthIfNextFlacFrameHeaderIsLegit = slice.filePos - startPos; - const nextIsLegit = this.readFlacFrameHeader({ + const nextFrameHeader = this.readFlacFrameHeader({ slice, isFirstPacket: false, }); - if (!nextIsLegit) { + if (!nextFrameHeader) { slice.skip(-1); continue; } + // Ensure the frameOrSampleNum is consecutive. + // https://github.com/Vanilagy/mediabunny/issues/194 + + if (this.blockingBit === 0) { + // Case A: If the stream is fixed block size, this is the frame number, which increments by 1 + if (nextFrameHeader.num - frameHeader.num !== 1) { + slice.skip(-1); + continue; + } + } else { + // Case B: If the stream is variable block size, this is the sample number, which increments by + // amount of samples in a frame. + if (nextFrameHeader.num - frameHeader.num !== frameHeader.blockSize) { + slice.skip(-1); + continue; + } + } + return { num: frameHeader.num, blockSize: frameHeader.blockSize, @@ -442,6 +460,11 @@ export class FlacDemuxer extends Demuxer { return null; } + if (sampleRate !== this.audioInfo.sampleRate) { + // This cannot be a valid FLAC frame, the sample rate is not the same as in the stream info + return null; + } + const size = slice.filePos - startOffset; const crc = readU8(slice); From 21cff3283190698e69b703df3a4ccc37ae23464a Mon Sep 17 00:00:00 2001 From: Vanilagy <1696106+Vanilagy@users.noreply.github.com> Date: Thu, 6 Nov 2025 10:02:23 +0100 Subject: [PATCH 3/3] Bump patch --- package-lock.json | 12 ++++++------ package.json | 2 +- packages/mp3-encoder/package.json | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package-lock.json b/package-lock.json index 76daac5..a00879d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mediabunny", - "version": "1.24.3", + "version": "1.24.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mediabunny", - "version": "1.24.3", + "version": "1.24.4", "license": "MPL-2.0", "workspaces": [ "packages/*" @@ -7749,9 +7749,9 @@ } }, "node_modules/mediabunny": { - "version": "1.24.2", - "resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.24.2.tgz", - "integrity": "sha512-+H2Jha7D8C92F1fysdN+nmBBAOgVV+pNv/Pxc+c//qo2E/idnv8MsZrft7VJsFE5WjK30ESkwW5ezM0oceFIkg==", + "version": "1.24.3", + "resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.24.3.tgz", + "integrity": "sha512-uQu5lXg6c3z2YUKLimAsem1qYPdGfGziQ5CKaAMJAs0C0NNw5T/Zkn0foPML0gWqQJ5ZeC0wTgCxpiBQY8m1Tw==", "license": "MPL-2.0", "peer": true, "workspaces": [ @@ -12242,7 +12242,7 @@ }, "packages/mp3-encoder": { "name": "@mediabunny/mp3-encoder", - "version": "1.24.3", + "version": "1.24.4", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" diff --git a/package.json b/package.json index 98efb29..f8fa949 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mediabunny", "author": "Vanilagy", - "version": "1.24.3", + "version": "1.24.4", "description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.", "type": "module", "workspaces": [ diff --git a/packages/mp3-encoder/package.json b/packages/mp3-encoder/package.json index c5acbf8..f4840ff 100644 --- a/packages/mp3-encoder/package.json +++ b/packages/mp3-encoder/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/mp3-encoder", "author": "Vanilagy", - "version": "1.24.3", + "version": "1.24.4", "description": "MP3 encoder extension for Mediabunny, based on LAME.", "main": "./dist/bundles/mediabunny-mp3-encoder.mjs", "module": "./dist/bundles/mediabunny-mp3-encoder.mjs",