Merge main into release for tag v1.17.3

This commit is contained in:
github-actions[bot]
2025-09-19 12:30:13 +00:00
6 changed files with 31 additions and 17 deletions
+3
View File
@@ -46,6 +46,9 @@ jobs:
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm run test
- name: Run build
run: npm run build
+6 -6
View File
@@ -1,12 +1,12 @@
{
"name": "mediabunny",
"version": "1.17.2",
"version": "1.17.3",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "mediabunny",
"version": "1.17.2",
"version": "1.17.3",
"license": "MPL-2.0",
"workspaces": [
"packages/*"
@@ -7749,9 +7749,9 @@
}
},
"node_modules/mediabunny": {
"version": "1.17.1",
"resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.17.1.tgz",
"integrity": "sha512-2kLYbcv2NufwZ05AQXKjik54h4LUBQ1XBNoaVCOXU49pGXZzDq0krhJI77c4056QLH3QDPZ9DgYXosi92iEA1g==",
"version": "1.17.2",
"resolved": "https://registry.npmjs.org/mediabunny/-/mediabunny-1.17.2.tgz",
"integrity": "sha512-I7l/WDv7howETh0Vhc9J8Y0XZ1Z1qUpUEcud05Eqf/MeaaOT8FGb744sTXN6U4Rk5ZxFYRz7g3JHcA1XvsFkWg==",
"license": "MPL-2.0",
"peer": true,
"workspaces": [
@@ -12242,7 +12242,7 @@
},
"packages/mp3-encoder": {
"name": "@mediabunny/mp3-encoder",
"version": "1.17.2",
"version": "1.17.3",
"license": "MPL-2.0",
"devDependencies": {
"@types/emscripten": "^1.40.1"
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "mediabunny",
"author": "Vanilagy",
"version": "1.17.2",
"version": "1.17.3",
"description": "Pure TypeScript media toolkit for reading, writing, and converting media files, directly in the browser.",
"type": "module",
"workspaces": [
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@mediabunny/mp3-encoder",
"author": "Vanilagy",
"version": "1.17.2",
"version": "1.17.3",
"description": "MP3 encoder extension for Mediabunny, based on LAME.",
"main": "./dist/bundles/mediabunny-mp3-encoder.mjs",
"module": "./dist/bundles/mediabunny-mp3-encoder.mjs",
+13 -9
View File
@@ -115,7 +115,8 @@ export class FlacDemuxer extends Demuxer {
this.reader.fileSize === null
|| currentPos < this.reader.fileSize
) {
const sizeSlice = await this.reader.requestSlice(currentPos, 4);
let sizeSlice = this.reader.requestSlice(currentPos, 4);
if (sizeSlice instanceof Promise) sizeSlice = await sizeSlice;
currentPos += 4;
if (sizeSlice === null) {
@@ -135,10 +136,12 @@ export class FlacDemuxer extends Demuxer {
case FlacBlockType.STREAMINFO: {
// Parse streaminfo block
// https://www.rfc-editor.org/rfc/rfc9639.html#section-8.2
const streamInfoBlock = await this.reader.requestSlice(
let streamInfoBlock = this.reader.requestSlice(
currentPos,
size,
);
if (streamInfoBlock instanceof Promise) streamInfoBlock = await streamInfoBlock;
assert(streamInfoBlock);
if (streamInfoBlock === null) {
throw new Error(
@@ -192,17 +195,16 @@ export class FlacDemuxer extends Demuxer {
case FlacBlockType.VORBIS_COMMENT: {
// Parse vorbis comment block
// https://www.rfc-editor.org/rfc/rfc9639.html#name-vorbis-comment
const vorbisCommentBlock = await this.reader.requestSlice(
let vorbisCommentBlock = this.reader.requestSlice(
currentPos,
size,
);
if (vorbisCommentBlock instanceof Promise) vorbisCommentBlock = await vorbisCommentBlock;
assert(vorbisCommentBlock);
readVorbisComments(
vorbisCommentBlock.bytes.subarray(
vorbisCommentBlock.start,
vorbisCommentBlock.end,
),
readBytes(vorbisCommentBlock, size),
this.metadataTags,
);
@@ -211,10 +213,11 @@ export class FlacDemuxer extends Demuxer {
case FlacBlockType.PICTURE: {
// Parse picture block
// https://www.rfc-editor.org/rfc/rfc9639.html#name-picture
const pictureBlock = await this.reader.requestSlice(
let pictureBlock = this.reader.requestSlice(
currentPos,
size,
);
if (pictureBlock instanceof Promise) pictureBlock = await pictureBlock;
assert(pictureBlock);
const pictureType = readU32Be(pictureBlock);
@@ -654,10 +657,11 @@ class FlacAudioTrackBacking implements InputAudioTrackBacking {
if (options.metadataOnly) {
data = PLACEHOLDER_DATA;
} else {
const slice = await this.demuxer.reader.requestSlice(
let slice = this.demuxer.reader.requestSlice(
rawSample.byteOffset,
rawSample.byteSize,
);
if (slice instanceof Promise) slice = await slice;
if (!slice) {
return null; // Data didn't fit into the rest of the file
+7
View File
@@ -80,13 +80,19 @@ export class Reader {
}
export class FileSlice {
/** The current position in the backing buffer. Do not modify directly, prefer `.skip()` instead. */
bufferPos: number;
constructor(
/** The underlying bytes backing this slice. Avoid using this directly and prefer reader functions instead. */
public readonly bytes: Uint8Array,
/** A view into the bytes backing this slice. Avoid using this directly and prefer reader functions instead. */
public readonly view: DataView,
/** The offset in "file bytes" at which `bytes` begins in the file. */
private readonly offset: number,
/** The offset in "file bytes" where this slice begins. */
public readonly start: number,
/** The offset in "file bytes" where this slice ends (exclusive). */
public readonly end: number,
) {
this.bufferPos = start - offset;
@@ -118,6 +124,7 @@ export class FileSlice {
this.bufferPos += byteCount;
}
/** Creates a new subslice of this slice whose byte range must be contained within this slice. */
slice(filePos: number, length = this.end - filePos) {
if (filePos < this.start || filePos + length > this.end) {
throw new RangeError('Slicing outside of original slice.');