Rewrite reader logic, add separate reader for caching MP4 chunks, add more advanced drain iterators

This commit is contained in:
Vanilagy
2024-12-08 20:04:47 +01:00
parent ecfd193ae0
commit 5978110de9
12 changed files with 691 additions and 355 deletions
+11 -3
View File
@@ -2,7 +2,15 @@ export abstract class Source {
/** @internal */
abstract _read(start: number, end: number): Promise<Uint8Array>;
/** @internal */
abstract _getSize(): Promise<number>;
abstract _retrieveSize(): Promise<number>;
/** @internal */
_sizePromise: Promise<number> | null = null;
/** @internal */
_getSize() {
return this._sizePromise ??= this._retrieveSize();
}
}
export class ArrayBufferSource extends Source {
@@ -16,7 +24,7 @@ export class ArrayBufferSource extends Source {
}
/** @internal */
override async _getSize() {
override async _retrieveSize() {
return this.buffer.byteLength;
}
}
@@ -34,7 +42,7 @@ export class BlobSource extends Source {
}
/** @internal */
override async _getSize() {
override async _retrieveSize() {
return this.blob.size;
}
}