Skip to content
Snippets Groups Projects
  1. Jul 09, 2021
  2. Jul 02, 2021
  3. Jul 01, 2021
    • Mario Jr's avatar
      feat(audio): use kurento's trickle-ice to improve mic negotiation · 287c4eb6
      Mario Jr authored
      Here's what we do when user activates mic:
      1 - When we do something similar to listenonly's joining process
      until we find a valid candidate-pair. The information about this
      local candidate is store.
      2 - We then start a new userAgent, and as soon as browser finds
      a candidate with the same local ip address, we leave only this
      candidate in the SDP and send this to FreeSWITCH. SDP should
      contain only a single candidate.
      3 - The rest of signaling process is basically the same.
      287c4eb6
  4. Apr 16, 2021
    • Mario Jr's avatar
      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
  5. Apr 12, 2021
  6. Apr 01, 2021
    • Mario Jr's avatar
      fix: MEDIA_ERROR when joining room using Firefox · 951fc0ad
      Mario Jr authored
      Firefox doesn't create a  device called 'default' and we were trying
      to set this when user is joining the room. We don't do this anymore, letting
      devices to be changed when there's some user request.
      
      Moved outputDeviceId inputDeviceId information to be managed in bridge
      (just like we do with inputDeviceId), we don't store this duplicated
      information in audio container anymore.
      
      Fixed the eslint warning in "playAlertSound(url) { ..."
      
      We are safe to let users try to change input/output devices because the
      device list is retrieved from enumerateDevices.
      951fc0ad
  7. Mar 29, 2021
    • Mario Jr's avatar
      Fixes and improvements on pr #10129 - dynamic change audio device · cddca95a
      Mario Jr authored
      Allow listenonly users to change output devices
      Fixed dynamic audio device change for firefox
      Fixed shortcuts for audio join/leave
      Show (with a bold font) the current selected device
      [performance] Prevent calling mediaDevices.enumerateDevices every time we render
      the selector. This adds a delay (~200ms, on my chrome setup) to render this component
      [performance] Do not call enumerateDevices to search for new devices, instead we listen on mediaDevices.deviceChange event
      Small refactoring and fixed a few errors that were being throw in browser's console
      Fixed device selection when this is done in audio-settings modal
      Fallback to default device when current device is removed
      Truncate device name length
      Renamed "Input","Output" labels to "Microphone","Speakers", respectively
      Update eslint rule for accessKey
      cddca95a
  8. Mar 12, 2021
  9. Mar 08, 2021
  10. Mar 05, 2021
  11. Feb 26, 2021
  12. Feb 25, 2021
  13. Feb 23, 2021
    • Mario Jr's avatar
      Clean up HTMLAudioElement used for notification sounds · 2e92de80
      Mario Jr authored
      After ending the notification playback, we set the ".src" property to null, which immediately stop the internal player of mobile browser (tested on Chrome for Android -  device list is on #11458).
      For the specific list of devices, this prevents the internal buffer error "-61" described in #11458.
      Fixes #11458.
      2e92de80
  14. Feb 12, 2021
  15. Jan 29, 2021
    • Mario Jr's avatar
      Correctly return MediaStream object when calling audio-manager's inputStream · b582b1ca
      Mario Jr authored
      This was missed in recent audio/sip.js changes.
      MediaStream is now returned from SIP.js
      Related to #10733
      b582b1ca
    • Mario Jr's avatar
      Add setting for enabling/disabling microphone audio filters · f2de2806
      Mario Jr authored
      As explained in #11143, disabling audio filters is desired in some scenarios.
      This basically adds an option for user to disable default constraints.
      When user doesn't change this value in Settings > Application, the default
      value for each audio constraints is retrieved from settings.yml.
      When user changes this value in Settings > Application, audio
      filters (AGC, Noise Supression and Echo Cancellation) are all set to
      true/false, according to the value selected in the Settings GUI.
      
      To start it simple, we decided to not to add a different setting in the GUI for
      each audio contraint. This may be added in the future, though (perhaps in a
      dedicated Audio Settings tab)
      This is related to #4873
      f2de2806
  16. Jan 22, 2021
    • Mario Jr's avatar
      Add setting for enabling/disabling microphone audio filters · 97c76900
      Mario Jr authored
      As explained in #11143, disabling audio filters is desired in some scenarios.
      This basically adds an option for user to disable default constraints.
      When user doesn't change this value in Settings > Application, the default
      value for each audio constraints is retrieved from settings.yml.
      When user changes this value in Settings > Application, audio
      filters (AGC, Noise Supression and Echo Cancellation) are all set to
      true/false, according to the value selected in the Settings GUI.
      
      To start it simple, we decided to not to add a different setting in the GUI for
      each audio contraint. This may be added in the future, though (perhaps in a
      dedicated Audio Settings tab)
      This is related to #4873
      97c76900
  17. Jan 06, 2021
  18. Dec 01, 2020
  19. Nov 30, 2020
  20. Oct 15, 2020
    • Mario Jr's avatar
      Fix wrong skipCheck handling · a7ab00e3
      Mario Jr authored
      We now let sip.js handle getUserMedia calls, same should happen when skipCheck is active.
      Solves #10652.
      a7ab00e3
  21. Oct 06, 2020
    • Mario Jr's avatar
      Correctly set audio input/output devices · e9e43637
      Mario Jr authored
      When refusing ("thumbs down" button) echo test, user is able to select a different input device. This should work fine for chrome, firefox and safari (once user grants permission when asked by html5client).
      For output devices, we depend on setSinkId function, which is enabled by default on current chrome release (2020) but not in Firefox (user needs to enable "setSinkId in about:config page). This implementation is listed as (?) in MDN.
      In other words, output device selection should work out of the box for chrome, only.
      When selecting an outputDevice, all alert sounds (hangup, screenshare , polling, etc) also goes to the same output device.
      This solves #10592
      e9e43637
  22. Sep 25, 2020
    • Mario Jr's avatar
      Port SIP.js to 0.17.1 release · 619ffa0e
      Mario Jr authored
      This considerably changes the way we process audio signaling and start audio elements in user's browser.
      We now avoid using AudioContext element for both microphone and listenonly calls, once it is unstable for some iOS devices (cracky audio, user stops hearing audio after a while).
      Increased default value for listenOnlyCallTimeout: this avoids activating FreeSWITCH's fallback when ICE negotiation takes longer than 15sec (tested on DO).
      Increased listenonly logs.
      This fixes #8133 #10388
      619ffa0e
  23. Sep 11, 2020
  24. Sep 10, 2020
  25. Sep 09, 2020
  26. Aug 26, 2020
  27. Jul 27, 2020
  28. Jul 09, 2020
  29. Jun 22, 2020
  30. Jun 19, 2020
Loading