diff --git a/package-lock.json b/package-lock.json index 2afd845..b513f2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "mediabunny", - "version": "1.50.5", + "version": "1.50.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "mediabunny", - "version": "1.50.5", + "version": "1.50.6", "license": "MPL-2.0", "workspaces": [ ".", @@ -12894,7 +12894,7 @@ }, "packages/aac-encoder": { "name": "@mediabunny/aac-encoder", - "version": "1.50.5", + "version": "1.50.6", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12909,7 +12909,7 @@ }, "packages/ac3": { "name": "@mediabunny/ac3", - "version": "1.50.5", + "version": "1.50.6", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12924,7 +12924,7 @@ }, "packages/flac-encoder": { "name": "@mediabunny/flac-encoder", - "version": "1.50.5", + "version": "1.50.6", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12939,7 +12939,7 @@ }, "packages/mp3-encoder": { "name": "@mediabunny/mp3-encoder", - "version": "1.50.5", + "version": "1.50.6", "license": "MPL-2.0", "devDependencies": { "@types/emscripten": "^1.40.1" @@ -12954,7 +12954,7 @@ }, "packages/prores": { "name": "@mediabunny/prores", - "version": "1.50.5", + "version": "1.50.6", "license": "MPL-2.0", "dependencies": { "turbores": "^1.2.1" @@ -12969,10 +12969,10 @@ }, "packages/server": { "name": "@mediabunny/server", - "version": "1.50.5", + "version": "1.50.6", "license": "MPL-2.0", "dependencies": { - "@mediabunny/prores": "^1.50.4", + "@mediabunny/prores": "^1.50.5", "node-av": "^6.0.0" }, "funding": { diff --git a/package.json b/package.json index 465cf77..e36d5e8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "mediabunny", "author": "Vanilagy", - "version": "1.50.5", + "version": "1.50.6", "description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.", "type": "module", "workspaces": [ diff --git a/packages/aac-encoder/package.json b/packages/aac-encoder/package.json index 02630df..693e96b 100644 --- a/packages/aac-encoder/package.json +++ b/packages/aac-encoder/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/aac-encoder", "author": "Vanilagy", - "version": "1.50.5", + "version": "1.50.6", "description": "AAC encoder extension for Mediabunny, based on FFmpeg.", "main": "./dist/bundles/mediabunny-aac-encoder.mjs", "module": "./dist/bundles/mediabunny-aac-encoder.mjs", diff --git a/packages/ac3/package.json b/packages/ac3/package.json index 5e939f1..c6de5d6 100644 --- a/packages/ac3/package.json +++ b/packages/ac3/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/ac3", "author": "Vanilagy", - "version": "1.50.5", + "version": "1.50.6", "description": "AC-3 and E-AC-3 (Dolby Digital) decoder and encoder extension for Mediabunny, based on FFmpeg.", "main": "./dist/bundles/mediabunny-ac3.mjs", "module": "./dist/bundles/mediabunny-ac3.mjs", diff --git a/packages/flac-encoder/package.json b/packages/flac-encoder/package.json index e31cba9..e5b6732 100644 --- a/packages/flac-encoder/package.json +++ b/packages/flac-encoder/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/flac-encoder", "author": "Vanilagy", - "version": "1.50.5", + "version": "1.50.6", "description": "FLAC encoder extension for Mediabunny, based on libFLAC.", "main": "./dist/bundles/mediabunny-flac-encoder.mjs", "module": "./dist/bundles/mediabunny-flac-encoder.mjs", diff --git a/packages/mp3-encoder/package.json b/packages/mp3-encoder/package.json index 1b06a01..f34f967 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.50.5", + "version": "1.50.6", "description": "MP3 encoder extension for Mediabunny, based on LAME.", "main": "./dist/bundles/mediabunny-mp3-encoder.mjs", "module": "./dist/bundles/mediabunny-mp3-encoder.mjs", diff --git a/packages/prores/package.json b/packages/prores/package.json index 8b436b9..558cdc2 100644 --- a/packages/prores/package.json +++ b/packages/prores/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/prores", "author": "Vanilagy", - "version": "1.50.5", + "version": "1.50.6", "description": "Apple ProRes decoder extension for Mediabunny, based on TurboRes.", "main": "./dist/bundles/mediabunny-prores.mjs", "module": "./dist/bundles/mediabunny-prores.mjs", diff --git a/packages/server/package.json b/packages/server/package.json index c441dd3..e61a1e9 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,7 +1,7 @@ { "name": "@mediabunny/server", "author": "Vanilagy", - "version": "1.50.5", + "version": "1.50.6", "description": "Adds full video and audio decoder and encoder support to Mediabunny for use in server-side environments (Node, Bun, Deno). Based on NodeAV.", "main": "./dist/bundles/mediabunny-server.cjs", "module": "./dist/bundles/mediabunny-server.mjs", @@ -35,7 +35,7 @@ }, "dependencies": { "node-av": "^6.0.0", - "@mediabunny/prores": "^1.50.5" + "@mediabunny/prores": "^1.50.6" }, "peerDependencies": { "mediabunny": "^1.45.0" diff --git a/src/media-sink.ts b/src/media-sink.ts index 3a2d0b8..9a57bb6 100644 --- a/src/media-sink.ts +++ b/src/media-sink.ts @@ -1011,15 +1011,22 @@ class VideoDecoderWrapper extends DecoderWrapper { if (this.codec === 'avc') { // Workaround for https://issues.chromium.org/issues/470109459 const filteredNalUnits: Uint8Array[] = []; + let hasFrameData = false; for (const loc of iterateAvcNalUnits(packet.data, this.decoderConfig)) { const type = extractNalUnitTypeForAvc(packet.data[loc.offset]!); + hasFrameData ||= type >= 1 && type <= 5; if (type === AvcNalUnitType.AUD) { - // If packets contain an AUD and have NALUs before it, this trips up Chromium's key frame - // detector. Clear the NALUs if an AUD is encountered. - // https://github.com/Vanilagy/mediabunny/issues/396 - filteredNalUnits.length = 0; + if (hasFrameData) { + // Already has actual frame data, so treat an AUD as simply the end of the packet + break; + } else { + // If packets contain an AUD and have NALUs before it, this trips up Chromium's key + // frame detector. Clear the NALUs if an AUD is encountered. + // https://github.com/Vanilagy/mediabunny/issues/396 + filteredNalUnits.length = 0; + } } // These trip up Chromium's key frame detection, so let's strip them