Dry some code

This commit is contained in:
Vanilagy
2025-04-28 20:03:18 +02:00
parent ac1b009486
commit 86231bf6e2
+16 -22
View File
@@ -567,18 +567,8 @@ export class MediaStreamVideoTrackSource extends VideoSource {
const processor = new MediaStreamTrackProcessor({ track: this._track }); const processor = new MediaStreamTrackProcessor({ track: this._track });
const consumer = new WritableStream<VideoFrame>({ const consumer = new WritableStream<VideoFrame>({
write: (videoFrame) => { write: (videoFrame) => {
const timestampInSeconds = videoFrame.timestamp / 1e6;
assert(this._connectedTrack);
const muxer = this._connectedTrack.output._muxer;
if (muxer.firstMediaStreamTimestamp === null) {
// We're the first MediaStreamTrack of this output to receive data
muxer.firstMediaStreamTimestamp = timestampInSeconds;
}
if (!frameReceived) { if (!frameReceived) {
// Math.min to ensure the timestamps can't get negative setMediaStreamTimestampOffset(this, videoFrame);
this._timestampOffset = -Math.min(muxer.firstMediaStreamTimestamp, timestampInSeconds);
frameReceived = true; frameReceived = true;
} }
@@ -1226,18 +1216,8 @@ export class MediaStreamAudioTrackSource extends AudioSource {
const processor = new MediaStreamTrackProcessor({ track: this._track }); const processor = new MediaStreamTrackProcessor({ track: this._track });
const consumer = new WritableStream<AudioData>({ const consumer = new WritableStream<AudioData>({
write: (audioData) => { write: (audioData) => {
const timestampInSeconds = audioData.timestamp / 1e6;
assert(this._connectedTrack);
const muxer = this._connectedTrack.output._muxer;
if (muxer.firstMediaStreamTimestamp === null) {
// We're the first MediaStreamTrack of this output to receive data
muxer.firstMediaStreamTimestamp = timestampInSeconds;
}
if (!dataReceived) { if (!dataReceived) {
// Math.min to ensure the timestamps can't get negative setMediaStreamTimestampOffset(this, audioData);
this._timestampOffset = -Math.min(muxer.firstMediaStreamTimestamp, timestampInSeconds);
dataReceived = true; dataReceived = true;
} }
@@ -1272,6 +1252,20 @@ export class MediaStreamAudioTrackSource extends AudioSource {
} }
} }
const setMediaStreamTimestampOffset = (source: MediaSource, sample: VideoFrame | AudioData) => {
const timestampInSeconds = sample.timestamp / 1e6;
assert(source._connectedTrack);
const muxer = source._connectedTrack.output._muxer;
if (muxer.firstMediaStreamTimestamp === null) {
// We're the first MediaStreamTrack of this output to receive data
muxer.firstMediaStreamTimestamp = timestampInSeconds;
}
// Math.min to ensure the timestamps can't get negative
source._timestampOffset = -Math.min(muxer.firstMediaStreamTimestamp, timestampInSeconds);
};
/** /**
* Base class for subtitle sources - sources for subtitle tracks. * Base class for subtitle sources - sources for subtitle tracks.
* @public * @public