Commit Graph

15314 Commits

Author SHA1 Message Date
aa3299b36b agent: Use Jami's scheme bindings
The agent will be written in Guile Scheme instead of C++ in
order to give maximum flexibility to developers of scenarios.
Thus, bindings will be added for the public Jami interface.

In other words, the agent will be a client of yet another
Jami's bindings.

Change-Id: Ic2cd333007d0b1aad56c02b116ea708b56e96cc5
2021-10-12 23:35:38 -04:00
bfa324bcb1 pupnp: remove duplicate logs
Change-Id: Iab2caaa3fb8377b7a42301c3635d70233f0cc623
2021-10-12 13:32:25 -04:00
5e7a64653f upnp: make mapping operations atomic
Change-Id: I2c04e3831f68a55b7682c42eb93464e1fab78b1b
2021-10-12 13:32:21 -04:00
a37e4631b1 opensl: handle Enqueue failure
Change-Id: I4bdef901c2a2bc07dc1a9263eb0a9796655c051a
2021-10-12 13:30:25 -04:00
dabccb4da0 conference: fix resolution change
Change-Id: I55568eac3c95105131751d245224fbc3fd44a782
2021-10-12 12:22:10 -04:00
e6e47942d9 audiolayer: don't lock in putUrgent
RingBuffer has its own mutex. This avoids potential deadlocks.

Change-Id: I93175aafe9fbb3f927da28124a7d42e61585523d
2021-10-12 11:34:35 -04:00
3b9983453b ringbuffer: add write lock
Change-Id: Idde24be13daf0fca55ce5a2607e6b9835c18f3c5
2021-10-12 10:39:58 -04:00
0623347c37 sinkclient: videocrop fix
Change-Id: Iaa356f723a34c67cfd66190c04a53aea88bbea07
2021-10-12 09:29:36 -04:00
84093cf135 jamiaccount: cleanup log for tracking presence
Change-Id: I30b7d9db2cbac84c6ae15d15b0fe8a0f93e3a271
2021-10-12 09:13:10 -04:00
c9fa6304d5 string utils: add concat
Change-Id: I3b0fd2a34289545dbf06b85c2e825fbf87bb42ad
2021-10-11 10:33:08 -04:00
32b777f987 archiver: cleanup
Change-Id: Idbb8720de936661b01fcea97faeab92d0526b6c2
2021-10-11 10:33:08 -04:00
8f0e570b78 accel: ignore codec level
Hardware decoding will still be used even if the codec level is unknown
or higher than the hardware's reported supported level.

From FFmpeg: "It's generally a good idea to pass this flag unless you
have a specificreason not to, as hardware tends to under-report
supported levels."

Change-Id: I83614b0eab6166a42973f062e666783c2a8e7627
2021-10-11 10:20:07 -04:00
17f31b5941 meson: update the list of sources and dependencies
Change-Id: I19bc2fe4edef3c8dc7992473235f6ffd002c6e0b
2021-10-10 17:21:32 -04:00
d987d63455 jni: release buffer if window lock failed
Change-Id: I12148f354905cd888e284ab5583a80f9fe721248
2021-10-07 17:29:37 -04:00
377bc4a2e0 dring: remove deprecated API
Change-Id: Ieb61181e437278e1975fadfa9908c0bc413b1add
2021-10-07 15:26:49 -04:00
204b3fbcbf api: remove getDisplayNames
Change-Id: If641609b25cf6dad1a2c91fe534c2fa3a7119ad1
2021-10-07 10:27:23 -04:00
dc514c8cc6 api: remove switchToCamera()
Change-Id: I5e328cc2d0e38aa26bf62cb3a5bd083d499b9a02
2021-10-07 10:26:13 -04:00
e2c5eb02cb api: remove hasCameraStarted
Change-Id: If509355da31d71e9301d463fbbd64c202530cdfc
2021-10-07 10:26:13 -04:00
e3240d5781 upnp/natpmp: register controller only if account is enabled
If UPNP is enabled by the user, the UPNP controller must registered
only if the account is enabled.

Gitlab: #639

Change-Id: I993b50ea37fafa847460650d901ac3c3d5039718
2021-10-06 16:13:13 -04:00
042ad25ca2 SIPCall/ICE: add some logs
Add logs to help debug ICE intialization issues

Gitlab: #619

Change-Id: If81067e2261cf7fbb054b4c9abe641e2ebc84a0a
2021-10-04 09:42:03 -04:00
c5d5298655 swarm: replay text messages when cloning an old conversation
After removing and re-adding a contact, the second conversation
will be deleted and the first conv will be recloned. However,
some text messages can be present. In this case, we can re-add
them.

Change-Id: I7cafcf76b5d36769ea939729a2fbf6730853cafb
2021-10-01 15:41:23 -04:00
0a3503941f data transfer: fix cancel in swarm
cancel a file from the user should removes the file from the
waiting map to avoid to relaunch the download on the next sync.

Change-Id: I0696364d0131c8dde563b97b8b965e99d1f5686a
2021-10-01 13:47:10 -04:00
6ec4c687b3 jamiaccount: cache compressed vcard given by the client in sendTrustRequest
For now, the daemon doesn't handle the profile of the account nor
the compression. However, it does handle sendTrustRequest, which uses
the DHT to transmit requests. DHT values must be small, else it will
not be sent. So, this patch cache the compressed payload generated
by the client and removes it as soon as the confirmation is received.
This allow the daemon to retry to send request with the payload sent
originally.

Change-Id: I3fac542c6a53febdb7f1d0c516ec2d9ff5b317be
2021-10-01 11:14:42 -04:00
830d48573a test: split ut_conversation
Change-Id: I14df750d459a0771f4e60923a1ecf3bfb938a78b
2021-09-30 13:23:06 -04:00
f045eb9764 swarm: link trust requests and conversation's requests
This is only to avoid to return weird states from the daemon to the
client. But if a conversation is added through addContact,
removeContact should be called to removes it. However, if
removeConversation() is called, the conversationId in contact's
details MUST be updated.
Same for acceptConversationRequest, this should removes related
trust requests

Change-Id: I4b273075862cdcdffc7f13c1b5e581a2eebc411d
2021-09-30 13:23:06 -04:00
d459037f84 jamiaccount: extract code related to sync
Change-Id: I2af34ba8055903541d04d87c12082ffd03f47d8c
2021-09-30 13:23:06 -04:00
ec0e947777 webrtc-audio-processing: allow using system version
Change-Id: Ie12b5962f37f4e35aa3d2f71031bce605b24551a
2021-09-30 13:22:42 -04:00
55d1218408 sipcall: fix various race conditions
Change-Id: Idda022b8085d15224fc41139fc5868eaf07900c0
2021-09-30 13:08:59 -04:00
7a5c8e8511 tls session: move rx flush logic to thread, remove scheduler
Change-Id: I73484d9a5d060680c1b8f60121c3ae6021c5f6eb
2021-09-30 10:32:03 -04:00
4991945ecf ICE/SIPCall: prevent a race between init ICE and remove call
While waiting for ICE initialization, the call state may change
and also the ICE instance. This patch handle a race between
ICE initiliazation and call removal

Gitlab: #619

Change-Id: I4a18a9901ddbd35969b85cf0b17213b1ac277b02
2021-09-29 16:49:10 -04:00
c8b30de0f6 jamiaccount: emit signals on main thread
No need to start a thread pool for this.

Change-Id: Ifabb41549f6b0620f38cae4fd80af688bfc2e642
2021-09-29 15:37:37 -04:00
2a6761236f ice: decouple instantiation and initialization of ICE transport
Instantiation and initialization of ICE are done in a single
stage (in the class constructor).
To initialize the ICE instance, connection information must
first be gathered asynchronously.
However, when sharing ICE media instance between subcalls,
it's better to have a valid ICE instance as soon as possible
(even if not fully initialized) to proceed with the call
initialization process, then wait for ICE initialization to start
the call.
Thus, the ICE instantiation will be performed synchronously as
soon as the parent (main) call is created, then it will be
initialized asynchronously when the connection info are ready.

Gitlab: #619

Change-Id: I9c97516238f1a690603975ec968c8c6733155d4a
2021-09-29 11:24:47 -04:00
b98db961da ice: share ice instance between subcalls
Currently, when making an outgoing call to a Jami account with
multiple registered devices, a new ice media instance is created
for each subcall. This is not necessary, because all ice instances
will be similar until the peer answers (and provide its candidates)
But when the answer is received from the peer, all ice instances are
destroyed except the instance of the successful subcall, which will
be used to negotiate the media path.
Instead, only one instance will be created for the parent call, and
shared amongst the attached subcalls.

Gitlab: #619

Change-Id: I001c27f69d21b3ea640b189aea401e43c3f6bdef
2021-09-29 11:24:47 -04:00
910a5c5de3 sipcall/ice: remove obsolete temporary shared pointer
This patch removes the temporary ICE shared pointer

Gitlab: #619

Change-Id: Icacac9df1102327d4d1a0f0d67dfa457016048cd
2021-09-29 11:24:47 -04:00
2053afe934 plugin: fix duplicate handlers in memory
Make sure we unload plugin before trying to load it.

Change-Id: I87ac7b36378c0e70ecd101b68c8fcb8b7ea7fde8
2021-09-29 11:12:29 -04:00
a6177c9471 gitreview: update gerrit project name
Change-Id: I8b64659932709aa5642ef88be4bd6707812f7148
2021-09-29 10:19:37 -04:00
6d4630bfc2 ICE: flush timer heap when destroying ICE instance
When requesting destruction of ice session and stream
transport instances from PJNATH, some operation will be
done asynchronously through scheduled timers. If not
properly handled, the timer heap will still contain
timer entries when the timer heap and the IO queueu are
destroyed.
Now, the timer heap is given more time to flush the
remaining timer entries before the IO queue and the
timer heap are destructed.
The timer heap may still contain timer entries if
PJNATH does not process all the timers within the
givent max time (currently set to 3s).

Gitlab: #637

Change-Id: I5ef2fe9d824e8b57191a51fac8f9e53e0e626fcd
2021-09-28 20:53:37 -04:00
43136e0512 channeled transport: remove unused Scheduler
Change-Id: Id5bd0b744e5b6775dd08b31b39a1ddea01c2be0c
2021-09-28 11:29:32 -04:00
53fbc0a60a android video: use sinkclient custom buffer to avoid copy
Pixel 4 XL, 720p:
before: 6.69 ms (14,9 fps)
after: 5.92 ms (16,9 fps)

Change-Id: I8a2bdbed7388efbf95b066ace2f8032684a87a2e
2021-09-28 11:26:33 -04:00
aa144f3866 conversation: move messages
Change-Id: Iada2486cffef5be26eac5618b8e62349ca3b01cf
2021-09-28 10:53:03 -04:00
6fe27867ee sinkclient: allow to provide custom buffer
Change-Id: I1c3d2943f3347fa9214456a2e180b0836bd6420f
2021-09-28 10:52:52 -04:00
15bdc648ad jamiaccount: fix call hangup when removing the account
When an instance of JamiAccount class is destroyed, an attempt
is made  in the destructor to hangup all existing calls by
calling the hangupCalls() method. However, many methods used in
the process (such as terminateSipSession) uses a weak_ptr to
get the account instance, which is not accessible anymore.
The call to hangupCalls() is now called before the JamiAccount
destructor is called.

Gitlab: #627

Change-Id: I26e603a88c5074414d88e59d005d95a952c51d5e
2021-09-27 11:27:02 -04:00
7af8f132d7 mediahandler: forward-declare AVFrame
Change-Id: I8c27143000c8e02d2245e0329ad87f5cf846a73f
2021-09-27 10:29:10 -04:00
cd2d42639c misc: remove some getIssuerUID()
using issuer->getId() is preferred, as the certificate can be
incomplete.

Change-Id: Ibf4129977d12b4867ce73f170e5c9fad04ad3952
2021-09-27 09:24:34 -04:00
699be957ff videomanager: don't keep mutex locked when configuring sink
Change-Id: I729e15f31fd1f7e9c0a2319966e50ed3ad86ec56
2021-09-25 09:52:41 -04:00
6de733c52b sinkclient: add lock
Change-Id: I7b7b67008bd1b3df9ec6d17c831acca753ba5662
2021-09-24 23:07:21 -04:00
7b0a8ffcdc account: enable multistream for Android
Change-Id: I7bf01643731a1e9901b165dd0d54356b9febb8a4
2021-09-24 23:00:29 -04:00
07804eb312 contrib: More thoroughly fix the Autoconf GTKDOCIZE issue.
* contrib/src/main.mak (GTKDOCIZE): Set and export variable to true.

Change-Id: I1901bdac034aa1e9b837f628f942f09b14160b52
2021-09-24 11:10:23 -04:00
ba7f20f957 ICE/PJNATH: fix crashes and assertion failures
This patch introduces many changes that prevent various crashes
and assertion failures.

In PJNATH source code:
 - Avoid duplication when adding host candidates.
 - Prtoect ICE context (lock) in TCP callbacks
 - Correctly set local and remote addres in STUN request

In jami source code:
 - Check that the address is valid before using PJSIP
 helpers

Gitlab: #617

Change-Id: I317d748db8d1f93dda6d5f510a2fae909a04704c
2021-09-23 14:45:55 -04:00
5dc71b2021 logging: fix signature and name space
Also set agent logging to console by default.

Change-Id: I4993886a149eb4f60e1d61bad7ed18956350599f
2021-09-23 14:24:24 -04:00