1. 06 Dec, 2018 3 commits
    • Philippe Gorley's avatar
      recorder: remove dynamic casts · c455eceb
      Philippe Gorley authored
      Have an intermediate object subscribe to the media sources while also
      keeping a copy of the stream name. The recorder can then keep a
      reference to these to figure out the source of the frame, instead of
      knowing what objects it subscribes to.
      
      Change-Id: I4a34c8b035301eefc90645cf6cb500dbcd879f91
      c455eceb
    • Philippe Gorley's avatar
      recorder: make adding streams public · dd6199ac
      Philippe Gorley authored
      Instead of casting the observable object in the attached callback, have
      the recorder's owner add the streams manually.
      
      Change-Id: I5c79e32e470364b0c6a4253f50357a4bafade769
      dd6199ac
    • Philippe Gorley's avatar
      recorder: subscribe to audio/video sources · 351856e7
      Philippe Gorley authored
      Makes the MediaRecorder an observer on AudioInput, AudioReceiveThread,
      VideoInput and VideoReceiveThread, so they no longer need a reference
      to the recorder.
      
      Makes sure the framerate is set for the recorder by adding a way to get
      the stream parameters from the video receiver and input, since AVFrame
      does not carry framerate and time base information.
      
      Adds way to detach the recorder from the media sources, so it can be
      reattached on subsequent records.
      
      Change-Id: I71bac0825541f6445861f4f949288e1c62416f05
      351856e7
  2. 23 Aug, 2018 1 commit
    • Philippe Gorley's avatar
      recorder: refactor and simplify · f1088fa8
      Philippe Gorley authored
      1. Adds constness to streams in MediaRecorder; the latter shouldn't change
      stream parameters.
      2. addStream is called from recordData to simplify workflow; users need
      only check that MediaRecorder is recording.
      3. Fixes regression where multiple records couldn't happen in the same
      call.
      4. Fixes AudioSender not sending starting timestamp to help mix audio.
      5. MediaStream::name is now used as key for the streams_ map, so it must
      be constant, filter names are no longer hardcoded in the recorder.
      6. fromPeer parameter is determined by checking if MediaStream::name
      contains the string "remote".
      7. Adds copy constructor to MediaStream.
      8. Renames incrementStreams to incrementExpectedStreams to better reflect
      what it does.
      9. Removes keyframe triggers when starting a video record; we are
      recording raw frames, so it doesn't matter if they're keyframes or not.
      10. MediaRecorder supports more than 2 audio streams, but not video.
      11. Move preview to very bottom right corner.
      12. Fix potential Unchecked Return Value to NULL Pointer Dereference in
      recordData() (CWE-690).
      
      Gitlab: #39
      
      Change-Id: Id2fae4e9bb2072994c065e4843cc3ad832f89efc
      f1088fa8
  3. 10 Jul, 2018 2 commits
  4. 11 Jun, 2018 1 commit
  5. 06 Jun, 2018 1 commit
    • Philippe Gorley's avatar
      media: add video recording support · c21c5b77
      Philippe Gorley authored
      If there are 2 video streams, overlays local video over peer video. Peer
      video will be upscaled if it is too small, while local video will be
      scaled to 1/16th the size of the peer video.
      
      If there is only 1 video stream, uses peer video settings if they are
      valid, or fall back on local video settings.
      
      Adds title and description metadata to recorded file.
      
      Change-Id: I182de013e3ac2d18161eadf406fc6494e5f59a4e
      c21c5b77
  6. 29 May, 2018 1 commit
  7. 23 Jan, 2018 1 commit
  8. 15 Jan, 2018 1 commit
    • Philippe Gorley's avatar
      accel: refactor and speed up fallback · ecf3e901
      Philippe Gorley authored
      Falling back from hardware to software decoding requires only a
      reinitialization of the AVCodecContext. Hardware decoding failure is no
      longer bubbled up to the RTP session, which makes it much faster.
      
      Change-Id: I79fdfcfa41f822b3299d74ac654146789fcfd97b
      ecf3e901
  9. 12 Jan, 2018 1 commit
  10. 29 Nov, 2017 1 commit
  11. 27 Nov, 2017 1 commit
  12. 10 Apr, 2017 1 commit
  13. 08 Apr, 2017 1 commit
    • Anthony Léonard's avatar
      video: save codec bitrate when quality is not auto · dffb0d6d
      Anthony Léonard authored
      Commit 1ed6a0fe revealed a
      case where codec quality is not saved and restored correctly
      when holding/un-holding if quality is not set to auto.
      
      The videoBitrateInfo_ struct of the VideoRtpSession is left to its
      default value where quality is equal to 0. When un-holding a call,
      the quality value to be used by the codec is then equal to 0 which
      put the codec in CBR mode. As the default bitrate on H.264 codec is
      very low (250 kbits/s), very poor quality was noticed on average resolution.
      
      We now initialize videoBitrateInfo_ with the default quality settings
      which makes the restored quality consistent on un-hold.
      
      Change-Id: I23ef27cae953bcf60f1f90b18e042c3affd8ecd0
      Reviewed-by: Guillaume Roguez's avatarGuillaume Roguez <guillaume.roguez@savoirfairelinux.com>
      dffb0d6d
  14. 21 Feb, 2017 1 commit
  15. 15 Feb, 2017 1 commit
    • Olivier SOLDANO's avatar
      Path MTU discovery implementation · 29ae5d8a
      Olivier SOLDANO authored
      This implementation uses gnutls dtls heartbeat API to test path MTU.
      heartbeat allowing messages with automated response in a datagram,
      the application is able to guess the MTU via a timeout in the heartbeat.
      (timeout on packet sent and no response, implies that the MTU is lower
      than the lost payload.)
      To minimize false positives (a response is lost for example), each attempt
      triggers one retry on the first timeout.
      This version ensures a minimal MTU of 512 bytes will be returned in
      case of any failure in the procedure.
      For retrocompatibility with non heartbeat capable clients,
      a fallback MTU is set at 1280.
      
      Change-Id: Ib9a7f63a70e8bdad239d8fc103779a0f2c387e87
      Reviewed-by: Andreas Traczyk's avatarAndreas Traczyk <andreas.traczyk@savoirfairelinux.com>
      29ae5d8a
  16. 05 Jan, 2017 1 commit
  17. 08 Dec, 2016 1 commit
  18. 01 Nov, 2016 1 commit
    • Philippe Gorley's avatar
      hardware acceleration configuration setting · 99d138d1
      Philippe Gorley authored
      Hardware acceleration is now correctly enabled/disabled using Ring's
      config file. The setting was moved from DeviceParams/VideoSettings,
      which are used for local video, to preferences under video.
      
      The video preferences object calls serialize() on the video device
      preferences, so as to not overwrite one another (they're under the
      same section in the config file).
      
      Change-Id: I8c11ea8813dee5cc514a4fa4c1bae962a14577eb
      Tuleap: #1122
      99d138d1
  19. 07 Oct, 2016 1 commit
  20. 27 Mar, 2016 1 commit
    • aviau's avatar
      fixed typos · 3b767168
      aviau authored
      Fixes spelling-error-in-binary lintian warning
      
      Tuleap: #350
      Change-Id: I014ebe76e71f9bae247d4d0726fd3e6cbe6459f2
      3b767168
  21. 09 Mar, 2016 1 commit
  22. 25 Feb, 2016 1 commit
    • Guillaume Roguez's avatar
      videomanager: fix bad memory access · 4d295519
      Guillaume Roguez authored
      - remove videoManager global instance.
      - allocate a VideoManager instance when Manager instance is created.
      - add Manager::getVideoManager() method to get this instance.
      - force getSignalHandlers() to be called before Manager instance creation.
      
      All of this prevents VideoManager to access to signal handlers map,
      already destroyed, causing a memory access violation.
      
      Change-Id: I21ebff08fa8d49e797f99299de12dab023c37769
      Tuleap: #413
      4d295519
  23. 12 Jan, 2016 1 commit
    • Éloi Bail's avatar
      media/video: avoid quality toggling · e1393b8d
      Éloi Bail authored
      Based on RTCP information. Video quality was often toggling.
      To avoid that, we only allow to decrease quality if a higher quality
      was already calculated in of the 5 previous tries.
      
      Tuleap: #158
      Change-Id: I9a42a87f7958e4477dbebecc4c24c6a3d000b835
      e1393b8d
  24. 06 Jan, 2016 1 commit
  25. 03 Dec, 2015 2 commits
    • Éloi Bail's avatar
      media/video: reuse default quality parameters · 87f3f337
      Éloi Bail authored
      When several calls were performed, quality and bitrates of previous
      call were used. When stopping VideoRtpSession, we make sure to reset default
      values.
      
      Change-Id: Ibe7b58f33979fae734dbbe3f7c31bd4d57c5a13f
      Tuleap: #156
      87f3f337
    • Éloi Bail's avatar
      media/video: disable key frame SIP-INFO request · a6fc06b6
      Éloi Bail authored
      If a keyframe request is never answered, a timeout is reached
      and the call failed.
      As keyframe requests are transmit over UDP, they are too easily dropped,
      on connection like wifi.
      
      This feature is not mandatory for communication and until we found
      a better solution this patch disables the request.
      
      Change-Id: I3d5e8d0e3d0119db52fbfc0f37ce2949224b1806
      Tuleap: #167
      a6fc06b6
  26. 13 Nov, 2015 1 commit
    • Éloi Bail's avatar
      media/video: use crf rather than bitrate · 82fb0dae
      Éloi Bail authored
      Dynamic quality change was done by increase/decreasing encoder bitrate.
      It led to video artefact issues, specialy at low bitrates.
      In addition, it does not make sence to use same bitrate with different
      resolutions and fps. With high resolutions and fps, maximal bitrate
      need to be higher.
      
      It is possible for H264 and VP8 to set video quality using CRF.
      This parameter solves video artefact issues and choose a different
      output bitrate depending on input resolution and fps.
      
      Tuleap: #80
      Change-Id: I07d37175dfc335b5fc70cf54798f82eafe921ea9
      82fb0dae
  27. 20 Oct, 2015 2 commits
    • Guillaume Roguez's avatar
      rtp: fix RtpSession::restartSender() · 761d38e6
      Guillaume Roguez authored
      Calling this API causes a race condition with RtpSession::start().
      The former needs the latter to be run first, this was not enforced,
      causing a crash by nullptr access on socketPair_ member.
      This patch checks for a non-nullptr socketPair_ to procceed the restart.
      
      Issue: #81987
      Change-Id: I20886fe70398f018621aade1c7bac3ff15ef9055
      761d38e6
    • Guillaume Roguez's avatar
      video: remove blink fx during conference · 82edcbbf
      Guillaume Roguez authored
      During a conference, video display blink on a full black image
      at each video restart (due to adaptative bitrate algorithm).
      This patch fixes this effect due to an unvoluntary mixer's sink
      start/stop.
      
      Issue: #82044
      Change-Id: I181051de7230189d0a951f65f02b5673f202ffb5
      82edcbbf
  28. 15 Oct, 2015 1 commit
    • Éloi Bail's avatar
      conference: attach mixer sink if source restarted · 7dfb47df
      Éloi Bail authored
      If video_rtp_session is restarted due to bitrate changement
      we need to setup again conferencepipeline. Otherwise videomixer sink
      would be never attached and video never send.
      
      Issue: #81547
      Change-Id: I6de180afab5a7dd320fe3b31a1d61735106d76d1
      7dfb47df
  29. 13 Oct, 2015 1 commit
  30. 05 Oct, 2015 1 commit
    • Éloi Bail's avatar
      media: remove useless trace · 66015aef
      Éloi Bail authored
      Warning only if bitrate is effectively changed.
      
      Issue: #78984
      Change-Id: I6203d88ad519d448e33aa016941ff92d262427c5
      66015aef
  31. 02 Oct, 2015 1 commit
  32. 21 Sep, 2015 1 commit
    • Guillaume Roguez's avatar
      update Copyright header · 5236ab05
      Guillaume Roguez authored
      - remove OpenSSL exception
      - fix Savoir-faire Linux naming
      - fix common Author: representation
      
      Issue: #80663
      Change-Id: I6c3b2ca1ed48ed474a0ecd5a30fe793526e11b00
      5236ab05
  33. 04 Sep, 2015 1 commit
  34. 19 Aug, 2015 2 commits
    • Guillaume Roguez's avatar
      video_rtp: refactoring conference handling · 1a589ff4
      Guillaume Roguez authored
      - pass by-ref conference object in private API
      - un-pairing enterConference/exitConference
      - fix a nullptr access in enterConference
      
      Issue: #79075
      Change-Id: I06f0b72c9ee39f264937b9a36ae3d2dcbc418dab
      1a589ff4
    • Guillaume Roguez's avatar
      video_rtp: prevent exit conference at rtp stop · c5400aef
      Guillaume Roguez authored
      An unwanted behavior of rtp stop method was to nullify conference
      pointer, so remove attachement between and prevents video mixing.
      
      Issue: #79075
      Change-Id: Ic08dde0759d4116ffcdb6e90310f59b9a96b3b5f
      c5400aef