infobip-rtc
Version:
Infobip RTC JavaScript SDK - Infobip WebRTC API Implementation
54 lines • 2.16 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
export class DefaultAudioFilterManager {
constructor(audioFilter) {
this.audioFilter = audioFilter;
}
stop() {
return __awaiter(this, void 0, void 0, function* () {
if (!this.originalTrack) {
return;
}
yield this.audioFilter.stop();
this.setActiveTrack(this.originalTrack);
delete this.originalTrack;
delete this.originalStream;
});
}
getAudioFilter() {
return this.audioFilter;
}
start(stream, trackIndex) {
return __awaiter(this, void 0, void 0, function* () {
const track = stream.getTracks()[trackIndex];
if (!track) {
return null;
}
if (this.originalTrack) {
this.originalTrack.stop();
}
this.originalTrack = track;
this.originalStream = stream;
this.filteredTrack = yield this.audioFilter.start(track);
this.setActiveTrack(this.filteredTrack);
return this.filteredTrack;
});
}
setActiveTrack(track) {
if (track !== this.originalTrack) {
this.originalStream.removeTrack(this.originalTrack);
}
else if (track !== this.filteredTrack) {
this.originalStream.removeTrack(this.filteredTrack);
}
this.originalStream.addTrack(track);
}
}
//# sourceMappingURL=DefaultAudioFilterManager.js.map