Commit Graph

15792 Commits

Author SHA1 Message Date
0222d86148 build: disable deprecated warnings
Change-Id: Idffdb3f6669398db165cbec9607af7ed2c56fb21
2022-07-13 14:37:22 -04:00
9e3631b139 TrustStore: prevent move
Change-Id: Id530a5985feb84d213cc02dc564037e64f626abe
2022-07-13 14:37:22 -04:00
9116bc6f1e contrib/opendht: don't build c bindings
Change-Id: Id95f2e1dfbee9ec196b04e5096760ee333d85996
2022-07-13 14:37:22 -04:00
2a87e7855a contrib: update libressl
Change-Id: I870649563cc171736fccb83b949239f5fa12cfba
2022-07-13 14:37:22 -04:00
81523459a3 contrib: update gmp
Change-Id: I0fbe4fbe7705b5e9c2dd0c6b330ad103c1011e81
2022-07-13 13:24:24 -04:00
77e20265b5 contrib: update nettle
Change-Id: Ica8ed601e07df590752e8d1231fd32eab37c46ed
2022-07-13 13:24:19 -04:00
99b32015da sync: fix sync after re-adding a contact previously removed
If a conversation was previously removed, it couldn't be re-cloned
due to the fact that the sync value can come from a previously
offline device.
Like updateContact in contact_list, use created/removed to determine
if it's a re-added contact to be able to re-sync again.

Change-Id: Ibe16d2bda02cbbe41b16d8b365d9c8ef02b36140
2022-07-13 12:03:43 -04:00
f8da71b9c1 ice transport: cleanup
Change-Id: Icdacf3ad7bb2161b81c1495f9d2a9cccee999794
2022-07-13 10:02:08 -04:00
2d9c27d349 contrib: bump pjproject
Change-Id: I26cabbf1c3ab8ce24ddee8b6c542563d57416f85
GitLab: #682
2022-07-13 09:50:28 -04:00
6bede8f320 conversation: avoid loading incorrect history
This is very unlikely, but really old conversations with incorrect
commits can cause some crashes. If the commit has no type, it's
something incorrect, in which case nothing should be loaded and the
client must not crash either.

Change-Id: If9e70f023a7ef89b3c777b4e83bea26559de30db
2022-07-13 09:27:36 -04:00
e2136e48b3 cleanup: remove srcType_
As unused and duplicates informations

Change-Id: I4c98328339bd4149206ac88d9af456418960838f
2022-07-13 09:27:15 -04:00
23cf27865c recorder: fix some recorder bugs
+ Fix recording in an audio only call
+ Fix crash if deinit the recorder without remote video
+ Add some tests

Change-Id: Ie78a632f6a2ecb3eae4f53ae8f25c8ecbf5c5091
GitLab: #719
2022-07-12 11:32:18 -04:00
ef0b2edda4 ut_conference: fix typo
Change-Id: I83eb58915afb2baef7dad17bec192129eb754bd3
2022-07-12 10:33:02 -04:00
9a98d6a679 misc: minor cleanup
Change-Id: Ibebe3511681d869d3e2688ce9154df029e4d088c
2022-07-11 10:51:28 -04:00
a89f921c09 call: handle rotation and keyframe per stream
Since multistream, we can handle several video streams with different
rotations and keyframe requests. the previous callback only managed
one stream.
To identify a stream, we use what is specified in RFC 5168 that we
already use and add a stream_id string when necessary:
https://datatracker.ietf.org/doc/html/rfc5168#page-6
If stream_id is empty, we apply the rotation/request to all streams.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: I8ca8480d128b0a5773e67409e467e26e7726dec4
2022-07-11 10:11:36 -04:00
ce545112cf multistream: make the daemon able to negotiate more than 2 medias
This patch makes the daemon able to negotiate more than 2 medias
for a call. Basically, this patch includes some major changes:

1. reportMediaNegotiationStatus is also called for conference, so
the client is able to update the mediaList of the conference to
use it later if it needs to change the medias. And the medias
can be retrieven with currentMediaList
2. The conference object correctly updates the video mixer on
media changes, and video inputs are restarted if removed then
re-added.
3. Because previous versions of the daemon only supports two medias,
only negotiate more medias with compatible peers. If the daemon is
not compatible, the medias will not be negotiated anyway.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: I55701d9e6e53b05c9a58adad4e8ea90303e6b9e7
2022-07-11 10:11:20 -04:00
268d691e3e test: fix build for ut_conference
Change-Id: Iad94763131b74d17ab5d7bf1090d30d533ae04a6
2022-07-08 09:00:40 -04:00
bdc8ee6714 account: add API for push notification topic
Change-Id: I214d71a9cc6cab707f2f54c6e011efad9f2f4516
2022-07-07 19:48:43 -04:00
7f24183585 notifications: add API required by iOS extension
- add signal conversation synchronization ready
- add signal for call peer connection request
- add function to check if manager is running

Change-Id: I47927d5301853d0841819500372fc2b5aa83a110
2022-07-07 19:47:43 -04:00
084a428c36 peerConnectionRequest: add connection type
This patch adds connection type to PeerConnectionRequest, so
iOS notification extension could detect notification type.
Also, it forces sending PeerConnectionRequest when placing a call,
So iOS devices could receive a notification.

Change-Id: I38526c9b3074969a70a678976ae28c259a7f452a
2022-07-07 19:47:32 -04:00
55d183f93b contrib: update opendht to 2.4.8
Change-Id: Ie92e695ec3735f826257c7624165e805a7fb2f85
2022-07-07 16:30:46 -04:00
8fdde4350f remove log
Change-Id: I221f2a0dacbf4ba729ba8e419002bdf72cbb5b92
2022-07-07 11:03:12 -04:00
3e83204248 conference: send infos in audio only and fix isMediaSourceMuted
https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: I23ef5a7ccedfd500aea3f9392c367a168eb391d1
2022-07-05 09:40:54 -04:00
a3f11151a9 sipcall: reset conference on exit
This fix isConferenceParticipant after exitConference() (if going
from a conference to a 1:1 call) and avoid failed actions after.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429
Change-Id: I9ba5d687ac9d523a89503552c9951568f5986940
2022-06-29 15:19:50 -04:00
72a7d2339a contrib: update msgpack, use C++17
Change-Id: Ic7ce824e1c14f9a3dc45c24d48381cbf1b9d818e
2022-06-29 09:14:54 -04:00
3d2506e46a contrib: bump opendht (and fix dhtstate cache)
Change-Id: I3610377c5d816d19ebdf9f99adf8d3b0677b272e
2022-06-29 09:14:54 -04:00
f773e24851 webview: add initial WebView support to the daemon
Change-Id: Id6967f8fd0976caae81e4c951d0d5dc9901b23d3
2022-06-27 16:08:53 -04:00
b58869be1d src/Makefile: Install jami/trace-tool.h
Change-Id: I91ce2615df156ef3f7726eca3be11a86e20212ba
2022-06-27 13:43:31 -04:00
f6155a706d decoder_finder: force libopus for opus decoding
ffmpeg implements two opus decoders. libopusdec is a wrapper around the
libopus reference opus library. opusdec is a native implementation, but
lacks features such as FEC support in some distribution. Depending on
the distribution configuration, ffmpeg can select either decoder for
opus.

This patch forces the use of libopus if it exists. If it does not, the
function will fall back to opusdec.

Issue: #4857
Change-Id: Ia1838a593c9199fc1cbda5f4596c318a8cdd886b
2022-06-23 15:42:46 -04:00
1db7678e2e ffmpeg: update fec patch to match recent ffmpeg
An AVOption has been added to ffmpeg in sept. 2020, making the patch in
contrib redundant. This change is integrated in the contrib ffmpeg
starting from commit 855019860, which updates the used version.

This patch adapts the patches to be applied to ffmpeg and the call to
enable FEC in libopus. Specifically it does the following changes:

- backport the mainline ffmpeg patch that add fec to libopusenc
- add packet_loss reload to adapt its value to network
- modify rules.mak to add patches to the correct platforms
- make media_encoder set the right AVOption to enable fec

Issue: #4857
Change-Id: I614fce2f0cf7fc387973b34323138b07c1767726
2022-06-23 15:41:34 -04:00
36b1334d47 contrib: update ffmpeg to 4.4.2
Change-Id: Icaaeefc9cdeb084e56192e4bd5154912122a6abd
2022-06-23 14:14:31 -04:00
a7c048293f codecs: add support for g726, rename PCMA & PCMU
GitLab: #694
Change-Id: I74e430b89db2831979b45a56a566d496e0b7936b
2022-06-23 13:29:17 -04:00
f663929091 scheduled_executor: prevent use-after-free in reschedule
Change-Id: I449e8fa5afe064cc17d834722f0d870be711d32c
2022-06-23 13:29:00 -04:00
90c99062a6 multistream: be able to negotiate more than 2 media streams
Current pjproject's configuration only allow the daemon to negotiate
two medias streams. Which is not enough for multistream.
Modify this limit to 32 streams (2**5) and avoid any potential
crash if the remote tries to negotiate more streams.
Also, fix some loops.

Note: This may not be the best solution for what we want to achieve.
Another approach may be to use a video mixer, mixing all the
medias we want and always negotiate 2 media streams. However, this
patch will not block the other approach and fix some loops.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: I71ff3088bbf5908945656d02872755226f452fc5
2022-06-23 10:01:16 -04:00
b8e03c7923 sipcall: support more than one audio/video RTP session
https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: I3dac282a3b431984dbb5fb0045ef74e5a1683b63
2022-06-23 10:01:14 -04:00
31b858c36b conference: vectorize host attributes
In the previous version of the code, the conference was only
supporting 2 video inputs and one audio source.
For multistream, this is not correct and should be as generic as
possible.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: I7f7f7a2547209844a15f734bea3a62d92e456fde
2022-06-23 09:44:33 -04:00
f0b9497825 video_mixer: vectorize host's video inputs
With the previous code, the video mixer only supports 2 inputs via
switchInput and switchSecondaryInputs. Both of those methods are
deprecated in favor of requestMediaChange.
Now, instead of two separate variables to manage, the video mixer
manages a vector of video inputs for the host. This will allow
the conference to have a better management of inputs via
requestMediaChange().

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: Ia65b35707bddf979154527c856e0574d96bbe519
2022-06-23 09:42:40 -04:00
5574e5f6ee scheduled_executor: prevent use-after-free in reschedule
Change-Id: Id9fe8099cc0e82845e2a2d1cb4c4128f281ba982
2022-06-22 23:14:41 -04:00
fa7fb8beb0 build: use ifdef instead of `if for various defines
Change-Id: I386bd1adddf403ff450e5d22688337b7d6d7c1f6
2022-06-22 23:14:41 -04:00
ce645d4fd3 conference: identify mixed videos per streamId
Videos in the videoMixer_ were not easy to identify, moreover,
"sinkId" in the participants informations was the concatenation
of the confId and a URI, which is a problem if several devices
from the same account was present in the conference. Finally,
the active stream logic was dirty, with two different variables
used to identify the active stream in the mixer.

This patch introduces a streamId which is (callId_type_idx, e.g.
ca111412_video_0, ca111412_audio_2), so every video shown in the
conference are identified via a unique ID.
Active stream in the video mixer is identified by this ID, not
by the callId or pointer.

This should not change any behaviour, but prepare for multistream.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: I250dd31ad1ea92ed1fd1e94bec2f5abd311d2128
2022-06-22 17:04:12 -04:00
13ceecdac4 plugins: add support for preference translations
The plugins add translations files to theirs resources,
so now daemon can get the preferences values accordingly
to the system language. In the future we might add a way
to follow the client-qt language which can differ from the
system.

Change-Id: I4caf49b45261a256e422c2f772ea37f1f2e9548c
2022-06-22 13:50:15 -04:00
8de5f33d79 trace-tools: use ifdef to check CXXABI
As documented here:
https://www.gnu.org/software/autoconf/manual/autoconf-2.67/html_node/Generic-Headers.html

Change-Id: I58775858404d1f3eab7ea1cd87acf0bee94e1533
2022-06-21 15:47:08 -04:00
6c9d3eb1f1 scheduler: fix task cancelling
This fix testInviteFromMessageAfterRemoved (hasHandler was
not correct in checkConversationsEvents because the task was not
cancelled anymore).
Fix ut_scheduler's build

Change-Id: I4dbf3b31180c43fb7fa11061f3ffacb492d925c3
2022-06-20 11:42:06 -04:00
a09380305e conference: support handRaised per device
Following the new conference protocol and because a user can
join a conference with several devices, the hand raised is per
device and not per account.
This doesn't change any current behaviour, but is more flexible
for multi-devices support in conference and continue the
implementation of the new conference's protocol.

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429

Change-Id: Idab49d8d9efd73eda57706c7a77836689d07ddd7
2022-06-17 16:17:09 -04:00
11683bb91f doc/trace/tracepoint-analysis: Add documentation about trace tools
Change-Id: I26241184065c1548fafe0529dfcd8aacefcc6b45
2022-06-17 14:59:51 -04:00
f0f3070849 doc/trace/tracepoint: Add documentation about LTTng tracepoints
Change-Id: I084f65ef2f73bcf555193159d6401d722337d8e5
2022-06-17 14:59:51 -04:00
d3a31590dc tools/trace: Add trace analysis tools
Change-Id: I8edf7ab6e227bd374009da34df008a9ccf418825
2022-06-17 14:59:51 -04:00
92e842a3e2 client/ring_signal: Add tracepoints
Change-Id: I522edb40e114f03cdf6605f09cc40cdb0bd886b2
2022-06-17 14:59:51 -04:00
475f04e10f tracepoint: Add signal tracepoints
Change-Id: I6e471df8c0d9a3e4a80ab6a8686834fe0709d065
2022-06-17 14:59:51 -04:00
a9b95e223d tracepoint: Add ice-transport tracepoints
Change-Id: I68e28cdaea0a3989b805c1b8dffb5a64e498f206
2022-06-17 14:59:51 -04:00