From 48c8b38ed526e275f30eae64a41e25417f16faa5 Mon Sep 17 00:00:00 2001 From: Vanilagy <1696106+Vanilagy@users.noreply.github.com> Date: Wed, 17 Dec 2025 17:51:33 +0100 Subject: [PATCH] Add InputDisposedError throwing to PacketReader --- src/cursors.ts | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/cursors.ts b/src/cursors.ts index b3b8dfb..be34826 100644 --- a/src/cursors.ts +++ b/src/cursors.ts @@ -2,6 +2,7 @@ // Useful in packet context? Or only for sample? import { PCM_AUDIO_CODECS } from './codec'; +import { InputDisposedError } from './input'; import { InputAudioTrack, InputTrack, InputVideoTrack } from './input-track'; import { AudioDecoderWrapper, DecoderWrapper, PacketRetrievalOptions, PcmAudioDecoderWrapper, validatePacketRetrievalOptions, validateTimestamp, VideoDecoderWrapper } from './media-sink'; import { assert, AsyncMutex4, AsyncMutexLock, CallSerializer2, defer, insertSorted, isFirefox, last, MaybePromise, polyfillSymbolDispose, promiseWithResolvers, ResultValue, Rotation, Yo } from './misc'; @@ -41,6 +42,10 @@ export class PacketReader { readFirst(options: PacketRetrievalOptions = {}): MaybePromise { validatePacketRetrievalOptions(options); + if (this.track.input._disposed) { + throw new InputDisposedError(); + } + const result = new ResultValue(); const promise = this.track._backing.getFirstPacket(result, options); @@ -55,6 +60,10 @@ export class PacketReader { validateTimestamp(timestamp); validatePacketRetrievalOptions(options); + if (this.track.input._disposed) { + throw new InputDisposedError(); + } + const result = new ResultValue(); const promise = this.track._backing.getPacket(result, timestamp, options); @@ -69,6 +78,10 @@ export class PacketReader { validateTimestamp(timestamp); validatePacketRetrievalOptions(options); + if (this.track.input._disposed) { + throw new InputDisposedError(); + } + if (options.verifyKeyPackets) { return this.readKeyAtVerified(timestamp, options); } @@ -111,6 +124,10 @@ export class PacketReader { } validatePacketRetrievalOptions(options); + if (this.track.input._disposed) { + throw new InputDisposedError(); + } + const result = new ResultValue(); const promise = this.track._backing.getNextPacket(result, from, options); @@ -127,6 +144,10 @@ export class PacketReader { } validatePacketRetrievalOptions(options); + if (this.track.input._disposed) { + throw new InputDisposedError(); + } + if (options.verifyKeyPackets) { return this.readNextKeyVerified(from, options); }