Commit Graph

15557 Commits

Author SHA1 Message Date
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
2ef0a8af97 manager: Add execution context to scheduled executor
Change-Id: Icedfd7e3cd3765cf900e1fac26ad0106ba8a5cb3
2022-06-17 14:59:51 -04:00
1f1e6014b4 scheduled_executor: Add tracepoint
For complete execution context, the executor has now a name associated with it
and filename/linum must be passed along with the jobs.

Change-Id: I91e872d6c0710dc3c90352974daba5d559d930c9
2022-06-17 14:59:51 -04:00
8b761ef35a doc: update build instructions
Change-Id: Ieb512ed3cfdaf64998df284d1a691fa8e2f4fc10
2022-06-17 14:59:18 -04:00
0d066a2e9f test/agent/scenarios/gitignore: Ignore run-scenario
Change-Id: Icad35be50347b26fdb9470b3878c09a403cdbf93
2022-06-17 14:59:18 -04:00
3e6d2a391d test/agent/Makefile: Fix compilation of Guile modules
Since we're not building Jami statically anymore, agent.exe is
generated under test/agent/.libs and the script `agent' is a wrapper
around it.  Thus, change agent.exe for `agent' for compilation of
scheme.

Change-Id: I8766ca6470ba1a9136d8eb6cb2d45b278fd85456
2022-06-17 14:59:18 -04:00
351a233239 contrib: Add Guile's dependencies
This is useful for running the agent's scenario on the continuous
integration.

Change-Id: If225ee040c449a00baea38fc4f0815fea1ed8136
2022-06-17 14:59:18 -04:00
fb7d9b4db6 agent/scenarios/bulk-calls: Setup scenario for CI
Change-Id: I06a7f8da672946b20c353e4b5d3a3aaa499203fb
2022-06-17 14:59:18 -04:00
15460298ab agent: Add pre-inst-env script
The agent requires Jami's bindings to correctly run scenario.  This
can only be done if Guile can find the correct scripts.  Thus, the
pre-inst-env script can be used to setup the correct environment for
running the agent before its installation.

Change-Id: I474ef204bb33fd2098eee44b5b99c00f120c4536
2022-06-17 14:59:18 -04:00
75d76949d7 connectionmanager: erase pending on decline
if a shutdown is called while we are waiting for channel to be ready
we must remove the pending callback attached.

Change-Id: Ibe1d2a6517b5f1035d4031bf08bab294ce5111d7
2022-06-17 11:25:01 -04:00
ea2e2e4dbc conference: improve conference protocol for multi stream
The current design got some limitations. It's not possible to
control informations per shared media. This means that we can't
got several active sinks for example.
The goal of this patch here is to update the conferences orders
to be able to control the state of each sink individually and for
the client to be able to handle conferences with accounts connected
via several devices with several medias per devices.
So each orders is sent with a different level (account/device/media)

For example, we will be able to send a moderator order for an account,
to hangup a device or to set a media active.

To support those orders, both sides MUST be patched. Else, the old
protocol will be used. The version of the protocol supported is sent
in the conferences informations to notify the peer what version to use.

Finally, this patch changes some APIs to support multisteam:
+ Some APIs now takes the deviceId or the sinkId when necessary

https://git.jami.net/savoirfairelinux/jami-project/-/issues/1429
Doc: https://git.jami.net/savoirfairelinux/jami-project/-/wikis/technical/6.1.-Conference-Protocol
Change-Id: Ieedd6055fd43b2a09b2cc8b253dcd6a3bf260a39
2022-06-17 10:07:43 -04:00
e7243cecfe data_transfer: receive incoming profiles in dedicated directory
this avoid to create a dirty cache

Change-Id: Icde80be0fe241774a1e21eea4558ba76f2559f9f
2022-06-17 10:07:43 -04:00
35d201ee26 contrib: update asio
Change-Id: I2cc327e11c80eeae7ca07bd1e1ab33fc357d527f
2022-06-16 15:07:07 -04:00
c0d9e6057c contrib: fix dbus build with g++12
Change-Id: I52d4fee70c9fdcc38c964301d56f89fa23188e9a
GitLab: #734
2022-06-16 10:01:12 -04:00
37d1d9a5e3 connectionmanager: erase info on connection failure
In some cases, the infos were not correctly refreshed, causing some
pending callbacks to never be called.
Also, split getInfo() in two methods to improve readability.

Change-Id: I1b60f2cf2ac5bf97c9a44a53794b56906d314e6a
GitLab: #TODO
2022-06-15 15:29:29 -04:00
7752d3a96e ice_transport: Nuke iceMutex_
iceMutex_ was used before because icest_ could change asynchronously.  This is
not the case anymore, since icest_ is initialized synchronously by
IceTransport::initIceInstance().

Furthermore, signaling of the iceCV_ condition variable is now done under the
group lock of the ICE transport, since it's under this lock that the state of
the session is changed.

Change-Id: I3f2b4b4141777b950c916553b45da880dd7056b6
2022-06-15 15:29:23 -04:00
58d42df82d tracepoint: Add scheduled executor tracepoints
The two tracepoints are used to delimit the beginning and the end of the
execution of a task by a scheduler.  The beginning tracepoint contains all the
meta information related to the the execution context of the task and an unique
cookie.  This cookie is then reused in the end tracepoint to match the pair of
begin/end without duplication of information.

Change-Id: Ibbf64fe49325e7cb72c60aa6c9d8d8d1ab074f2a
2022-06-14 16:11:51 -04:00
cbbf93ad27 swarm: fix merge commit's validation after migration
Merge's commits were'nt checked, while comitting and while pulling.
This means that the author could be incorrect. Add a check before
doing a merge commit and when validating it.
This avoid incorrect repository in case a merge commit is generated
after a migration.

Misc: fix incorrect test

GitLab: #738

Change-Id: Id9748eb7d3dd5db023dd2ab4a30261c31af5d514
2022-06-14 10:59:36 -04:00
7b485429d8 rtp: cleanup storing bitrate info
Change-Id: Ibfc4d65be3969832ba1ea84106d55c29d22e9dcd
2022-06-09 16:55:12 -04:00
4ff4a32d66 config: handle multiple exception types when deserializing nodes
Any exception other than YAML::Exception was not caught when
loading the account map. We should catch other types of exceptions
as well to prevent a malformed YAML config from preventing daemon
initialization.

Change-Id: If7491fbe97eb8f988edce334a20ddc14e0a0a5fd
Gitlab: #735
2022-05-27 14:41:05 -04:00
fc6f643474 SinkClient: use steady_clock for FPS calculation
Change-Id: Ic14fe56d0223433782d06a97904024b56c9ab732
2022-05-23 11:31:57 -04:00
b1ec634e94 SinkClient: allow child sinks to observe a parent sink with no client, cleanup
Without this patch, clients need to observe the main mixer sink to be
able to observe individual participants.

GitLab: https://git.jami.net/savoirfairelinux/jami-client-android/-/issues/1100
Change-Id: I97c4b8d3d40049a81c94b13d9c96776c4030ab2f
2022-05-23 11:31:47 -04:00
ebb00d83d0 SinkClient: don't resize to 0 when changing size
Change-Id: Ib5c1fd00793fa75312ec6c573805a3746fd29a22
2022-05-23 11:31:47 -04:00
e8b9309c5d tracepoint: Add LTTng tracepoint generation
Change-Id: I6358f3ab5f464f1a553814c58b22245ef64f0b52
2022-05-23 11:27:29 -04:00
983ae44f9e misc: replace rw_mutex with std::shared_mutex
Change-Id: I6919ab404e5d8f149950d9d3a624a85115b62944
2022-05-23 02:42:28 -04:00
b0cfb1e8dd configure.ac: Emit ENABLE_TRACEPOINTS in config.h
Change-Id: I988bc6600228168d13cd9121bff739d4b0add1ec
2022-05-20 16:32:31 -04:00
22b7425ad0 trace-tools: Add trace-tools.h
Change-Id: I091f3e3580fa6761fef8fff32377f6a305ca99e1
2022-05-20 14:29:29 -04:00
2e8b701f0b configure.ac: Add check of cxxabi.h
Change-Id: Ifa8984d43ef51bf0c3432e6f8643107b60d7d372
2022-05-20 14:29:08 -04:00
57a6344727 contrib: Add liburcu 0.13.1
Change-Id: I26379859f39b05a8cd2a8c4b05d6173cea145481
2022-05-20 11:15:12 -04:00
2b2899d7b8 contrib: Add lttng-ust 2.13.0
Change-Id: Ie6d9c48758adbee7c81bf31c3e11ada2428c2e8d
2022-05-20 11:15:12 -04:00
67fa5a3437 configure.ac: Add LTTng tracepoints feature
Change-Id: I192ff24448a6454c8d504febd7ab2df2ccf88272
2022-05-20 11:15:10 -04:00
95ec084263 pjproject: fix crash if all ipv6 addresses are deprecated
cleanup old TODO file

Change-Id: I76a91664f9e40cc866ae2527758815f11d312d69
GitLab: #733
2022-05-20 05:05:00 -04:00
6bb0b6e2d7 extras/tools: update cmake version to 3.22.1
Change-Id: Ibad39331c7fa31e3b8ddc31dd61e3a3bc66fc9f8
2022-05-17 11:55:20 -04:00
fbdc6a1957 video receive thread: fix race condition on displayMatrix_
Instances of std::shared_ptr are not thread-safe, even if the control block is.

Since AVBufer already has a refcounting system, use a unique_ptr instead,
and add a mutex to protect access during copy.

In practice, the mutex should almost never block since it's locked for
the minimum scope.

Change-Id: I5122e76dadb5da6c3738f8dc711698744b52315b
2022-05-13 02:30:35 -04:00
35a0fcdeb8 Video receiver: reduce data race
- do not destroy demux context on receiver thread

Gitlab: #732

Change-Id: I34e9922305073a606467d178f13606eb1d721d2f
2022-05-11 10:35:48 -04:00
657c47c51d video API: return bool from registerSinkTarget
This allows clients to know if sink registration succeeded.

Change-Id: Ic22d4a50b9cf3c071562c6425724008a54e5f3a6
2022-05-09 10:48:16 -04:00