Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

FeatureFlags.js 2.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import { getLogger } from '@jitsi/logger';
  2. import browser from '../browser';
  3. const logger = getLogger('FeatureFlags');
  4. /**
  5. * A global module for accessing information about different feature flags state.
  6. */
  7. class FeatureFlags {
  8. /**
  9. * Configures the module.
  10. *
  11. * @param {boolean} flags.runInLiteMode - Enables lite mode for testing to disable media decoding.
  12. * @param {boolean} flags.sourceNameSignaling - Enables source names in the signaling.
  13. * @param {boolean} flags.receiveMultipleVideoStreams - Signal support for receiving multiple video streams.
  14. */
  15. init(flags) {
  16. this._receiveMultipleVideoStreams = flags.receiveMultipleVideoStreams ?? true;
  17. this._runInLiteMode = Boolean(flags.runInLiteMode);
  18. this._sendMultipleVideoStreams = flags.sendMultipleVideoStreams ?? true;
  19. this._sourceNameSignaling = flags.sourceNameSignaling ?? true;
  20. this._ssrcRewriting = Boolean(flags.ssrcRewritingEnabled);
  21. // For Chromium, check if Unified plan is enabled.
  22. this._usesUnifiedPlan = browser.supportsUnifiedPlan()
  23. && (!browser.isChromiumBased() || (flags.enableUnifiedOnChrome ?? true));
  24. logger.info(`Source name signaling: ${this._sourceNameSignaling},`
  25. + ` Send multiple video streams: ${this._sendMultipleVideoStreams},`
  26. + ` uses Unified plan: ${this._usesUnifiedPlan}`);
  27. }
  28. /**
  29. * Checks if multiple local video streams support is enabled.
  30. *
  31. * @returns {boolean}
  32. */
  33. isMultiStreamSupportEnabled() {
  34. return this._sourceNameSignaling && this._sendMultipleVideoStreams && this._usesUnifiedPlan;
  35. }
  36. /**
  37. * Checks if receiving multiple video streams is supported.
  38. *
  39. * @returns {boolean}
  40. */
  41. isReceiveMultipleVideoStreamsSupported() {
  42. return this._receiveMultipleVideoStreams;
  43. }
  44. /**
  45. * Checks if the run in lite mode is enabled.
  46. * This will cause any media to be received and not decoded. (Directions are inactive and no ssrc and ssrc-groups
  47. * are added to the remote description). This can be used for various test scenarios.
  48. *
  49. * @returns {boolean}
  50. */
  51. isRunInLiteModeEnabled() {
  52. return this._runInLiteMode;
  53. }
  54. /**
  55. * Checks if the source name signaling is enabled.
  56. *
  57. * @returns {boolean}
  58. */
  59. isSourceNameSignalingEnabled() {
  60. return this._sourceNameSignaling;
  61. }
  62. /**
  63. * Checks if the clients supports re-writing of the SSRCs on the media streams by the bridge.
  64. * @returns {boolean}
  65. */
  66. isSsrcRewritingSupported() {
  67. return this._ssrcRewriting;
  68. }
  69. }
  70. export default new FeatureFlags();