- 06 Dec, 2018 2 commits
-
-
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
-
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
-
- 23 Aug, 2018 1 commit
-
-
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
-
- 10 Jul, 2018 2 commits
-
-
Philippe Gorley authored
It better explains what the method does, as the recorder is not started at that moment). Change-Id: Ib536600b663e9ee188257b3b166f497f5a2b2c1e Reviewed-by:
Sebastien Blin <sebastien.blin@savoirfairelinux.com>
-
Philippe Gorley authored
MediaRecorder no longer uses VideoSender (encoder) as a source for its local video and will directly use VideoInput (decoder), as it is earlier in the pipeline. This is the first step to support switching inputs while recording. Change-Id: Ia163efa3b20a349a93fc7b05213ec5e00de1704e Reviewed-by:
Sebastien Blin <sebastien.blin@savoirfairelinux.com>
-
- 11 Jun, 2018 1 commit
-
-
Adrien Béraud authored
Change-Id: Ib25362e474af6cecee59c4d3738473bfafcd766f Reviewed-by:
Philippe Gorley <philippe.gorley@savoirfairelinux.com>
-
- 06 Jun, 2018 1 commit
-
-
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
-
- 29 May, 2018 1 commit
-
-
Philippe Gorley authored
Compresses audio to Ogg/Opus. Refactors audio recording to use MediaFilter (audio mixing) and MediaEncoder. Change-Id: Ib8ee63ac71910782fb21d73d7da5fa5d19893b8e Reviewed-by:
Sebastien Blin <sebastien.blin@savoirfairelinux.com>
-
- 23 Jan, 2018 1 commit
-
-
Guillaume Roguez authored
Change-Id: I1ef88bc640f79790aad2b5285ea2c776aa8cd366
-
- 15 Jan, 2018 1 commit
-
-
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
-
- 12 Jan, 2018 1 commit
-
-
Philippe Gorley authored
Replaces empty methods and std::bind calls with lambdas. Change-Id: I0d9c876a9ba0bbdc6a77a85e0e2d75766312f952
-
- 29 Nov, 2017 1 commit
-
-
Philippe Gorley authored
Fixes a regression where keyframe requests were sent by the wrong peer. Corrects artifacts in a shorter amount of time. Change-Id: I2b981b46c07422a4289f378e2a5deaaba0047a3b Reviewed-by:
Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
-
- 27 Nov, 2017 1 commit
-
-
Philippe Gorley authored
Keyframes will only be sent on request instead of a timely interval. This may interfere with clients that do not yet have this patch. Change-Id: Ie786160744257052ef9d103d50fe46cd90138927 Reviewed-by:
Olivier Soldano <olivier.soldano@savoirfairelinux.com>
-
- 10 Apr, 2017 1 commit
-
-
Guillaume Roguez authored
This patch follow-up the commit [dffb0d6d video: save codec bitrate when quality is not auto] This patch makes a better version by giving a correct name to the method that setup the video bitrate and make sure its called when input of this method (send_.codec) is modified. Resulting dead code is removed. Change-Id: I78ea8e318cecf516f4a018a341130c58f68e5845 Reviewed-by:
Olivier Soldano <olivier.soldano@savoirfairelinux.com>
-
- 08 Apr, 2017 1 commit
-
-
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 <guillaume.roguez@savoirfairelinux.com>
-
- 21 Feb, 2017 1 commit
-
-
Guillaume Roguez authored
Decrease the manager.h file dependency map by removing uneeded inclusion and small code refactoring to nicely decoupling classes. Change-Id: Ibde69e0a088e7e2fbd842e39301db5b3a4bc8c28 Reviewed-by:
Andreas Traczyk <andreas.traczyk@savoirfairelinux.com>
-
- 15 Feb, 2017 1 commit
-
-
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 <andreas.traczyk@savoirfairelinux.com>
-
- 05 Jan, 2017 1 commit
-
-
Guillaume Roguez authored
Change-Id: I6dbc51dd41c1f44d1446fe7365026af037bc86d9 Reviewed-by:
Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
-
- 08 Dec, 2016 1 commit
-
-
Philippe Gorley authored
Fixes an issue where falling back to software decoding fails if quality is not set to auto (no video). Change-Id: I502558f82cbabdf90990cd9177a36674fb3df4d1 Tuleap: #1088
-
- 01 Nov, 2016 1 commit
-
-
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
-
- 07 Oct, 2016 1 commit
-
-
Philippe Gorley authored
This patch also implements a way for the Call object to restart the media receiver Change-Id: I1090575f14425d383eb5471a388c4c9e8d888b0e
-
- 27 Mar, 2016 1 commit
-
- 09 Mar, 2016 1 commit
-
-
Guillaume Roguez authored
tools/update-copyright script used for that Change-Id: I89b13300d9ccbdbcd47dba679ba64be82499e83d Tuleap: #454
-
- 25 Feb, 2016 1 commit
-
-
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
-
- 12 Jan, 2016 1 commit
-
- 06 Jan, 2016 1 commit
-
- 03 Dec, 2015 2 commits
-
-
É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
- 13 Nov, 2015 1 commit
-
-
É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
-
- 20 Oct, 2015 2 commits
-
-
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
-
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
-
- 15 Oct, 2015 1 commit
-
-
É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
-
- 13 Oct, 2015 1 commit
-
-
Adrien Béraud authored
std::stoi is not available on Android Issue: #78221 Change-Id: I3cf69dba62c8d4e5bf3f946340cd44a8c08a788e
-
- 05 Oct, 2015 1 commit
-
-
Éloi Bail authored
Warning only if bitrate is effectively changed. Issue: #78984 Change-Id: I6203d88ad519d448e33aa016941ff92d262427c5
-
- 02 Oct, 2015 1 commit
-
-
Éloi Bail authored
Based on RTCP RR packets info, this patchset add a dichotomous algorithm that converge to highest bitrate value. Minimal and maximal bitrates are set by account. Packet lost rate threshold is defined by call to 1%. Issue: #78984 Change-Id: I8864a5e83bf93146e8bd0186bab0dde36fcd0348 Signed-off-by:
Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
-
- 21 Sep, 2015 1 commit
-
-
Guillaume Roguez authored
- remove OpenSSL exception - fix Savoir-faire Linux naming - fix common Author: representation Issue: #80663 Change-Id: I6c3b2ca1ed48ed474a0ecd5a30fe793526e11b00
-
- 04 Sep, 2015 1 commit
-
-
Éloi Bail authored
When bitrate is changed, new RTP session created must rely on RTP sequence of previous RTP session in order to provide continous sequence numbers. This patchset ensures to keep last RTP sequence updated correctly ensuring that no new packet will be sent when bitrate change is performed. Issue: #80058 Change-Id: Ia7fbecd19aa0ec648327307de3ce3f8eace163a0 Signed-off-by:
Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
-
- 19 Aug, 2015 3 commits
-
-
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
-
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
-
Guillaume Roguez authored
All rtp_session::start() have mostly the same code, only how the socket_pair is created change. We also add "override" C++11 keywords that prevents possible writing errors. Issue: #79075 Change-Id: I7ff281a7d72661b0d44d867aa7925f769f93e71d
-