You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

loadEffects.web.ts 1.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { IStore } from '../../app/types';
  2. import { NoiseSuppressionEffect } from '../../stream-effects/noise-suppression/NoiseSuppressionEffect';
  3. import { createVirtualBackgroundEffect } from '../../stream-effects/virtual-background';
  4. import logger from './logger';
  5. /**
  6. * Loads the enabled stream effects.
  7. *
  8. * @param {Object} store - The Redux store.
  9. * @returns {Promise} - A Promise which resolves when all effects are created.
  10. */
  11. export default function loadEffects(store: IStore): Promise<any> {
  12. const start = window.performance.now();
  13. const state = store.getState();
  14. const virtualBackground = state['features/virtual-background'];
  15. const noiseSuppression = state['features/noise-suppression'];
  16. const { noiseSuppression: nsOptions } = state['features/base/config'];
  17. const backgroundPromise = virtualBackground.backgroundEffectEnabled
  18. ? createVirtualBackgroundEffect(virtualBackground)
  19. .catch((error: Error) => {
  20. logger.error('Failed to obtain the background effect instance with error: ', error);
  21. return Promise.resolve();
  22. })
  23. : Promise.resolve();
  24. const noiseSuppressionPromise = noiseSuppression?.enabled
  25. ? Promise.resolve(new NoiseSuppressionEffect(nsOptions))
  26. : Promise.resolve();
  27. return Promise.all([ backgroundPromise, noiseSuppressionPromise ]).then(effectsArray => {
  28. const end = window.performance.now();
  29. logger.debug(`(TIME) loadEffects() start=${start}, end=${end}, time=${end - start}`);
  30. return effectsArray;
  31. });
  32. }