diff --git a/CHANGELOG.md b/CHANGELOG.md index c7048b233a..4061989454 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed ### Fixed +- Removed use of regex to create redundant audio worker code to avoid errors where the regex match fails and leads to failure to start the AudioVideoController ## [3.18.1] - 2023-09-29 diff --git a/docs/classes/defaulttransceivercontroller.html b/docs/classes/defaulttransceivercontroller.html index bcd1dcfd60..230a57d91d 100644 --- a/docs/classes/defaulttransceivercontroller.html +++ b/docs/classes/defaulttransceivercontroller.html @@ -157,7 +157,7 @@

constructor

  • Parameters

    @@ -185,7 +185,7 @@

    Protected _localAudio_localAudioTransceiver: RTCRtpTransceiver = null @@ -195,7 +195,7 @@

    Protected _localCamera_localCameraTransceiver: RTCRtpTransceiver = null @@ -212,7 +212,7 @@

    Protected defaultMediadefaultMediaStream: MediaStream = null @@ -222,7 +222,7 @@

    Protected groupIdTo
    groupIdToTransceiver: Map<number, RTCRtpTransceiver> = ...
    @@ -246,7 +246,7 @@

    Protected peer

    peer: RTCPeerConnection = null
    @@ -256,7 +256,7 @@

    Protected streamIdTostreamIdToTransceiver: Map<number, RTCRtpTransceiver> = ... @@ -266,7 +266,7 @@

    Protected videoSubscript
    videoSubscriptions: number[] = []
    @@ -284,7 +284,7 @@

    addRedundantAudioRecoveryMetricsObserver

    @@ -313,7 +313,7 @@

    Protected addTransceiver
  • @@ -345,7 +345,7 @@

    getMidForGroupId

    @@ -374,7 +374,7 @@

    getMidForStreamId

    @@ -409,7 +409,7 @@

    hasVideoInput

    @@ -432,7 +432,7 @@

    localAudioTransceiver

    @@ -455,7 +455,7 @@

    localVideoTransceiver

    @@ -478,7 +478,7 @@

    metricsDidReceive

    @@ -507,7 +507,7 @@

    removeRedundantAudioRecoveryMetricsObserver

    @@ -536,7 +536,7 @@

    replaceAudioTrack

    @@ -565,7 +565,7 @@

    reset

    @@ -588,7 +588,7 @@

    setAudioInput

    @@ -617,7 +617,7 @@

    setAudioPayloadTypes

    @@ -651,7 +651,7 @@

    setEncodingParameters

    @@ -688,7 +688,7 @@

    setPeer

    @@ -717,7 +717,7 @@

    setStreamIdForMid

    @@ -749,7 +749,7 @@

    setVideoInput

    @@ -778,7 +778,7 @@

    setVideoSendingBitrateKbps

    @@ -806,7 +806,7 @@

    Protected setupAudio

    Returns void

    @@ -824,7 +824,7 @@

    setupLocalTransceivers

    @@ -847,7 +847,7 @@

    trackIsVideoInput

    @@ -875,7 +875,7 @@

    Protected transceiverIsV
  • Parameters

    @@ -899,7 +899,7 @@

    updateVideoTransceivers

    @@ -931,7 +931,7 @@

    useTransceivers

    diff --git a/docs/classes/simulcastcontentsharetransceivercontroller.html b/docs/classes/simulcastcontentsharetransceivercontroller.html index c063461323..aa4eac91bc 100644 --- a/docs/classes/simulcastcontentsharetransceivercontroller.html +++ b/docs/classes/simulcastcontentsharetransceivercontroller.html @@ -185,7 +185,7 @@

    Protected _localAudio

    Inherited from SimulcastTransceiverController._localAudioTransceiver

    @@ -196,7 +196,7 @@

    Protected _localCamera

    Inherited from SimulcastTransceiverController._localCameraTransceiver

    @@ -215,7 +215,7 @@

    Protected defaultMedia

    Inherited from SimulcastTransceiverController.defaultMediaStream

    @@ -226,7 +226,7 @@

    Protected groupIdTo @@ -253,7 +253,7 @@

    Protected peer

    @@ -264,7 +264,7 @@

    Protected streamIdTo

    Inherited from SimulcastTransceiverController.streamIdToTransceiver

    @@ -286,7 +286,7 @@

    Protected videoSubscript @@ -359,7 +359,7 @@

    addRedundantAudioRecoveryMetricsObserver

    @@ -389,7 +389,7 @@

    Protected addTransceiver
    @@ -448,7 +448,7 @@

    getMidForGroupId

    @@ -477,7 +477,7 @@

    getMidForStreamId

    @@ -512,7 +512,7 @@

    hasVideoInput

    @@ -535,7 +535,7 @@

    localAudioTransceiver

    @@ -558,7 +558,7 @@

    localVideoTransceiver

    @@ -599,7 +599,7 @@

    metricsDidReceive

    @@ -628,7 +628,7 @@

    removeRedundantAudioRecoveryMetricsObserver

    @@ -657,7 +657,7 @@

    replaceAudioTrack

    @@ -686,7 +686,7 @@

    reset

    @@ -709,7 +709,7 @@

    setAudioInput

    @@ -738,7 +738,7 @@

    setAudioPayloadTypes

    @@ -809,7 +809,7 @@

    setPeer

    @@ -838,7 +838,7 @@

    setStreamIdForMid

    @@ -870,7 +870,7 @@

    setVideoInput

    @@ -928,7 +928,7 @@

    Protected setupAudio

    Inherited from SimulcastTransceiverController.setupAudioRedWorker

    Returns void

    @@ -969,7 +969,7 @@

    trackIsVideoInput

    @@ -998,7 +998,7 @@

    Protected transceiverIsV

    Parameters

    @@ -1022,7 +1022,7 @@

    updateVideoTransceivers

    @@ -1054,7 +1054,7 @@

    useTransceivers

    diff --git a/docs/classes/simulcasttransceivercontroller.html b/docs/classes/simulcasttransceivercontroller.html index f147e9e7ed..4089d60ebf 100644 --- a/docs/classes/simulcasttransceivercontroller.html +++ b/docs/classes/simulcasttransceivercontroller.html @@ -190,7 +190,7 @@

    Protected _localAudio

    Inherited from DefaultTransceiverController._localAudioTransceiver

    @@ -201,7 +201,7 @@

    Protected _localCamera

    Inherited from DefaultTransceiverController._localCameraTransceiver

    @@ -220,7 +220,7 @@

    Protected defaultMedia

    Inherited from DefaultTransceiverController.defaultMediaStream

    @@ -231,7 +231,7 @@

    Protected groupIdTo @@ -258,7 +258,7 @@

    Protected peer

    @@ -269,7 +269,7 @@

    Protected streamIdTo

    Inherited from DefaultTransceiverController.streamIdToTransceiver

    @@ -290,7 +290,7 @@

    Protected videoSubscript @@ -358,7 +358,7 @@

    addRedundantAudioRecoveryMetricsObserver

    @@ -388,7 +388,7 @@

    Protected addTransceiver
    @@ -446,7 +446,7 @@

    getMidForGroupId

    @@ -475,7 +475,7 @@

    getMidForStreamId

    @@ -510,7 +510,7 @@

    hasVideoInput

    @@ -533,7 +533,7 @@

    localAudioTransceiver

    @@ -556,7 +556,7 @@

    localVideoTransceiver

    @@ -596,7 +596,7 @@

    metricsDidReceive

    @@ -625,7 +625,7 @@

    removeRedundantAudioRecoveryMetricsObserver

    @@ -654,7 +654,7 @@

    replaceAudioTrack

    @@ -683,7 +683,7 @@

    reset

    @@ -706,7 +706,7 @@

    setAudioInput

    @@ -735,7 +735,7 @@

    setAudioPayloadTypes

    @@ -806,7 +806,7 @@

    setPeer

    @@ -835,7 +835,7 @@

    setStreamIdForMid

    @@ -867,7 +867,7 @@

    setVideoInput

    @@ -925,7 +925,7 @@

    Protected setupAudio

    Inherited from DefaultTransceiverController.setupAudioRedWorker

    Returns void

    @@ -966,7 +966,7 @@

    trackIsVideoInput

    @@ -995,7 +995,7 @@

    Protected transceiverIsV

    Parameters

    @@ -1019,7 +1019,7 @@

    updateVideoTransceivers

    @@ -1051,7 +1051,7 @@

    useTransceivers

    diff --git a/docs/classes/videoonlytransceivercontroller.html b/docs/classes/videoonlytransceivercontroller.html index c695424db6..eb0fb0c50b 100644 --- a/docs/classes/videoonlytransceivercontroller.html +++ b/docs/classes/videoonlytransceivercontroller.html @@ -177,7 +177,7 @@

    Protected _localAudio

    Inherited from DefaultTransceiverController._localAudioTransceiver

    @@ -188,7 +188,7 @@

    Protected _localCamera

    Inherited from DefaultTransceiverController._localCameraTransceiver

    @@ -207,7 +207,7 @@

    Protected defaultMedia

    Inherited from DefaultTransceiverController.defaultMediaStream

    @@ -218,7 +218,7 @@

    Protected groupIdTo @@ -245,7 +245,7 @@

    Protected peer

    @@ -256,7 +256,7 @@

    Protected streamIdTo

    Inherited from DefaultTransceiverController.streamIdToTransceiver

    @@ -267,7 +267,7 @@

    Protected videoSubscript @@ -285,7 +285,7 @@

    addRedundantAudioRecoveryMetricsObserver

    @@ -315,7 +315,7 @@

    Protected addTransceiver
    @@ -347,7 +347,7 @@

    getMidForGroupId

    @@ -376,7 +376,7 @@

    getMidForStreamId

    @@ -411,7 +411,7 @@

    hasVideoInput

    @@ -434,7 +434,7 @@

    localAudioTransceiver

    @@ -457,7 +457,7 @@

    localVideoTransceiver

    @@ -480,7 +480,7 @@

    metricsDidReceive

    @@ -509,7 +509,7 @@

    removeRedundantAudioRecoveryMetricsObserver

    @@ -538,7 +538,7 @@

    replaceAudioTrack

    @@ -567,7 +567,7 @@

    reset

    @@ -590,7 +590,7 @@

    setAudioInput

    @@ -619,7 +619,7 @@

    setAudioPayloadTypes

    @@ -653,7 +653,7 @@

    setEncodingParameters

    @@ -690,7 +690,7 @@

    setPeer

    @@ -719,7 +719,7 @@

    setStreamIdForMid

    @@ -751,7 +751,7 @@

    setVideoInput

    @@ -780,7 +780,7 @@

    setVideoSendingBitrateKbps

    @@ -809,7 +809,7 @@

    Protected setupAudio

    Inherited from DefaultTransceiverController.setupAudioRedWorker

    Returns void

    @@ -850,7 +850,7 @@

    trackIsVideoInput

    @@ -879,7 +879,7 @@

    Protected transceiverIsV

    Parameters

    @@ -903,7 +903,7 @@

    updateVideoTransceivers

    @@ -935,7 +935,7 @@

    useTransceivers

    diff --git a/src/redundantaudioencoder/RedundantAudioEncoder.ts b/src/redundantaudioencoder/RedundantAudioEncoder.ts index 242a3cfcdb..11ceacda70 100644 --- a/src/redundantaudioencoder/RedundantAudioEncoder.ts +++ b/src/redundantaudioencoder/RedundantAudioEncoder.ts @@ -1480,3 +1480,15 @@ namespace RedundantAudioEncoder { windowSize: number; } } + +/* istanbul ignore next */ +/** + * This function is only meant to be called within the RED worker to initialize and start RED functionality. + */ +function startRedWorker(): void { + RedundantAudioEncoder.shouldLogDebug = true; + RedundantAudioEncoder.shouldReportStats = true; + RedundantAudioEncoder.initializeWorker(); +} + +export const redWorkerCode = `${RedundantAudioEncoder.toString()}(${startRedWorker})();`; diff --git a/src/transceivercontroller/DefaultTransceiverController.ts b/src/transceivercontroller/DefaultTransceiverController.ts index b744d879a4..7fb34f376c 100644 --- a/src/transceivercontroller/DefaultTransceiverController.ts +++ b/src/transceivercontroller/DefaultTransceiverController.ts @@ -8,8 +8,9 @@ import BrowserBehavior from '../browserbehavior/BrowserBehavior'; import ClientMetricReport from '../clientmetricreport/ClientMetricReport'; import RedundantAudioRecoveryMetricReport from '../clientmetricreport/RedundantAudioRecoveryMetricReport'; import Logger from '../logger/Logger'; -import LogLevel from '../logger/LogLevel'; -import RedundantAudioEncoder from '../redundantaudioencoder/RedundantAudioEncoder'; +import RedundantAudioEncoder, { + redWorkerCode, +} from '../redundantaudioencoder/RedundantAudioEncoder'; import RedundantAudioRecoveryMetricsObserver from '../redundantaudiorecoverymetricsobserver/RedundantAudioRecoveryMetricsObserver'; import AsyncScheduler from '../scheduler/AsyncScheduler'; import VideoStreamIdSet from '../videostreamidset/VideoStreamIdSet'; @@ -493,20 +494,8 @@ export default class DefaultTransceiverController ); } - // Stringify the `RedundantAudioEncoder` class code and get the new name of the `RedundantAudioEncoder` class since - // its name is changed in the browser. - const redWorkerCode = RedundantAudioEncoder.toString(); - const redClassName = redWorkerCode.match(/class\s*(\w+)\s*\{/)[1]; - - const blobParts: BlobPart[] = [redWorkerCode]; - if (this.logger.getLogLevel() === LogLevel.DEBUG) { - blobParts.push(`${redClassName}.shouldLogDebug=1;`); - } - blobParts.push(`${redClassName}.shouldReportStats=1;`); - blobParts.push(`${redClassName}.initializeWorker();`); - this.audioRedWorkerURL = URL.createObjectURL( - new Blob(blobParts, { + new Blob([redWorkerCode], { type: 'application/javascript', }) );