Skip to content
Snippets Groups Projects
Commit 27854912 authored by Aline Gondim Santos's avatar Aline Gondim Santos
Browse files

Created 7. Jami plugins (markdown)

Updated 0.-Introduction.md (markdown)
parent 5e1fc0eb
Branches
No related tags found
No related merge requests found
......@@ -15,6 +15,7 @@ Greetings people. In this part of the documentation, you will learn how Jami wor
4. What is a DHTProxy
5. Supporting SIP
6. [Setup your own TURN server](https://git.jami.net/savoirfairelinux/ring-project/wikis/technical/3.6-Setup-your-own-TURN-server)
7. [Plugins](7. Jami plugins)
4. Contribute
1. Build instructions
......
**NOTE: this page describes what is a Jami Plugin and how to install and use them.**
# Jami Plugins
As from September of 2020, Jami team has added plugins as a call/chat feature for Linux and Android users.
This meaning that now they can personalize their call/chat experience by using one of our available plugins.
But that is not all, you can also transform your awesome ideas into a brand new plugin!
To properly setup a plugin you must follow the step bellow.
To `build` a plugin, please refer to build instructions at the end of this page.
## How to use it?
### Install / Uninstall
A Jami plugin is a file of the type plugin-name.jpl, and it must be installed to your Jami.
For Android You must go under Setting, enable plugins, and select a plugin file from your phone.
Similarly, for Linux, one must go to Jami Prefences, enable plugins, and select a plugins file from your computer.
Once installed, Jami will add your new plugin to the available plugins list.
For Android uninstall, one must click on the plugin and a uninstall option will appear.
For Linux, each plugins in plugins list shows a uninstall button.
### Load / Unload
Once installed, a plugins is not available for use yet. Plugins are libraries and must be loaded if you want to expose their functionalities.
For Android and Linux, there is checkbox that indicates plugin's load state. You can load or unload it by clicking on this checkbox.
### Change Parameters
Each plugin has configurations, and some of them are editable by the user. For example, our Foreground Segmentation plugin allows the user to change the background image displayed.
For client-gnome it is not yet possible to change those preferences, but for Android you can do so.
Preferences are displayed in the same page one must access to uninstall a plugin.
To take effect, the plugin has to be reloaded.
### Use!
Call plugins only take place if you turn them on during a call.
For both Android and Linux you can do so by clicking on the plugins icon on your call screen.
## How to build?
### Dependencies
If you want to make something with your video call, it is possible that you will do so with OpenCV and/or Tensorflow.
So, before going to the plugin, it is necessary to build the plugin dependencies.
#### OpenCV 4.1.1
##### Android
```bash
cd ${DAEMON}
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-${TARGET}
cd native
../bootstrap --build=x86_64-pc-linux-gnu --host=$TARGET$ANDROID_API --enable-opencv --enable-opencv_contrib
make
```
##### Linux
```bash
cd ${DAEMON}/contrib/native
./../bootstrap --enable-opencv --enable-opencv_contrib
make
```
#### Tensorflow 2.1
Dependencies:
* Python 3
* Bazel 0.29.1
```bash
git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow
git checkout -b v2.1.0
```
Assemble instructions are available under [jami-plugins](https://review.jami.net/admin/repos/jami-plugins) README file
#### Linux
If you want to build Tensorflow C++ API with GPU suport, be sure to have a CUDA capable GPU and that you have
followed all installation steps for the Nvidia drivers, CUDA Toolkit, CUDNN, Tensor RT, that their versions
matches and that they are correct for the Tensorflow version you want to build.
The following links may be very helpfull:
* https://www.tensorflow.org/install/source
* https://developer.nvidia.com/cuda-gpus
* https://developer.nvidia.com/cuda-toolkit-archive
* https://developer.nvidia.com/cudnn
`./configure`
##### LITE
`bazel build //tensorflow/lite:libtensorflowlite.so`
##### C++ API
`bazel build --config=v1 --define framework_shared_object=false //tensorflow:libtensorflow_cc.so`
#### Android - LITE
Depencencie:
* Android NDK 18r
```bash
./configure
>> Do you wish to build TensorFlow with XLA JIT support? [Y/n]: n
>> Do you wish to download a fresh release of clang? (Experimental) [y/N]: y
>> Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: y
>> Please specify the home path of the Android NDK to use. [Default is /home/<username>/Android/Sdk/ndk-bundle]: put the right path to ndk 18r
```
```bash
bazel build //tensorflow/lite:libtensorflowlite.so --crosstool_top=//external:android/crosstool --cpu=armeabi-v7a --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --cxxopt="-std=c++11"
```
```bash
bazel build //tensorflow/lite:libtensorflowlite.so --crosstool_top=//external:android/crosstool --cpu=arm64-v8a --host_crosstool_top=@bazel_tools//tools/cpp:toolchain --cxxopt="-std=c++11"
```
### Plugin
##### Android
##### Linux
## TODO
### How it works
Related articles:
+ https://jami.net/jami-plugins-foreground-segmentation-artificial-inteligence/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment