Add InputDisposedError throwing to PacketReader

This commit is contained in:
Vanilagy
2025-12-17 17:51:33 +01:00
parent 8267d0191c
commit 48c8b38ed5
+21
View File
@@ -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<T extends InputTrack = InputTrack> {
readFirst(options: PacketRetrievalOptions = {}): MaybePromise<EncodedPacket | null> {
validatePacketRetrievalOptions(options);
if (this.track.input._disposed) {
throw new InputDisposedError();
}
const result = new ResultValue<EncodedPacket | null>();
const promise = this.track._backing.getFirstPacket(result, options);
@@ -55,6 +60,10 @@ export class PacketReader<T extends InputTrack = InputTrack> {
validateTimestamp(timestamp);
validatePacketRetrievalOptions(options);
if (this.track.input._disposed) {
throw new InputDisposedError();
}
const result = new ResultValue<EncodedPacket | null>();
const promise = this.track._backing.getPacket(result, timestamp, options);
@@ -69,6 +78,10 @@ export class PacketReader<T extends InputTrack = InputTrack> {
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<T extends InputTrack = InputTrack> {
}
validatePacketRetrievalOptions(options);
if (this.track.input._disposed) {
throw new InputDisposedError();
}
const result = new ResultValue<EncodedPacket | null>();
const promise = this.track._backing.getNextPacket(result, from, options);
@@ -127,6 +144,10 @@ export class PacketReader<T extends InputTrack = InputTrack> {
}
validatePacketRetrievalOptions(options);
if (this.track.input._disposed) {
throw new InputDisposedError();
}
if (options.verifyKeyPackets) {
return this.readNextKeyVerified(from, options);
}