Skip to content
Snippets Groups Projects
  • Mario Jr's avatar
    e8d59ed1
    fix: mic selection (firefox/all browsers) and muted alert when mic is changed · e8d59ed1
    Mario Jr authored
    This commit contains three fixes: one already reported and two detected
    during the investigation of the solution.
    This started as a fix for firefox (#12023), but i also fixed the muted
    alert/banner when device changes: the banner wasn't detecting device changes,
    unless audio was deactived/actived.
    
    There's another fix for the microphone stream: we now keep sender's track
    disabled if it was already disabled for the sender's track of the previous
    selected device.
    
    Also did small refactor for eslint checking.
    
    Some technical information: in sip bridge (bridge/sip.js), setInputStream and
    liveChangeInputDevice function were both fully turned into promises, which
    guarantees we have everything ready when it resolves to the respective values.
    This helps AudioManager (audio-manager/index.js) to sequentially sets and
    tracks the state of the current microphone stream (inputStream), when calling
    liveChangeInputDevice function: we first set the current stream to null,
    creats a new one and then set it to the newly created value - this is needed
    because MutedAlert (muted-alert/component.jsx) can then gracefully
    allocate/deallocate the cloned stream when it is set to a non-null/null value
    (the cloned stream is used for speech detection with hark).
    In MutedAlert we also make sure to enable the cloned stream's audio
    tracks, just in case the user change the device when muted (audio track is
    disabled in this case), which also leaves the cloned stream muted (we then
    enable the track to allow speech detection).
    
    Closes #12023
    e8d59ed1
    History
    fix: mic selection (firefox/all browsers) and muted alert when mic is changed
    Mario Jr authored
    This commit contains three fixes: one already reported and two detected
    during the investigation of the solution.
    This started as a fix for firefox (#12023), but i also fixed the muted
    alert/banner when device changes: the banner wasn't detecting device changes,
    unless audio was deactived/actived.
    
    There's another fix for the microphone stream: we now keep sender's track
    disabled if it was already disabled for the sender's track of the previous
    selected device.
    
    Also did small refactor for eslint checking.
    
    Some technical information: in sip bridge (bridge/sip.js), setInputStream and
    liveChangeInputDevice function were both fully turned into promises, which
    guarantees we have everything ready when it resolves to the respective values.
    This helps AudioManager (audio-manager/index.js) to sequentially sets and
    tracks the state of the current microphone stream (inputStream), when calling
    liveChangeInputDevice function: we first set the current stream to null,
    creats a new one and then set it to the newly created value - this is needed
    because MutedAlert (muted-alert/component.jsx) can then gracefully
    allocate/deallocate the cloned stream when it is set to a non-null/null value
    (the cloned stream is used for speech detection with hark).
    In MutedAlert we also make sure to enable the cloned stream's audio
    tracks, just in case the user change the device when muted (audio track is
    disabled in this case), which also leaves the cloned stream muted (we then
    enable the track to allow speech detection).
    
    Closes #12023
index.js 20.25 KiB