From 5a86d7fd6f2b3e56c42b3bd5da05cfdc7dd87273 Mon Sep 17 00:00:00 2001 From: Daisuke Murase Date: Mon, 16 Jun 2025 18:16:16 -0700 Subject: [PATCH 1/2] implement closeSource = true to LocalTrack --- packages/livekit-rtc/src/track.ts | 28 ++++++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/packages/livekit-rtc/src/track.ts b/packages/livekit-rtc/src/track.ts index 722e15a2..3b81cec8 100644 --- a/packages/livekit-rtc/src/track.ts +++ b/packages/livekit-rtc/src/track.ts @@ -52,8 +52,11 @@ export abstract class Track { } export class LocalAudioTrack extends Track { - constructor(owned: OwnedTrack) { + private source?: AudioSource; + + constructor(owned: OwnedTrack, source?: AudioSource) { super(owned); + this.source = source; } static createAudioTrack(name: string, source: AudioSource): LocalAudioTrack { @@ -66,13 +69,23 @@ export class LocalAudioTrack extends Track { message: { case: 'createAudioTrack', value: req }, }); - return new LocalAudioTrack(res.track!); + return new LocalAudioTrack(res.track!, source); + } + + async close(closeSource = true) { + await super.close(); + if (closeSource) { + await this.source?.close(); + } } } export class LocalVideoTrack extends Track { - constructor(owned: OwnedTrack) { + private source?: VideoSource; + + constructor(owned: OwnedTrack, source?: VideoSource) { super(owned); + this.source = source; } static createVideoTrack(name: string, source: VideoSource): LocalVideoTrack { @@ -85,7 +98,14 @@ export class LocalVideoTrack extends Track { message: { case: 'createVideoTrack', value: req }, }); - return new LocalVideoTrack(res.track!); + return new LocalVideoTrack(res.track!, source); + } + + async close(closeSource = true) { + await super.close(); + if (closeSource) { + await this.source?.close(); + } } } From 035998f0d74bbbb1435d498d69fb0079472e5035 Mon Sep 17 00:00:00 2001 From: Daisuke Murase Date: Mon, 16 Jun 2025 18:17:43 -0700 Subject: [PATCH 2/2] fix example --- examples/publish-wav/index.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/examples/publish-wav/index.ts b/examples/publish-wav/index.ts index c41a685d..d23d30c1 100644 --- a/examples/publish-wav/index.ts +++ b/examples/publish-wav/index.ts @@ -64,8 +64,7 @@ while (written < dataSize) { } await source.waitForPlayout(); // release resources allocated for audio publishing -await track.close(); -await source.close(); +await track.close(); // this deallocate source as well await room.disconnect();