In an earlier article we described many improvements to conversations thanks to Swarm. However, in addition to chatting, Jami is also about calling and conferencing with others. In a more recent article we introduced 'video-split', which enables Jami client applications to present a better layout of participants in video conferences. That was the first in a larger series of changes aiming to improve the call experience in Jami, and we are excited to share the rest of them with you. Let's jump right in!

Multi-stream

In some cases, users may want to share multiple videos at the same time, in addition to their camera. For example, in a conference setting where the speaker wants to share their screen for a demonstration or to present a set of slides, while continuing sharing their camera feed as they speak. Until now, this was not possible in Jami, as clicking "Share screen" would cause the current video feed to be replaced with the newly selected video to be shared.

With 'multi-stream', when the user clicks on "Share screen" in a video conference, two videos will be sent: their camera and the shared screen. Jami now allows the user to share one camera and one media, and they can be controlled separately.

How it works

To make this possible, Jami needed a lot of back-end changes. Until now, it was only possible to negotiate one video and one audio feed. With multi-stream, we have added the possibility to negotiate up to 32 media feeds per call. However, as of now the client will only negotiate one camera and one shared media (screen or file), to provide the best user experience.

Finally, since Jami is a native application with a wide variety of versions available across different package repositories and operating systems, we cannot assume that other peers also have the latest version of Jami with support for multi-stream. As such, this has been implemented in a backward-compatible way, so that if your contacts don't have a recent Jami with multi-stream, Jami will fall back to using the old behavior.

For more in-depth details on how multi-stream works, you can check out the following pages from the Jami developer manual:

Demonstration

The new call layout button

The call view in the Qt-based Jami desktop client application recently got a new 'layout' button, providing several new in-call customizations as follows.

On the top or on the side

When a participant is 'maximized' as the primary speaker/presenter, the other participants are by default shown in a row at the top of the screen. You can now choose between a top row or a side column for showing non-maximized participants, using these options.

Hide self

You can use 'hide self' to hide your own video for yourself in the video conference, while other participants continue being able to see you.

Hide audio-only participants

Enabling this will hide participants who are not sharing any video and are audio-only. Audio-only participants will still be shown if they are maximized as the primary speaker/presenter, if voice activity from them is detected, or if they raise their hand using the 'raise hand' feature.

Screenshot showing the new layout button
The new layout button

Better audio processing

The last in this series of call experience improvements is related to the audio. We recently introduced a better audio processing component that enables us to provide three new functionalities to users:

Automatic gain control

This helps participants avoid audio clipping and maintain a suitable audio signal amplitude throughout calls.

Noise reduction

Noise reduction in Jami has been improved to help provide a better auditory experience, since in common everyday scenarios input audio can have substantial amounts of noise: ambiant background noises/sounds from busy environments, noisy/grainy microphones, computer fans, and so on.

Voice activity

Finally, the most visually-noticeable recent audio-related improvement is the indication of voice activity (e.g. talking) of participants with a blue frame around their tile.

Screenshot showing a thin blue frame around a 'talking' participant video feed
Notice the thin blue frame around this 'talking' participant

Configuring these audio processing features

Currently there are no preference options in Jami's graphical user interfaces for changing the default values for these features, but they can all be configured by editing the Jami daemon's configuration file.
See the "How can I configure the audio processor?" FAQ entry from the Jami user manual for more details.

Looking towards the future

While we hope these new features and changes will be welcome additions and improvements to the call experiences of Jami users, making video conferences and presentations in Jami more pleasant and flexible, they could use some more polishing.

Namely, with multi-stream it is currently only possible to share multiple video feeds, but a single audio feed. Sharing multiple audio feeds simultaneously will come in a future release.

Also, most of these features are currently only available in conferences in the Qt-based Jami desktop client application; but we plan on extending them to Jami's mobile applications, as well as homogenizing the features between video conferences and 1-on-1 calls.

By Sébastien Blin, Amin Bandali