@@ -52,8 +52,11 @@ export abstract class Track {
5252}
5353
5454export class LocalAudioTrack extends Track {
55- constructor ( owned : OwnedTrack ) {
55+ private source ?: AudioSource ;
56+
57+ constructor ( owned : OwnedTrack , source ?: AudioSource ) {
5658 super ( owned ) ;
59+ this . source = source ;
5760 }
5861
5962 static createAudioTrack ( name : string , source : AudioSource ) : LocalAudioTrack {
@@ -66,13 +69,23 @@ export class LocalAudioTrack extends Track {
6669 message : { case : 'createAudioTrack' , value : req } ,
6770 } ) ;
6871
69- return new LocalAudioTrack ( res . track ! ) ;
72+ return new LocalAudioTrack ( res . track ! , source ) ;
73+ }
74+
75+ async close ( closeSource = true ) {
76+ await super . close ( ) ;
77+ if ( closeSource ) {
78+ await this . source ?. close ( ) ;
79+ }
7080 }
7181}
7282
7383export class LocalVideoTrack extends Track {
74- constructor ( owned : OwnedTrack ) {
84+ private source ?: VideoSource ;
85+
86+ constructor ( owned : OwnedTrack , source ?: VideoSource ) {
7587 super ( owned ) ;
88+ this . source = source ;
7689 }
7790
7891 static createVideoTrack ( name : string , source : VideoSource ) : LocalVideoTrack {
@@ -85,7 +98,14 @@ export class LocalVideoTrack extends Track {
8598 message : { case : 'createVideoTrack' , value : req } ,
8699 } ) ;
87100
88- return new LocalVideoTrack ( res . track ! ) ;
101+ return new LocalVideoTrack ( res . track ! , source ) ;
102+ }
103+
104+ async close ( closeSource = true ) {
105+ await super . close ( ) ;
106+ if ( closeSource ) {
107+ await this . source ?. close ( ) ;
108+ }
89109 }
90110}
91111
0 commit comments