Skip to content

Calls

wusspuss requested to merge wusspuss/gajim:calls into master

Introduces audio and video calls functionality, including Windows support (not packaged for Windows yet, but run successfully inside a vm with video and on real hardware without video - probably just a packaging issue). For Linux there's a build flatpak build sample under .Devel.yaml

There's a pre-built flatpak for the curious

It's worth pointing out that the new libdatachannel dependency replaces farstream and libnice. This branch doesn't remove farstream-related code and in general doesn't mess with anything other than calls. But even for file transfers (which iiuc are currently broken anyway), libdatachannel can later replace farstream - especially now that Conversations and Dino implement file transfers with `urn:xmpp:jingle:transports:webrtc-datachannel:1` - that's a perfect match for the future. Moreover, libdatachannel is actively maintained and cross platform (including Windows), unlike farstream.

The new AV-related code is covered by tests. Most of those are skipped by default: they try to display video and play audio in different ways via libdatachannel, which means they're not as quick and need a network connection. They can be run by setting TEST_SOUNDS environment variable. With them enabled, the whole test suite takes about a minute to run on my machine, makes noises and pops up windows.

For those interested in Windows: here are draft pkgbuilds for windows: libdatachannel and bindings. I have successfully run audio and video calls on win11 in qemu (had to use mesa because of qemu), but a person from the chatroom told me they had trouble with gtkglsink on a windows host and got it to work using gtksink. I can't test it yet because I don't have a Windows host, but I suspect they just didn't install some gst-... package properly. We may want to just replace gtkglsink with gtksink.

Edited by wusspuss

Merge request reports