openvidu-browser: fix removeFilter error when no filter available

pull/722/head
pabloFuente 2022-04-28 14:05:28 +02:00
parent 354a26c6d0
commit 8550b77d17
1 changed files with 42 additions and 32 deletions

View File

@ -540,50 +540,60 @@ export class Stream {
} }
} }
if (!!this.filter && this.filter?.type.startsWith('VB:')) { if (!!this.filter) {
// There is a filter applied
// Client filters if (this.filter?.type.startsWith('VB:')) {
try { // Client filters
const mediaStreamClone = this.virtualBackgroundSourceElements!.mediaStreamClone; try {
if (!isDisposing) {
if (this.streamManager.remote) { const mediaStreamClone = this.virtualBackgroundSourceElements!.mediaStreamClone;
await this.streamManager.replaceTrackInMediaStream(mediaStreamClone.getVideoTracks()[0]); if (!isDisposing) {
if (this.streamManager.remote) {
await this.streamManager.replaceTrackInMediaStream(mediaStreamClone.getVideoTracks()[0]);
} else {
await (this.streamManager as Publisher).replaceTrack(mediaStreamClone.getVideoTracks()[0]);
}
} else { } else {
await (this.streamManager as Publisher).replaceTrack(mediaStreamClone.getVideoTracks()[0]); mediaStreamClone.getTracks().forEach((track) => track.stop());
} }
} else {
mediaStreamClone.getTracks().forEach((track) => track.stop()); this.virtualBackgroundSinkElements!.VB.cleanUp();
delete this.virtualBackgroundSinkElements;
delete this.virtualBackgroundSourceElements;
return resolveRemoveFilter(undefined, false);
} catch (error) {
return resolveRemoveFilter(error, false);
} }
this.virtualBackgroundSinkElements!.VB.cleanUp(); } else {
delete this.virtualBackgroundSinkElements; // Server filters
delete this.virtualBackgroundSourceElements;
return resolveRemoveFilter(undefined, false); if (!this.session.sessionConnected()) {
return reject(this.session.notConnectedError());
}
logger.info('Removing filter of stream ' + this.streamId);
this.session.openvidu.sendRequest(
'removeFilter',
{ streamId: this.streamId },
(error, response) => {
return resolveRemoveFilter(error, true);
}
);
} catch (error) {
return resolveRemoveFilter(error, false);
} }
} else { } else {
// Server filters // There is no filter applied
return reject(new OpenViduError(OpenViduErrorName.GENERIC_ERROR, "Stream " + this.streamId + " has no filter applied"));
if (!this.session.sessionConnected()) {
return reject(this.session.notConnectedError());
}
logger.info('Removing filter of stream ' + this.streamId);
this.session.openvidu.sendRequest(
'removeFilter',
{ streamId: this.streamId },
(error, response) => {
return resolveRemoveFilter(error, true);
}
);
} }
}); });