Fix atTimestamps iterator

This commit is contained in:
Vanilagy
2025-01-14 21:23:37 +01:00
parent 45474764ca
commit 9af3e6eb66
4 changed files with 44 additions and 17 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ export const AUDIO_CODECS = [
'vorbis',
'flac',
...PCM_CODECS,
] as const; // TODO add the rest
] as const;
/** @public */
export const SUBTITLE_CODECS = ['webvtt'] as const; // TODO add the rest
+4 -1
View File
@@ -392,7 +392,10 @@ export abstract class BaseMediaFrameSink<
}
let frameUsed = false;
while (samplesOfInterest.length > 0 && samplesOfInterest[0] === wrappedFrame.sample) {
while (
samplesOfInterest.length > 0
&& samplesOfInterest[0]!.is(wrappedFrame.sample as EncodedVideoSample & EncodedAudioSample)
) {
pushToQueue(this._duplicateFrame(wrappedFrame));
samplesOfInterest.shift();
frameUsed = true;
+18
View File
@@ -42,6 +42,15 @@ export class EncodedVideoSample {
});
}
is(otherSample: EncodedVideoSample) {
return (
this.type === otherSample.type
&& this.timestamp === otherSample.timestamp
&& this.duration === otherSample.duration
&& this.byteLength === otherSample.byteLength
);
}
static fromEncodedVideoChunk(chunk: EncodedVideoChunk) {
if (typeof EncodedVideoChunk === 'undefined') {
throw new Error('Your browser does not support EncodedVideoChunk.');
@@ -98,6 +107,15 @@ export class EncodedAudioSample {
});
}
is(otherSample: EncodedAudioSample) {
return (
this.type === otherSample.type
&& this.timestamp === otherSample.timestamp
&& this.duration === otherSample.duration
&& this.byteLength === otherSample.byteLength
);
}
static fromEncodedAudioChunk(chunk: EncodedAudioChunk) {
if (typeof EncodedAudioChunk === 'undefined') {
throw new Error('Your browser does not support EncodedAudioChunk.');