mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-07 22:02:12 +08:00
ea2e2e4dbc4f788e69a121b9a1c4b333802d6798

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
COPYRIGHT NOTICE Copyright (C) 2004-2022 Savoir-faire Linux Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Introduction ------------ GNU Jami is a Voice-over-IP software phone. We want it to be: - user friendly (fast, sleek, easy to learn interface) - professional grade (transfers, holds, optimal audio quality) - compatible with Asterisk (using SIP account) - decentralized call (P2P-DHT) - customizable As the SIP/audio daemon and the user interface are separate processes, it is easy to provide different user interfaces. GNU Jami comes with various graphical user interfaces and even scripts to control the daemon from the shell. GNU Jami is currently used by the support team of Savoir-faire Linux Inc. More information is available on the project homepage: https://www.jami.net/ This source tree contains the daemon application only that handles the business logic of GNU Jami. UIs are located in differents repositories. See the Contributing section for more information. Short description of content of source tree ------------------------------------------- - src/ is the core of DRing. - bin/ contains applications main code. - bin/dbus, the D-Bus XML interfaces, and C++ bindings About Savoir-faire Linux ------------------------ Savoir-faire Linux is a consulting company based in Montreal, Quebec. For more information, please check out our website: https://www.savoirfairelinux.com/ How to compile on Linux ----------------------- 1) Compile the dependencies first cd contrib mkdir native cd native ../bootstrap make 2) Then the jamid application cd ../../ mkdir build export PATH=$PATH:`pwd`/contrib/`cc -dumpmachine`/bin meson -Dpkg_config_path=`pwd`/contrib/`cc -dumpmachine`/lib/pkgconfig -Ddefault_library=static -Dinterfaces=dbus build cd build ninja ninja install Done ! Note: If you don't want SHM to be used, you can build with `--without-dbus` How to compile on Linux for Android ----------------------------------- 1) Download and install Android NDK 2) Compile the dependencies export ANDROID_NDK=<NDK> export ANDROID_ABI=arm64-v8a export ANDROID_API=29 export TOOLCHAIN=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64 export TARGET=aarch64-linux-android export CC=$TOOLCHAIN/bin/$TARGET$ANDROID_API-clang export CXX=$TOOLCHAIN/bin/$TARGET$ANDROID_API-clang++ export AR=$TOOLCHAIN/bin/$TARGET-ar export LD=$TOOLCHAIN/bin/$TARGET-ld export RANLIB=$TOOLCHAIN/bin/$TARGET-ranlib export STRIP=$TOOLCHAIN/bin/$TARGET-strip export PATH=$PATH:$TOOLCHAIN/bin cd contrib mkdir native cd native ../bootstrap --build=x86_64-pc-linux-gnu --host=$TARGET$ANDROID_API make 3) Update directories in the file /cross-files/android_arm64_api29.txt 4) Compile the library libjami.so cd ../../ mkdir build meson --cross-file `pwd`/cross-files/android_arm64_api29.txt build cd build ninja ninja install Note: to build the tests add `-Dtests=true` ; or it can be enabled later with `meson --reconfigure -Dtests=true build` How to compile on OSX --------------------- # These first steps are only necessary if you don't use a package manager. cd extras/tools ./bootstrap make export PATH=$PATH:/location/of/ring/daemon/extras/tools/build/bin # Or, use your favorite package manager to install the necessary tools (macports or brew). automake, pkg-config, libtool, gettext, yasm # Compile the dependencies cd contrib mkdir native cd native ../bootstrap make -j # Then the daemon cd ../../ ./autogen.sh ./configure --without-dbus --prefix=<install_path> make If you want to link against libringclient and native client easiest way is to add to ./configure: --prefix=<prefix_path> Do a little dance! Common Issues ------------- autopoint not found: When using Homebrew, autopoint is not found even when gettext is installed, because symlinks are not created. Run: 'brew link --force gettext' to fix it. Clang compatibility (developers only) ------------------------------------- It is possible to compile jamid with Clang by setting CC and CXX variables to 'clang' and 'clang++' respectively when calling ./configure. Currently it is not possible to use the DBus interface mechanism, and the interaction between daemon and client will not work; for each platform where D-Bus is not available the client should implement all the methods in the *_stub.cpp files. SIP accounts --------------------- You may register an existing SIP account through the account wizard in both clients (KDE and GNOME). By doing this, you will be able to call other accounts known to this server. Contributing to GNU Jami ------------------------ Of course we love patches. And contributions. And spring rolls. Development website / Bug Tracker: - https://git.jami.net/savoirfairelinux/ring-project Repositories are hosted on Gerrit, which we use for code review. It also contains the client subprojects: - https://review.jami.net/#/admin/projects/ Do not hesitate to join us and post comments, suggestions, questions and general feedback on the GNU Jami mailing-list: https://lists.gnu.org/mailman/listinfo/jami
Description
Languages
C++
85.3%
SWIG
2.6%
Python
2.6%
Makefile
2.1%
CMake
1.7%
Other
5.5%