From fdfb7b395a5d59d8386fdb60a8b067925ee102e6 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Mon, 6 May 2024 09:47:19 +0200 Subject: [PATCH] Add timestamp to exp timeSyncUpdate (#1126) * Add timestamp to exp timeSyncUpdate * Create loud-fireants-hammer.md --- .changeset/loud-fireants-hammer.md | 5 +++++ src/room/track/RemoteTrack.ts | 11 +++++++---- src/room/track/Track.ts | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) create mode 100644 .changeset/loud-fireants-hammer.md diff --git a/.changeset/loud-fireants-hammer.md b/.changeset/loud-fireants-hammer.md new file mode 100644 index 000000000..f5bebb59f --- /dev/null +++ b/.changeset/loud-fireants-hammer.md @@ -0,0 +1,5 @@ +--- +"livekit-client": patch +--- + +Add timestamp to exp timeSyncUpdate diff --git a/src/room/track/RemoteTrack.ts b/src/room/track/RemoteTrack.ts index c5720148f..d307e6850 100644 --- a/src/room/track/RemoteTrack.ts +++ b/src/room/track/RemoteTrack.ts @@ -85,10 +85,13 @@ export default abstract class RemoteTrack< registerTimeSyncUpdate() { const loop = () => { this.timeSyncHandle = requestAnimationFrame(() => loop()); - const newTime = this.receiver?.getSynchronizationSources()[0]?.rtpTimestamp; - if (newTime && this.rtpTimestamp !== newTime) { - this.emit(TrackEvent.TimeSyncUpdate, newTime); - this.rtpTimestamp = newTime; + const sources = this.receiver?.getSynchronizationSources()[0]; + if (sources) { + const { timestamp, rtpTimestamp } = sources; + if (rtpTimestamp && this.rtpTimestamp !== rtpTimestamp) { + this.emit(TrackEvent.TimeSyncUpdate, { timestamp, rtpTimestamp }); + this.rtpTimestamp = rtpTimestamp; + } } }; loop(); diff --git a/src/room/track/Track.ts b/src/room/track/Track.ts index 62ff9782b..881ac9faf 100644 --- a/src/room/track/Track.ts +++ b/src/room/track/Track.ts @@ -525,5 +525,5 @@ export type TrackEventCallbacks = { upstreamResumed: (track: any) => void; trackProcessorUpdate: (processor?: TrackProcessor) => void; audioTrackFeatureUpdate: (track: any, feature: AudioTrackFeature, enabled: boolean) => void; - timeSyncUpdate: (timestamp: number) => void; + timeSyncUpdate: (update: { timestamp: number; rtpTimestamp: number }) => void; };